Commit graph

1143 commits

Author SHA1 Message Date
Miodec 0960d32a1a removing user from auth if no data was found in the db 2023-08-06 22:19:54 +02:00
Christian Fehmer 1f4df9199d
Added configuration for typing speed unit, removed alwaysShowCPM (#4492) fehmer
* Added configuration for typing speed unit, removed alwaysShowCPM

* review comments

* fix live-burst, activityChart and results-pb label

* Added support for typing speed unit in account histogram chart

* trigger build

* Update account.ts

* Fix chart scaling and wpm/rawWpm hovers on result page
fix chart scaling and bucket size on account page

* refactor histogramChartData to support 0.5 steps

* Revert dynamic scaling on accounts/result graph

* Refactor histogramChartData to an int[]

* Fix cutoff in account history

* Fix labels on result page

* Limit result chart label to two decimals

* renamed show average wpm to show average speed

* fix scaling on accounts history graph (again),   not adding an easteregg 🤫

* hiding by default

* fix scaling on accounts history graph episode three

* move typingSpeedUnit related functions out of Misc

* updating account page if typing speed unit changes

* updating result page if changing units on the result page

* missing buton change

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2023-08-04 13:22:27 +02:00
Christian Fehmer b50b473aba
Added crt mode to the funbox (#4465) fahmer
* Added crt mode to the funbox

* remove borders, move screen glow to body, remove lines animation

* removes white flash on test restart, keep crt mode on result page

* cleanup removal of funbox css

* fix white flash when disabling crt mode, fix background

* use actual color for text glow

* fix rendering issue with glow

* adds glow to input, buttons, logo and carets

* prefix new variables with -crt, update themes to fit crt mode

* adds glow to textarea, avatar and fix glow in focus mode

* fix typo in lavender theme

* move crt related stylesheets to separate file, add scanline div on demand

* add applyGlobalCss to keep the theme active on pages outsite the test page

* made sure crt works globally
added a clear global function
calling apply global and clear global when toggling funboxes
delaying globalcss apply because about page for some reason doesnt like funbox css files

* add glow to banner

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2023-07-31 16:32:33 +02:00
Miodec 50c96006c2 removed duplicate header 2023-07-25 17:47:17 +02:00
Miodec 59c34fc988 only allowing 100 submissions per language 2023-07-25 17:00:29 +02:00
Miodec 753d9649e8 updated response schema 2023-07-25 16:43:00 +02:00
Miodec 574532f280 added endpoint to check if quote submission is enabled 2023-07-25 16:40:29 +02:00
Miodec 2e8c58365f sending client version in headers
logging which client versions are getting errors
closes #4475
2023-07-25 15:46:46 +02:00
Miodec ebcc212605 catching drop errors, should fix #4440 2023-07-21 13:04:18 +02:00
Miodec 685668a6b8 todo 2023-07-18 19:18:55 +02:00
Miodec 93c14d6728 stricter schemas 2023-07-17 14:39:59 +02:00
Miodec 6e1e2c6e8f stricter schema 2023-07-17 14:33:26 +02:00
Miodec 30a2b301eb checking if user is admin instead 2023-07-17 14:19:23 +02:00
Miodec 469bdfe32f validation 2023-07-17 13:59:27 +02:00
Miodec 1a8f0b8f18 stricter validation 2023-07-17 13:54:24 +02:00
joanna 6d88c4f4e3
added morse code to the funbox (#4451) epicjoanna
* added morse code mode to funbox

* actioned changes
2023-07-17 13:41:04 +02:00
Miodec f1b79f0bd8 removed some words 2023-07-12 16:40:10 +02:00
Miodec 4c079f2516 flagging user for name change if their name is nullish 2023-07-01 11:18:28 +02:00
Miodec afd2d3442e found the issue 2023-07-01 11:18:09 +02:00
Miodec 3a822f8b4f added todo 2023-07-01 11:04:52 +02:00
Miodec 6645dbc2f7 added log to try to catch an error 2023-07-01 11:04:07 +02:00
Miodec da289b96b1 escaping character 2023-07-01 00:25:32 +02:00
Miodec 555318d0bc updated font family schema 2023-07-01 00:24:57 +02:00
Miodec 9881800175 fixed config schema 2023-06-29 14:21:26 +02:00
Miodec df3e1d7df4 captcha schema 2023-06-29 14:20:55 +02:00
Miodec d4c9fb4874 fixed captcha schema 2023-06-29 14:17:29 +02:00
Miodec e375dee6fe better schema 2023-06-29 14:05:31 +02:00
Miodec 08a96e634a moved content limit check to the DAL 2023-06-29 14:05:31 +02:00
Miodec 7a9eb30cef added content limit for tags 2023-06-29 14:05:31 +02:00
Miodec ca38437153 stricter validation 2023-06-29 14:05:31 +02:00
Miodec 21eeae095e stricter schema 2023-06-29 14:05:31 +02:00
Miodec 92a50a6cb7 stricter schema 2023-06-29 14:05:31 +02:00
Miodec 2d858bece4 stricter schema 2023-06-29 14:05:31 +02:00
Miodec 62ebee77b5 stricter schema 2023-06-29 14:05:31 +02:00
Miodec 1ea9650cce updated language schema
closes #4422
2023-06-29 13:15:55 +02:00
Miodec 10159702ff opened the tags endpoint to the apekey authentication 2023-06-29 13:11:40 +02:00
Miodec 3d2fc2913a omitting note 2023-06-28 14:06:02 +02:00
Miodec 73a24af279 admin validation 2023-06-27 17:03:33 +02:00
Miodec 817b4e6805 more strict config schema 2023-06-26 15:23:57 +02:00
Eduardo Guzman-Diaz cc95aff900
Adding tests for isTagPresetNameValid (#4402) gondolin24
* Adding tests for isTagPresetNameValid

* more generic tag names
added more tests

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2023-06-26 13:16:39 +02:00
Miodec 9d6be7a4ea fixed typo 2023-06-25 21:40:28 +02:00
Miodec 8597037845 added another check to make sure emails match 2023-06-23 16:44:05 +02:00
Miodec 782ac58907 unnecessary catch (we want to be notified if the drop failed as it will cause duplication) 2023-06-21 13:04:59 +02:00
Miodec e2a51d0080 removed possible false positives 2023-06-19 13:24:24 +02:00
Miodec 756c05da96 fixed start of day timestamp being incorrect 2023-06-16 16:08:05 +02:00
Miodec ce404ec964 added more tests 2023-06-16 16:06:23 +02:00
Miodec 6e2887c9b1 removed console logs 2023-06-15 20:27:16 +02:00
Miodec 242e017371 allowing change if undefined or null 2023-06-14 23:56:39 +02:00
Xea 850a14c584
split smoothCaret into several modes (#4374) im-0xea
* split smoothCaret into several modes

* implemented requested changes of smoothCaret modes

* moved config migration code

* bring back caretFlash animation

* fixed error (weird how the build process didnt catch this)

---------

Co-authored-by: Miodec <jack@monkeytype.com>
Co-authored-by: Niki <n.topel@callassoftware.com>
2023-06-14 13:59:24 +02:00
Miodec 2ff29b1f5a actually fixed hour offset getting overwritten 2023-06-14 12:25:29 +02:00
Miodec cb166d2743 fixed everyuser getting houroffset 0 automatically 2023-06-13 23:15:13 +02:00
Miodec d500e06d9b pretty fix 2023-06-12 14:47:13 +02:00
Jack 27b1a7fedb
Streak hour offset (#4357)
* backend flow to set hour offset

* added frontend popup to set streak hour offset

* displaying a message that the user can change offset
displaying the actual offset if its already set

* applying offset when checking streaks

* added tests for the new offset
updated old streak tests

* defaulting to undefined

* removing content if offset is already set

* updated the way offset is displayed

* also updating in the local snapshot
2023-06-12 14:38:44 +02:00
Miodec cca3f8090d updated admin limit 2023-06-07 15:15:14 +02:00
Miodec b2ac4e7197 moved to admin route 2023-06-07 15:00:13 +02:00
Miodec 0107530eae added toggle banned endpoint 2023-06-07 14:53:53 +02:00
Miodec 45eb1e8a40 added rate limiter 2023-06-07 14:53:33 +02:00
Miodec 5a1070be52 1 email attempt 2023-06-07 09:14:58 +02:00
Miodec 895c6738cb added test that verified pb funbox check is working 2023-06-05 18:07:00 +02:00
Miodec 985ef5959e fixed pbs not working with funboxes 2023-06-05 17:46:44 +02:00
Miodec 009c79350b removed console logs 2023-06-05 17:38:41 +02:00
Miodec 6ff95b0e83 updated funbox structure
added frontend properties and functions
updated type
2023-06-05 13:11:39 +02:00
Miodec 2e7179df8e checking if result funboxes are unique
checking if result funboxes are compatible with each other
2023-06-05 13:11:16 +02:00
Miodec f8f80fbeb0 making sure to only take unique funboxes 2023-06-05 12:27:38 +02:00
Miodec bcc6445440 stricter result schema 2023-06-05 11:27:32 +02:00
Miodec f51a64727e stricted result schema 2023-06-05 11:27:32 +02:00
Evan 0f51c384f6
Force mode2 to always be string (#4097) Ferotiq Miodec
* make a util type

* `StringNumber` in `leaderboards.ts`

* fix errors in`pb-tables.ts`

* remove string conversion

* update schemas

* refactor `checkAndUpdatePb`

* use string arrays

* parse the mode2 before comparing

* refactor types

* fallback to empty array

* complete the mode2 string conversion

* missed a few things

* assert

* fix tests

* those were meant to be arrays

* don't supply custom and zen by default

* update interfaces

* add `parseInt`

* rename

* apparently those weren't even needed

* updated type

* added types

* types

* added comment

* added comments, removed triple equals

* another comment and again removed type check

* making sure to include legacy results

* using template strings instead

* using template strings and triple equals

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2023-05-24 15:53:37 +02:00
Nis-chal-Jain 7c8f537941
Fixed an typo at the documentation of monkeytype api (#4306) Nis-chal-Jain 2023-05-22 15:05:03 +02:00
Miodec 5d2b07308b removed console log 2023-05-22 14:32:07 +02:00
Miodec 5ff41ded22 fixed email client not catching sending errors
logging errors to the database
2023-05-17 23:51:37 +02:00
Miodec 014e20cf82 setting cached user banned property,
not checking again if user is already banned
2023-05-17 13:34:46 +02:00
Miodec 445f61c8a8 better comment 2023-05-17 13:34:46 +02:00
Miodec 82bfc5956e updated log 2023-05-17 13:34:46 +02:00
Miodec 16b2b11caf better log 2023-05-17 12:05:48 +02:00
Miodec f0ec3d36ff not allowing users to report themselves
closes #4269
2023-05-15 13:36:58 +02:00
Miodec 6c9eb9ec3a deleting inbox on user reset
closes #4281
2023-05-15 13:36:57 +02:00
Miodec 219ec63794 turns out date.now uses miliseconds instead of seconds... who knew? 2023-05-09 16:06:47 +02:00
Evan 9408322503
Update PersonalBests Interface (#4158) Ferotiq
* update `PersonalBests` interface

* removed properties

* setting to skeleton if needed

* consistency and add skeleton by default

* consistency

* populate personalBests on user get

* simplification + consistency + small fixes

* protecting against partial object

* removed duplicate

* not optional property

* ensuring personal bests structure while creating user snapshot

* checking pb structure for tags

* missing skeleton

* required personal bests property

* simplify

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2023-05-03 11:39:32 +02:00
Bruce Berrios 8ee934c69d
Remove daily lb cache (#4231)
* Remove daily lb cache

* remove init

* lint
2023-04-30 11:25:18 -04:00
Miodec 02d4fa050f logging more fields 2023-04-24 12:54:54 +02:00
Miodec 9ff57a773f fixed tests 2023-04-21 12:05:38 +02:00
Miodec aecdd21474 allowing users to update the casing of their own name 2023-04-21 11:22:43 +02:00
Miodec 017ca95236 passing previous name as function parameter to avoid requesting the user multiple times 2023-04-21 10:44:40 +02:00
Miodec 7d4e1ffc03 moved last name change check to the controller 2023-04-21 10:43:32 +02:00
Miodec ad664812be missing styles in the config validation 2023-04-21 10:11:13 +02:00
Miodec c12852eef2 updated bullmq 2023-04-20 13:27:41 +02:00
Miodec 5fbc14c73c cron version bump 2023-04-20 13:13:08 +02:00
Miodec 2d8a4a7651 update firebase admin 2023-04-20 13:08:53 +02:00
Miodec cc59b346fc looking fo the service account key in the src folder 2023-04-18 16:19:46 +02:00
Miodec c6d0070dd3 moved firebase admin into its own module
not initialising if ther eis no service account
this allows the backend server to be ran without firebase (all though it will throw errors)
closes #4190
2023-04-18 15:50:54 +02:00
Miodec 942df911bd fixed server boot errors not displayed correctly 2023-04-18 15:50:54 +02:00
Miodec dcbf5e0333 Merge branch 'newads' 2023-04-18 12:44:55 +02:00
Miodec e6cbdfd6c0 not including users who have opted out 2023-04-18 11:28:00 +02:00
Miodec f053ca2c96 stopped ab test, removed ab test tracking code 2023-04-17 16:47:39 +02:00
Miodec d96eea2bca Merge branch 'master' into newads 2023-04-12 16:26:59 +02:00
Miodec 26a876938e i am stupid 2023-04-12 16:26:45 +02:00
Miodec 73c84b43c3 Merge branch 'master' into newads 2023-04-12 00:03:00 +02:00
Miodec c36664c00c passing lboptout into validation 2023-04-12 00:01:31 +02:00
Miodec f29db00949 added catch, disabled cache for send verification email 2023-04-11 23:24:14 +02:00
Miodec 4262144c85 Merge branch 'master' into newads 2023-04-06 01:40:35 +02:00
Miodec eedb92d77f sending chartotal to the backend 2023-04-06 01:39:44 +02:00
Miodec 09bb9d5687 Merge branch 'master' into newads 2023-04-05 18:29:20 +02:00
Miodec 1a47ca9b00 added start to first 2023-04-05 18:27:17 +02:00
Miodec 5cfc79f578 deleting new properties 2023-04-05 18:26:46 +02:00
Miodec 9902f983a1 Merge branch 'master' into newads 2023-04-05 13:37:00 +02:00
Miodec 9a5ea07ca0 logging ua 2023-04-05 13:36:50 +02:00
Miodec 70bf4d7d3c Merge branch 'master' into newads 2023-04-05 10:41:29 +02:00
Miodec 8f0f63182e logging version 2023-04-05 10:41:01 +02:00
Miodec dc14aa9e41 Merge branch 'master' into newads 2023-04-04 18:57:12 +02:00
Miodec 1d3501ce94 reworked the way key spacing is recorded
added lastKeyToEnd (time between last keypress and test end)
2023-04-03 19:27:15 +02:00
Miodec 252139178e updated error message 2023-04-03 19:25:13 +02:00
Miodec 486c2d0632 using new duration calculation
added keyoverlap
2023-04-03 14:57:59 +02:00
Miodec 8e7f966fc7 added min value 2023-04-03 14:52:54 +02:00
Miodec 1205b5cfd4 moved key stats up,
moved hash check down
2023-04-03 14:52:34 +02:00
Miodec 9f99e1ee37 added todo 2023-04-03 14:51:51 +02:00
Miodec 13fff606d0 array type 2023-04-03 13:22:25 +02:00
Miodec 77092a508e Merge branch 'master' into newads 2023-03-27 15:18:55 +02:00
Miodec 18f27c26db added admin endpoints configuration 2023-03-27 15:12:33 +02:00
Miodec f90a8f6e02 inverted property logic 2023-03-27 13:42:13 +02:00
Miodec ecd97ebc51 Merge branch 'master' into newads 2023-03-24 14:15:20 +01:00
Jack 317f5b23ba
Admin auth (#4101)
* added admin auth

* always decoding token
2023-03-24 12:17:27 +01:00
Miodec b1443a1170 Merge branch 'master' into newads 2023-03-21 15:40:44 +01:00
Miodec ce4087d0bd missing param 2023-03-21 15:40:32 +01:00
Miodec bd84f341fc Merge branch 'master' into newads 2023-03-21 15:02:55 +01:00
Miodec fd0120d075 added duplicate result log 2023-03-21 15:02:25 +01:00
Miodec e8d7182f66 Merge branch 'master' into newads 2023-03-20 14:21:18 +01:00
Evan 642e99331e
Require === and !== in Backend (#4086) Ferotiq
* eqeqeq in backend

* simplify
2023-03-20 12:11:21 +01:00
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