rhythia-api 185.0.0 → 187.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/.prettierrc.json +6 -6
  2. package/api/addCollectionMap.ts +82 -82
  3. package/api/approveMap.ts +78 -78
  4. package/api/chartPublicStats.ts +32 -32
  5. package/api/createBeatmap.ts +168 -168
  6. package/api/createBeatmapPage.ts +64 -64
  7. package/api/createClan.ts +81 -81
  8. package/api/createCollection.ts +58 -58
  9. package/api/deleteBeatmapPage.ts +77 -77
  10. package/api/deleteCollection.ts +59 -59
  11. package/api/deleteCollectionMap.ts +71 -71
  12. package/api/editAboutMe.ts +91 -91
  13. package/api/editClan.ts +90 -90
  14. package/api/editCollection.ts +77 -77
  15. package/api/editProfile.ts +123 -123
  16. package/api/getAvatarUploadUrl.ts +85 -85
  17. package/api/getBadgedUsers.ts +56 -56
  18. package/api/getBeatmapComments.ts +57 -57
  19. package/api/getBeatmapPage.ts +106 -106
  20. package/api/getBeatmapPageById.ts +99 -99
  21. package/api/getBeatmapStarRating.ts +53 -53
  22. package/api/getBeatmaps.ts +159 -159
  23. package/api/getClan.ts +77 -77
  24. package/api/getCollection.ts +130 -130
  25. package/api/getCollections.ts +132 -130
  26. package/api/getLeaderboard.ts +136 -136
  27. package/api/getMapUploadUrl.ts +93 -93
  28. package/api/getPassToken.ts +55 -55
  29. package/api/getProfile.ts +146 -146
  30. package/api/getPublicStats.ts +180 -180
  31. package/api/getRawStarRating.ts +57 -57
  32. package/api/getScore.ts +85 -85
  33. package/api/getTimestamp.ts +23 -23
  34. package/api/getUserScores.ts +175 -175
  35. package/api/nominateMap.ts +82 -82
  36. package/api/postBeatmapComment.ts +59 -59
  37. package/api/rankMapsArchive.ts +64 -64
  38. package/api/searchUsers.ts +56 -56
  39. package/api/setPasskey.ts +59 -59
  40. package/api/submitScore.ts +433 -433
  41. package/api/updateBeatmapPage.ts +229 -229
  42. package/handleApi.ts +21 -20
  43. package/index.html +2 -2
  44. package/index.ts +867 -866
  45. package/package.json +1 -1
  46. package/types/database.ts +800 -798
  47. package/utils/getUserBySession.ts +48 -48
  48. package/utils/requestUtils.ts +87 -87
  49. package/utils/security.ts +20 -20
  50. package/utils/star-calc/index.ts +72 -72
  51. package/utils/star-calc/osuUtils.ts +53 -53
  52. package/utils/star-calc/sspmParser.ts +398 -398
  53. package/utils/star-calc/sspmv1Parser.ts +165 -165
  54. package/utils/supabase.ts +13 -13
  55. package/utils/test +4 -4
  56. package/utils/validateToken.ts +7 -7
  57. package/vercel.json +12 -12
package/types/database.ts CHANGED
@@ -1,798 +1,800 @@
1
- export type Json =
2
- | string
3
- | number
4
- | boolean
5
- | null
6
- | { [key: string]: Json | undefined }
7
- | Json[]
8
-
9
- export type Database = {
10
- public: {
11
- Tables: {
12
- beatmapCollections: {
13
- Row: {
14
- created_at: string
15
- description: string
16
- id: number
17
- is_list: boolean
18
- owner: number
19
- title: string
20
- }
21
- Insert: {
22
- created_at?: string
23
- description: string
24
- id?: number
25
- is_list?: boolean
26
- owner: number
27
- title: string
28
- }
29
- Update: {
30
- created_at?: string
31
- description?: string
32
- id?: number
33
- is_list?: boolean
34
- owner?: number
35
- title?: string
36
- }
37
- Relationships: [
38
- {
39
- foreignKeyName: "beatmapCollections_owner_fkey"
40
- columns: ["owner"]
41
- isOneToOne: false
42
- referencedRelation: "profiles"
43
- referencedColumns: ["id"]
44
- },
45
- ]
46
- }
47
- beatmapPageComments: {
48
- Row: {
49
- beatmapPage: number
50
- content: string | null
51
- created_at: string
52
- id: number
53
- owner: number
54
- }
55
- Insert: {
56
- beatmapPage: number
57
- content?: string | null
58
- created_at?: string
59
- id?: number
60
- owner: number
61
- }
62
- Update: {
63
- beatmapPage?: number
64
- content?: string | null
65
- created_at?: string
66
- id?: number
67
- owner?: number
68
- }
69
- Relationships: [
70
- {
71
- foreignKeyName: "beatmapPageComments_beatmapPage_fkey"
72
- columns: ["beatmapPage"]
73
- isOneToOne: false
74
- referencedRelation: "beatmapPages"
75
- referencedColumns: ["id"]
76
- },
77
- {
78
- foreignKeyName: "beatmapPageComments_owner_fkey"
79
- columns: ["owner"]
80
- isOneToOne: false
81
- referencedRelation: "profiles"
82
- referencedColumns: ["id"]
83
- },
84
- ]
85
- }
86
- beatmapPages: {
87
- Row: {
88
- created_at: string
89
- description: string
90
- genre: string | null
91
- id: number
92
- latestBeatmapHash: string | null
93
- nominations: Json | null
94
- owner: number | null
95
- ranked_at: number
96
- status: string | null
97
- tags: string
98
- title: string | null
99
- updated_at: number | null
100
- }
101
- Insert: {
102
- created_at?: string
103
- description?: string
104
- genre?: string | null
105
- id?: number
106
- latestBeatmapHash?: string | null
107
- nominations?: Json | null
108
- owner?: number | null
109
- ranked_at?: number
110
- status?: string | null
111
- tags?: string
112
- title?: string | null
113
- updated_at?: number | null
114
- }
115
- Update: {
116
- created_at?: string
117
- description?: string
118
- genre?: string | null
119
- id?: number
120
- latestBeatmapHash?: string | null
121
- nominations?: Json | null
122
- owner?: number | null
123
- ranked_at?: number
124
- status?: string | null
125
- tags?: string
126
- title?: string | null
127
- updated_at?: number | null
128
- }
129
- Relationships: [
130
- {
131
- foreignKeyName: "beatmapPages_latestBeatmapHash_fkey"
132
- columns: ["latestBeatmapHash"]
133
- isOneToOne: false
134
- referencedRelation: "beatmaps"
135
- referencedColumns: ["beatmapHash"]
136
- },
137
- {
138
- foreignKeyName: "beatmapPages_owner_fkey"
139
- columns: ["owner"]
140
- isOneToOne: false
141
- referencedRelation: "profiles"
142
- referencedColumns: ["id"]
143
- },
144
- ]
145
- }
146
- beatmaps: {
147
- Row: {
148
- beatmapFile: string | null
149
- beatmapHash: string
150
- created_at: string
151
- difficulty: number | null
152
- image: string | null
153
- imageLarge: string | null
154
- length: number | null
155
- noteCount: number | null
156
- playcount: number | null
157
- ranked: boolean | null
158
- starRating: number | null
159
- title: string | null
160
- }
161
- Insert: {
162
- beatmapFile?: string | null
163
- beatmapHash: string
164
- created_at?: string
165
- difficulty?: number | null
166
- image?: string | null
167
- imageLarge?: string | null
168
- length?: number | null
169
- noteCount?: number | null
170
- playcount?: number | null
171
- ranked?: boolean | null
172
- starRating?: number | null
173
- title?: string | null
174
- }
175
- Update: {
176
- beatmapFile?: string | null
177
- beatmapHash?: string
178
- created_at?: string
179
- difficulty?: number | null
180
- image?: string | null
181
- imageLarge?: string | null
182
- length?: number | null
183
- noteCount?: number | null
184
- playcount?: number | null
185
- ranked?: boolean | null
186
- starRating?: number | null
187
- title?: string | null
188
- }
189
- Relationships: []
190
- }
191
- chartedValues: {
192
- Row: {
193
- created_at: string
194
- id: number
195
- type: string | null
196
- value: number | null
197
- }
198
- Insert: {
199
- created_at?: string
200
- id?: number
201
- type?: string | null
202
- value?: number | null
203
- }
204
- Update: {
205
- created_at?: string
206
- id?: number
207
- type?: string | null
208
- value?: number | null
209
- }
210
- Relationships: []
211
- }
212
- clans: {
213
- Row: {
214
- acronym: string | null
215
- allowed_users: Json
216
- avatar_url: string | null
217
- created_at: string
218
- description: string | null
219
- id: number
220
- name: string
221
- owner: number | null
222
- }
223
- Insert: {
224
- acronym?: string | null
225
- allowed_users?: Json
226
- avatar_url?: string | null
227
- created_at?: string
228
- description?: string | null
229
- id?: number
230
- name?: string
231
- owner?: number | null
232
- }
233
- Update: {
234
- acronym?: string | null
235
- allowed_users?: Json
236
- avatar_url?: string | null
237
- created_at?: string
238
- description?: string | null
239
- id?: number
240
- name?: string
241
- owner?: number | null
242
- }
243
- Relationships: [
244
- {
245
- foreignKeyName: "clans_owner_fkey"
246
- columns: ["owner"]
247
- isOneToOne: false
248
- referencedRelation: "profiles"
249
- referencedColumns: ["id"]
250
- },
251
- ]
252
- }
253
- collectionRelations: {
254
- Row: {
255
- beatmapPage: number | null
256
- collection: number
257
- created_at: string
258
- id: number
259
- sort: number
260
- }
261
- Insert: {
262
- beatmapPage?: number | null
263
- collection: number
264
- created_at?: string
265
- id?: number
266
- sort?: number
267
- }
268
- Update: {
269
- beatmapPage?: number | null
270
- collection?: number
271
- created_at?: string
272
- id?: number
273
- sort?: number
274
- }
275
- Relationships: [
276
- {
277
- foreignKeyName: "collectionRelations_beatmapPage_fkey"
278
- columns: ["beatmapPage"]
279
- isOneToOne: false
280
- referencedRelation: "beatmapPages"
281
- referencedColumns: ["id"]
282
- },
283
- {
284
- foreignKeyName: "collectionRelations_collection_fkey"
285
- columns: ["collection"]
286
- isOneToOne: false
287
- referencedRelation: "beatmapCollections"
288
- referencedColumns: ["id"]
289
- },
290
- ]
291
- }
292
- discordWebhooks: {
293
- Row: {
294
- id: number
295
- type: Database["public"]["Enums"]["discordWebhookType"] | null
296
- webhook_link: string
297
- }
298
- Insert: {
299
- id?: number
300
- type?: Database["public"]["Enums"]["discordWebhookType"] | null
301
- webhook_link?: string
302
- }
303
- Update: {
304
- id?: number
305
- type?: Database["public"]["Enums"]["discordWebhookType"] | null
306
- webhook_link?: string
307
- }
308
- Relationships: []
309
- }
310
- levers: {
311
- Row: {
312
- disable_scores: boolean
313
- id: number
314
- }
315
- Insert: {
316
- disable_scores?: boolean
317
- id?: number
318
- }
319
- Update: {
320
- disable_scores?: boolean
321
- id?: number
322
- }
323
- Relationships: []
324
- }
325
- passkeys: {
326
- Row: {
327
- email: string
328
- id: number
329
- passkey: string
330
- }
331
- Insert: {
332
- email: string
333
- id: number
334
- passkey: string
335
- }
336
- Update: {
337
- email?: string
338
- id?: number
339
- passkey?: string
340
- }
341
- Relationships: [
342
- {
343
- foreignKeyName: "passkeys_id_fkey"
344
- columns: ["id"]
345
- isOneToOne: true
346
- referencedRelation: "profiles"
347
- referencedColumns: ["id"]
348
- },
349
- ]
350
- }
351
- profileActivities: {
352
- Row: {
353
- last_activity: number | null
354
- uid: string
355
- }
356
- Insert: {
357
- last_activity?: number | null
358
- uid: string
359
- }
360
- Update: {
361
- last_activity?: number | null
362
- uid?: string
363
- }
364
- Relationships: []
365
- }
366
- profiles: {
367
- Row: {
368
- about_me: string | null
369
- avatar_url: string | null
370
- badges: Json | null
371
- ban: Database["public"]["Enums"]["banTypes"] | null
372
- bannedAt: number | null
373
- clan: number | null
374
- computedUsername: string | null
375
- created_at: number | null
376
- flag: string | null
377
- id: number
378
- mu_rank: number
379
- play_count: number | null
380
- profile_image: string | null
381
- sigma_rank: number | null
382
- skill_points: number | null
383
- spin_skill_points: number
384
- squares_hit: number | null
385
- total_score: number | null
386
- uid: string | null
387
- username: string | null
388
- verified: boolean | null
389
- }
390
- Insert: {
391
- about_me?: string | null
392
- avatar_url?: string | null
393
- badges?: Json | null
394
- ban?: Database["public"]["Enums"]["banTypes"] | null
395
- bannedAt?: number | null
396
- clan?: number | null
397
- computedUsername?: string | null
398
- created_at?: number | null
399
- flag?: string | null
400
- id?: number
401
- mu_rank?: number
402
- play_count?: number | null
403
- profile_image?: string | null
404
- sigma_rank?: number | null
405
- skill_points?: number | null
406
- spin_skill_points?: number
407
- squares_hit?: number | null
408
- total_score?: number | null
409
- uid?: string | null
410
- username?: string | null
411
- verified?: boolean | null
412
- }
413
- Update: {
414
- about_me?: string | null
415
- avatar_url?: string | null
416
- badges?: Json | null
417
- ban?: Database["public"]["Enums"]["banTypes"] | null
418
- bannedAt?: number | null
419
- clan?: number | null
420
- computedUsername?: string | null
421
- created_at?: number | null
422
- flag?: string | null
423
- id?: number
424
- mu_rank?: number
425
- play_count?: number | null
426
- profile_image?: string | null
427
- sigma_rank?: number | null
428
- skill_points?: number | null
429
- spin_skill_points?: number
430
- squares_hit?: number | null
431
- total_score?: number | null
432
- uid?: string | null
433
- username?: string | null
434
- verified?: boolean | null
435
- }
436
- Relationships: [
437
- {
438
- foreignKeyName: "profiles_clan_fkey"
439
- columns: ["clan"]
440
- isOneToOne: false
441
- referencedRelation: "clans"
442
- referencedColumns: ["id"]
443
- },
444
- ]
445
- }
446
- scores: {
447
- Row: {
448
- additional_data: Json
449
- awarded_sp: number | null
450
- beatmapHash: string | null
451
- created_at: string
452
- id: number
453
- misses: number | null
454
- mods: Json
455
- passed: boolean | null
456
- replayHwid: string | null
457
- songId: string | null
458
- speed: number | null
459
- spin: boolean
460
- userId: number | null
461
- }
462
- Insert: {
463
- additional_data?: Json
464
- awarded_sp?: number | null
465
- beatmapHash?: string | null
466
- created_at?: string
467
- id?: number
468
- misses?: number | null
469
- mods?: Json
470
- passed?: boolean | null
471
- replayHwid?: string | null
472
- songId?: string | null
473
- speed?: number | null
474
- spin?: boolean
475
- userId?: number | null
476
- }
477
- Update: {
478
- additional_data?: Json
479
- awarded_sp?: number | null
480
- beatmapHash?: string | null
481
- created_at?: string
482
- id?: number
483
- misses?: number | null
484
- mods?: Json
485
- passed?: boolean | null
486
- replayHwid?: string | null
487
- songId?: string | null
488
- speed?: number | null
489
- spin?: boolean
490
- userId?: number | null
491
- }
492
- Relationships: [
493
- {
494
- foreignKeyName: "scores_beatmapHash_fkey"
495
- columns: ["beatmapHash"]
496
- isOneToOne: false
497
- referencedRelation: "beatmaps"
498
- referencedColumns: ["beatmapHash"]
499
- },
500
- {
501
- foreignKeyName: "scores_userId_fkey"
502
- columns: ["userId"]
503
- isOneToOne: false
504
- referencedRelation: "profiles"
505
- referencedColumns: ["id"]
506
- },
507
- ]
508
- }
509
- }
510
- Views: {
511
- [_ in never]: never
512
- }
513
- Functions: {
514
- get_collections_v1: {
515
- Args: {
516
- page_number?: number
517
- items_per_page?: number
518
- }
519
- Returns: {
520
- id: number
521
- title: string
522
- description: string
523
- created_at: string
524
- owner: number
525
- beatmap_count: number
526
- star1: number
527
- star2: number
528
- star3: number
529
- star4: number
530
- star5: number
531
- star6: number
532
- star7: number
533
- star8: number
534
- star9: number
535
- star10: number
536
- star11: number
537
- star12: number
538
- star13: number
539
- star14: number
540
- star15: number
541
- star16: number
542
- star17: number
543
- star18: number
544
- total_pages: number
545
- }[]
546
- }
547
- get_collections_v2:
548
- | {
549
- Args: {
550
- page_number?: number
551
- items_per_page?: number
552
- }
553
- Returns: {
554
- id: number
555
- title: string
556
- description: string
557
- created_at: string
558
- owner: number
559
- owner_username: string
560
- owner_avatar_url: string
561
- beatmap_count: number
562
- star1: number
563
- star2: number
564
- star3: number
565
- star4: number
566
- star5: number
567
- star6: number
568
- star7: number
569
- star8: number
570
- star9: number
571
- star10: number
572
- star11: number
573
- star12: number
574
- star13: number
575
- star14: number
576
- star15: number
577
- star16: number
578
- star17: number
579
- star18: number
580
- total_pages: number
581
- }[]
582
- }
583
- | {
584
- Args: {
585
- page_number?: number
586
- items_per_page?: number
587
- owner_filter?: number
588
- }
589
- Returns: {
590
- id: number
591
- title: string
592
- description: string
593
- created_at: string
594
- owner: number
595
- owner_username: string
596
- owner_avatar_url: string
597
- beatmap_count: number
598
- star1: number
599
- star2: number
600
- star3: number
601
- star4: number
602
- star5: number
603
- star6: number
604
- star7: number
605
- star8: number
606
- star9: number
607
- star10: number
608
- star11: number
609
- star12: number
610
- star13: number
611
- star14: number
612
- star15: number
613
- star16: number
614
- star17: number
615
- star18: number
616
- total_pages: number
617
- }[]
618
- }
619
- get_collections_v3: {
620
- Args: {
621
- page_number?: number
622
- items_per_page?: number
623
- owner_filter?: number
624
- }
625
- Returns: {
626
- id: number
627
- title: string
628
- description: string
629
- created_at: string
630
- owner: number
631
- owner_username: string
632
- owner_avatar_url: string
633
- beatmap_count: number
634
- star1: number
635
- star2: number
636
- star3: number
637
- star4: number
638
- star5: number
639
- star6: number
640
- star7: number
641
- star8: number
642
- star9: number
643
- star10: number
644
- star11: number
645
- star12: number
646
- star13: number
647
- star14: number
648
- star15: number
649
- star16: number
650
- star17: number
651
- star18: number
652
- total_pages: number
653
- }[]
654
- }
655
- get_collections_v4: {
656
- Args: {
657
- page_number?: number
658
- items_per_page?: number
659
- owner_filter?: number
660
- search_query?: string
661
- }
662
- Returns: {
663
- id: number
664
- title: string
665
- description: string
666
- created_at: string
667
- owner: number
668
- owner_username: string
669
- owner_avatar_url: string
670
- beatmap_count: number
671
- star1: number
672
- star2: number
673
- star3: number
674
- star4: number
675
- star5: number
676
- star6: number
677
- star7: number
678
- star8: number
679
- star9: number
680
- star10: number
681
- star11: number
682
- star12: number
683
- star13: number
684
- star14: number
685
- star15: number
686
- star16: number
687
- star17: number
688
- star18: number
689
- total_pages: number
690
- }[]
691
- }
692
- }
693
- Enums: {
694
- banTypes: "cool" | "silenced" | "restricted" | "excluded"
695
- discordWebhookType: "maps" | "scores"
696
- }
697
- CompositeTypes: {
698
- [_ in never]: never
699
- }
700
- }
701
- }
702
-
703
- type PublicSchema = Database[Extract<keyof Database, "public">]
704
-
705
- export type Tables<
706
- PublicTableNameOrOptions extends
707
- | keyof (PublicSchema["Tables"] & PublicSchema["Views"])
708
- | { schema: keyof Database },
709
- TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
710
- ? keyof (Database[PublicTableNameOrOptions["schema"]]["Tables"] &
711
- Database[PublicTableNameOrOptions["schema"]]["Views"])
712
- : never = never,
713
- > = PublicTableNameOrOptions extends { schema: keyof Database }
714
- ? (Database[PublicTableNameOrOptions["schema"]]["Tables"] &
715
- Database[PublicTableNameOrOptions["schema"]]["Views"])[TableName] extends {
716
- Row: infer R
717
- }
718
- ? R
719
- : never
720
- : PublicTableNameOrOptions extends keyof (PublicSchema["Tables"] &
721
- PublicSchema["Views"])
722
- ? (PublicSchema["Tables"] &
723
- PublicSchema["Views"])[PublicTableNameOrOptions] extends {
724
- Row: infer R
725
- }
726
- ? R
727
- : never
728
- : never
729
-
730
- export type TablesInsert<
731
- PublicTableNameOrOptions extends
732
- | keyof PublicSchema["Tables"]
733
- | { schema: keyof Database },
734
- TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
735
- ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"]
736
- : never = never,
737
- > = PublicTableNameOrOptions extends { schema: keyof Database }
738
- ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends {
739
- Insert: infer I
740
- }
741
- ? I
742
- : never
743
- : PublicTableNameOrOptions extends keyof PublicSchema["Tables"]
744
- ? PublicSchema["Tables"][PublicTableNameOrOptions] extends {
745
- Insert: infer I
746
- }
747
- ? I
748
- : never
749
- : never
750
-
751
- export type TablesUpdate<
752
- PublicTableNameOrOptions extends
753
- | keyof PublicSchema["Tables"]
754
- | { schema: keyof Database },
755
- TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
756
- ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"]
757
- : never = never,
758
- > = PublicTableNameOrOptions extends { schema: keyof Database }
759
- ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends {
760
- Update: infer U
761
- }
762
- ? U
763
- : never
764
- : PublicTableNameOrOptions extends keyof PublicSchema["Tables"]
765
- ? PublicSchema["Tables"][PublicTableNameOrOptions] extends {
766
- Update: infer U
767
- }
768
- ? U
769
- : never
770
- : never
771
-
772
- export type Enums<
773
- PublicEnumNameOrOptions extends
774
- | keyof PublicSchema["Enums"]
775
- | { schema: keyof Database },
776
- EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database }
777
- ? keyof Database[PublicEnumNameOrOptions["schema"]]["Enums"]
778
- : never = never,
779
- > = PublicEnumNameOrOptions extends { schema: keyof Database }
780
- ? Database[PublicEnumNameOrOptions["schema"]]["Enums"][EnumName]
781
- : PublicEnumNameOrOptions extends keyof PublicSchema["Enums"]
782
- ? PublicSchema["Enums"][PublicEnumNameOrOptions]
783
- : never
784
-
785
- export type CompositeTypes<
786
- PublicCompositeTypeNameOrOptions extends
787
- | keyof PublicSchema["CompositeTypes"]
788
- | { schema: keyof Database },
789
- CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
790
- schema: keyof Database
791
- }
792
- ? keyof Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"]
793
- : never = never,
794
- > = PublicCompositeTypeNameOrOptions extends { schema: keyof Database }
795
- ? Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName]
796
- : PublicCompositeTypeNameOrOptions extends keyof PublicSchema["CompositeTypes"]
797
- ? PublicSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions]
798
- : never
1
+ export type Json =
2
+ | string
3
+ | number
4
+ | boolean
5
+ | null
6
+ | { [key: string]: Json | undefined }
7
+ | Json[]
8
+
9
+ export type Database = {
10
+ public: {
11
+ Tables: {
12
+ beatmapCollections: {
13
+ Row: {
14
+ created_at: string
15
+ description: string
16
+ id: number
17
+ is_list: boolean
18
+ owner: number
19
+ title: string
20
+ }
21
+ Insert: {
22
+ created_at?: string
23
+ description: string
24
+ id?: number
25
+ is_list?: boolean
26
+ owner: number
27
+ title: string
28
+ }
29
+ Update: {
30
+ created_at?: string
31
+ description?: string
32
+ id?: number
33
+ is_list?: boolean
34
+ owner?: number
35
+ title?: string
36
+ }
37
+ Relationships: [
38
+ {
39
+ foreignKeyName: "beatmapCollections_owner_fkey"
40
+ columns: ["owner"]
41
+ isOneToOne: false
42
+ referencedRelation: "profiles"
43
+ referencedColumns: ["id"]
44
+ },
45
+ ]
46
+ }
47
+ beatmapPageComments: {
48
+ Row: {
49
+ beatmapPage: number
50
+ content: string | null
51
+ created_at: string
52
+ id: number
53
+ owner: number
54
+ }
55
+ Insert: {
56
+ beatmapPage: number
57
+ content?: string | null
58
+ created_at?: string
59
+ id?: number
60
+ owner: number
61
+ }
62
+ Update: {
63
+ beatmapPage?: number
64
+ content?: string | null
65
+ created_at?: string
66
+ id?: number
67
+ owner?: number
68
+ }
69
+ Relationships: [
70
+ {
71
+ foreignKeyName: "beatmapPageComments_beatmapPage_fkey"
72
+ columns: ["beatmapPage"]
73
+ isOneToOne: false
74
+ referencedRelation: "beatmapPages"
75
+ referencedColumns: ["id"]
76
+ },
77
+ {
78
+ foreignKeyName: "beatmapPageComments_owner_fkey"
79
+ columns: ["owner"]
80
+ isOneToOne: false
81
+ referencedRelation: "profiles"
82
+ referencedColumns: ["id"]
83
+ },
84
+ ]
85
+ }
86
+ beatmapPages: {
87
+ Row: {
88
+ created_at: string
89
+ description: string
90
+ genre: string | null
91
+ id: number
92
+ latestBeatmapHash: string | null
93
+ nominations: Json | null
94
+ owner: number | null
95
+ ranked_at: number
96
+ status: string | null
97
+ tags: string
98
+ title: string | null
99
+ updated_at: number | null
100
+ }
101
+ Insert: {
102
+ created_at?: string
103
+ description?: string
104
+ genre?: string | null
105
+ id?: number
106
+ latestBeatmapHash?: string | null
107
+ nominations?: Json | null
108
+ owner?: number | null
109
+ ranked_at?: number
110
+ status?: string | null
111
+ tags?: string
112
+ title?: string | null
113
+ updated_at?: number | null
114
+ }
115
+ Update: {
116
+ created_at?: string
117
+ description?: string
118
+ genre?: string | null
119
+ id?: number
120
+ latestBeatmapHash?: string | null
121
+ nominations?: Json | null
122
+ owner?: number | null
123
+ ranked_at?: number
124
+ status?: string | null
125
+ tags?: string
126
+ title?: string | null
127
+ updated_at?: number | null
128
+ }
129
+ Relationships: [
130
+ {
131
+ foreignKeyName: "beatmapPages_latestBeatmapHash_fkey"
132
+ columns: ["latestBeatmapHash"]
133
+ isOneToOne: false
134
+ referencedRelation: "beatmaps"
135
+ referencedColumns: ["beatmapHash"]
136
+ },
137
+ {
138
+ foreignKeyName: "beatmapPages_owner_fkey"
139
+ columns: ["owner"]
140
+ isOneToOne: false
141
+ referencedRelation: "profiles"
142
+ referencedColumns: ["id"]
143
+ },
144
+ ]
145
+ }
146
+ beatmaps: {
147
+ Row: {
148
+ beatmapFile: string | null
149
+ beatmapHash: string
150
+ created_at: string
151
+ difficulty: number | null
152
+ image: string | null
153
+ imageLarge: string | null
154
+ length: number | null
155
+ noteCount: number | null
156
+ playcount: number | null
157
+ ranked: boolean | null
158
+ starRating: number | null
159
+ title: string | null
160
+ }
161
+ Insert: {
162
+ beatmapFile?: string | null
163
+ beatmapHash: string
164
+ created_at?: string
165
+ difficulty?: number | null
166
+ image?: string | null
167
+ imageLarge?: string | null
168
+ length?: number | null
169
+ noteCount?: number | null
170
+ playcount?: number | null
171
+ ranked?: boolean | null
172
+ starRating?: number | null
173
+ title?: string | null
174
+ }
175
+ Update: {
176
+ beatmapFile?: string | null
177
+ beatmapHash?: string
178
+ created_at?: string
179
+ difficulty?: number | null
180
+ image?: string | null
181
+ imageLarge?: string | null
182
+ length?: number | null
183
+ noteCount?: number | null
184
+ playcount?: number | null
185
+ ranked?: boolean | null
186
+ starRating?: number | null
187
+ title?: string | null
188
+ }
189
+ Relationships: []
190
+ }
191
+ chartedValues: {
192
+ Row: {
193
+ created_at: string
194
+ id: number
195
+ type: string | null
196
+ value: number | null
197
+ }
198
+ Insert: {
199
+ created_at?: string
200
+ id?: number
201
+ type?: string | null
202
+ value?: number | null
203
+ }
204
+ Update: {
205
+ created_at?: string
206
+ id?: number
207
+ type?: string | null
208
+ value?: number | null
209
+ }
210
+ Relationships: []
211
+ }
212
+ clans: {
213
+ Row: {
214
+ acronym: string | null
215
+ allowed_users: Json
216
+ avatar_url: string | null
217
+ created_at: string
218
+ description: string | null
219
+ id: number
220
+ name: string
221
+ owner: number | null
222
+ }
223
+ Insert: {
224
+ acronym?: string | null
225
+ allowed_users?: Json
226
+ avatar_url?: string | null
227
+ created_at?: string
228
+ description?: string | null
229
+ id?: number
230
+ name?: string
231
+ owner?: number | null
232
+ }
233
+ Update: {
234
+ acronym?: string | null
235
+ allowed_users?: Json
236
+ avatar_url?: string | null
237
+ created_at?: string
238
+ description?: string | null
239
+ id?: number
240
+ name?: string
241
+ owner?: number | null
242
+ }
243
+ Relationships: [
244
+ {
245
+ foreignKeyName: "clans_owner_fkey"
246
+ columns: ["owner"]
247
+ isOneToOne: false
248
+ referencedRelation: "profiles"
249
+ referencedColumns: ["id"]
250
+ },
251
+ ]
252
+ }
253
+ collectionRelations: {
254
+ Row: {
255
+ beatmapPage: number | null
256
+ collection: number
257
+ created_at: string
258
+ id: number
259
+ sort: number
260
+ }
261
+ Insert: {
262
+ beatmapPage?: number | null
263
+ collection: number
264
+ created_at?: string
265
+ id?: number
266
+ sort?: number
267
+ }
268
+ Update: {
269
+ beatmapPage?: number | null
270
+ collection?: number
271
+ created_at?: string
272
+ id?: number
273
+ sort?: number
274
+ }
275
+ Relationships: [
276
+ {
277
+ foreignKeyName: "collectionRelations_beatmapPage_fkey"
278
+ columns: ["beatmapPage"]
279
+ isOneToOne: false
280
+ referencedRelation: "beatmapPages"
281
+ referencedColumns: ["id"]
282
+ },
283
+ {
284
+ foreignKeyName: "collectionRelations_collection_fkey"
285
+ columns: ["collection"]
286
+ isOneToOne: false
287
+ referencedRelation: "beatmapCollections"
288
+ referencedColumns: ["id"]
289
+ },
290
+ ]
291
+ }
292
+ discordWebhooks: {
293
+ Row: {
294
+ id: number
295
+ type: Database["public"]["Enums"]["discordWebhookType"] | null
296
+ webhook_link: string
297
+ }
298
+ Insert: {
299
+ id?: number
300
+ type?: Database["public"]["Enums"]["discordWebhookType"] | null
301
+ webhook_link?: string
302
+ }
303
+ Update: {
304
+ id?: number
305
+ type?: Database["public"]["Enums"]["discordWebhookType"] | null
306
+ webhook_link?: string
307
+ }
308
+ Relationships: []
309
+ }
310
+ levers: {
311
+ Row: {
312
+ disable_scores: boolean
313
+ id: number
314
+ }
315
+ Insert: {
316
+ disable_scores?: boolean
317
+ id?: number
318
+ }
319
+ Update: {
320
+ disable_scores?: boolean
321
+ id?: number
322
+ }
323
+ Relationships: []
324
+ }
325
+ passkeys: {
326
+ Row: {
327
+ email: string
328
+ id: number
329
+ passkey: string
330
+ }
331
+ Insert: {
332
+ email: string
333
+ id: number
334
+ passkey: string
335
+ }
336
+ Update: {
337
+ email?: string
338
+ id?: number
339
+ passkey?: string
340
+ }
341
+ Relationships: [
342
+ {
343
+ foreignKeyName: "passkeys_id_fkey"
344
+ columns: ["id"]
345
+ isOneToOne: true
346
+ referencedRelation: "profiles"
347
+ referencedColumns: ["id"]
348
+ },
349
+ ]
350
+ }
351
+ profileActivities: {
352
+ Row: {
353
+ last_activity: number | null
354
+ uid: string
355
+ }
356
+ Insert: {
357
+ last_activity?: number | null
358
+ uid: string
359
+ }
360
+ Update: {
361
+ last_activity?: number | null
362
+ uid?: string
363
+ }
364
+ Relationships: []
365
+ }
366
+ profiles: {
367
+ Row: {
368
+ about_me: string | null
369
+ avatar_url: string | null
370
+ badges: Json | null
371
+ ban: Database["public"]["Enums"]["banTypes"] | null
372
+ bannedAt: number | null
373
+ clan: number | null
374
+ computedUsername: string | null
375
+ created_at: number | null
376
+ flag: string | null
377
+ id: number
378
+ mu_rank: number
379
+ play_count: number | null
380
+ profile_image: string | null
381
+ sigma_rank: number | null
382
+ skill_points: number | null
383
+ spin_skill_points: number
384
+ squares_hit: number | null
385
+ total_score: number | null
386
+ uid: string | null
387
+ username: string | null
388
+ verified: boolean | null
389
+ }
390
+ Insert: {
391
+ about_me?: string | null
392
+ avatar_url?: string | null
393
+ badges?: Json | null
394
+ ban?: Database["public"]["Enums"]["banTypes"] | null
395
+ bannedAt?: number | null
396
+ clan?: number | null
397
+ computedUsername?: string | null
398
+ created_at?: number | null
399
+ flag?: string | null
400
+ id?: number
401
+ mu_rank?: number
402
+ play_count?: number | null
403
+ profile_image?: string | null
404
+ sigma_rank?: number | null
405
+ skill_points?: number | null
406
+ spin_skill_points?: number
407
+ squares_hit?: number | null
408
+ total_score?: number | null
409
+ uid?: string | null
410
+ username?: string | null
411
+ verified?: boolean | null
412
+ }
413
+ Update: {
414
+ about_me?: string | null
415
+ avatar_url?: string | null
416
+ badges?: Json | null
417
+ ban?: Database["public"]["Enums"]["banTypes"] | null
418
+ bannedAt?: number | null
419
+ clan?: number | null
420
+ computedUsername?: string | null
421
+ created_at?: number | null
422
+ flag?: string | null
423
+ id?: number
424
+ mu_rank?: number
425
+ play_count?: number | null
426
+ profile_image?: string | null
427
+ sigma_rank?: number | null
428
+ skill_points?: number | null
429
+ spin_skill_points?: number
430
+ squares_hit?: number | null
431
+ total_score?: number | null
432
+ uid?: string | null
433
+ username?: string | null
434
+ verified?: boolean | null
435
+ }
436
+ Relationships: [
437
+ {
438
+ foreignKeyName: "profiles_clan_fkey"
439
+ columns: ["clan"]
440
+ isOneToOne: false
441
+ referencedRelation: "clans"
442
+ referencedColumns: ["id"]
443
+ },
444
+ ]
445
+ }
446
+ scores: {
447
+ Row: {
448
+ additional_data: Json
449
+ awarded_sp: number | null
450
+ beatmapHash: string | null
451
+ created_at: string
452
+ id: number
453
+ misses: number | null
454
+ mods: Json
455
+ passed: boolean | null
456
+ replayHwid: string | null
457
+ songId: string | null
458
+ speed: number | null
459
+ spin: boolean
460
+ userId: number | null
461
+ }
462
+ Insert: {
463
+ additional_data?: Json
464
+ awarded_sp?: number | null
465
+ beatmapHash?: string | null
466
+ created_at?: string
467
+ id?: number
468
+ misses?: number | null
469
+ mods?: Json
470
+ passed?: boolean | null
471
+ replayHwid?: string | null
472
+ songId?: string | null
473
+ speed?: number | null
474
+ spin?: boolean
475
+ userId?: number | null
476
+ }
477
+ Update: {
478
+ additional_data?: Json
479
+ awarded_sp?: number | null
480
+ beatmapHash?: string | null
481
+ created_at?: string
482
+ id?: number
483
+ misses?: number | null
484
+ mods?: Json
485
+ passed?: boolean | null
486
+ replayHwid?: string | null
487
+ songId?: string | null
488
+ speed?: number | null
489
+ spin?: boolean
490
+ userId?: number | null
491
+ }
492
+ Relationships: [
493
+ {
494
+ foreignKeyName: "scores_beatmapHash_fkey"
495
+ columns: ["beatmapHash"]
496
+ isOneToOne: false
497
+ referencedRelation: "beatmaps"
498
+ referencedColumns: ["beatmapHash"]
499
+ },
500
+ {
501
+ foreignKeyName: "scores_userId_fkey"
502
+ columns: ["userId"]
503
+ isOneToOne: false
504
+ referencedRelation: "profiles"
505
+ referencedColumns: ["id"]
506
+ },
507
+ ]
508
+ }
509
+ }
510
+ Views: {
511
+ [_ in never]: never
512
+ }
513
+ Functions: {
514
+ get_collections_v1: {
515
+ Args: {
516
+ page_number?: number
517
+ items_per_page?: number
518
+ }
519
+ Returns: {
520
+ id: number
521
+ title: string
522
+ description: string
523
+ created_at: string
524
+ owner: number
525
+ beatmap_count: number
526
+ star1: number
527
+ star2: number
528
+ star3: number
529
+ star4: number
530
+ star5: number
531
+ star6: number
532
+ star7: number
533
+ star8: number
534
+ star9: number
535
+ star10: number
536
+ star11: number
537
+ star12: number
538
+ star13: number
539
+ star14: number
540
+ star15: number
541
+ star16: number
542
+ star17: number
543
+ star18: number
544
+ total_pages: number
545
+ }[]
546
+ }
547
+ get_collections_v2:
548
+ | {
549
+ Args: {
550
+ page_number?: number
551
+ items_per_page?: number
552
+ }
553
+ Returns: {
554
+ id: number
555
+ title: string
556
+ description: string
557
+ created_at: string
558
+ owner: number
559
+ owner_username: string
560
+ owner_avatar_url: string
561
+ beatmap_count: number
562
+ star1: number
563
+ star2: number
564
+ star3: number
565
+ star4: number
566
+ star5: number
567
+ star6: number
568
+ star7: number
569
+ star8: number
570
+ star9: number
571
+ star10: number
572
+ star11: number
573
+ star12: number
574
+ star13: number
575
+ star14: number
576
+ star15: number
577
+ star16: number
578
+ star17: number
579
+ star18: number
580
+ total_pages: number
581
+ }[]
582
+ }
583
+ | {
584
+ Args: {
585
+ page_number?: number
586
+ items_per_page?: number
587
+ owner_filter?: number
588
+ }
589
+ Returns: {
590
+ id: number
591
+ title: string
592
+ description: string
593
+ created_at: string
594
+ owner: number
595
+ owner_username: string
596
+ owner_avatar_url: string
597
+ beatmap_count: number
598
+ star1: number
599
+ star2: number
600
+ star3: number
601
+ star4: number
602
+ star5: number
603
+ star6: number
604
+ star7: number
605
+ star8: number
606
+ star9: number
607
+ star10: number
608
+ star11: number
609
+ star12: number
610
+ star13: number
611
+ star14: number
612
+ star15: number
613
+ star16: number
614
+ star17: number
615
+ star18: number
616
+ total_pages: number
617
+ }[]
618
+ }
619
+ get_collections_v3: {
620
+ Args: {
621
+ page_number?: number
622
+ items_per_page?: number
623
+ owner_filter?: number
624
+ }
625
+ Returns: {
626
+ id: number
627
+ title: string
628
+ description: string
629
+ created_at: string
630
+ owner: number
631
+ owner_username: string
632
+ owner_avatar_url: string
633
+ beatmap_count: number
634
+ star1: number
635
+ star2: number
636
+ star3: number
637
+ star4: number
638
+ star5: number
639
+ star6: number
640
+ star7: number
641
+ star8: number
642
+ star9: number
643
+ star10: number
644
+ star11: number
645
+ star12: number
646
+ star13: number
647
+ star14: number
648
+ star15: number
649
+ star16: number
650
+ star17: number
651
+ star18: number
652
+ total_pages: number
653
+ }[]
654
+ }
655
+ get_collections_v4: {
656
+ Args: {
657
+ page_number?: number
658
+ items_per_page?: number
659
+ owner_filter?: number
660
+ search_query?: string
661
+ author_filter?: string
662
+ min_beatmaps?: number
663
+ }
664
+ Returns: {
665
+ id: number
666
+ title: string
667
+ description: string
668
+ created_at: string
669
+ owner: number
670
+ owner_username: string
671
+ owner_avatar_url: string
672
+ beatmap_count: number
673
+ star1: number
674
+ star2: number
675
+ star3: number
676
+ star4: number
677
+ star5: number
678
+ star6: number
679
+ star7: number
680
+ star8: number
681
+ star9: number
682
+ star10: number
683
+ star11: number
684
+ star12: number
685
+ star13: number
686
+ star14: number
687
+ star15: number
688
+ star16: number
689
+ star17: number
690
+ star18: number
691
+ total_pages: number
692
+ }[]
693
+ }
694
+ }
695
+ Enums: {
696
+ banTypes: "cool" | "silenced" | "restricted" | "excluded"
697
+ discordWebhookType: "maps" | "scores"
698
+ }
699
+ CompositeTypes: {
700
+ [_ in never]: never
701
+ }
702
+ }
703
+ }
704
+
705
+ type PublicSchema = Database[Extract<keyof Database, "public">]
706
+
707
+ export type Tables<
708
+ PublicTableNameOrOptions extends
709
+ | keyof (PublicSchema["Tables"] & PublicSchema["Views"])
710
+ | { schema: keyof Database },
711
+ TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
712
+ ? keyof (Database[PublicTableNameOrOptions["schema"]]["Tables"] &
713
+ Database[PublicTableNameOrOptions["schema"]]["Views"])
714
+ : never = never,
715
+ > = PublicTableNameOrOptions extends { schema: keyof Database }
716
+ ? (Database[PublicTableNameOrOptions["schema"]]["Tables"] &
717
+ Database[PublicTableNameOrOptions["schema"]]["Views"])[TableName] extends {
718
+ Row: infer R
719
+ }
720
+ ? R
721
+ : never
722
+ : PublicTableNameOrOptions extends keyof (PublicSchema["Tables"] &
723
+ PublicSchema["Views"])
724
+ ? (PublicSchema["Tables"] &
725
+ PublicSchema["Views"])[PublicTableNameOrOptions] extends {
726
+ Row: infer R
727
+ }
728
+ ? R
729
+ : never
730
+ : never
731
+
732
+ export type TablesInsert<
733
+ PublicTableNameOrOptions extends
734
+ | keyof PublicSchema["Tables"]
735
+ | { schema: keyof Database },
736
+ TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
737
+ ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"]
738
+ : never = never,
739
+ > = PublicTableNameOrOptions extends { schema: keyof Database }
740
+ ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends {
741
+ Insert: infer I
742
+ }
743
+ ? I
744
+ : never
745
+ : PublicTableNameOrOptions extends keyof PublicSchema["Tables"]
746
+ ? PublicSchema["Tables"][PublicTableNameOrOptions] extends {
747
+ Insert: infer I
748
+ }
749
+ ? I
750
+ : never
751
+ : never
752
+
753
+ export type TablesUpdate<
754
+ PublicTableNameOrOptions extends
755
+ | keyof PublicSchema["Tables"]
756
+ | { schema: keyof Database },
757
+ TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
758
+ ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"]
759
+ : never = never,
760
+ > = PublicTableNameOrOptions extends { schema: keyof Database }
761
+ ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends {
762
+ Update: infer U
763
+ }
764
+ ? U
765
+ : never
766
+ : PublicTableNameOrOptions extends keyof PublicSchema["Tables"]
767
+ ? PublicSchema["Tables"][PublicTableNameOrOptions] extends {
768
+ Update: infer U
769
+ }
770
+ ? U
771
+ : never
772
+ : never
773
+
774
+ export type Enums<
775
+ PublicEnumNameOrOptions extends
776
+ | keyof PublicSchema["Enums"]
777
+ | { schema: keyof Database },
778
+ EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database }
779
+ ? keyof Database[PublicEnumNameOrOptions["schema"]]["Enums"]
780
+ : never = never,
781
+ > = PublicEnumNameOrOptions extends { schema: keyof Database }
782
+ ? Database[PublicEnumNameOrOptions["schema"]]["Enums"][EnumName]
783
+ : PublicEnumNameOrOptions extends keyof PublicSchema["Enums"]
784
+ ? PublicSchema["Enums"][PublicEnumNameOrOptions]
785
+ : never
786
+
787
+ export type CompositeTypes<
788
+ PublicCompositeTypeNameOrOptions extends
789
+ | keyof PublicSchema["CompositeTypes"]
790
+ | { schema: keyof Database },
791
+ CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
792
+ schema: keyof Database
793
+ }
794
+ ? keyof Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"]
795
+ : never = never,
796
+ > = PublicCompositeTypeNameOrOptions extends { schema: keyof Database }
797
+ ? Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName]
798
+ : PublicCompositeTypeNameOrOptions extends keyof PublicSchema["CompositeTypes"]
799
+ ? PublicSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions]
800
+ : never