Commit graph

1146 commits

Author SHA1 Message Date
Miodec 47c581c5f8 recording time to complete job
closes #3965
2023-02-09 15:27:55 +01:00
Miodec 41834d9c5e logging every 5 minutes 2023-02-01 12:09:08 +01:00
Miodec 666522c0b3 added job to log queue lengths 2023-02-01 02:05:19 +01:00
Miodec bb39afa753 exposing getjobcounts 2023-02-01 02:05:15 +01:00
Miodec 06a2c91eee added metric for queue lengths 2023-02-01 02:05:08 +01:00
Miodec b177232710 refactor 2023-01-31 01:04:04 +01:00
Miodec 921aa94dc7 added cron job to log collection sizes 2023-01-30 16:53:12 +01:00
Miodec 14ad135483 updated messages 2023-01-29 15:20:04 +01:00
Miodec 2dd1baac95 added another custom error handler
changed returned code
2023-01-29 15:14:46 +01:00
Miodec 2aa95b4526 added custom error handling 2023-01-29 14:43:04 +01:00
Jack 6647a81ad1
Structure (#3951)
* created file which holds skeletons for popups

* using skeleton

* saving skeleton after the events are bound

* moved click event to a static element

* using skeleton

* added hide and show functions
using skeleton

* using skeleton

* using skeleton

* using skeleton

* using skeleton

* using skeleton

* fixed a bug where updating the preset name would not immediately show the update

* using skeleton

* shorter link transition

* using skeleton

* using skeleton

* using skeleton

* fixed a bug where accounts with no pbs would cause misplaced "show all pbs" button

* using skeleton

* using skeleton

* using skeleton

* using skeleton

* fixed quote mod not being sent to the client

* using skeleton

* using skeleton

* using skeleton

* using skeleton

* using skeleton

* using state object instead of html attributes
fixed a bug where no tags text would persist even when tags were added to the test
using skeleton

* using skeleton

* using skeleton

* using skeleton

* using skeleton

* using skeleton

* removed unused code

* unnecessary import

* unused code

* using skeleton

* changed click handling element
only hiding and restarting the test if init returned true

* using skeleton
returning boolean from init function

* removed console log

* added function to check if a popup is visible

* better visibility check

* rewrote alerts to use state object instead of pushing straight to dom
using skeleton

* better visibility check

* not using skeleton for now

* using skeleton
using state object
better visibility check

* added parent override

* unnecessary code

* changed function to a more generic one

* fixed cookie popup text possibly overflowing popup

* using "isPopupVisible" function instead of a "hasClass" check
added some missing escape key handlers

* using skeleton

* using skeleton

* using skeleton

* using skeleton

* standard popup animation length

* consistent animation timing

* using iselementvisible function

* removed unused function

* using isElementVisible

* proper show and hide functions, added callback funciton on hide,
added noAnim params

* fixed no animation on the logo sub text

* reordered click handlers

* moved code to a fill function

* using proper show and hide functions
added callback on hide param
added no anim and no callback parameters

* added no anim parameter
callback func is optional

* also applying noanimation to hiding animation

* using proper hide and show functions

* using iselementvisible

* using skeleton

* missing space

* storing text area state in custom text

* using skeleton

* setting state on show instead of on hide

* moved click handler

* unused code

* missing parent override

* using skeleton

* no longer waiting for document to be ready

* settings using skeleton

* profile search using skeleton

* page profile using skeleton

* navigating to account if already logged in

* using skeleton

* using skeleton

* emptying result replay and words history on restart

* optimised theme picker

* optimised settings page fill

* performance optimisation

* awaiting promises

* brought back code that was accidentally removed

* async

* addad param to avoid duplicate group update on settings page load

* added main thread yields to remove long tasks

* optimising performance of about page loading

* not awaiting

* breaking up long tasks to optimise performance

* optimised button appending

* fixed avatar being too big

* optimisation
splitting up code
added yields to split tasks

* fixed merge

* removed sleep

* missing chart color update

* updating main chart first

* disabling animation during update

* updating chart colors once instead of on every update

* added one more sleep

* removed sleep causing graphical issues

* update chart regardless if it has data or not

* hiding estimated words typed when no data was found
2023-01-27 15:10:07 +01:00
Rizwan Mustafa 85f52ff49e
Add typescript support for jest (#3949) rizwanmustafa
* Add typescript support for jest

* Add typescript support for jest setup-tests.ts

* Some more bug fixing
2023-01-26 14:13:14 +01:00
Oxey 6c9ee41444
Make quote actions not break with c++ language (#3925) o-x-e-y
* Make quote actions not break with c++

c++ currently obviously has `+` symbols which means stuff like quote ratings break because of the validation regex. I feel like changing `\w` straight to `.` would also be fine since languages and their names get approved manually, but this should work fine for now

* fix silly mistake

a `.regex()` got removed for whatever reason

* Fix prettier bug

* remove unnecessary spaces

Co-authored-by: Rizwan Mustafa <rizwanmustafa0000@gmail.com>
2023-01-26 14:09:11 +01:00
Miodec 698d43d64e more validation 2023-01-25 23:52:37 +01:00
Miodec 385fc00ea2 more regex validation 2023-01-25 23:52:28 +01:00
Miodec 6bdf6de1f6 added body validation 2023-01-25 23:41:53 +01:00
Jack 59b252389e
fix: backend/package.json & backend/package-lock.json to reduce vulnerabilities (#3945)
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-SIMPLEGIT-3177391

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2023-01-25 23:21:53 +01:00
Jack 2f46176f34
Allowing configuration endpoint access if user is configuration mod (#3936)
* showing error when fetch failed

* added function to only use an array of middlewares in production

* allowing patch configuration and get schema if user is a configuration mod

* fixed empty middleware not working as expected
2023-01-24 16:00:29 +01:00
Bruce Berrios b36c842921
Add stricter typing to configuration (#3933) Bruception 2023-01-24 15:41:21 +01:00
Miodec 4c1175e698 showing error when fetch failed 2023-01-24 14:03:31 +01:00
Miodec 178b6ae83d schema update 2023-01-24 13:15:16 +01:00
Bruce Berrios 74fe4c864d
Add later queue (#3789) bruception
* Add later queue

* Fix test

* renamed property

* update name

* missing rename

* try 23 times

Co-authored-by: Miodec <jack@monkeytype.com>
2023-01-23 14:07:11 +01:00
Veemyu d2a8b316c6
Add an upside down mode to the Funbox (#3915) Veemyu
* Add Upside Down to Funbox

* Resolve formatting issues

* Re-add missing css
2023-01-16 22:19:58 +01:00
Miodec 9d11dafd7c not storing incomplete tests 2023-01-15 14:05:41 +01:00
Miodec 75d635eef5 protecting against negative xp 2023-01-11 22:03:51 +01:00
Miodec adf47214db added option to report users 2023-01-09 18:20:56 +01:00
Miodec a926ad4d1f checking with regex 2023-01-07 17:05:21 +01:00
Miodec 8ca71f0320 replacing homoglyphs when checking for profanities
closes #3844
2023-01-04 19:25:54 +01:00
Miodec aba0f27c06 removed smooth consistency and unsmoothed raw. part of #3878 2023-01-04 18:43:57 +01:00
Miodec 0e977a7c38 optional smooth consistency. part of #3878 2023-01-04 18:43:33 +01:00
hossammenem 6867850c74
adding the WPM to the daily leaderboard message (#3838) hossammenem
* adding the WPM to the daily leaderboard message

* rounding the WPM
2023-01-04 14:23:47 +01:00
Miodec 7c34fa2591 upgraded swagger stats 2022-12-28 15:42:12 +01:00
Snyk bot 6813c707a0
fix: backend/package.json & backend/package-lock.json to reduce vulnerabilities (#3860)
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-JSONWEBTOKEN-3180020
- https://snyk.io/vuln/SNYK-JS-JSONWEBTOKEN-3180022
- https://snyk.io/vuln/SNYK-JS-JSONWEBTOKEN-3180024
- https://snyk.io/vuln/SNYK-JS-JSONWEBTOKEN-3180026
2022-12-28 15:37:37 +01:00
Miodec 948f667b2a fixed incorrect validation message being shown 2022-12-11 22:39:55 +01:00
Miodec bf93ea753a removing errorId when not a server error 2022-12-11 01:00:33 +01:00
Miodec f697ec00fe logging errorid 2022-12-10 23:40:02 +01:00
Miodec 5005b9aad6 if the user is not found: check if it exists in auth, if it does, recreate it in db 2022-12-10 23:38:41 +01:00
Bruce Berrios bdd6ce0ffa
Housekeeping (#3816)
* housekeeping

* bad commit

* fix bad
2022-12-08 14:46:17 +01:00
bvoo 4e9ab796ad
Add timestamp filter for results (#3815)
* Add timestamp filter for results

* moved validation, changed mongo filter to gte.

* conditionally include time in mongo query, strict schema.

* changed min to monkeytype birth date

* added result options, check for nil.

* update description

* timestamp constant

* rename timestamp to onOrAfterTimestamp, make opts optional

* declaration and description modifications

* one last time

* move result ops

* one last one for real
2022-12-07 22:11:22 -05:00
Miodec cb8237a0c0 longer bio 2022-12-07 17:54:15 +01:00
Miodec b458a6dd9d false positives 2022-12-07 17:54:09 +01:00
Snyk bot 829a68b3e7
fix: backend/package.json & backend/package-lock.json to reduce vulnerabilities (#3814)
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-GOT-2932019
- https://snyk.io/vuln/SNYK-JS-QS-3153490
2022-12-07 15:52:48 +01:00
Bruce Berrios c1dfc53e58
Refactor queues (#3783) Bruception 2022-11-30 19:39:16 +01:00
egorguslyan 618c9ec931
Ip (#3784) egorguslyan
* Finishing logic

* Numbers + layoutfluid

* One interface

* Filter results

* tts error on undefined

Extencions like NoScript can partly block scripts on the page.
If speech synthesis is not loaded, notification shows up
without freezing the page

* Improved randomcase

* Prevent dublicates in command line

* Change filter logic

* Prettier

* Convert numbers

* num

* Quote and zen modes

* withWords

* Misc

* Expand funboxes list for pb saving

* Move list to backend

* Move to constants

* Async withWords, checkFunbox tweak

* Prettier

* Forbid nonexistent funboxes

* Disable speech if language is ignored

TtS's init() uses setLanguage()

* canGetPb

* Less circular imports

* Ligatures typo

* Simon says blocks word highlight

* blockWordHighlight backend

* Changed imports

* usesLayout

* JSON schema

* IP funbox

* Split

* Display notification instead of reseting

* canGetPB

* One getWordHtml

* Dividing properties

* No sync

* blockedModes

* forcedConfig

* Infinitness parameter, list sync

* applyConfig, memory

Remove extra applyConfig somewhere;
Memory in quotes and custom modes

* I lost this code after merging

* Remove arrowKeys

* isFunboxCompatible

* Fix logic

* sync canGetPb

* remove FunboxObjectType

* baloons

* moved cangetpb function to pb utils

* updated the pb check to be easier to understand

* Refactor isFunboxCompatible

* Check modes conflicts

* Strict highlightMode type

* Only one allowed or blocked highlight mode

* More checks

* Undefined only, not false

* Prettier

* Highlight modes

* added intersect helper function

* reworked forced config
 - storing allowed modes as an array, not string
 - first value will be used if config is outside of the allowed values
 - instead of checking if highlight mode is allowed, checking if the whole config is available
- removed the "Finite" forced config and replaced it with "noInfiniteDuration" property
- config event listener now checks every config change, not just highlight mode. this will ensure any future forced configs will work straight out of the box

* ManualRestart in commandline

* fixed funbox commands not correctly showing which funbox is active

* Upd list

* Merge

* canGetPB for ip

* Reduce list

* split funbox into smaller files
moved funbox files into its own folder

* missing none command

* added function to convert camel case to space separated words

* changed config validation to be blocking the change rather than reacting to the change

* reduced code duplication

* allowing sub color flash

* moved keymap key higlighting and flashing into an observable event

* moved tts into a observable event

* passing funbox into config validation funcitons

* replaced getActive with get

* only keeping functions structure in the list, moved the actual function bodies to funbox.ts
done to remove a circular dependency
still need to finish the rest of the funboxes

* removed empty function definitions (typing issues)

* removed unnecessary type

* unnecessary check

* moved mode checking to config validation

* longer notification

* checking funboxes before changing mode

* moved more functions

* fixed incorrect type

* checking funboxes when setting punctuation and numbers

* Rest of funboxes

* fixed funbox commands showing tags text and icon

* checking if funbox can be set with the current config

* better error message

* validating with setting time and words
importing from a new file

* added a function to capitalise the first letter of a string

* using function from a new file
new parameters

* moved test length check to a function in a different file

* moved some funbox validation into its own file

* only  showing notifications if the setWordCount returned true

* moved funbox validation to its own file

* setting manual restart when trying to set funbox to nonoe

* moving this validation to before activating the funbox

* returning forcedConfigs along side if current value is allowed
moved infinite check to checkFunboxForcedConfigs

* removed function, replaced by funox validation

* removing duplicates

* throwing if no intersection

* wrong type

* always allowing setting funbox
sometimes it might be possible to update the config

* checking forced configs first, and updating config if possible
only setting funbox to none when couldnt update config

* basic difficulty levels

* xp funbox bonus

* Delete old file

* Difficulty level

* removed console logs

* renamed import, renamed type

* lowercase b for consistency across the codebase

* renamed variable for readability

* renamed for clarity

* converted metadata to object

* changed from beforesubgroup on the command to before list on the subgroup

* using code suggested by bruce

* renamed type

* removed console log

* merch banner fix

* important animation

* updating the icon of "none" funbox command

* removed unnecessary import

* lowercase b

* updated description

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Miodec <jack@monkeytype.com>
2022-11-30 19:25:57 +01:00
egorguslyan 588d14a2b3
Multiple funboxes (#3578) egorguslyan
* input-controller

* result

* Finishing logic

* Numbers + layoutfluid

* One interface

* Filter results

* tts error on undefined

Extencions like NoScript can partly block scripts on the page.
If speech synthesis is not loaded, notification shows up
without freezing the page

* Improved randomcase

* Prevent dublicates in command line

* Change filter logic

* Prettier

* Convert numbers

* num

* Quote and zen modes

* withWords

* Misc

* Expand funboxes list for pb saving

* Move list to backend

* Move to constants

* Async withWords, checkFunbox tweak

* Prettier

* Forbid nonexistent funboxes

* Disable speech if language is ignored

TtS's init() uses setLanguage()

* canGetPb

* Less circular imports

* Ligatures typo

* Simon says blocks word highlight

* blockWordHighlight backend

* Changed imports

* usesLayout

* JSON schema

* Display notification instead of reseting

* canGetPB

* One getWordHtml

* Dividing properties

* No sync

* blockedModes

* forcedConfig

* Infinitness parameter, list sync

* applyConfig, memory

Remove extra applyConfig somewhere;
Memory in quotes and custom modes

* I lost this code after merging

* Remove arrowKeys

* isFunboxCompatible

* Fix logic

* sync canGetPb

* remove FunboxObjectType

* baloons

* moved cangetpb function to pb utils

* updated the pb check to be easier to understand

* Refactor isFunboxCompatible

* Check modes conflicts

* Strict highlightMode type

* Only one allowed or blocked highlight mode

* More checks

* Undefined only, not false

* Prettier

* Highlight modes

* added intersect helper function

* reworked forced config
 - storing allowed modes as an array, not string
 - first value will be used if config is outside of the allowed values
 - instead of checking if highlight mode is allowed, checking if the whole config is available
- removed the "Finite" forced config and replaced it with "noInfiniteDuration" property
- config event listener now checks every config change, not just highlight mode. this will ensure any future forced configs will work straight out of the box

* ManualRestart in commandline

* fixed funbox commands not correctly showing which funbox is active

* Upd list

* Reduce list

* split funbox into smaller files
moved funbox files into its own folder

* missing none command

* added function to convert camel case to space separated words

* changed config validation to be blocking the change rather than reacting to the change

* reduced code duplication

* allowing sub color flash

* moved keymap key higlighting and flashing into an observable event

* moved tts into a observable event

* passing funbox into config validation funcitons

* replaced getActive with get

* only keeping functions structure in the list, moved the actual function bodies to funbox.ts
done to remove a circular dependency
still need to finish the rest of the funboxes

* removed empty function definitions (typing issues)

* removed unnecessary type

* unnecessary check

* moved mode checking to config validation

* longer notification

* checking funboxes before changing mode

* moved more functions

* fixed incorrect type

* checking funboxes when setting punctuation and numbers

* Rest of funboxes

* fixed funbox commands showing tags text and icon

* checking if funbox can be set with the current config

* better error message

* validating with setting time and words
importing from a new file

* added a function to capitalise the first letter of a string

* using function from a new file
new parameters

* moved test length check to a function in a different file

* moved some funbox validation into its own file

* only  showing notifications if the setWordCount returned true

* moved funbox validation to its own file

* setting manual restart when trying to set funbox to nonoe

* moving this validation to before activating the funbox

* returning forcedConfigs along side if current value is allowed
moved infinite check to checkFunboxForcedConfigs

* removed function, replaced by funox validation

* removing duplicates

* throwing if no intersection

* wrong type

* always allowing setting funbox
sometimes it might be possible to update the config

* checking forced configs first, and updating config if possible
only setting funbox to none when couldnt update config

* basic difficulty levels

* xp funbox bonus

* removed console logs

* renamed import, renamed type

* lowercase b for consistency across the codebase

* renamed variable for readability

* renamed for clarity

* converted metadata to object

* changed from beforesubgroup on the command to before list on the subgroup

* using code suggested by bruce

* renamed type

* removed console log

* merch banner fix

* important animation

* updating the icon of "none" funbox command

* removed unnecessary import

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Miodec <jack@monkeytype.com>
2022-11-30 16:57:48 +01:00
Bruce Berrios 83cfd272a2
Fix weekly leaderboard timestamp logic (#3780) 2022-11-29 11:33:58 +01:00
Miodec dcfc5702b4 changed to monkeytype 2022-11-29 01:04:00 +01:00
Bruce Berrios a4022f43a8
Refactor ape rate limiter (#3778) Bruception 2022-11-28 17:13:00 +01:00
Bruce Berrios 87b89e0d57
Add weekly xp leaderboards backend (#3511) Bruception
* Add weekly seasons

* Fix test

* Add week timestamp tests

* Add unit tests

* Fix weeks before calculation

* Update user.spec.ts

* Remove minXp maxXp reward config

* Record total time typed + last activity timestamp

* Season -> Weekly XP Leaderboard

* prettier

* Add config hints

* Update leaderboard.ts

* monkeytype

Co-authored-by: Miodec <jack@monkeytype.com>
2022-11-28 14:10:02 +01:00
Miodec 7f78018475 updated regex 2022-11-18 23:54:49 +01:00
Miodec 25883e3bc9 removed regex 2022-11-18 23:54:49 +01:00
Miodec 32bdcbbec0 removed regex 2022-11-16 00:14:55 +01:00
Miodec 6458029d0a removed regex check 2022-11-15 23:58:39 +01:00
Miodec 0192b025df verifying language with regex 2022-11-15 16:51:22 +01:00
Miodec f76849f921 better request validation 2022-11-15 16:40:19 +01:00
Miodec 17d9733bba upgraded packages
cors
firebase-admin
simple-git
2022-11-15 12:44:24 +01:00
Miodec f72c3a6702 added a state token to make sure we only link to the user that started the oauth2 flow 2022-11-09 15:44:31 +01:00
Miodec 682216588d better erorr message when username contains profanity 2022-11-08 12:54:23 +01:00
Miodec 0f589b0e5b allowing .-_ in github and twitter names
closes #3729
2022-11-08 12:45:48 +01:00
Miodec 310db63597 only allowing alphanumerics 2022-11-07 17:51:15 +01:00
Miodec cf411245e6 removed some profanities 2022-11-04 14:27:47 +01:00
Miodec 95b91f1d70 not recording uids for now 2022-10-29 14:31:36 +02:00
Miodec 508c289c92 added a function which applies a custom rate limiter when using ape key
opened results endpoint to ape keys (1 req per hour)
updated docs to mention new open endpoint
2022-10-28 18:42:44 +02:00
Miodec b00e5d893e logging busiest uids 2022-10-28 14:39:33 +02:00
Miodec a6a7454d2e deleting ape keys, presets, config on user delete
also removing from leaderboards
closes #3684
2022-10-26 19:02:37 +02:00
Miodec b1d53f1f99 fixed incorrect schema 2022-10-19 00:34:47 +02:00
Brian Evans cffa7514ea
Save speed stats in leaderboard update (#3652) mrbrianevans
* Save speed stats in leaderboard update

Saves a histogram data structure of speeds for buckets rounded to the nearest 10.

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* API endpoint to get public speed stats

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* Add APE class for public stats (WIP)

I created an APE class for accessing public stats. Also stubbed getting and showing the public speed stats on the about page. Haven't implemented the histogram yet though.

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* Draw histogram for global speed stats

On about page

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* Update histogram colors on theme change

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* Fixed out-of-order data in speed histogram

 Data was not sorted correctly, which resulted in an incorrect histogram being drawn.

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* Public speed stats PR fixes

Small fixes based on PR feedback:
 - changed _req to req
 - removed unnecessary client version header

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* Add endpoint for typing stats

New endpoint to retrieve the public typing stats such as global count of tests completed.

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* Renamed public-stats to public

Except in cases where it would cause an identifier named `public` as this is forbidden in strict mode.

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* Add stats section to about page

In this commit:
 - add a section above about called stats
 - display typing stats in three columns
 - underneath show the histogram of speeds on english time 60
 - make chart responsive

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* Add unit test for Public DAL

Signed-off-by: Brian Evans <ebrian101@gmail.com>

* updated styling

* only requesting data once per session

* going one column on narrow screens

* added option to specify number of decimal poitns

* just showing million instead of abbreviating
updated structure
updated styling

Signed-off-by: Brian Evans <ebrian101@gmail.com>
Co-authored-by: Miodec <jack@monkeytype.com>
2022-10-18 15:45:45 +02:00
Miodec f0dca0cf13 filling default values 2022-10-17 13:32:52 +02:00
Miodec b13448ae7c turns out foreach stops exceptions from propagating 2022-10-17 13:30:14 +02:00
Miodec 437614b20c strict undefined check instead of a nullish check 2022-10-17 13:18:30 +02:00
Miodec be8b6f082e throwing instead of defaulting 2022-10-17 13:16:23 +02:00
Miodec e31b708082 default values, added throw in case of missing data 2022-10-17 13:03:58 +02:00
Miodec d44e4f7a12 allowing undefined funbox through (same as none) 2022-10-17 13:03:32 +02:00
Miodec 7a678a2cdf updating tag pbs on result tag update
part of #3663
2022-10-17 12:23:34 +02:00
Bruce Berrios a3b3387f01
Purge from dailies (#3635) Bruception
* Purge from dailies

* Fix

* Migrate logic to lua script

* added test to pass coverage

* typo

* also purging user from daily lbs on personal bests clear

Co-authored-by: Miodec <jack@monkeytype.com>
2022-10-10 18:29:29 +02:00
Miodec ea9cb797df descriptive error 2022-10-10 17:18:52 +02:00
Miodec 60d4116e6a added uid to profile data 2022-10-10 00:14:32 +02:00
Miodec f0b80ff967 end range seems to be non inclusive 2022-10-05 12:11:21 +02:00
Miodec ebeafd9880 added all time lb positions to profiles 2022-09-29 13:08:10 +02:00
Miodec e96366e9d3 logging streak lost 2022-09-28 20:45:46 +02:00
Miodec a273372990 fixed a bug where losing a streak would not save max streak length correclty 2022-09-28 20:43:13 +02:00
Miodec 40addbf97f added daily pace caret mode
closes #3564
2022-09-28 13:07:07 +02:00
Miodec e16634dad4 deleting user if captcha fails 2022-09-28 12:19:53 +02:00
Miodec 8fca782f30 not using cache if requiring fresh token 2022-09-28 00:17:42 +02:00
Miodec a9f1580aab fixed duplicate imports 2022-09-27 15:49:32 +02:00
Miodec 9182d353fe upped cache to 50mb 2022-09-27 00:52:50 +02:00
Bruce Berrios 0283cba792
Replace profile URI to use username (#3598) Bruception
* Replace Profile URL to use username

* Remove Auth import

* using replace state to fix back button not working

Co-authored-by: Miodec <jack@monkeytype.com>
2022-09-26 10:51:52 +02:00
Bruce Berrios e6a8747d41
yyyriyriy ppp[i6riy (#3603) Bruception
* Add new synth click sounds

* Use key codes instead

* Fix Sound preview

* Check for caps lock

* Add new quote - imperial march
2022-09-26 10:41:31 +02:00
Miodec 4f146ae5a8 fixed backwards logic 2022-09-25 18:17:10 +02:00
Miodec e9503a24c2 fixed bad expiration date calc 2022-09-25 18:09:19 +02:00
Miodec 75f89fadd4 reverted size test
added else to avoid double counting
2022-09-25 15:41:01 +02:00
Miodec 92bbd1b081 testing without size calculation 2022-09-25 15:16:48 +02:00
Miodec a54eb3a3bb added LRU cache to avoid asking firebase to decode the tokens
added prometheus metrics for the token cache
2022-09-25 14:48:24 +02:00
Miodec 61626aa44d moved country middleware to auth to get access to base url and route path 2022-09-23 20:28:03 +02:00
Miodec c29ac5ff44 reverted to baseurl and route path 2022-09-23 20:27:28 +02:00
Miodec e0b9a63ec5 using req.url instead 2022-09-23 20:15:33 +02:00
Miodec 1f1ba6bcfd optional chaining 2022-09-23 20:05:49 +02:00
Miodec 0fff40f912 added country log test 2022-09-23 20:03:01 +02:00
Jack 409f0a83e4
Get profile by name (#3585)
* handling query param
getting user by name if query param is present

* added function to get user by name

* split profile function to get user by uid or name

* added  function to check if get parameter exists in url

* updating the profile based on the url parameter

* using query param in url

* using get param

* renamed param name
adding search param to pathname in the deafult parameter value

* renamed param

* renamed param
added query validation

* extracted repeated query to a function

* missing await

* fixed typo
fixed validation

* using em for dynamic font sizes

* using em for dynamic font sizes

* added line height

* using em

* using em

* using page profile search instead

* updated the way data is passed into the page

* profile search page

* setting line height

* removed vertical align

* moved navigate to an event to avoid circular deps

* fixed route controller not being included

* removed unnecessary test

* showing 404 error

* improved query checking

* renamed query param

* fixed test

* note

* yeet

* cleaner type definition
2022-09-22 17:45:57 +02:00
Miodec 6fd6cdf55b added captcha requirement to create new user 2022-09-22 12:56:38 +02:00
Miodec 4db07975ff ignoring domain 2022-09-20 15:58:43 +02:00
Miodec 5e7d2aad61 added eslint rule to force async markings 2022-09-20 14:25:51 +02:00
Miodec 526f391ffc added configuration to disable user sign up 2022-09-19 00:21:23 +02:00
Miodec 9e2d84da72 stricter rate limits 2022-09-19 00:15:57 +02:00
Miodec 918f09d522 updated log 2022-09-19 00:12:34 +02:00
Miodec e731c9c0cc blocking domain 2022-09-19 00:01:57 +02:00
Miodec 8a78e2b462 added bailed out test too short validation 2022-09-17 22:18:50 +02:00
Miodec 0fca1073bb fixed exact wpm match showing as new pb
closes #3539
2022-09-15 12:55:26 +02:00
Miodec 48a1c765eb missing type 2022-09-12 13:01:35 +02:00
Miodec ddea63d371 added more detailed incomplete test tracking
altering incomplete xp gained based on accuracy of those tests
2022-09-12 12:57:24 +02:00
Bruce Berrios 7339ec7ce0
Clear rewards (#3528) 2022-09-10 18:30:36 +02:00
Miodec 8dabb39d70 missing rounding 2022-09-09 11:03:31 +02:00
Bruce Berrios c894a862e4
Add xp reward overrides (#3525) Bruception, Miodec
* Add xp reward overrides

* edge case

* switched to defined brackets instead of just min and max

* foreach

* moved type to its own interface

* updated spec

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-09-08 22:38:28 +02:00
Miodec e9c6534c39 fixed failing test 2022-09-07 13:53:34 +02:00
Miodec 5bf0c9a951 moved streak logic from controller to dal
closes #3515
2022-09-07 13:15:37 +02:00
Miodec 9e7e0fc6ff checking if inventory is undefined 2022-09-06 17:02:35 +02:00
Miodec fada34500d fixed users being unable to claim their rewards 2022-09-06 16:57:54 +02:00
Miodec 1c82d85662 not sending awards if maxXpReward is 0 2022-09-05 15:16:50 +02:00
Miodec ee5c07d10a displaying longest streak on profile 2022-09-05 15:12:24 +02:00
Miodec 949e49cfa2 added maxstreak 2022-09-05 15:05:12 +02:00
Miodec 85dc20e8cd Merge branch 'newnav' 2022-09-05 13:55:09 +02:00
Miodec d461255be1 Merge branch 'master' of https://github.com/Miodec/monkeytype 2022-09-05 12:17:59 +02:00
typermonkeyuser b08c194c3d
Implement streaks (#3385) typermonkeyuser, bruception, miodec
* Implement streaks

* Improve code

* Update package.json

* Store streak on the user

* Pretty-fix

* Ensure that streak is up to date

* Fix issue in streak calculation

* Revert prettier changes

* Update polish.json

* Update db.ts

* Remove initial calculation

* Write mandatory test

* using strict equality

* moved functions to the utils file

* importing utils

* adding streak to breakdown,
rounding and parsing streak modifier

* renamed variable

* renamed fields

* using correct field name

* added streaks to configuration

* showing streak during xp breakdown

* incrementing streak earlier
checking configuration before applying modifier

* returning streak to the client

* setting local streak with the number returned from the backedn

* only reading streak when updating profile instead of updating

* sending streak information in profile

* only showing streak if greater than 0

* setting to empty if no streak

* renamed config property

* updated streak calculation

* refactored isYesterday

* refactored streak update

* only displaying if streak larger than 1

* merged configuration properties into 1

* added configuration for max streak bonus

* added isToday check back (derp)

* reverted streaks back to multiplier approach

* using better maprange functin

* removed import

* moved test to dal spec

* clamping

* removed imports

* fixed test

* increased coverage

* removed angry console log

* typo

* using date now instead of dates

* mocking date now
awaiting expect

* not using date

Co-authored-by: Anonymous <110769200+fasttyperdog@users.noreply.github.com>
Co-authored-by: Rizwan Mustafa <rizwanmustafa0000@gmail.com>
Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-09-05 12:13:55 +02:00
Miodec de251d0741 checking if xp is nan 2022-09-05 02:19:21 +02:00
Bruce Berrios 20a5cac5e6
Reward daily leaderboards and refactor mail API (#3508) Bruception
* Reward daily leaderboards and refactor mail API

* Reorder

* Change mail template
2022-09-04 23:58:46 +02:00
Miodec 2a7b6a874c updated message 2022-09-04 20:18:27 +02:00
Miodec 93ab0c6116 not using template 2022-09-04 20:16:01 +02:00
Miodec 86371ae432 only sending inbox data if inbox is enabled 2022-09-04 20:06:05 +02:00
Miodec 283c2773c5 Merge branch 'master' into newnav 2022-09-04 20:04:08 +02:00
Miodec 18f9785e04 sending to inbox if user got banned 2022-09-04 20:03:27 +02:00
Miodec 002d007f1f returning if user got banned 2022-09-04 20:03:09 +02:00
Miodec 2f21bff1a2 fixed corrected everything bonus being applied too often 2022-09-04 18:22:24 +02:00
Miodec 2081f29f32 omiting selected field 2022-09-03 14:38:34 +02:00
Miodec f61691d4fe sending max mail in response 2022-09-02 00:03:15 +02:00
Miodec de895a1cd2 converted font size to use an input field allowing any font size 2022-08-30 22:34:27 +02:00
Bruce Berrios 4b49900d57
Add inbox (#3458) Bruception
* Add basic inbox

* Changes

* Remove export

* Move condition

* Use for each
2022-08-30 15:19:26 +02:00
Miodec e43a30b39d building breakdown object on the server 2022-08-29 01:33:18 +02:00
Bruce Berrios 0dfa3ef773
Urgent (#3457) 2022-08-27 20:39:02 +02:00
Bruce Berrios 87a0da839a
Add endpoint for getting server config (#3431) Bruception
* Add endpoint for getting server config

* Fix route stack

* Add comment
2022-08-23 12:24:37 +02:00
Miodec 453e88599f removed another one 2022-08-22 16:16:58 +02:00
Miodec 4c4f20313f removed word from profanities 2022-08-22 16:16:40 +02:00
Miodec 6f41db5575 30 instead of 7 days 2022-08-22 14:27:36 +02:00
Bruce Berrios 5a0e8ae72e
Housekeeping (#3374) 2022-08-08 16:16:07 +02:00
Bruce Berrios 43a384c0e0
Fix/refactor xp (#3373) bruception
* Fix/refactor xp

* Prettier fixes

* Prettier
2022-08-06 16:57:01 +02:00
Miodec cf15878713 calculating daily bonus based on the total user xp, up to 1000 2022-08-05 15:40:35 +02:00
Miodec 115d32ab26 disabled daily bonus for now 2022-08-05 15:19:12 +02:00
Miodec 18c7d7db18 fixed server always reporting daily bonus 2022-08-05 15:13:07 +02:00
Miodec 2ee84972ee catching error 2022-08-05 00:56:17 +02:00
Miodec a32821c02e added min values in result schema 2022-08-05 00:33:11 +02:00
Miodec fdcc1337ae added daily bonus 2022-08-05 00:27:06 +02:00
Miodec 84443d8f8b allowing custom 2022-08-04 18:30:36 +02:00
Miodec 3b4229ffc1 Merge branch 'master' of https://github.com/Miodec/monkeytype 2022-08-04 17:41:11 +02:00
Miodec cc6234f2b9 using long 2022-08-03 23:17:50 +02:00
YummyOreo 9cbcdf9062
resets the xp when reseting account (#3359) YummyOreo
* resets the xp when reseting account

* adds test for reseting user
2022-08-03 16:28:46 +02:00
Miodec fb4c47792c removed custom onresponsefinish function 2022-08-02 20:31:41 +02:00
Miodec da4aac9a15 adjusted punctuation and numbers modifiers 2022-08-02 00:49:03 +02:00
Miodec e48fdc2a89 added xp and levels 2022-08-02 00:21:09 +02:00
Jan Golebiowski 3a73954b45
Added config for displaying the keymaps top row (#3353)
* added config for displaying the keymaps top row

* fixed keysplit for top row

* prettier

* lined up top row properly

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-07-31 12:47:31 +02:00
Aayush Paurana 725a074bd8
making profile endpoint accessible with ape keys and adding the relev… (#3317)
* making profile endpoint accessible with ape keys and adding the relevant documentation #3256

* withApeRateLimiter middleware added #3265

* fixed documentation errors #3256

* fixed documentation errors #3256
2022-07-20 11:22:27 +02:00
Miodec b9973f1277 ads 2022-07-12 13:01:26 +02:00
Bruce Berrios af70bc5971
Bump coverage (#3314) 2022-07-06 21:01:58 +02:00
YummyOreo e794bbd68d
Adds a reset account button to the settings page (#3206) YummyOreo
* adds reset button

* moves it up above the delete button

* i am blind

* i cant move stuff

* adds reset for the profile

* Adds reseting for ape keys, and presets, also adds more resets in the user settings

* Delets all ape keys not just one

* Prevents conflicts for delete endpoints

* changes from reset to deleteAll in ape keys

* Refactors the code to use Promise.all

* adds reloading

* unit tests ape key deletion

* fixes some bugs

* Fixes type o

* More typeo fixes

* Returns nothing for reset user

* Simplifies code

* changes from reset to deleteAll for all but users

* Checks db not the memory

* fixes typo

* fixes the tests

* fixes

* fixes bugs and refactors some code

* adds requireFreshToken to the authentication

* migrates all reseting to the user endpoint

* removes the delete all for ape unit test

* to lazy to make commit message

* parallelize the calls to the db (I think)

* also resetting config

* also resetting discordid and avatar

* using unset

* updated wording

* level 1 message

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-07-06 12:59:40 +02:00
smunky 695bccedee
remove quickTab and swapEscAndTab from config-schema (#3311) 2022-07-06 11:22:35 +02:00
Bruce Berrios 0dd2539bf7
Add minor optimization (#3294) 2022-07-03 15:57:09 +02:00
Miodec 6e6ba3bf9d Merge branch 'master' of https://github.com/Miodec/monkeytype 2022-07-02 19:04:03 +02:00
Miodec 5dac8020c2 importing performance 2022-07-02 19:03:12 +02:00
Bruce Berrios 616e26b5c5
Add version commit hash (#3286)
* Add version commit hash

* Add frontend client hash

* Remove export
2022-07-02 18:49:13 +02:00
Miodec 162beea1b8 removed log 2022-07-02 18:19:45 +02:00
Miodec d14a582cb8 sending different path to prometheus 2022-07-02 17:39:48 +02:00
Miodec 9acd68e99f optional chain 2022-07-02 14:34:01 +02:00
Bruce Berrios da61bfb83c
Refactor auth (#3291) 2022-07-02 14:23:51 +02:00
Miodec b3ef10ddc2 typo 2022-07-02 13:55:26 +02:00
Miodec 7b8a66779c removing get form path for measuing 2022-07-02 13:54:45 +02:00
Miodec 3f98c4b801 recording time to auth in prometheus 2022-07-02 13:43:40 +02:00
Miodec 211ab8ab8e removed try it out button from docs 2022-07-01 11:57:07 +02:00
Jack db3b6755b8
Rewriting middleware tests (#3266)
* aoaoaooao

* different attempts

* figured out the test

* added another test

* redefining next before each function, checking next call count

* removed eslint ignore
2022-06-30 16:31:06 +02:00
Miodec b813dd5aa0 running tests sequentially 2022-06-30 01:33:23 +02:00
Miodec 8ec307c837 added authentication tests 2022-06-30 01:15:06 +02:00
Miodec 8d17f699df removed log 2022-06-30 00:59:14 +02:00
Miodec 4b423a5484 removed condition (iat is guaranteed to be there) 2022-06-30 00:12:23 +02:00
Miodec 2aa251fc46 moved logic to another function 2022-06-30 00:11:09 +02:00
Miodec 9085b5af9d added fresh token requirement 2022-06-30 00:03:58 +02:00
Bruce Berrios 9da5e441be
Add new rate limiting flow (#3230) Bruception
* Add new rate limiting flow

* Oops

* Fix nit

* Fix some bugs

* Split key generation functions

* Remove 429

* Change message for root limiter

* Flag 429 and add config

* Add status code config

* Check enabled flag

* Add custom status for ape keys

* Bump coverage

* swapped conditions around
whats the point of checking if the status code is in the array if the whole thing is turned off anyway

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-06-28 13:45:57 +02:00
Bruce Berrios a552c127f8
Refactor Users DAL (#3223)
* Refactor two calls

* Return void

* Remove update result

* Remove delete result
2022-06-25 16:56:43 +02:00
Bruce Berrios f30fa1c9d5
Fix all time lb again (#3219) 2022-06-24 16:15:47 +02:00
Bruce Berrios 1346dd669c
Tune profanity detection (#3214)
* Tune profanity detection

* Remove console log

* Remove profanity

* Add tests for profanity

* Fix test case
2022-06-24 11:17:43 +02:00
Bruce Berrios b0b39c7dc5
Fix leaderboard update bug (#3217)
* Fix leaderboard update bug

* Add test for sanitize string
2022-06-24 11:16:53 +02:00
Miodec 9231250afd removed hell 2022-06-24 11:14:06 +02:00
Jack 66074c8314
Inventory badge selection (#3210) bruception miodec
* Fixed badges not showing on all time leaderboards

* updated types to support inventory and single badge id

* Add badge selection

* Fix bug

* Remove unnecessary prefill

* using new inventory system

* added no balloon option

* updated text color

* not showing balloon

* updated styling for showing badges selection

* Add badge selection

Co-authored-by: Bruception <bberr022@fiu.edu>
2022-06-23 18:00:53 +02:00
Evan 87a5bae7d2
remove monkeytype-js from the docs (#3213) 2022-06-23 11:44:23 -04:00
Jack d26d7d0555
Converted badges to inventory (#3209)
* added inventory type

* new badges

* fixed badges not showing on all time leaderboards

* sending the selected badge id to daily lb

* returning inventory in profiles

* updated types to support inventory and single badge id

* fixed all badges not showing on profile page

* removed await

* smol refactor
2022-06-23 15:47:15 +02:00
Miodec 90ae4938c4 removed users that need to change their name from the leaderboards 2022-06-23 01:18:29 +02:00
Miodec 275b7cf3fa also added swapescandtab 2022-06-21 15:29:44 +02:00
Bruce Berrios db9dcafc25
Add User Profiles (#3174)
* profile

* rounded table corners

* rounded leaderboards corners

* wider page by default

* v3

* font changes

* new pbtables

* blank by default

* showing pb popup

* removed some quotes

* rounding displayed acc

* removed created date (will be shown in profile)

* added profile module that fills the profile element

* updating font size in the middle of the swap to make the change not noticeable

* lowered max font size

* showing if user is banned,
not displaying most details if user is banned

* pbs not selectable

* renamed global stats to time typing

* completed previous commit

* changed function parameters

* only hiding when social is missing

* smaller badge

* aligning quick results
spanning time if wide

* larger badge

* fixed function parameters

* moved to root

* media queries

* Add user profile API (#3123) bruception

* Add flattenObjectDeep

* Add user profile API

* Bump coverage

* Add user profile configuration and rate limits

* Rename profile -> profileDetails

* Simplify

* Filter personal bests

* Handle banned users

* Add banned user test

* new profile layout system
"none" layout finished

* better "none" layout

* "socials" layout

* larger gap

* bioandkey layout done

* "both" layout finished

* final touches

* Add profile editing (#3135)

* Add profile editing

* lowered font size
increased right padding

* updated configuration schema

* moved discord integration to users object in configuration

* added warning comment

* rendering new lines

* edit popup styling

* Sanitize ZAlgo text

* Use trim

* Replace more than 2 spaces with two spaces

* Trim first

* Add profanity detection

* Ass

* Removed some profanities

* Update profanity detection

Co-authored-by: Miodec <bartnikjack@gmail.com>

* Add profile routing (#3143) bruception miodec

* Add profile routing

* removed check (also fixes circular deps)

* change page in special cases

* Hydrate profiles

* Link leaderboards to profiles

* Add failed to load div

* Dont refresh page

* always calling middle callback

* moved profile css into its own file

* fixed one media query

* added preloader, changed default layout

* added reset function
changed function name
updating profile before the page is shown, not after

* resetting after the page is hidden and before its updated

* Fix logic to not delete user if DB goes down (#3171)

* Dont route to account if uid equals current user uid

* temporairly allowing quicktab

* added copy link button

* only increasing padding on the account page

* set max height

* handling copy link button

* only showing avatar if it exists

* 1000 instead of 100

* removing placeholder if image request was successful

Co-authored-by: Miodec <bartnikjack@gmail.com>

* Fix quote length field

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-06-21 12:01:55 +02:00
Miodec bca69b6f09 Merge branch 'master' of https://github.com/Miodec/monkeytype 2022-06-20 16:32:05 +02:00
Miodec 3e5982f1de temporairly allowing quicktab 2022-06-20 16:31:59 +02:00
Bruce Berrios 6a3f01f6a9
Fix logic to not delete user if DB goes down (#3171) 2022-06-20 16:10:43 +02:00
Jack ae300bfa94
Disabled time typing requirement on dev (#3169)
* checking if mode is dev when adding to daily lb

* disabled time typing check on dev when recalculating leaderboards

* not replacing footer on localhost

* using ternary

* modified logic
2022-06-20 15:06:35 +02:00
kenny bb31d75c4b
removed swapEscAndTab, replaced quickTab with quickRestart (#3139) devkennyy
* Add leaderboard language selection (#3124) bruception

* Adds leaderboard language selection

* Update mesage

* fixed disabled select2 styling

* changed button positioning

* fixed media queries

* Add languages

Co-authored-by: Miodec <bartnikjack@gmail.com>

* remove references of swapEscToTab

* Custom Filters [FrontEnd] (#3106) nocommentcode

* Add Create and Delete functions for Filter Presets to `Users` ape endpoint
- deleteFilterPreset
- addFilterPreset

* Added name and _id fields to the `ResultFilter` interface in the front end

This matches the `ResultFilter` interface in the backend
Added the new fields for the default filter
Added checks in result-filter.ts to not update the ui based on these fields

* Added new-filter-preset-popup

This popup is displayed when creating a new filter preset
It allows the user to select a name.

* Added Filter Preset Buttons in account page html

- Added the Filter Preset button
- Added the filter preset region
- Added the new and delete buttons

* Added Filter Presets to DB Snapshot

* Implemented Custom Fileter Creation, Selection and Deletion flow

- Users can now create a custom filter based on the current settings
- Users will be prompted to select a name for the filter
- User can click on any custom filter and the current filter will be updated
- User can delete a custom filter while it is selected

* Implemented Filter Preset Creation, Selection and Deletion flow

- Users can now create a filter preset based on the current settings
- Users will be prompted to select a name for the filter
- User can click on any filter preset and the current filter will be updated
- User can delete a filter preset while it is selected

* adjusted styling

* removed margin

* removed icon

* added media query

* popup wording

* automatically replacing _ when displaying and creating preset

* using loader and notifications

* fixed bork

* fixed sometimes not being able to delete preset

* make preset popup look like tags popup

Co-authored-by: Miodec <bartnikjack@gmail.com>

* added pace caret: last closes #3113

* Add rate limits to forgot password (#3129) mehdidev

* Added New Quotes

* Add More Quotes

* Add rate limit to forgot password

* Use Prettier

* Change canCall to let so that lint doesn't flag me for the 69th time

* change forgotPassword() to async & remove console.log's

* If this doesn't fix everything idk what to do

* reduced nesting, using function to create error message

* updated notification

Co-authored-by: Miodec <bartnikjack@gmail.com>

* added: code_opencl language (#3132) codybloemhard

* added: code_opencl language;

* fixed: duplicate word in code_opencl;

* fixed: another duplicate in code_opencl;

* Include language in notification (#3134)

* Add 20 more Indonesian quotes, 151-170 (#3136) R0merol

* Added 20 more quotes (151-170)

* Fixed quote length (id: 155, 157)

* using completed events language instead of current config

* add hedge theme (#3137) devkennyy

* create hedge theme

* update _list.json

* fixed sub alt color issues

* update colors

* updated colors

Co-authored-by: Miodec <bartnikjack@gmail.com>

* replaced quickTab with quickRestart

* updated keytips and statements

* update keytips

* moved keytip update to ui module

* not opening command line if quick restart is esc

* calling update keytips when changing quick restart

* handling restarting with quick restart escape

* updated settings page to reflect new quick restart setting

* swapping legacy values

* removed line which caused circular dependencies

* reordered files to fix event not firing

* handling closing with escape before opening

* not doing anything if a modal is visible

Co-authored-by: Bruce Berrios <58147810+Bruception@users.noreply.github.com>
Co-authored-by: Miodec <bartnikjack@gmail.com>
Co-authored-by: Malo Hamon <hamon.malo@gmail.com>
Co-authored-by: Mehdi Hussain <mehdi@mehdi.us>
Co-authored-by: Cody Bloemhard <cblmhrd@live.nl>
Co-authored-by: R0merol <farisfrontiers@gmail.com>
2022-06-16 23:57:34 +02:00
Bruce Berrios 7b89328f47
Refactor add user (#3133) bruception 2022-06-16 19:42:13 +02:00
Miodec 03d90949df storing list of auto assignable roles on the server 2022-06-16 18:29:15 +02:00
Miodec 3da4eb45c0 added pace caret: last closes #3113 2022-06-15 19:35:01 +02:00
Bruce Berrios 141dc262e7
Rename customFilters -> resultFilterPresets (#3115)
* Rename customFilters -> resultFilterPresets

* Update messages
2022-06-12 19:34:52 -04:00
Malo Hamon b55419dfc0
Custom Filters [Backend] (#3105) (#3110)
* Added `ResultFilters` to types
Added customFilters field to user
This field is an optional array of `ResultFilters`
It will store a user's custom filters

* Added Add and Remove functions for `ResultFilters` in user DAL

Also added unit tests

* Added Custom Filter configuration

Can now enable/disable the custom filters feature
Can also set a cap on the number of filters per user

* Add and Remove functions for `ResultFilters` in user controller
2022-06-11 22:38:09 -04:00
Malo Hamon ba843419a1
Custom Filters [Backend] (#3105)
* Added `ResultFilters` to types
Added customFilters field to user
This field is an optional array of `ResultFilters`
It will store a user's custom filters

* Added Add and Remove functions for `ResultFilters` in user DAL

Also added unit tests

* Added Custom Filter configuration

Can now enable/disable the custom filters feature
Can also set a cap on the number of filters per user

* Add and Remove functions for `ResultFilters` in user controller
2022-06-11 20:32:06 -04:00
Miodec 957ea335c7 updated message 2022-06-09 21:43:00 +02:00
Bruce Berrios 603455d6eb
Add logic to handle fetching previous daily leaderboards (#3087)
* Add logic to handle fetching previous daily leaderboards

* Add basic select controls for time range

* Fix issue

* updated styling

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-06-09 21:04:10 +02:00
Bruce Berrios 270fa5dfbe
Fix lines stylinh (#3082) 2022-06-07 23:56:20 +02:00
Bruce Berrios 1260f13293
Add config for discord integration (#3081) Bruception 2022-06-07 23:41:37 +02:00
Bruce Berrios b25ac99527
Add leaderboard avatars and badges (#3069) bruception
* Add leaderboard avatars and badges

* Add discord id

* badges -> badgeIds
2022-06-07 23:10:58 +02:00
Bruce Berrios f2998b1d28
Add server configuration panel (#3070) bruception
* Add server configuration panel

* Remove unnecessaary check

* Remove break

* styling changes
showing when configuration was saved

* changing color based on response

* Remove comment

* Changes

* Add support for arrays

* Arbitrary nesting

* Add array item controls

* added button to quickly open the configuration panel

* removed excessive padding

* text inputs same height and style as checkboxes

* monkey stylng

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-06-07 14:06:15 +02:00
Miodec 48679e0cc2 returning discordid and avatar 2022-06-03 19:58:40 +02:00
Bruce Berrios 4dc6f1e791
Update discord avatar (#3068)
* Update avatar

* Remove linking notification

* fixed spacing

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-06-03 19:42:00 +02:00
Bruce Berrios 90b5d6bb8b
Add get avatar endpoint (#3060) bruception
* Add get avatar endpoint

* Change API

* Fix response message

* Fix udpate
2022-06-03 16:53:00 +02:00
Bruce Berrios 0bd0812416
Check redis status when getting client connection (#3065) 2022-06-03 14:01:03 +02:00
Bruce Berrios defa9a3f55
Save discord avatar uri on link (#3059)
* Initial avatars

* Only store hash

* avatarHash -> discordAvatar
2022-06-01 15:36:22 -04:00
Miodec 71bba2581c logging auto ban event 2022-06-01 14:21:23 +02:00
Miodec a17343636a updated rate limit 2022-05-31 20:30:41 +02:00
Miodec dc7295f3f6 storing name history 2022-05-31 20:19:45 +02:00
Miodec 2e248f5ee8 fixed task args 2022-05-29 15:45:19 +02:00
Bruce Berrios 07b3053c5a
Add maintenance check for cron jobs (#3034) 2022-05-27 21:20:37 +02:00
Bruce Berrios efbfffaa75
Fix daily leaderboard score (#3031)
* Fix daily leaderboard score

* Remove comment
2022-05-27 14:25:46 +02:00
Bruce Berrios cd767bff1c
Use better score metric (#3030) 2022-05-27 02:21:23 +02:00
Bruce Berrios 5d45898893
check if user is banned (#3029) 2022-05-26 22:13:42 +02:00
Miodec 1d64387b92 logging daily lb update 2022-05-26 18:44:50 +02:00
Miodec 532db055b4 rate limit 2022-05-26 16:48:26 +02:00
Bruce Berrios 0ef52ed9da
Add daily leaderboards (#3023) bruception
* Setup daily leaderboards backend (#2987) bruception

* Setup daily leaderboards backend

* Add enabled checks

* Consistent naming

* Add initial unit tests

* Use more flexible daily leaderboard rule logic

* Fix seed rule

* Add LRU Cache + Rank Calculation

* Use native functions

* Optional daily leaderboard rank

* Proper status code for invalid lb mode

* Add result criteria check

* Make daily leaderboard cache size configurable

* Add Ape endpoint for daily leaderboard (#2997)

* support for switching to viewing daily lbs

* test

* buttons

* only checking daily if user has more than 2 hours typed

* updated structure

* setting rank if its undefined

* only when daily

* storing uid

* fixed media queries

* Daily leaderboards pagination (#3006)

* Pagination

* Remove with scores

* Add daily leaderboard rank (#3014) Bruception

* Add daily leaderboard rank

* Remove unused import

* Use object instead

* Add client logic

* Add limit checks

* Announce top daily leaderboard results (#3017)

* Add rank in daily leaderboard results (#3022)

* not showing lb memory and top % on daily

* Fix rank pagination

* Actual fix

* showing new rank

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-05-26 16:30:11 +02:00
Evan 66c912e817
use interfaces instead of types (#3002) ferotiq
* use interfaces instead of types

* Update custom-text.ts
2022-05-26 12:19:01 +02:00
Miodec 2e3db31a39 changed error condition 2022-05-24 00:31:51 +02:00
Miodec b029d86460 added note about the package to the api docs. closes #2999 2022-05-23 21:19:54 +02:00
Miodec 42d984981a 2 hours minimum to be placed on the lb 2022-05-21 01:32:09 +02:00
Miodec 12b4b899a5 overriding name later 2022-05-21 01:18:09 +02:00
Miodec 7c711bc4c2 only getting accounts with more than an hour of typing 2022-05-21 01:15:15 +02:00
Miodec 632b7e4bf6 Merge branch 'master' of https://github.com/Miodec/monkeytype 2022-05-21 00:13:13 +02:00
Miodec 4710a70e0c overriding result name to be sure 2022-05-21 00:12:50 +02:00
Bruce Berrios 294ff4c95a
Remove uid from last result (#2998) 2022-05-19 20:44:24 +02:00
Bruce Berrios 1384e9f81d
Add pretty check (#2990) bruception
* Add pretty check

* test

* test

* Add pretty check

* Add condition check

* Enforce style on code changes

* Update scripts

* Any src
2022-05-19 11:31:18 +02:00
Jack 46e0c5c960
Auto ban (#2984)
* added auto ban if user triggers anticheat too much

* updated base configuration

* autoban is optional

* storing updated autoban array

* only checking autoban in time 15 and 60

* miliseconds

* removed unnecessary if check

* returning if already banned

* storing now in variable
greater not greater equal

* moved constant outside function

* using partial type

* renamed variables

* renamed to autoBanTimestamps

* added autoban tests

* increased coverage minimum

* slightly better test

* added autoBanTimestamps checks to other tests
2022-05-16 21:03:44 +02:00
Miodec 699ddd8737 renamed field 2022-05-13 09:41:41 +02:00
Bruce Berrios 6c666f12ba
Add user creation flow test (#2971) bruception 2022-05-13 09:05:57 +02:00
Bruce Berrios 0a371b531a
Add more tests (#2965) Bruception and sondrekje
* Cover updateName

* Test clearPb, export getUsersCollection for testing purposes

* Add base coverage

* Month -> thirty days

Co-authored-by: Sondre Kjempekjenn <sondre.kjempekjenn@gmail.com>
2022-05-11 14:08:06 +02:00
Miodec 41c142b49a blocking users from submitting results if they need to change name 2022-05-08 20:47:45 +02:00
Miodec 616d068e2f needsToUpdateName > needsToChangeName 2022-05-08 16:59:45 +02:00
Miodec 0a1ac828e7 moved invalid name check higher 2022-05-08 16:58:57 +02:00
Miodec 0a4a7eabe7 added test to make sure users cant take an unavailable name 2022-05-08 14:54:15 +02:00
Miodec a0f6fabf10 is name available is async 2022-05-08 14:24:02 +02:00
Miodec 1baa5c1651 not checking last name change if user needs to change name 2022-05-08 13:20:18 +02:00
Bruce Berrios cdbc0bf770
Add logic to handle duplicate names (#2958) 2022-05-08 08:59:12 +02:00
Bruce Berrios ee5ef57d89
Delete bot dal (#2953) 2022-05-06 17:36:23 -05:00
Evan d9ffcfb4ee
Preparing for George Update (#2895)
* bot-commands rename

* removed bot dal

* reomoved unnecessary configuration entry

* quotes:code_javascript: Add regex-heavy quote. (#2929) markstos

* quotes:code_javascript: Add regex-heavy quote.

This quote contains a long regex that will be a workout for typing
symbols and numbers.

Source code can be confirmed to available under an open source license
here: https://github.com/markstos/parse-coordinates/blob/master/index.js

* fixed length

Co-authored-by: Miodec <bartnikjack@gmail.com>

* fixed script names

* fixed incorrect path

* definitely didnt forget about those

Co-authored-by: Miodec <bartnikjack@gmail.com>
Co-authored-by: Mark Stosberg <mark@rideamigos.com>
Co-authored-by: Jack <jack@monkeytype.com>
2022-05-06 23:48:15 +02:00
Miodec 6d52d8ce1b fixed incorrect path 2022-05-05 23:28:02 +02:00
Bruce Berrios 8095dd6bfc
Add test step in pr-check action (#2942) Bruception
* Add test step in pr-check action

* Add jest action

* Specify wd

* Remove action

* Remove test

* Add anti-cheat check
2022-05-05 23:06:40 +02:00
Sondre Kjempekjenn afd288a717
Testing - mock setup for redis (#2944) 2022-05-05 14:05:31 -04:00
Bruce Berrios 91220a5bdc
Move backend source files into src folder (#2943) 2022-05-05 19:27:00 +02:00
Bruce Berrios 38ed2f60aa
Remove await (#2941)
* Remove await

* Remove async

* Remove await server
2022-05-05 11:13:09 -04:00
Sondre Kjempekjenn 88a587c5c2
Feature/backend test (#2937) sondrekje
* Switch to ts-node-dev for development

* Minimal setup for backend testing

* Basic controller test

* __tests__ directory

* Delete old DB client

* Improve tests, ensure DB cleanup only runs for inMemory DB
2022-05-05 15:19:31 +02:00
Bruce Berrios 73f21c9cc5
Remove class syntax from george (#2935)
* Remove class syntax from george

* Remove boolean
2022-05-05 02:00:12 +02:00
Bruce Berrios e5c295cfe4
Remove class syntax from db client (#2940) Bruception
Co-authored-by: Jack <jack@monkeytype.com>
2022-05-05 01:57:51 +02:00
Sondre Kjempekjenn 9634b93fc3
Add docker-compose and instructions to README (#2939) sondrekje 2022-05-05 01:52:17 +02:00
Miodec bf8862fe74 not exiting in dev mode when redis connection failed
closes #2930
2022-05-04 19:27:34 +02:00
Miodec 8524646380 renamed folder dao to dal 2022-05-04 01:51:25 +02:00
Miodec ec8ec49b71 Merge branch 'master' of https://github.com/Miodec/monkeytype 2022-05-04 01:48:29 +02:00
Bruce Berrios 6ee84b2484
DAO -> DAL (#2928)
* DAO -> DAL

* This what?

Co-authored-by: Jack <jack@monkeytype.com>
2022-05-04 01:47:51 +02:00
Miodec de97d798eb moved data validation to anticheat repo 2022-05-04 01:44:13 +02:00
Miodec b27f5c935b removed todo 2022-05-04 01:21:07 +02:00
Miodec ca2c82db38 removed unused types 2022-05-04 01:20:26 +02:00
Jack e6982f293d
Small Dao dals (#2927)
* converted preset dao to dal

* psa dao > dal

* typo

* config dao > dal

* public stats dao > dal

* fixed bad merge

* removed this

* removed comment
2022-05-04 00:43:58 +02:00
Bruce Berrios 9b7b5feb71
BotDAO -> BotDAL (#2926) bruception 2022-05-04 00:38:57 +02:00
Miodec 49befe4f76 unborked the code 2022-05-04 00:34:38 +02:00
Miodec 61292dfb8c fixed previous commit 2022-05-04 00:23:31 +02:00
Miodec a4ca55cb73 converted report dao to dal 2022-05-04 00:17:34 +02:00
Bruce Berrios 12a63b1cb4
Ape keys dal (#2925) bruception
* Convert Ape-keys DAO to DAL

* Fix this reference
2022-05-04 00:13:48 +02:00
Miodec a41bcad72d further stripping results of empty / zero values and then resetting them back to default when downloading results 2022-04-28 16:05:53 +02:00
Miodec ebea7078bd removed quote length if result is not quote
closes #2898
2022-04-28 15:57:50 +02:00
Miodec 89e99fa668 added get last result to public api
closes #2893
2022-04-28 12:39:18 +02:00
Miodec e419187d2c added get stats endpoint
closes #2892
2022-04-28 12:22:54 +02:00
Miodec 0b24ec2afb also serving at docs 2022-04-28 12:22:26 +02:00
Rizwan Mustafa 369f96691e
Refactor User DAL (#2857) rizwan
* Create romanian quotes (#2846) DKparadox

* Create romanian

* Add files via upload

* Rename romanian quotes.json to romanian.json

* Delete romanian

* Update romanian.json

* Update romanian.json (#2852) DKparadox

* Refactor User DAL

* Remove unnecessary check

* Add stack var in getUser

* removed unnecessary throw

* Fix error

Co-authored-by: DKparadox <93858181+DKparadox@users.noreply.github.com>
Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-04-27 16:42:17 +02:00
Miodec 5f47133b31 added better error message
closes #2871
2022-04-27 16:08:03 +02:00
Jack 9ca477da54
Added tape mode (#2862)
* added config param for tape mode

* added settings section

* added commands

* moving caret to the correct place with tape mode is active

* only jumping line when not using tape mode

* prettier

* scrolling tape

* restarting test when tape mode changed

* showing one line when tape mode is active

* added function for scrolling words horizontally

* scrolling tape when layout emulator is enabled

* removed left margin when tape is active

* disable tape for some challenges

* fixed incorrect caret position when going back to a previous word

* ignoring no-this-alias

* fixed lines scrolling to often when tape mode was disabled

* storing caret width in a variable

* not allowing tape mode and show all lines together

* removed unnecessary comment
2022-04-24 17:04:46 +02:00
Evan 58505a9f31
Fix Collection Types (#2864) 2022-04-24 01:37:05 +02:00
Jack b60e6905ce
Made username non optional (#2859)
* reduced code repetition

* throwing error when no name provided

* stopping signout if no current user

* expanded to 16 chars

* moved code to popup file

* added google sign up popup

* checking if name is available in the backend

* deleting account if popup was closed
uncommented sign up process
addd functions to enable and disable input

* added google sign up event to avoid circular dependency

* hiding by default

* name is no longer optional
user is deleted if its database object is not found

* using loader to indicate background activity
2022-04-23 19:46:41 +02:00
Jack bdacc24660
Converted new quotes to typescript (#2844)
* renamed to ts

* added type for new quote

* converted to ts

* renamed dao to dal, fixed logic
2022-04-21 17:23:24 +02:00
Rizwan Mustafa 5691643b7a
Fixed versions (#2851) 2022-04-21 12:28:30 +02:00
Jack 6598823d60
Converted leaderboards DAO to typescript (#2843)
* added type for leaderboard entry

* converted leaderboards to ts

* fixed return type

* renamed occurences to DAL

* removed as any

* removed as any

* removed type casting
2022-04-21 12:24:13 +02:00
Rizwan Mustafa b4c191e931
Convert ResultDAO to typescript and rename to DAL (#2838)
* Started conversion to typescript

* Added types to db collection

* Removed changed logic
2022-04-19 13:49:12 +02:00
Rizwan Mustafa a0d5392884
(Backend) Ability to make Quotes Favorite (#2826) rizwanmustafa
* Created API for making quotes fav

* Moved routes over to quotes

* Renamed favQuotes to favoriteQuotes

* Renamed routes

* Removed error to prevent confusion and panic

* Added regex check for quote id and added fav quote number check

* Some fixy

* Added configuration for max favorite quotes

* Added grouping

* Created variable for storing collection

* Changed variable name

* Changed variable name

* Fixed some problems

* Fixed bug

* Added length chekc for quoteId

* MOved routes over to user

* Renamed routes
2022-04-14 22:53:44 +02:00
Miodec 6c6ebc2a24 removed unnecessary type cast 2022-04-14 18:38:03 +02:00
Rizwan Mustafa f07a6dd656
Convert UserDAO to typescript & rename to UserDAL (#2821)
* Started conversion to typescript

* Some more fixy fixy

* Final fixy fixy or at least that is what it seems

* Even more fixy fixy

* Add verifed = false upon usre creation

* Added return type

* Removed extra data

* Fixes

* Removed class syntax of UserDAO

* Name fix

* Renamed UserDAO to UserDAL

* Fixed errors

* Fixed some problems

* Fixed pb bug

* Strict Equality

* Var name change

* Var name change
2022-04-14 18:07:28 +02:00
Miodec ccd0bd6174 added support for approving quotes of one language
closes #2825
2022-04-11 16:05:07 +02:00
Miodec e6fcc2daf2 added name field to approved quotes. closes #2824 2022-04-11 15:55:59 +02:00
Jack ca00a53317
Added sub alt color, fixed various styling inconsistencies (#2804)
* replaced rgba with sub-alt

* changed color name

* reworked button styles, removed icon-button

* renamed color

* grid

* no text decoration

* renamed all icon buttons to text buttons

* using text-button

* fixed discord section

* using button class instead of redeclaring styles

* updated scroll styling

* more consistent scroll to top styling

* dot not in link

* fixed dot spacing

* actually fixed dot (stupid prettier)

* signout closer to the edge

* using text-button class

* updated button text for consistency

* lowercase

* moved show average section down

* fixed icon not being fixed width

* updated focus and hover button styling

* footer using text-button class

* fixed spacing
added new lines

* making sure custom themes work with sub alt

* updated validation

* reordered colors

* added sub alt colors to all themes

* updated alt sub colors

* temp

* updated sub alt colors

* updated sub alt

* fixed merge

* fixed merge

* merge fix

* moved section down

* lowercase

* merge fix

* consistent wording

* merge fix

* fixed merge

* removed test notifications

* removed balloon

* adjusted subalt

* removed debug code

* removed unused code

* removed some unused/old code

* fixed dot spacing
2022-04-07 22:04:43 +02:00
Miodec 5169f20ece unnecessary check 2022-04-07 01:30:16 +02:00
Bruce Berrios a3fc6e9997
Migrate redis client and configuration client from class syntax (#2802) 2022-04-05 12:41:20 -04:00
Miodec 5545b8e0a3 added error message if user is already linked
closes #2794
2022-03-31 19:47:18 +02:00
Bruce Berrios beb7e35dcb
Remove class syntax from controllers (#2791)
* Remove class syntax from controllers

* Specify base and rename
2022-03-30 18:20:13 -04:00
Miodec d3c093bb42 checking size of config
removed confusing error
2022-03-28 17:41:16 +02:00
Rizwan Mustafa 020ac5cb24
Add logging support from Winston with colored output (#2774)
* Converted initial outputs to color outputs

* Some more coloring

* Colored all error outputs

* Completed coloring of outputs

* Created basic logger instance

* Moved over to Winston for logging

* Remove unnnecessary stuff

* Added max file size

* Renamed log to logToDb

* minor refactor and added tab separation with timestamps

* Some changes. Thanks Bruception

* Created wrapper for logger

* Tiny refactor

* Some fixes

* Some fixes

* Update example env

* Remove general

* using default yellow, making colors bold

* removed square brackets

* removed square brackets

* using logger instead of console log

* updated timestamp format

* moved comment up

* Fixed typo

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-03-27 11:29:11 -04:00
Miodec a8bf141ed7 checking if resulthash length is 40 2022-03-25 20:46:35 +01:00
Bruce Berrios 1159072755
Optional redis (#2770)
* Make redis optional

* Specify return value
2022-03-25 19:15:26 +01:00
Bruce Berrios ad8c433e45
Save exact (#2769) 2022-03-25 16:01:45 +01:00
Rizwan Mustafa 47c7fd42c7
Improve webpack - Reduced filesize by 18% by converting from node-object-hash to object-hash (#2768) rizwanmustafa
* Refreshed the PR

* not sending stringified result anymore

* removed length check

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-03-25 15:36:04 +01:00
Miodec ed1d248ab6 allowing to run backend without redis 2022-03-25 15:25:03 +01:00
Evan cbca2a8957
Remove JavaScript Compilation from the Frontend (#2764) Ferotiq
* remove javascript compilation from frontend

* add dat back

* I'm going risky

* regen and put the type back
2022-03-25 13:19:21 +01:00
Bruce Berrios 4999fd4bf5
Add Redis client and george task queue (#2765) bruception
* Add Redis client and george task queue

* Add queue configuration

* Change dual write
2022-03-25 13:13:54 +01:00
Evan e60baef095
Add Show Average Accuracy and Make Show Average Speed Show CPM (#2756) Ferotiq
* show cpm for always show cpm

* Add show average: acc and make speed work for cpm

* eqeqeq

* round

* rename to remove clutter

* rename and change icon

* Combine functions

* remove comment

* Update index.html

* rounding if show decimal places is disabled

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-03-24 13:58:32 +01:00
Jack 6b49a3c5e7
v1.14.1 (#2745)
* 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>
2022-03-21 21:22:47 +01:00
Miodec ef5ebe6eb9 cloning request body instead of referencing 2022-03-17 15:09:04 +01:00
Bruce Berrios e512eeb149
Remove generic validation message (#2721) 2022-03-17 12:27:01 +01:00
Miodec 0e1d151112 only logging with psas path 2022-03-17 01:10:15 +01:00
Miodec d613f9a0f3 typo 2022-03-17 01:08:27 +01:00
Miodec e9a37e0598 tracking unknown version 2022-03-17 01:08:13 +01:00
Miodec 9f6322e572 temp typo 2022-03-16 23:43:06 +01:00
Miodec 7ee40b6b6f Revert "removing custom text from the hash"
This reverts commit 3b01cd4f19.
2022-03-16 23:00:18 +01:00
Miodec 3b01cd4f19 removing custom text from the hash 2022-03-16 22:41:21 +01:00
Miodec c4e6b5dfca temp remove required 2022-03-16 22:08:11 +01:00
Miodec b6aa92b5cd temp 2022-03-16 21:34:02 +01:00
Miodec 7cb4bb9a35 temp 2022-03-16 21:28:39 +01:00
Miodec 389fe63a49 Revert "not sending key data when not needed"
Key data is needed to validate test

This reverts commit 2a7eab75be.
2022-03-16 20:48:42 +01:00
Bruce Berrios 64f06231cd
Add initial client version tracking (#2710) bruception
* Add initial client version tracking

* Make headers optional

* Add client version

* Add client version on build

* header fix

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-03-16 16:53:11 +01:00
Miodec b0a32f37b7 logging test duration 2022-03-16 14:32:40 +01:00
Miodec e4632d3f91 added buffer second 2022-03-16 14:31:19 +01:00
Miodec 052e120bd8 rewrote spacing check, should work more reliably 2022-03-16 14:17:40 +01:00
Miodec 2a7eab75be not sending key data when not needed 2022-03-16 13:19:27 +01:00
Miodec 6459983840 updating leaderboards every 15 minutes 2022-03-12 21:47:43 +01:00
Miodec d80ad81746 tracking how long it took to update the leaderboard 2022-03-12 21:06:53 +01:00
Miodec ac63198f74 added wpm, acc and duration histograms 2022-03-12 18:29:32 +01:00
Miodec 9dae088202 added result, language and funbox counters 2022-03-12 16:11:00 +01:00
Jack 4c396717ef
Added a custom auth counter to prometheus metrics (#2690)
* added basic auth and prom client dependencies

* incrementing auth counter

* added custom prometheus metric

* turns out there is no need for basic auth

* updated name

* exact

* exact
2022-03-12 15:20:18 +01:00
Miodec 6a237dfd64 sending 404 early to avoid logging all the query params 2022-03-11 23:30:03 +01:00
Miodec fa634e0426 stopping rank command from running if leaderboard is updating 2022-03-11 15:20:43 +01:00
Jack 5bccc789aa
added curly rule, fixed all errors (#2677) 2022-03-10 21:56:45 +01:00
Jack 9e41df2158
Leaderboard update flag (#2676)
* blocking leaderboard get requests if lb is updating

* locking lb while its updating

* brackets
2022-03-10 21:34:20 +01:00
Bruce Berrios 6b12ba3900
Include error id (#2671) 2022-03-10 21:30:16 +01:00
Miodec 1cfe1e79eb more incorrect paths aaaaaaaaa 2022-03-10 15:31:52 +01:00
Miodec 123acaecec path 2022-03-10 15:28:58 +01:00
Miodec bc9209e15e storing path in const 2022-03-10 15:26:01 +01:00
Miodec b54cf2b03f incorrect path 2022-03-10 15:24:30 +01:00
Miodec 71a8936bfb fixed incorrect path 2022-03-10 15:20:05 +01:00
Bruce Berrios 95a8a32008
Add user permissions for ape keys (#2665)
* Add user permissions for ape keys

* Optional

* Rename
2022-03-09 20:41:50 +01:00
Jack 34e730c6fc
Custom themes storage (#2660)
* Fixed typo

* Created method for adding theme in the UserDAO:

* Created function for checking if custom theme object is valid

* Exported the isThemeValid function

* Added controller for adding customTheme

* Created route for adding custom theme

* Created rateLimit for adding customTheme

* Fixed typo

* Fixed incorrect color length

* Added method for removing, getting and editing custom themes on the backend

* Moved validations from controllers to routes and some aesthetic changes in the user dao

* Started working on frontend and some minor changes in the backend

- Commandline support for custom themes
- Allow user to shift to their custom theme using Shift-click
- Updated the backend to be compatible with some changes
- Create a new custom theme for users with old system to prevent their custom theme loss

* Fixed custom theme type in ape and now new custom theme is created if user clicks the custom tab and doesn't already have one

* Fixed ape type issue

* Format html file

* Fixed wrong tab being active

* Created new custom theme edit section

* Fixed bug where user theme would have impact on icons with custom theme

* Update customThemes API

* Updated the custom theme sharing option to work with multiple custom themes

* Started working on the UI for custom theme buttons

* Added DOM event for clicking custom theme buttons

* Updated the updateActiveButton to work with multiple custom themes

* Removed favorite button for themes and fixed bug where double theme buttons were being added

* Fixed bug where preset theme buttons were not appearing if user has applied custom theme on website load and refreshed

* Moved DOM event for sharing custom theme to more appropriate place

* Integrated the save custom theme button with the changes

* Fixed bug with custom theme tab buttons and theme buttons

* Fixed commented div

* Replaced 'sds' with a meaningful message for custom theme buttons

* Integrated the delete button for deleting custom themes and fixed bug where id of newly added custom theme was not set properly

* Integrated the add button and name field for custom themes editing

* Added addCustomThemeWrapper element

I added it before but seems like vscode and other editors can't handle large files

* Removed some debug statements

* Removed some more debug statements

* Used parial types for custom theme. Thanks Bruce

* Removed unnecssary try catch blocks. Thanks Bruce

* Rephrased custom theme API messages

* Set new theme fields explicitly to prevent validtion failures and rephrased API message

* Replaced let with const

* Replaced let with const for _id

* Replaced let with const and used nullish coalescing

* Improved code quality in User DAO

* Strict equality in user DAO

* Moved validation scheme to a variables at the top of file

* Fixed bugs with strict equality checks

* Renamed themeId to themeID for consistency

* Made customThemes a required type in db to remove unnecessary undefined checks

* Uncommented GET API endpoint

* Prevent colorId being updated on custom theme name chnage

* Removed debug log

* Added loader on api calls

* Commenced shift from customThemeIndex to customThemeId

* Added required to themeColors schema

* Temp fix for validation fail for customThemeId

* Changed default value of customThemeId back to ''

* Temp fix for validation fail for customThemeId

* Fixed minor bug

* Fixed bug where account-controller would pass undefined to ThemeController.set

* Created methods in db.ts for adding, deleting and editing custom themes. Created new interface for raw custom themes and renamed ape methods

* Removed repeating code in account-controller

* Removed repeating code in theme-picker

* Removed setThemes in config

* Fixed minor bug

* Removed repeating code in user DAO

* Made custom themes available to registered users only

* Fixed minor bug

* Removed debug log and updated custom theme commands before showing list

* Added popup for confirming custom theme deletion

* Added custom option for random theme

* Minor improvement

* Workaround for local config firing before firebase initalization

* Removed debug log and created workaround for migration

* Added legacy customTheme config field

* Replaced workaround

* Changed put to patch

* Changed put to patch

* Added customTheme field back

* Integrated customTheme into to feature

* Added notifications for users when they access custom theme cmd option without being logged in

* Removed debug logs and comments

* Replaced literals with constant. Thanks Bruception

* Fixed wrong querySelector parameters and reset custom theme colors after deleting a custom theme

* added notification on save

* duplicating object instead of referencing

* Added return type on function

* Fixed wrong notification code

* spreading default config instead of referencing

* added index, psas, configs, presets

* camel_case

* added ape keys, leaderboards, results, quotes

* Modified setCustomTheme

* Modified setCustomThemeId

* Added tip for random themes settings

* Modified setCustomThemeId

* Now load custom theme before account loading

* Added custom theme compatibility for non-logged in users to theme-controller

* Now update tabs and buttons on custom theme config value change and modified boolean checks to use customTheme instead of customThemeId

* Fixed bug

* Refactoring in theme-controller.ts

* Enable custom theme support in commandline for logged out users

* More refactoring in theme-controller.ts

* Added custom theme compatibility for logged out users

* Removed double events in settings.ts and now turn on custom theme upon applying

* Fixed bug and recursive call

* Fixed bug

* Fixed random theme custom option

* Fix jquery wrong syntax

* Readded notification upon custom theme edit

* One notification upon error only

* Change notification type

* New custom themes now have default colors

* Notification on custom theme edit for non-logged in users

* Refresh buttons upon settings load

* missing gitignore

* updated message

* updated message

* setting config to unchanged when logging in to avoid issues with applying db config

* reverted some over complicated code, excessive auth checks

* removed customthemeid from config

* not setting custom theme id

* removed all customthemeid references

* removed commented code

* removed name field

* added edit button

* unused file

* removed popup

* removed add button, removed text

* removed duplicate code

* added simple popup checkbox support

* whitespace

* added custom theme popups

* removed warning when no custom themes were found

* removed add button click handler

* added function to save custom theme

* saving current theme not default

* removed custom theme id from default config

* not creating new theme by default, just applying

* reacting to customThemeColors save

* unnecessary function call

* removed unused code

* small refactor

* spacing

* unnecessary code

* turned off warnings for non null asertion

* showing theme name when randomising customs

* Revert "turned off warnings for non null asertion"

This reverts commit 433e1dc767.

* optional with default instead

* fixed custom theme colors always loaded on page load

* fixed custom theme buttons not showing up

* fixed various loading issues

* fixed custom theme edit styles

* showing custom in footer, removed unused code

* savaing custom theme colors
fixed typos

* changing theme

* updated custom theme buttons styling

* scaling custom theme buttons on hover

* not updating settings on theme event

* fixed quote id

* only showing custom themes when logged in

* updating save button text depending on auth state

* fixed double notification when trying to save too many custom themes

* fixed custom theme saving when signed out

* removed user check from db

* fixed exception when signed out user tried to open the custom themes command line

* ignoring file when compiling

* typo

* avoiding href errors

* setting href to an existing file
this fixes firefox custom themes not working

* better hex color regex

* spacing

* renamed function

* typo

* destructuring request

* removed unused function

* removed unused code

* removed unused code

* type fix

* removed non capturing group

* saving colors to config before saving custom theme

* encoding in base64

* added handler that can load themes in the old and new format from the url

Co-authored-by: Rizwan Mustafa <rizwanmustafa0000@gmail.com>
Co-authored-by: Rizwan Mustafa <69350358+rizwanmustafa@users.noreply.github.com>
2022-03-09 19:48:22 +01:00
Bruce Berrios 7fa2827a60
Final touches/tuning for ApeKeys (#2663)
* Final touches/tuning to ApeKeys

* Add rate limiting note

* Add malformed status
2022-03-09 19:40:35 +01:00
Bruce Berrios 2dba957adc
Add public api docs (#2656) by bruce
* Add public documentation

* typo

* added hard limit on the leaderboards

* ignoring worker when compiling

* added leaderboard routes

* leaderboards accept apekeys

* Fix docs

* Fix

* Specify parse base

* Add ape rate limiter

* added documentation link

* updated message

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-03-09 13:02:37 +01:00
Bruce Berrios 79a6cb86ed
Migrate presets to TS (#2662) by bruce 2022-03-09 12:51:20 +01:00
Bruce Berrios 9dfb352a40
Update ape keys data model (#2655) by bruce
* Update ape keys data model

* Add use count

* Add safer check
2022-03-08 00:41:04 +01:00
Bruce Berrios 61ebf2cc39
Add error handling for bad requests (#2654) by bruce
* Add error handling for bad requests

* Fix status code

* Update

* Tidy status codes
2022-03-07 22:16:42 +01:00
Bruce Berrios f4bfb938b2
Consolidate personal bests endpoints (#2653) 2022-03-07 11:25:12 -05:00
Bruce Berrios 3240abc22e
Enable strict null checks in backend (#2639)
* Enable strict null checks in backend

* Fix

* Use non-null assertion

* Add none
2022-03-07 11:10:07 -05:00
Miodec 0ff1d347a6 fixed ignore 2022-03-07 14:39:09 +01:00
Miodec 44c75552ad renamed 2022-03-07 14:37:53 +01:00