Commit graph

375 commits

Author SHA1 Message Date
Christian Fehmer
212b8d38cb
refactor: make funbox settings an array (@fehmer) (#6487)
change funbox from "hash separated values" to array.

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-04-29 11:31:44 +02:00
Jack
e06f7f41cf
refactor: add trycatch util (@miodec) (#6492)
Adds trycatch util to cleanup try catch code.
2025-04-26 21:24:39 +02:00
Seif Soliman
86383cf9ef
refactor(backend): improve redis and json.parse type safety with zod (@byseif21, @miodec) (#6481)
### Description

refactored backend files to enhance type safety and reliability using
Zod validation and Redis instead of JSON.parse , I tried to avoid the
files that isn't necessary tho so I hope I don't miss any or included
unnecessary ones!! didn't fully test only verified code compilation and
partial tests without Redis!!.


Should Close #5881 
Related to #6207

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-04-24 16:25:43 +02:00
Jack
cac8835c77
chore: add oxlint (@miodec) (#6455)
Use oxlint for general linting to provide much quicker feedback. Keep
eslint for type-aware rules. Fully switch to oxlint once it supports
type-aware.
2025-04-16 17:18:50 +02:00
Christian Fehmer
f6d9b7c3ef
impr: lazy load chartData on results (@fehmer) (#6428)
Optimize results endpoint by removing heavy or unused data. 

We load the whole result chart data for up to 1000 results each time,
but it is very unlikely the user will view the charts for all old
results. By removing the size in my tests went down from 1152kb to
276kb.

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-04-08 13:46:40 +02:00
Miodec
2c13284528 impr: pass lboptout to bot linking command
!nuf
2025-04-02 21:55:34 +02:00
Christian Fehmer
e647d875f0
impr: error handling on user deletion (@fehmer) (#6363)
!nuf
2025-03-17 16:05:46 +01:00
Nad Alaba
932d0e166e
build: fix openapi spec path for docs & stats endpoints on dev (@NadAlaba) (#6343)
### Description

1. fix openapi specification path so that /docs endpoint would work on
dev.

> Error: ENOENT: no such file or directory, stat
'backend/src/static/api/public.html' Stack: Error: ENOENT: no such file
or directory

2. fix openapi specification path so that API Operation would work on
/stats endpoint on dev.

> Cannot read openApi specification from
backend/src/api/routes/../../static/api/openapi.json. Swagger stats will
not fully work.

![stats](https://github.com/user-attachments/assets/82f3e8b4-814c-4ede-ba67-8da53dacad87)

3. remove unneeded `files` & `ts-node` options from `tsconfig.json` in
various places.

> File 'backend/src/types/types.d.ts' not found.
  The file is in the program because:
    Part of 'files' list in tsconfig.json

4. add the missing `pnpm test` script to the funbox package.
2025-03-12 16:20:46 +01:00
Miodec
bd7f06be9a fix: handle firebase rate limit when requesting email verification
!nuf
2025-03-12 12:59:55 +01:00
Miodec
71b5f2875f chore: temporary object log to track down an error 2025-03-12 08:55:19 +01:00
Miodec
f5f4453624 chore: update error messages 2025-03-12 08:54:54 +01:00
Christian Fehmer
8bc23b7c3d
fix: remove user from XP leaderboard if opt-out, reset or deleted (@fehmer) (#6290)
Ensure user is removed from the weekly XP leaderboards if they either
`opt-out`, `reset` their account or `delete` their account.
2025-02-21 17:09:55 +01:00
Christian Fehmer
8a41ccee97
fix: past leaderboard not fetching the users rank (@fehmer) (#6289)
Show the users ranking for the last day on the daily and for the last
week on the weekly leaderboard correctly.

- Fix request query schema for the [daily
rank](https://api.monkeytype.com/docs/internal#tag/leaderboards/operation/leaderboards.getDailyRank)
having pagination
- Fix request query schema for the [weekly
rank](https://api.monkeytype.com/docs/internal#tag/leaderboards/operation/leaderboards.getWeeklyXpRank)
missing the `weeksBefore` parameter
- Fix frontend to include the `daysBefore` or `weeksBefore` parameter on
`rank` calls

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-02-21 16:52:20 +01:00
Christian Fehmer
fd6bf18a4c
fix: update csp entries for redocly (@fehmer) (#6265)
!nuf
2025-02-14 19:05:00 +01:00
Jack
01dee3fe15 feat: leaderboards remake, weekly xp leaderboards (@miodec) (#6250) 2025-02-12 16:34:03 +01:00
Miodec
a0c471a28e chore: add captcha to the forgot password modal 2025-02-12 12:12:48 +01:00
Miodec
93a744b4ee fix: dont award discord roles if user opted out of leaderboards 2025-01-31 19:42:27 +01:00
Miodec
3a065313bf impr: better email changing logs
!nuf
2025-01-15 10:52:48 +01:00
Miodec
2a6af862e7 impr: dont allow taking blocklisted names via update account name
!nuf
2025-01-03 23:15:31 +01:00
Jack
fdadb4ae83
refactor: move funboxes to a shared package (@miodec) (#6063) 2024-12-04 16:11:07 +01:00
Miodec
73f8022992 impr(backend): consider incomplete tests when checking result spacing
!nuf
2024-09-30 14:43:50 +02:00
Miodec
7ed56db4e0 chore: move comment 2024-09-30 14:43:50 +02:00
Miodec
b70930ab04 impr(dev): log when result was validated
!nuf
2024-09-30 14:43:50 +02:00
Jack
b6bd5ba2b4
refactor: remove global type namespaces (@miodec) (#5907)
Remove global types, move types to where they originate from, import
them when needed.
2024-09-23 15:34:16 +02:00
Jack
1509a675b8
refactor: move common util functions to a package (@miodec) (#5894)
Also moves esbuild to a package.
2024-09-20 11:54:14 +02:00
Jack
7e703028bd
refactor: enable no-unsafe-member-access (@miodec) (#5887)
### Description

<!-- Please describe the change(s) made in your PR -->

### Checks

- [ ] Adding quotes?
- [ ] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [ ] Adding a language or a theme?
- [ ] If is a language, did you edit `_list.json`, `_groups.json` and
add `languages.json`?
  - [ ] If is a theme, did you add the theme.css?
- Also please add a screenshot of the theme, it would be extra awesome
if you do so!
- [ ] Check if any open issues are related to this PR; if so, be sure to
tag them below.
- [ ] Make sure the PR title follows the Conventional Commits standard.
(https://www.conventionalcommits.org for more info)
- [ ] Make sure to include your GitHub username prefixed with @ inside
parentheses at the end of the PR title.

<!-- label(optional scope): pull request title (@your_github_username)
-->

<!-- I know I know they seem boring but please do them, they help us and
you will find out it also helps you.-->

Closes #

<!-- the issue(s) your PR resolves if any (delete if that is not the
case) -->
<!-- please also reference any issues and or PRs related to your pull
request -->
<!-- Also remove it if you are not following any issues. -->

<!-- pro tip: you can mention an issue, PR, or discussion on GitHub by
referencing its hash number e.g:
[#1234](https://github.com/monkeytypegame/monkeytype/pull/1234) -->

<!-- pro tip: you can press . (dot or period) in the code tab of any
GitHub repo to get access to GitHub's VS Code web editor Enjoy! :) -->
2024-09-18 12:56:52 +02:00
Jack
ceedf8ace2
refactor: enable no-unsafe-call rule (@miodec) (#5883)
### Description

<!-- Please describe the change(s) made in your PR -->

### Checks

- [ ] Adding quotes?
- [ ] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [ ] Adding a language or a theme?
- [ ] If is a language, did you edit `_list.json`, `_groups.json` and
add `languages.json`?
  - [ ] If is a theme, did you add the theme.css?
- Also please add a screenshot of the theme, it would be extra awesome
if you do so!
- [ ] Check if any open issues are related to this PR; if so, be sure to
tag them below.
- [ ] Make sure the PR title follows the Conventional Commits standard.
(https://www.conventionalcommits.org for more info)
- [ ] Make sure to include your GitHub username prefixed with @ inside
parentheses at the end of the PR title.

<!-- label(optional scope): pull request title (@your_github_username)
-->

<!-- I know I know they seem boring but please do them, they help us and
you will find out it also helps you.-->

Closes #

<!-- the issue(s) your PR resolves if any (delete if that is not the
case) -->
<!-- please also reference any issues and or PRs related to your pull
request -->
<!-- Also remove it if you are not following any issues. -->

<!-- pro tip: you can mention an issue, PR, or discussion on GitHub by
referencing its hash number e.g:
[#1234](https://github.com/monkeytypegame/monkeytype/pull/1234) -->

<!-- pro tip: you can press . (dot or period) in the code tab of any
GitHub repo to get access to GitHub's VS Code web editor Enjoy! :) -->
2024-09-13 15:18:00 +02:00
Jack
955eeae2a7
refactor: enable no-unsafe-assignment rule (@miodec) (#5874)
Co-authored-by: Nad Alaba <37968805+NadAlaba@users.noreply.github.com>
Co-authored-by: Christian Fehmer <fehmer@users.noreply.github.com>
Co-authored-by: Igor Bedesqui <igorbedesqui@gmail.com>
Co-authored-by: amarnathsama <63007641+amarnathsama@users.noreply.github.com>
2024-09-13 13:18:06 +02:00
Christian Fehmer
e19b3e3e8b
refactor: remove leftover code from ts-rest migration (@fehmer) (#5875) 2024-09-13 12:27:35 +02:00
amarnathsama
8a6c81669e
feat(settings): allow partial presets (@amarnathsama, @miodec, @fehmer) (#5813) 2024-09-12 21:42:29 +02:00
Jack
93d6fff895
refactor: enable no-unsafe-argument rule (@miodec) (#5872) 2024-09-11 14:23:00 +02:00
Christian Fehmer
4f75a00cb3
impr: use ts-rest for webhook endpoints (@fehmer, @miodec) (#5871)
!nuf
2024-09-11 14:16:34 +02:00
Christian Fehmer
b315836dee
impr: move configuration checks to contracts (@fehmer) (#5851)
!nuf
2024-09-11 11:26:12 +02:00
Miodec
3478c21aa9 fix: lower accuracy requirement for accounts that have opted out of the leaderboards
actually closes #5858
2024-09-10 23:11:29 +02:00
Christian Fehmer
c7b3e2c916
impr: move permission checks to contracts (@fehmer, @miodec) (#5848)
!nuf
2024-09-10 11:35:57 +02:00
Christian Fehmer
b06b9f73e5
refactor: rework rate limiting (@fehmer) (#5845)
!nuf
2024-09-09 10:39:08 +02:00
Christian Fehmer
259894ab9f
impr: use tsrest for user endpoints (@fehmer) (#5815)
!nuf
2024-09-05 17:28:19 +02:00
Christian Fehmer
1804ebcd8a
impr: use tsrest for quotes endpoints (@fehmer) (#5802)
!nuf
2024-08-29 15:42:42 +02:00
Miodec
6e43e1c4dc fix(sever): wrong rate limiter being used for result post
also lowers limit slightly to 300 and updates the generic message to be more clear
2024-08-27 22:50:20 +02:00
Christian Fehmer
30d440a70e
impr: use tsrest for dev endpoints (@fehmer) (#5800)
!nuf
2024-08-23 20:03:13 +02:00
Christian Fehmer
e2d574444a
impr: use tsrest for configurations endpoint (@fehmer) (#5796)
!nuf
2024-08-23 19:06:41 +02:00
Christian Fehmer
e03a25fb92
impr: use ts-rest for results endpoint (@fehmer) (#5758)
!nuf
2024-08-23 12:13:50 +02:00
Miodec
38e0d50885 chore(server): warn if object hash check is disabled 2024-08-22 14:23:20 +02:00
Christian Fehmer
4466acd6bc
impr: optimize permissions middleware (@fehmer) (#5801) 2024-08-20 14:52:30 +02:00
Christian Fehmer
6458b248d7
impr(server): log unknown validation errors (@fehmer) (#5777)
!nuf
2024-08-14 12:05:44 +02:00
Miodec
19cef8b4af impr: add req.method to dev slowdown log
!nuf
2024-08-12 22:22:53 +02:00
Christian Fehmer
c6e8f413fc
impr: use tsrest for leaderboard endpoints (@fehmer) (#5717)
!nuf
2024-08-12 14:08:17 +02:00
Miodec
77c9cc423f fix(server): incorrect apekeys permission check 2024-08-10 23:59:59 +02:00
Christian Fehmer
02505750ad
refactor: implement recordClientVersion as middleware (@fehmer) (#5750)
* refactor: implement recordClientVersion as middleware (@fehmer)

* move csp for docs into docs route

* fix

* review comments
2024-08-09 14:20:16 +02:00
Christian Fehmer
c50535cd0f
impr: use tsrest for public endpoints (@fehmer) (#5716)
!nuf
2024-08-09 12:39:27 +02:00