* 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
* 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>
* 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
* 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
* 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>
* 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>
* 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>
* 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>
* 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>
* handling query param
getting user by name if query param is present
* added function to get user by name
* split profile function to get user by uid or name
* added function to check if get parameter exists in url
* updating the profile based on the url parameter
* using query param in url
* using get param
* renamed param name
adding search param to pathname in the deafult parameter value
* renamed param
* renamed param
added query validation
* extracted repeated query to a function
* missing await
* fixed typo
fixed validation
* using em for dynamic font sizes
* using em for dynamic font sizes
* added line height
* using em
* using em
* using page profile search instead
* updated the way data is passed into the page
* profile search page
* setting line height
* removed vertical align
* moved navigate to an event to avoid circular deps
* fixed route controller not being included
* removed unnecessary test
* showing 404 error
* improved query checking
* renamed query param
* fixed test
* note
* yeet
* cleaner type definition
* 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>
* 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>
* added config for displaying the keymaps top row
* fixed keysplit for top row
* prettier
* lined up top row properly
Co-authored-by: Miodec <bartnikjack@gmail.com>
* adds reset button
* moves it up above the delete button
* i am blind
* i cant move stuff
* adds reset for the profile
* Adds reseting for ape keys, and presets, also adds more resets in the user settings
* Delets all ape keys not just one
* Prevents conflicts for delete endpoints
* changes from reset to deleteAll in ape keys
* Refactors the code to use Promise.all
* adds reloading
* unit tests ape key deletion
* fixes some bugs
* Fixes type o
* More typeo fixes
* Returns nothing for reset user
* Simplifies code
* changes from reset to deleteAll for all but users
* Checks db not the memory
* fixes typo
* fixes the tests
* fixes
* fixes bugs and refactors some code
* adds requireFreshToken to the authentication
* migrates all reseting to the user endpoint
* removes the delete all for ape unit test
* to lazy to make commit message
* parallelize the calls to the db (I think)
* also resetting config
* also resetting discordid and avatar
* using unset
* updated wording
* level 1 message
Co-authored-by: Miodec <bartnikjack@gmail.com>
* aoaoaooao
* different attempts
* figured out the test
* added another test
* redefining next before each function, checking next call count
* removed eslint ignore
* 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>
* Fixed badges not showing on all time leaderboards
* updated types to support inventory and single badge id
* Add badge selection
* Fix bug
* Remove unnecessary prefill
* using new inventory system
* added no balloon option
* updated text color
* not showing balloon
* updated styling for showing badges selection
* Add badge selection
Co-authored-by: Bruception <bberr022@fiu.edu>
* added inventory type
* new badges
* fixed badges not showing on all time leaderboards
* sending the selected badge id to daily lb
* returning inventory in profiles
* updated types to support inventory and single badge id
* fixed all badges not showing on profile page
* removed await
* smol refactor
* 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>
* checking if mode is dev when adding to daily lb
* disabled time typing check on dev when recalculating leaderboards
* not replacing footer on localhost
* using ternary
* modified logic
* Add leaderboard language selection (#3124) bruception
* Adds leaderboard language selection
* Update mesage
* fixed disabled select2 styling
* changed button positioning
* fixed media queries
* Add languages
Co-authored-by: Miodec <bartnikjack@gmail.com>
* remove references of swapEscToTab
* Custom Filters [FrontEnd] (#3106) nocommentcode
* Add Create and Delete functions for Filter Presets to `Users` ape endpoint
- deleteFilterPreset
- addFilterPreset
* Added name and _id fields to the `ResultFilter` interface in the front end
This matches the `ResultFilter` interface in the backend
Added the new fields for the default filter
Added checks in result-filter.ts to not update the ui based on these fields
* Added new-filter-preset-popup
This popup is displayed when creating a new filter preset
It allows the user to select a name.
* Added Filter Preset Buttons in account page html
- Added the Filter Preset button
- Added the filter preset region
- Added the new and delete buttons
* Added Filter Presets to DB Snapshot
* Implemented Custom Fileter Creation, Selection and Deletion flow
- Users can now create a custom filter based on the current settings
- Users will be prompted to select a name for the filter
- User can click on any custom filter and the current filter will be updated
- User can delete a custom filter while it is selected
* Implemented Filter Preset Creation, Selection and Deletion flow
- Users can now create a filter preset based on the current settings
- Users will be prompted to select a name for the filter
- User can click on any filter preset and the current filter will be updated
- User can delete a filter preset while it is selected
* adjusted styling
* removed margin
* removed icon
* added media query
* popup wording
* automatically replacing _ when displaying and creating preset
* using loader and notifications
* fixed bork
* fixed sometimes not being able to delete preset
* make preset popup look like tags popup
Co-authored-by: Miodec <bartnikjack@gmail.com>
* added pace caret: last closes#3113
* Add rate limits to forgot password (#3129) mehdidev
* Added New Quotes
* Add More Quotes
* Add rate limit to forgot password
* Use Prettier
* Change canCall to let so that lint doesn't flag me for the 69th time
* change forgotPassword() to async & remove console.log's
* If this doesn't fix everything idk what to do
* reduced nesting, using function to create error message
* updated notification
Co-authored-by: Miodec <bartnikjack@gmail.com>
* added: code_opencl language (#3132) codybloemhard
* added: code_opencl language;
* fixed: duplicate word in code_opencl;
* fixed: another duplicate in code_opencl;
* Include language in notification (#3134)
* Add 20 more Indonesian quotes, 151-170 (#3136) R0merol
* Added 20 more quotes (151-170)
* Fixed quote length (id: 155, 157)
* using completed events language instead of current config
* add hedge theme (#3137) devkennyy
* create hedge theme
* update _list.json
* fixed sub alt color issues
* update colors
* updated colors
Co-authored-by: Miodec <bartnikjack@gmail.com>
* replaced quickTab with quickRestart
* updated keytips and statements
* update keytips
* moved keytip update to ui module
* not opening command line if quick restart is esc
* calling update keytips when changing quick restart
* handling restarting with quick restart escape
* updated settings page to reflect new quick restart setting
* swapping legacy values
* removed line which caused circular dependencies
* reordered files to fix event not firing
* handling closing with escape before opening
* not doing anything if a modal is visible
Co-authored-by: Bruce Berrios <58147810+Bruception@users.noreply.github.com>
Co-authored-by: Miodec <bartnikjack@gmail.com>
Co-authored-by: Malo Hamon <hamon.malo@gmail.com>
Co-authored-by: Mehdi Hussain <mehdi@mehdi.us>
Co-authored-by: Cody Bloemhard <cblmhrd@live.nl>
Co-authored-by: R0merol <farisfrontiers@gmail.com>
* 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
* 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
* 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>
* 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
* 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>
* Switch to ts-node-dev for development
* Minimal setup for backend testing
* Basic controller test
* __tests__ directory
* Delete old DB client
* Improve tests, ensure DB cleanup only runs for inMemory DB
* added config param for tape mode
* added settings section
* added commands
* moving caret to the correct place with tape mode is active
* only jumping line when not using tape mode
* prettier
* scrolling tape
* restarting test when tape mode changed
* showing one line when tape mode is active
* added function for scrolling words horizontally
* scrolling tape when layout emulator is enabled
* removed left margin when tape is active
* disable tape for some challenges
* fixed incorrect caret position when going back to a previous word
* ignoring no-this-alias
* fixed lines scrolling to often when tape mode was disabled
* storing caret width in a variable
* not allowing tape mode and show all lines together
* removed unnecessary comment
* reduced code repetition
* throwing error when no name provided
* stopping signout if no current user
* expanded to 16 chars
* moved code to popup file
* added google sign up popup
* checking if name is available in the backend
* deleting account if popup was closed
uncommented sign up process
addd functions to enable and disable input
* added google sign up event to avoid circular dependency
* hiding by default
* name is no longer optional
user is deleted if its database object is not found
* using loader to indicate background activity
* added type for leaderboard entry
* converted leaderboards to ts
* fixed return type
* renamed occurences to DAL
* removed as any
* removed as any
* removed type casting
* Created API for making quotes fav
* Moved routes over to quotes
* Renamed favQuotes to favoriteQuotes
* Renamed routes
* Removed error to prevent confusion and panic
* Added regex check for quote id and added fav quote number check
* Some fixy
* Added configuration for max favorite quotes
* Added grouping
* Created variable for storing collection
* Changed variable name
* Changed variable name
* Fixed some problems
* Fixed bug
* Added length chekc for quoteId
* MOved routes over to user
* Renamed routes
* Started conversion to typescript
* Some more fixy fixy
* Final fixy fixy or at least that is what it seems
* Even more fixy fixy
* Add verifed = false upon usre creation
* Added return type
* Removed extra data
* Fixes
* Removed class syntax of UserDAO
* Name fix
* Renamed UserDAO to UserDAL
* Fixed errors
* Fixed some problems
* Fixed pb bug
* Strict Equality
* Var name change
* Var name change
* replaced rgba with sub-alt
* changed color name
* reworked button styles, removed icon-button
* renamed color
* grid
* no text decoration
* renamed all icon buttons to text buttons
* using text-button
* fixed discord section
* using button class instead of redeclaring styles
* updated scroll styling
* more consistent scroll to top styling
* dot not in link
* fixed dot spacing
* actually fixed dot (stupid prettier)
* signout closer to the edge
* using text-button class
* updated button text for consistency
* lowercase
* moved show average section down
* fixed icon not being fixed width
* updated focus and hover button styling
* footer using text-button class
* fixed spacing
added new lines
* making sure custom themes work with sub alt
* updated validation
* reordered colors
* added sub alt colors to all themes
* updated alt sub colors
* temp
* updated sub alt colors
* updated sub alt
* fixed merge
* fixed merge
* merge fix
* moved section down
* lowercase
* merge fix
* consistent wording
* merge fix
* fixed merge
* removed test notifications
* removed balloon
* adjusted subalt
* removed debug code
* removed unused code
* removed some unused/old code
* fixed dot spacing
* Converted initial outputs to color outputs
* Some more coloring
* Colored all error outputs
* Completed coloring of outputs
* Created basic logger instance
* Moved over to Winston for logging
* Remove unnnecessary stuff
* Added max file size
* Renamed log to logToDb
* minor refactor and added tab separation with timestamps
* Some changes. Thanks Bruception
* Created wrapper for logger
* Tiny refactor
* Some fixes
* Some fixes
* Update example env
* Remove general
* using default yellow, making colors bold
* removed square brackets
* removed square brackets
* using logger instead of console log
* updated timestamp format
* moved comment up
* Fixed typo
Co-authored-by: Miodec <bartnikjack@gmail.com>
* show cpm for always show cpm
* Add show average: acc and make speed work for cpm
* eqeqeq
* round
* rename to remove clutter
* rename and change icon
* Combine functions
* remove comment
* Update index.html
* rounding if show decimal places is disabled
Co-authored-by: Miodec <bartnikjack@gmail.com>
* updated default config to fix incorrect font button being highlighted
* Convert account controller to ts (#2731)
* using modular sdk
* removing last script
* replacing more code
* unused code
* removed unused code
* removed unused code
* importing auth
* using analytics controller
* importing auth and analytics
* importing auth
* updated git ignore
* fixed path
* removed live config from gitignore
* added error message when failing to initialize firebase
* added live config
using live config when building production
* removed unused code
* fixed incorrect function use
* added example config
* added a step to the contributing guide
* optional steps
* fixed path
* using example in source code so that github actions dont cry like little babies
* using function correctly
* using function correctly
* ignoring live
* removed
* added action webpack config
* bruce said "no-no"
This reverts commit 0a1e5e1660.
* Fix
* Add ignore
* updated instructions
* using correct functions
* using correct function
* missing parameter
* using correct function
* using correct function
* removed ts ignores
* using new functions
* removed refresh
* using new functions
* merge fix
* fixed merge
* regenereated lockfile
* using correct function
* defaulting to the email thats already entered
* storing default snap in a file
* optional parameter
* made parameters non optional
* converted file to ts
* removed unused parameters
* removed unnecessary optional chaining
* destructuring array
* added a function to create error message
* removed type
* removed duplicate gitignore
* removed no check
Co-authored-by: Bruception <bberr022@fiu.edu>
* Include dev branch in CI (#2739)
* Decreased filesize and introduced chunk splitting (#2732) Rizwanmustafa
* Decreased filesize
* Introduce splitting for vendors
* Added HTML webpack plugin for dynamic change of chunkhash and minification on production
* Added bundle analyzer plugin for webpack
* Prevent analyzer from opening on its own
* updated contributors list
* Package lock update
* Created separate webpack config for analysing bundle
* Standardize paths in webpack base config
* Added devtool in dev webpack config
* Minor issues
* Based audit config off of the production config, saved exact packages and renamed some constants
* Saved exact version of packages
* Rename Config
* Added intellisense for webpack configs
* Added script for using audit config
* Simple changes
* Removed unnecessary cd and replaced webpack with npx wepback
* added npm script accessible from root dir
since audit is now a separate script, reenabled auto opening
Co-authored-by: Miodec <bartnikjack@gmail.com>
* Enable live reloading (#2738) bruception
* Enable live reloading
* Update scripts and documentation
* Fix resolve
* Use resolve
* Fix layoutfluid timer warnings (#2740) Ferotiq
* reduced date-fns import size
* using inline source map so that code is debuggable
* removed tinycolor2 dependency
* Migrate Chart.js to 3.7.1 (#2735) DanGonite57
* Migrate Chart.js to 3.7.1
* Show funbox label with StartGraphsAtZero disabled
* Fix label positioners
* Include dev branch in CI (#2739)
* Remove draw animation
* Avoid RangeError with no data
* Disable account chart initial render animation
* Add temporary type assertion for options.animation
* Test disabling animations via updateColors
* Test re-update chart after resetting animation duration
* Test dataset specific animation duration
* Disable animations for now
* Remove unused annotation
Co-authored-by: Bruce Berrios <58147810+Bruception@users.noreply.github.com>
* installed dev dependency to stop audit from complaining
* removed mr mime dev dependency
regenerate package-lock
* not updating live burst when its disabled
* using vanilla js to increase performance
* updating chart once instead of 3 times
* made log async
* increased minimum wordset length to disable repeating words to 4
this stops infinite A B C sequences
closes#2742
* increased tick padding
* added some padding to stop data points from being cut off
* fixed account graphs not being responsive
* removed unnecessary style
* updated button active color
* Server version (#2746) Bruception
* Add server version
* typo
* Fix logic
* Moved to utility
* Actually save version
* Move logic order
* updated metric name
* removed unnecessary else
Co-authored-by: Bruception <bberr022@fiu.edu>
Co-authored-by: Bruce Berrios <58147810+Bruception@users.noreply.github.com>
Co-authored-by: Rizwan Mustafa <rizwanmustafa0000@gmail.com>
Co-authored-by: Evan <64989416+Ferotiq@users.noreply.github.com>
Co-authored-by: DanGonite57 <danzinc57@gmail.com>
* added basic auth and prom client dependencies
* incrementing auth counter
* added custom prometheus metric
* turns out there is no need for basic auth
* updated name
* exact
* exact
* Fixed typo
* Created method for adding theme in the UserDAO:
* Created function for checking if custom theme object is valid
* Exported the isThemeValid function
* Added controller for adding customTheme
* Created route for adding custom theme
* Created rateLimit for adding customTheme
* Fixed typo
* Fixed incorrect color length
* Added method for removing, getting and editing custom themes on the backend
* Moved validations from controllers to routes and some aesthetic changes in the user dao
* Started working on frontend and some minor changes in the backend
- Commandline support for custom themes
- Allow user to shift to their custom theme using Shift-click
- Updated the backend to be compatible with some changes
- Create a new custom theme for users with old system to prevent their custom theme loss
* Fixed custom theme type in ape and now new custom theme is created if user clicks the custom tab and doesn't already have one
* Fixed ape type issue
* Format html file
* Fixed wrong tab being active
* Created new custom theme edit section
* Fixed bug where user theme would have impact on icons with custom theme
* Update customThemes API
* Updated the custom theme sharing option to work with multiple custom themes
* Started working on the UI for custom theme buttons
* Added DOM event for clicking custom theme buttons
* Updated the updateActiveButton to work with multiple custom themes
* Removed favorite button for themes and fixed bug where double theme buttons were being added
* Fixed bug where preset theme buttons were not appearing if user has applied custom theme on website load and refreshed
* Moved DOM event for sharing custom theme to more appropriate place
* Integrated the save custom theme button with the changes
* Fixed bug with custom theme tab buttons and theme buttons
* Fixed commented div
* Replaced 'sds' with a meaningful message for custom theme buttons
* Integrated the delete button for deleting custom themes and fixed bug where id of newly added custom theme was not set properly
* Integrated the add button and name field for custom themes editing
* Added addCustomThemeWrapper element
I added it before but seems like vscode and other editors can't handle large files
* Removed some debug statements
* Removed some more debug statements
* Used parial types for custom theme. Thanks Bruce
* Removed unnecssary try catch blocks. Thanks Bruce
* Rephrased custom theme API messages
* Set new theme fields explicitly to prevent validtion failures and rephrased API message
* Replaced let with const
* Replaced let with const for _id
* Replaced let with const and used nullish coalescing
* Improved code quality in User DAO
* Strict equality in user DAO
* Moved validation scheme to a variables at the top of file
* Fixed bugs with strict equality checks
* Renamed themeId to themeID for consistency
* Made customThemes a required type in db to remove unnecessary undefined checks
* Uncommented GET API endpoint
* Prevent colorId being updated on custom theme name chnage
* Removed debug log
* Added loader on api calls
* Commenced shift from customThemeIndex to customThemeId
* Added required to themeColors schema
* Temp fix for validation fail for customThemeId
* Changed default value of customThemeId back to ''
* Temp fix for validation fail for customThemeId
* Fixed minor bug
* Fixed bug where account-controller would pass undefined to ThemeController.set
* Created methods in db.ts for adding, deleting and editing custom themes. Created new interface for raw custom themes and renamed ape methods
* Removed repeating code in account-controller
* Removed repeating code in theme-picker
* Removed setThemes in config
* Fixed minor bug
* Removed repeating code in user DAO
* Made custom themes available to registered users only
* Fixed minor bug
* Removed debug log and updated custom theme commands before showing list
* Added popup for confirming custom theme deletion
* Added custom option for random theme
* Minor improvement
* Workaround for local config firing before firebase initalization
* Removed debug log and created workaround for migration
* Added legacy customTheme config field
* Replaced workaround
* Changed put to patch
* Changed put to patch
* Added customTheme field back
* Integrated customTheme into to feature
* Added notifications for users when they access custom theme cmd option without being logged in
* Removed debug logs and comments
* Replaced literals with constant. Thanks Bruception
* Fixed wrong querySelector parameters and reset custom theme colors after deleting a custom theme
* added notification on save
* duplicating object instead of referencing
* Added return type on function
* Fixed wrong notification code
* spreading default config instead of referencing
* added index, psas, configs, presets
* camel_case
* added ape keys, leaderboards, results, quotes
* Modified setCustomTheme
* Modified setCustomThemeId
* Added tip for random themes settings
* Modified setCustomThemeId
* Now load custom theme before account loading
* Added custom theme compatibility for non-logged in users to theme-controller
* Now update tabs and buttons on custom theme config value change and modified boolean checks to use customTheme instead of customThemeId
* Fixed bug
* Refactoring in theme-controller.ts
* Enable custom theme support in commandline for logged out users
* More refactoring in theme-controller.ts
* Added custom theme compatibility for logged out users
* Removed double events in settings.ts and now turn on custom theme upon applying
* Fixed bug and recursive call
* Fixed bug
* Fixed random theme custom option
* Fix jquery wrong syntax
* Readded notification upon custom theme edit
* One notification upon error only
* Change notification type
* New custom themes now have default colors
* Notification on custom theme edit for non-logged in users
* Refresh buttons upon settings load
* missing gitignore
* updated message
* updated message
* setting config to unchanged when logging in to avoid issues with applying db config
* reverted some over complicated code, excessive auth checks
* removed customthemeid from config
* not setting custom theme id
* removed all customthemeid references
* removed commented code
* removed name field
* added edit button
* unused file
* removed popup
* removed add button, removed text
* removed duplicate code
* added simple popup checkbox support
* whitespace
* added custom theme popups
* removed warning when no custom themes were found
* removed add button click handler
* added function to save custom theme
* saving current theme not default
* removed custom theme id from default config
* not creating new theme by default, just applying
* reacting to customThemeColors save
* unnecessary function call
* removed unused code
* small refactor
* spacing
* unnecessary code
* turned off warnings for non null asertion
* showing theme name when randomising customs
* Revert "turned off warnings for non null asertion"
This reverts commit 433e1dc767.
* optional with default instead
* fixed custom theme colors always loaded on page load
* fixed custom theme buttons not showing up
* fixed various loading issues
* fixed custom theme edit styles
* showing custom in footer, removed unused code
* savaing custom theme colors
fixed typos
* changing theme
* updated custom theme buttons styling
* scaling custom theme buttons on hover
* not updating settings on theme event
* fixed quote id
* only showing custom themes when logged in
* updating save button text depending on auth state
* fixed double notification when trying to save too many custom themes
* fixed custom theme saving when signed out
* removed user check from db
* fixed exception when signed out user tried to open the custom themes command line
* ignoring file when compiling
* typo
* avoiding href errors
* setting href to an existing file
this fixes firefox custom themes not working
* better hex color regex
* spacing
* renamed function
* typo
* destructuring request
* removed unused function
* removed unused code
* removed unused code
* type fix
* removed non capturing group
* saving colors to config before saving custom theme
* encoding in base64
* added handler that can load themes in the old and new format from the url
Co-authored-by: Rizwan Mustafa <rizwanmustafa0000@gmail.com>
Co-authored-by: Rizwan Mustafa <69350358+rizwanmustafa@users.noreply.github.com>