Commit graph

48 commits

Author SHA1 Message Date
Miodec
d6babe0194 fixed incorrect definition 2023-08-08 14:12:42 +02:00
Miodec
f34e45d676 updated funbox difficulty 2023-08-07 18:17:21 +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
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
e2a51d0080 removed possible false positives 2023-06-19 13:24:24 +02:00
Miodec
6ff95b0e83 updated funbox structure
added frontend properties and functions
updated type
2023-06-05 13:11:39 +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
18f27c26db added admin endpoints configuration 2023-03-27 15:12:33 +02:00
Rob Sassack
239c43f240
Added plus three funbox (#4076) robsassack 2023-03-16 12:55:36 +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
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
Bruce Berrios
b36c842921
Add stricter typing to configuration (#3933) Bruception 2023-01-24 15:41:21 +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
8ca71f0320 replacing homoglyphs when checking for profanities
closes #3844
2023-01-04 19:25:54 +01:00
Miodec
b458a6dd9d false positives 2022-12-07 17:54:09 +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
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
cf411245e6 removed some profanities 2022-11-04 14:27:47 +01: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
Miodec
526f391ffc added configuration to disable user sign up 2022-09-19 00:21:23 +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
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
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
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
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
Bruce Berrios
43a384c0e0
Fix/refactor xp (#3373) bruception
* Fix/refactor xp

* Prettier fixes

* Prettier
2022-08-06 16:57:01 +02:00
Miodec
e48fdc2a89 added xp and levels 2022-08-02 00:21:09 +02:00
Bruce Berrios
0dd2539bf7
Add minor optimization (#3294) 2022-07-03 15:57:09 +02:00
Bruce Berrios
9da5e441be
Add new rate limiting flow (#3230) Bruception
* Add new rate limiting flow

* Oops

* Fix nit

* Fix some bugs

* Split key generation functions

* Remove 429

* Change message for root limiter

* Flag 429 and add config

* Add status code config

* Check enabled flag

* Add custom status for ape keys

* Bump coverage

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

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-06-28 13:45:57 +02:00
Bruce Berrios
1346dd669c
Tune profanity detection (#3214)
* Tune profanity detection

* Remove console log

* Remove profanity

* Add tests for profanity

* Fix test case
2022-06-24 11:17:43 +02:00
Miodec
9231250afd removed hell 2022-06-24 11:14:06 +02:00
Bruce Berrios
db9dcafc25
Add User Profiles (#3174)
* profile

* rounded table corners

* rounded leaderboards corners

* wider page by default

* v3

* font changes

* new pbtables

* blank by default

* showing pb popup

* removed some quotes

* rounding displayed acc

* removed created date (will be shown in profile)

* added profile module that fills the profile element

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

* lowered max font size

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

* pbs not selectable

* renamed global stats to time typing

* completed previous commit

* changed function parameters

* only hiding when social is missing

* smaller badge

* aligning quick results
spanning time if wide

* larger badge

* fixed function parameters

* moved to root

* media queries

* Add user profile API (#3123) bruception

* Add flattenObjectDeep

* Add user profile API

* Bump coverage

* Add user profile configuration and rate limits

* Rename profile -> profileDetails

* Simplify

* Filter personal bests

* Handle banned users

* Add banned user test

* new profile layout system
"none" layout finished

* better "none" layout

* "socials" layout

* larger gap

* bioandkey layout done

* "both" layout finished

* final touches

* Add profile editing (#3135)

* Add profile editing

* lowered font size
increased right padding

* updated configuration schema

* moved discord integration to users object in configuration

* added warning comment

* rendering new lines

* edit popup styling

* Sanitize ZAlgo text

* Use trim

* Replace more than 2 spaces with two spaces

* Trim first

* Add profanity detection

* Ass

* Removed some profanities

* Update profanity detection

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

* Add profile routing (#3143) bruception miodec

* Add profile routing

* removed check (also fixes circular deps)

* change page in special cases

* Hydrate profiles

* Link leaderboards to profiles

* Add failed to load div

* Dont refresh page

* always calling middle callback

* moved profile css into its own file

* fixed one media query

* added preloader, changed default layout

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

* resetting after the page is hidden and before its updated

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

* Dont route to account if uid equals current user uid

* temporairly allowing quicktab

* added copy link button

* only increasing padding on the account page

* set max height

* handling copy link button

* only showing avatar if it exists

* 1000 instead of 100

* removing placeholder if image request was successful

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

* Fix quote length field

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-06-21 12:01:55 +02:00
Miodec
03d90949df storing list of auto assignable roles on the server 2022-06-16 18:29:15 +02:00
Bruce Berrios
141dc262e7
Rename customFilters -> resultFilterPresets (#3115)
* Rename customFilters -> resultFilterPresets

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

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

Also added unit tests

* Added Custom Filter configuration

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

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

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

Also added unit tests

* Added Custom Filter configuration

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

* Add and Remove functions for `ResultFilters` in user controller
2022-06-11 20:32:06 -04:00
Bruce Berrios
1260f13293
Add config for discord integration (#3081) Bruception 2022-06-07 23:41:37 +02:00
Bruce Berrios
f2998b1d28
Add server configuration panel (#3070) bruception
* Add server configuration panel

* Remove unnecessaary check

* Remove break

* styling changes
showing when configuration was saved

* changing color based on response

* Remove comment

* Changes

* Add support for arrays

* Arbitrary nesting

* Add array item controls

* added button to quickly open the configuration panel

* removed excessive padding

* text inputs same height and style as checkboxes

* monkey stylng

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-06-07 14:06:15 +02:00
Bruce Berrios
0ef52ed9da
Add daily leaderboards (#3023) bruception
* Setup daily leaderboards backend (#2987) bruception

* Setup daily leaderboards backend

* Add enabled checks

* Consistent naming

* Add initial unit tests

* Use more flexible daily leaderboard rule logic

* Fix seed rule

* Add LRU Cache + Rank Calculation

* Use native functions

* Optional daily leaderboard rank

* Proper status code for invalid lb mode

* Add result criteria check

* Make daily leaderboard cache size configurable

* Add Ape endpoint for daily leaderboard (#2997)

* support for switching to viewing daily lbs

* test

* buttons

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

* updated structure

* setting rank if its undefined

* only when daily

* storing uid

* fixed media queries

* Daily leaderboards pagination (#3006)

* Pagination

* Remove with scores

* Add daily leaderboard rank (#3014) Bruception

* Add daily leaderboard rank

* Remove unused import

* Use object instead

* Add client logic

* Add limit checks

* Announce top daily leaderboard results (#3017)

* Add rank in daily leaderboard results (#3022)

* not showing lb memory and top % on daily

* Fix rank pagination

* Actual fix

* showing new rank

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

* Update custom-text.ts
2022-05-26 12:19:01 +02:00
Jack
46e0c5c960
Auto ban (#2984)
* added auto ban if user triggers anticheat too much

* updated base configuration

* autoban is optional

* storing updated autoban array

* only checking autoban in time 15 and 60

* miliseconds

* removed unnecessary if check

* returning if already banned

* storing now in variable
greater not greater equal

* moved constant outside function

* using partial type

* renamed variables

* renamed to autoBanTimestamps

* added autoban tests

* increased coverage minimum

* slightly better test

* added autoBanTimestamps checks to other tests
2022-05-16 21:03:44 +02:00
Evan
d9ffcfb4ee
Preparing for George Update (#2895)
* bot-commands rename

* removed bot dal

* reomoved unnecessary configuration entry

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

* quotes:code_javascript: Add regex-heavy quote.

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

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

* fixed length

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

* fixed script names

* fixed incorrect path

* definitely didnt forget about those

Co-authored-by: Miodec <bartnikjack@gmail.com>
Co-authored-by: Mark Stosberg <mark@rideamigos.com>
Co-authored-by: Jack <jack@monkeytype.com>
2022-05-06 23:48:15 +02:00
Bruce Berrios
91220a5bdc
Move backend source files into src folder (#2943) 2022-05-05 19:27:00 +02:00