Commit graph

1109 commits

Author SHA1 Message Date
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
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