Commit graph

1016 commits

Author SHA1 Message Date
Miodec b20643b411 small bug 2023-03-16 14:55:12 +01:00
Miodec 0102dc1806 optional for a while 2023-03-16 14:46:49 +01:00
Miodec 24af35b7aa optional for a while 2023-03-16 14:46:34 +01:00
Miodec 3fb761d3ee loggign ad provider to prometheus 2023-03-16 14:43:54 +01:00
Albert 7ed088a13e
Account graph (#4049) albertying
* Create graph with ao10, ao100, and pb

* Display best ao10 and 100

* Fix ts errors

* Remove old graph

* Remove smoothing slider and toggle chart style button

* Clean up code

* Populate graph if chartData > 0

* Fix filter not displaying data correctly

* Fix wpm cpm labels

* Update colors using theme colors

* brought back accuracy averages

* different colors

* Add toggle ao10 and ao100

* Change opacity based on toggles

* Persist on refresh

* Fix accountActivity chart point color not updating when changing theme in the command line

* Refactor

* Keep pb color consistent

* removed dot

* smaller buttons, in one row, media queries

* hiding bottom scale

* connected the config properties into 1

* Refactor

* Combine into one loop

* cleanup
removed unused functions
reduced repeating code
removed comments
removed console logs

* removed highest avg 10 and 100 stats

* sweep

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2023-03-16 12:57:47 +01:00
Rob Sassack 239c43f240
Added plus three funbox (#4076) robsassack 2023-03-16 12:55:36 +01:00
Miodec 85606bcb6c added strong types to later queue
closes #3966
2023-03-06 15:40:53 +01:00
Miodec 5c93fa7edf added better error to try to identify an issue 2023-03-03 12:10:43 +01:00
Jack 56d8c7c9ae
Added ability to opt out of leaderboards (#4016)
* added button to opt out of leaderboards

* also not allowing daily leaderboards

* also not allowing weekly lb

* added lb opt out notice on the leaderboards

* updated message

* resetting lboptout state on account reset
2023-02-25 23:26:06 +01:00
Miodec 6dab8323a5 updated schema 2023-02-23 21:05:09 +01:00
Miodec 4400ebe538 added duplicate result check 2023-02-21 14:03:56 +01:00
Miodec 6ed5a9422d added zipf funbox 2023-02-21 13:14:36 +01:00
Bruce Berrios 5337a9bb99
Add weekly xp rewards results job (#3939) bruception
* Add weekly xp rewards results job

* Fix formatting

* Pluralize

---------

Co-authored-by: Jack <jack@monkeytype.com>
2023-02-20 12:30:14 +01:00
Miodec 126e67811c removed length check 2023-02-20 11:57:54 +01:00
Rob Sassack 3deb2809a1
Added binary mode to funbox (#4005) robsassack
* Added binary mode to funbox

* changed description and added punctionation off for binary funbox
2023-02-19 13:02:45 +01:00
Miodec 4781755fef replaced email address 2023-02-13 23:55:08 +01:00
Miodec cecfd8b7b5 custom handling error 2023-02-13 15:28:20 +01:00
Miodec aa4f0a41f3 returning false if response was not ok 2023-02-13 15:10:15 +01:00
Jack 1ca0fd1b23
Custom email (#3964)
* added nodemailer and mjml

* added email template

* basic email util file

* added email queue

* email worker

* renamed folder

* showing which queues and workers were initialized

* initializing email on server boot
added some test code

* renamed to email worker

* type fix

* renamed queue

* added queue to list

* added worker to list

* logging when config was verified

* handling send mail result

* not minifying (not supported anymore)
using .html property
returning correct value

* dont send me emails

* added port to .env

* updated example

* updated test email

* using env email

* parseint base

* message

* refactor

* message

* rename

* moved email templates

* using async file read

* typo

* using mustache

* moved file
renamed to email client

* logging with prometheus

* added social links

* line

* using stronger types (object instead of array of any[])
moved prometheus logging into email client
added function to send mail using a template

* fixed templates not working

* removed console log

* name change

* rename

* moved templates

* rename

* string interpolation

* string interpolation

* moved to dev dependencies, exact versions

* moved types

* removed function, remove unnecessary if

* update template params

* updated name

* fixed button not clickable

* throwing

* moved template metadata to one place

* rename

* sending email on account creation

* removed test code
removed await

* fixed button

* not stopping the server if email client validation failed

* added metric for queue lengths

* exposing getjobcounts

* added job to log queue lengths

* added endpoint to request verification email

* using send verification email that calls api instead of firebase built in

* updated route

* renamed function

* recording time to complete

* returning 400 if email already verified

* setting transport initialized to true earlier, setting it to false if caught error

* moved forgot password flow to a simple popup, added new endpoint to ape

* added forgotpasswordemail route

* added email tempalte

* setting transport to false if caught error

* added email queue function

* moved try higher

* fixed log
2023-02-13 13:24:43 +01:00
Jerry Zhou da9b691bb1
New Sound on Click - Pentatonic Scale (#3970)
* added scale function

* cleaned up merge

* cleaned up scale implementation and created closure for previewing scales

* finalized changes

* fixed ci/de

* switched to upper camel case

* undid accidental changes

* updates

* fixed indexing bug and audioCtxt being intialized

* removed mapping

* updated schema with non-inclusive range for two new sound-on-clicks

---------

Co-authored-by: Bruce Berrios <bberr022@fiu.edu>
Co-authored-by: Bruce Berrios <58147810+Bruception@users.noreply.github.com>
2023-02-10 18:11:52 -05:00
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