beatsaber-bot-core 0.2.0-rc.8 → 0.3.0-rc.1

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 (678) hide show
  1. package/dist/cjs/cmd/bind/bind-beatleader.js +2 -2
  2. package/dist/cjs/cmd/bind/bind-beatleader.js.map +1 -1
  3. package/dist/cjs/cmd/bind/bind-beatsaver.js +2 -2
  4. package/dist/cjs/cmd/bind/bind-beatsaver.js.map +1 -1
  5. package/dist/cjs/cmd/bind/bind-id-beatleader.js +3 -3
  6. package/dist/cjs/cmd/bind/bind-id-beatleader.js.map +1 -1
  7. package/dist/cjs/cmd/bind/bind-id-beatsaver.js +3 -3
  8. package/dist/cjs/cmd/bind/bind-id-beatsaver.js.map +1 -1
  9. package/dist/cjs/cmd/bind/bind-scoresaber.js +3 -3
  10. package/dist/cjs/cmd/bind/bind-scoresaber.js.map +1 -1
  11. package/dist/cjs/cmd/bind/index.js +12 -12
  12. package/dist/cjs/cmd/bind/index.js.map +1 -1
  13. package/dist/cjs/cmd/bsmap/id-search.js +3 -3
  14. package/dist/cjs/cmd/bsmap/id-search.js.map +1 -1
  15. package/dist/cjs/cmd/bsmap/key-search.js +2 -2
  16. package/dist/cjs/cmd/bsmap/key-search.js.map +1 -1
  17. package/dist/cjs/cmd/bsmap/latest.js +2 -2
  18. package/dist/cjs/cmd/bsmap/latest.js.map +1 -1
  19. package/dist/cjs/cmd/deprecated/tmp.js +4 -4
  20. package/dist/cjs/cmd/deprecated/tmp.js.map +1 -1
  21. package/dist/cjs/cmd/index.js +11 -11
  22. package/dist/cjs/cmd/index.js.map +1 -1
  23. package/dist/cjs/cmd/rank.js +8 -8
  24. package/dist/cjs/cmd/rank.js.map +1 -1
  25. package/dist/cjs/cmd/score.js +16 -20
  26. package/dist/cjs/cmd/score.js.map +1 -1
  27. package/dist/cjs/cmd/subscribe/beatleader.js +3 -3
  28. package/dist/cjs/cmd/subscribe/beatleader.js.map +1 -1
  29. package/dist/cjs/cmd/subscribe/beatsaver.js +3 -3
  30. package/dist/cjs/cmd/subscribe/beatsaver.js.map +1 -1
  31. package/dist/cjs/cmd/subscribe/id-beatleader-score.js +4 -4
  32. package/dist/cjs/cmd/subscribe/id-beatleader-score.js.map +1 -1
  33. package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js +4 -4
  34. package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
  35. package/dist/cjs/cmd/subscribe/index.js +8 -8
  36. package/dist/cjs/cmd/subscribe/index.js.map +1 -1
  37. package/dist/cjs/cmd/subscribe/subjoin.js +6 -6
  38. package/dist/cjs/cmd/subscribe/subjoin.js.map +1 -1
  39. package/dist/cjs/cmd/subscribe/subleave.js +6 -6
  40. package/dist/cjs/cmd/subscribe/subleave.js.map +1 -1
  41. package/dist/cjs/cmd/subscribe/unsubscribe.js +8 -8
  42. package/dist/cjs/cmd/subscribe/unsubscribe.js.map +1 -1
  43. package/dist/cjs/common/cache.js.map +1 -0
  44. package/dist/cjs/common/fetch/error.js.map +1 -0
  45. package/dist/cjs/{infra/support → common}/fetch/index.js +16 -14
  46. package/dist/cjs/common/fetch/index.js.map +1 -0
  47. package/dist/cjs/{infra/support → common}/fetch/ofetch.js +5 -12
  48. package/dist/cjs/common/fetch/ofetch.js.map +1 -0
  49. package/dist/cjs/common/i18n/index.js +55 -0
  50. package/dist/cjs/common/i18n/index.js.map +1 -0
  51. package/dist/cjs/common/i18n/parser.js.map +1 -0
  52. package/dist/cjs/{infra/i18n/index.js → common/i18n/util.js} +10 -71
  53. package/dist/cjs/common/i18n/util.js.map +1 -0
  54. package/dist/cjs/{infra/support → common}/render/index.js +55 -15
  55. package/dist/cjs/common/render/index.js.map +1 -0
  56. package/dist/cjs/common/render/puppeteer.js.map +1 -0
  57. package/dist/cjs/{infra → common}/s3/index.js +34 -13
  58. package/dist/cjs/common/s3/index.js.map +1 -0
  59. package/dist/cjs/components/components/RankDifficulty.js +60 -84
  60. package/dist/cjs/components/components/RankDifficulty.js.map +1 -1
  61. package/dist/cjs/components/components/base/avatar.js +1 -2
  62. package/dist/cjs/components/components/base/avatar.js.map +1 -1
  63. package/dist/cjs/components/components/bl-rank-score-item.js +25 -87
  64. package/dist/cjs/components/components/bl-rank-score-item.js.map +1 -1
  65. package/dist/cjs/components/components/bl-score-item.js +28 -69
  66. package/dist/cjs/components/components/bl-score-item.js.map +1 -1
  67. package/dist/cjs/components/components/characteristic.js +106 -118
  68. package/dist/cjs/components/components/characteristic.js.map +1 -1
  69. package/dist/cjs/components/components/flag.js +6 -14
  70. package/dist/cjs/components/components/flag.js.map +1 -1
  71. package/dist/cjs/components/components/icons/BeatLeader.js +55 -71
  72. package/dist/cjs/components/components/icons/BeatLeader.js.map +1 -1
  73. package/dist/cjs/components/components/icons/RankIcon.js +3 -7
  74. package/dist/cjs/components/components/icons/RankIcon.js.map +1 -1
  75. package/dist/cjs/components/components/icons/ScoreSaberIcon.js +276 -312
  76. package/dist/cjs/components/components/icons/ScoreSaberIcon.js.map +1 -1
  77. package/dist/cjs/components/components/progressbar.js +12 -2
  78. package/dist/cjs/components/components/progressbar.js.map +1 -1
  79. package/dist/cjs/components/components/scoreItem.js +26 -63
  80. package/dist/cjs/components/components/scoreItem.js.map +1 -1
  81. package/dist/cjs/components/components/scoregraph.js +4 -5
  82. package/dist/cjs/components/components/scoregraph.js.map +1 -1
  83. package/dist/cjs/components/components/skill-graph.js +147 -164
  84. package/dist/cjs/components/components/skill-graph.js.map +1 -1
  85. package/dist/cjs/components/components/socre-badge.js +7 -10
  86. package/dist/cjs/components/components/socre-badge.js.map +1 -1
  87. package/dist/cjs/components/components/ss-rank-score-item.js +25 -87
  88. package/dist/cjs/components/components/ss-rank-score-item.js.map +1 -1
  89. package/dist/cjs/components/components/ss-score-item.js +38 -65
  90. package/dist/cjs/components/components/ss-score-item.js.map +1 -1
  91. package/dist/cjs/components/index.js +3 -43
  92. package/dist/cjs/components/index.js.map +1 -1
  93. package/dist/cjs/components/pages/bl-player.js +91 -136
  94. package/dist/cjs/components/pages/bl-player.js.map +1 -1
  95. package/dist/cjs/components/pages/bl-score-with-rank.js +114 -221
  96. package/dist/cjs/components/pages/bl-score-with-rank.js.map +1 -1
  97. package/dist/cjs/components/pages/bl-score.js +67 -169
  98. package/dist/cjs/components/pages/bl-score.js.map +1 -1
  99. package/dist/cjs/components/pages/bs-map.js +95 -166
  100. package/dist/cjs/components/pages/bs-map.js.map +1 -1
  101. package/dist/cjs/components/pages/index.js +26 -26
  102. package/dist/cjs/components/pages/index.js.map +1 -1
  103. package/dist/cjs/components/pages/ss-player.js +48 -77
  104. package/dist/cjs/components/pages/ss-player.js.map +1 -1
  105. package/dist/cjs/components/utils/bl/bsorReplayAcc.js +2 -2
  106. package/dist/cjs/components/utils/bl/bsorReplayAcc.js.map +1 -1
  107. package/dist/cjs/components/utils/bl/getPart.js.map +1 -1
  108. package/dist/cjs/components/utils/bl/stastic.js.map +1 -1
  109. package/dist/cjs/components/utils/format.js +3 -3
  110. package/dist/cjs/components/utils/format.js.map +1 -1
  111. package/dist/cjs/components/utils/getMods.js.map +1 -1
  112. package/dist/cjs/components/utils/index.js +4 -4
  113. package/dist/cjs/config.js +40 -0
  114. package/dist/cjs/config.js.map +1 -1
  115. package/dist/cjs/{interface → core}/cmd/builder.js +5 -5
  116. package/dist/cjs/core/cmd/builder.js.map +1 -0
  117. package/dist/cjs/core/cmd/type.js.map +1 -0
  118. package/dist/cjs/core/domain.js +16 -0
  119. package/dist/cjs/core/domain.js.map +1 -0
  120. package/dist/cjs/core/error.js +38 -0
  121. package/dist/cjs/core/error.js.map +1 -0
  122. package/dist/cjs/{interface/bot.js → core/event.js} +3 -3
  123. package/dist/cjs/core/event.js.map +1 -0
  124. package/dist/cjs/core/index.js +39 -0
  125. package/dist/cjs/core/index.js.map +1 -0
  126. package/dist/cjs/core/logger.js.map +1 -0
  127. package/dist/cjs/core/session.js +16 -0
  128. package/dist/cjs/core/session.js.map +1 -0
  129. package/dist/cjs/{schedules → events/schedules}/index.js +4 -3
  130. package/dist/cjs/events/schedules/index.js.map +1 -0
  131. package/dist/cjs/{schedules → events/schedules}/temp.js +7 -3
  132. package/dist/cjs/events/schedules/temp.js.map +1 -0
  133. package/dist/cjs/{ws → events/ws}/beatleader.js +6 -6
  134. package/dist/cjs/events/ws/beatleader.js.map +1 -0
  135. package/dist/cjs/{ws → events/ws}/beatsaver.js +11 -11
  136. package/dist/cjs/events/ws/beatsaver.js.map +1 -0
  137. package/dist/cjs/events/ws/handler.js.map +1 -0
  138. package/dist/cjs/{ws → events/ws}/index.js +6 -8
  139. package/dist/cjs/events/ws/index.js.map +1 -0
  140. package/dist/cjs/index.js +27 -18
  141. package/dist/cjs/index.js.map +1 -1
  142. package/dist/cjs/interface/db/index.js +0 -6
  143. package/dist/cjs/interface/db/index.js.map +1 -1
  144. package/dist/cjs/interface/db/models.js.map +1 -1
  145. package/dist/cjs/interface/index.js +12 -21
  146. package/dist/cjs/interface/index.js.map +1 -1
  147. package/dist/cjs/{service → services}/api/base/aioclient.js +1 -1
  148. package/dist/cjs/services/api/base/aioclient.js.map +1 -0
  149. package/dist/cjs/{service → services}/api/base/blclient.js +1 -1
  150. package/dist/cjs/services/api/base/blclient.js.map +1 -0
  151. package/dist/cjs/{service → services}/api/base/bsclient.js +2 -2
  152. package/dist/cjs/services/api/base/bsclient.js.map +1 -0
  153. package/dist/cjs/{service → services}/api/base/index.js +8 -8
  154. package/dist/cjs/services/api/base/index.js.map +1 -0
  155. package/dist/cjs/{service → services}/api/base/ssclient.js +2 -2
  156. package/dist/cjs/services/api/base/ssclient.js.map +1 -0
  157. package/dist/cjs/{service → services}/api/index.js +17 -9
  158. package/dist/cjs/services/api/index.js.map +1 -0
  159. package/dist/cjs/services/api/interfaces/aiosaber/index.js.map +1 -0
  160. package/dist/cjs/services/api/interfaces/beatleader/bsor.js.map +1 -0
  161. package/dist/cjs/{service → services}/api/interfaces/beatleader/index.js +10 -10
  162. package/dist/cjs/services/api/interfaces/beatleader/index.js.map +1 -0
  163. package/dist/cjs/services/api/interfaces/beatleader/req.js.map +1 -0
  164. package/dist/cjs/services/api/interfaces/beatleader/score.js.map +1 -0
  165. package/dist/cjs/services/api/interfaces/beatleader/user.js.map +1 -0
  166. package/dist/cjs/services/api/interfaces/beatleader/ws.js.map +1 -0
  167. package/dist/cjs/services/api/interfaces/beatsaver/alert.js.map +1 -0
  168. package/dist/cjs/services/api/interfaces/beatsaver/bsmap.js.map +1 -0
  169. package/dist/cjs/{service → services}/api/interfaces/beatsaver/index.js +10 -10
  170. package/dist/cjs/services/api/interfaces/beatsaver/index.js.map +1 -0
  171. package/dist/cjs/services/api/interfaces/beatsaver/resp.js.map +1 -0
  172. package/dist/cjs/services/api/interfaces/beatsaver/user.js.map +1 -0
  173. package/dist/cjs/services/api/interfaces/beatsaver/ws.js.map +1 -0
  174. package/dist/cjs/services/api/interfaces/index.js.map +1 -0
  175. package/dist/cjs/{service → services}/api/interfaces/scoresaber/index.js +6 -6
  176. package/dist/cjs/services/api/interfaces/scoresaber/index.js.map +1 -0
  177. package/dist/cjs/services/api/interfaces/scoresaber/item.js.map +1 -0
  178. package/dist/cjs/services/api/interfaces/scoresaber/leaderboard.js.map +1 -0
  179. package/dist/cjs/services/api/interfaces/scoresaber/resp.js.map +1 -0
  180. package/dist/cjs/services/api/interfaces/scoresaber/user.js.map +1 -0
  181. package/dist/cjs/services/api/interfaces/scoresaber/ws.js.map +1 -0
  182. package/dist/cjs/services/api/sortScore.js.map +1 -0
  183. package/dist/cjs/{infra → services}/errors/index.js +21 -38
  184. package/dist/cjs/services/errors/index.js.map +1 -0
  185. package/dist/cjs/services/i18n/index.js +43 -0
  186. package/dist/cjs/services/i18n/index.js.map +1 -0
  187. package/dist/cjs/{infra → services}/i18n/zh-cn.json +1 -1
  188. package/dist/cjs/{infra → services}/index.js +12 -9
  189. package/dist/cjs/services/index.js.map +1 -0
  190. package/dist/cjs/services/preference.js.map +1 -0
  191. package/dist/cjs/{service → services}/render/index.js +36 -13
  192. package/dist/cjs/services/render/index.js.map +1 -0
  193. package/dist/cjs/utils/bsorDecoder.js +329 -0
  194. package/dist/cjs/utils/bsorDecoder.js.map +1 -0
  195. package/dist/cjs/utils/index.js +6 -1
  196. package/dist/cjs/utils/index.js.map +1 -1
  197. package/dist/cjs/utils/platform.js +38 -0
  198. package/dist/cjs/utils/platform.js.map +1 -0
  199. package/dist/esm/cmd/bind/bind-beatleader.js +2 -2
  200. package/dist/esm/cmd/bind/bind-beatleader.js.map +1 -1
  201. package/dist/esm/cmd/bind/bind-beatsaver.js +2 -2
  202. package/dist/esm/cmd/bind/bind-beatsaver.js.map +1 -1
  203. package/dist/esm/cmd/bind/bind-id-beatleader.js +3 -3
  204. package/dist/esm/cmd/bind/bind-id-beatleader.js.map +1 -1
  205. package/dist/esm/cmd/bind/bind-id-beatsaver.js +3 -3
  206. package/dist/esm/cmd/bind/bind-id-beatsaver.js.map +1 -1
  207. package/dist/esm/cmd/bind/bind-scoresaber.js +3 -3
  208. package/dist/esm/cmd/bind/bind-scoresaber.js.map +1 -1
  209. package/dist/esm/cmd/bind/index.js +5 -5
  210. package/dist/esm/cmd/bind/index.js.map +1 -1
  211. package/dist/esm/cmd/bsmap/id-search.js +2 -2
  212. package/dist/esm/cmd/bsmap/id-search.js.map +1 -1
  213. package/dist/esm/cmd/bsmap/key-search.js +1 -1
  214. package/dist/esm/cmd/bsmap/key-search.js.map +1 -1
  215. package/dist/esm/cmd/bsmap/latest.js +2 -2
  216. package/dist/esm/cmd/bsmap/latest.js.map +1 -1
  217. package/dist/esm/cmd/deprecated/tmp.js +3 -3
  218. package/dist/esm/cmd/deprecated/tmp.js.map +1 -1
  219. package/dist/esm/cmd/index.js +11 -11
  220. package/dist/esm/cmd/index.js.map +1 -1
  221. package/dist/esm/cmd/rank.js +5 -5
  222. package/dist/esm/cmd/rank.js.map +1 -1
  223. package/dist/esm/cmd/score.js +13 -17
  224. package/dist/esm/cmd/score.js.map +1 -1
  225. package/dist/esm/cmd/subscribe/beatleader.js +3 -3
  226. package/dist/esm/cmd/subscribe/beatleader.js.map +1 -1
  227. package/dist/esm/cmd/subscribe/beatsaver.js +3 -3
  228. package/dist/esm/cmd/subscribe/beatsaver.js.map +1 -1
  229. package/dist/esm/cmd/subscribe/id-beatleader-score.js +4 -4
  230. package/dist/esm/cmd/subscribe/id-beatleader-score.js.map +1 -1
  231. package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +4 -4
  232. package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
  233. package/dist/esm/cmd/subscribe/index.js +7 -7
  234. package/dist/esm/cmd/subscribe/index.js.map +1 -1
  235. package/dist/esm/cmd/subscribe/subjoin.js +5 -5
  236. package/dist/esm/cmd/subscribe/subjoin.js.map +1 -1
  237. package/dist/esm/cmd/subscribe/subleave.js +5 -5
  238. package/dist/esm/cmd/subscribe/subleave.js.map +1 -1
  239. package/dist/esm/cmd/subscribe/unsubscribe.js +7 -7
  240. package/dist/esm/cmd/subscribe/unsubscribe.js.map +1 -1
  241. package/dist/esm/common/cache.js.map +1 -0
  242. package/dist/esm/common/fetch/error.js.map +1 -0
  243. package/dist/esm/common/fetch/index.js +35 -0
  244. package/dist/esm/common/fetch/index.js.map +1 -0
  245. package/dist/esm/{infra/support → common}/fetch/ofetch.js +4 -10
  246. package/dist/esm/common/fetch/ofetch.js.map +1 -0
  247. package/dist/esm/common/i18n/index.js +32 -0
  248. package/dist/esm/common/i18n/index.js.map +1 -0
  249. package/dist/esm/common/i18n/parser.js.map +1 -0
  250. package/dist/esm/{infra/i18n/index.js → common/i18n/util.js} +4 -56
  251. package/dist/esm/common/i18n/util.js.map +1 -0
  252. package/dist/esm/{infra/support → common}/render/index.js +53 -13
  253. package/dist/esm/common/render/index.js.map +1 -0
  254. package/dist/esm/common/render/puppeteer.js.map +1 -0
  255. package/dist/esm/{infra → common}/s3/index.js +32 -12
  256. package/dist/esm/common/s3/index.js.map +1 -0
  257. package/dist/esm/components/components/RankDifficulty.js +60 -84
  258. package/dist/esm/components/components/RankDifficulty.js.map +1 -1
  259. package/dist/esm/components/components/base/avatar.js +1 -2
  260. package/dist/esm/components/components/base/avatar.js.map +1 -1
  261. package/dist/esm/components/components/bl-rank-score-item.js +25 -87
  262. package/dist/esm/components/components/bl-rank-score-item.js.map +1 -1
  263. package/dist/esm/components/components/bl-score-item.js +28 -69
  264. package/dist/esm/components/components/bl-score-item.js.map +1 -1
  265. package/dist/esm/components/components/characteristic.js +106 -118
  266. package/dist/esm/components/components/characteristic.js.map +1 -1
  267. package/dist/esm/components/components/flag.js +6 -14
  268. package/dist/esm/components/components/flag.js.map +1 -1
  269. package/dist/esm/components/components/icons/BeatLeader.js +55 -71
  270. package/dist/esm/components/components/icons/BeatLeader.js.map +1 -1
  271. package/dist/esm/components/components/icons/RankIcon.js +3 -7
  272. package/dist/esm/components/components/icons/RankIcon.js.map +1 -1
  273. package/dist/esm/components/components/icons/ScoreSaberIcon.js +276 -312
  274. package/dist/esm/components/components/icons/ScoreSaberIcon.js.map +1 -1
  275. package/dist/esm/components/components/progressbar.js +2 -2
  276. package/dist/esm/components/components/progressbar.js.map +1 -1
  277. package/dist/esm/components/components/scoreItem.js +26 -63
  278. package/dist/esm/components/components/scoreItem.js.map +1 -1
  279. package/dist/esm/components/components/scoregraph.js +4 -5
  280. package/dist/esm/components/components/scoregraph.js.map +1 -1
  281. package/dist/esm/components/components/skill-graph.js +147 -164
  282. package/dist/esm/components/components/skill-graph.js.map +1 -1
  283. package/dist/esm/components/components/socre-badge.js +7 -10
  284. package/dist/esm/components/components/socre-badge.js.map +1 -1
  285. package/dist/esm/components/components/ss-rank-score-item.js +25 -87
  286. package/dist/esm/components/components/ss-rank-score-item.js.map +1 -1
  287. package/dist/esm/components/components/ss-score-item.js +28 -65
  288. package/dist/esm/components/components/ss-score-item.js.map +1 -1
  289. package/dist/esm/components/index.js +3 -43
  290. package/dist/esm/components/index.js.map +1 -1
  291. package/dist/esm/components/pages/bl-player.js +91 -136
  292. package/dist/esm/components/pages/bl-player.js.map +1 -1
  293. package/dist/esm/components/pages/bl-score-with-rank.js +114 -221
  294. package/dist/esm/components/pages/bl-score-with-rank.js.map +1 -1
  295. package/dist/esm/components/pages/bl-score.js +67 -169
  296. package/dist/esm/components/pages/bl-score.js.map +1 -1
  297. package/dist/esm/components/pages/bs-map.js +95 -166
  298. package/dist/esm/components/pages/bs-map.js.map +1 -1
  299. package/dist/esm/components/pages/index.js +21 -21
  300. package/dist/esm/components/pages/index.js.map +1 -1
  301. package/dist/esm/components/pages/ss-player.js +48 -77
  302. package/dist/esm/components/pages/ss-player.js.map +1 -1
  303. package/dist/esm/components/utils/bl/bsorReplayAcc.js +2 -2
  304. package/dist/esm/components/utils/bl/bsorReplayAcc.js.map +1 -1
  305. package/dist/esm/components/utils/bl/getPart.js.map +1 -1
  306. package/dist/esm/components/utils/bl/stastic.js.map +1 -1
  307. package/dist/esm/components/utils/format.js +3 -3
  308. package/dist/esm/components/utils/format.js.map +1 -1
  309. package/dist/esm/components/utils/getMods.js.map +1 -1
  310. package/dist/esm/components/utils/index.js +2 -2
  311. package/dist/esm/config.js +32 -0
  312. package/dist/esm/config.js.map +1 -1
  313. package/dist/esm/{interface → core}/cmd/builder.js +4 -4
  314. package/dist/esm/core/cmd/builder.js.map +1 -0
  315. package/dist/esm/core/domain.js +1 -0
  316. package/dist/esm/core/error.js +16 -0
  317. package/dist/esm/core/error.js.map +1 -0
  318. package/dist/esm/core/event.js +1 -0
  319. package/dist/esm/core/index.js +10 -0
  320. package/dist/esm/core/index.js.map +1 -0
  321. package/dist/esm/core/session.js +1 -0
  322. package/dist/esm/events/schedules/index.js +16 -0
  323. package/dist/esm/events/schedules/index.js.map +1 -0
  324. package/dist/esm/{schedules → events/schedules}/temp.js +7 -3
  325. package/dist/esm/events/schedules/temp.js.map +1 -0
  326. package/dist/esm/{ws → events/ws}/beatleader.js +6 -6
  327. package/dist/esm/events/ws/beatleader.js.map +1 -0
  328. package/dist/esm/{ws → events/ws}/beatsaver.js +11 -11
  329. package/dist/esm/events/ws/beatsaver.js.map +1 -0
  330. package/dist/esm/events/ws/index.js +4 -0
  331. package/dist/esm/events/ws/index.js.map +1 -0
  332. package/dist/esm/index.js +15 -10
  333. package/dist/esm/index.js.map +1 -1
  334. package/dist/esm/interface/db/index.js +0 -1
  335. package/dist/esm/interface/db/index.js.map +1 -1
  336. package/dist/esm/interface/index.js +9 -15
  337. package/dist/esm/interface/index.js.map +1 -1
  338. package/dist/esm/{service → services}/api/base/aioclient.js +1 -1
  339. package/dist/esm/services/api/base/aioclient.js.map +1 -0
  340. package/dist/esm/{service → services}/api/base/blclient.js +1 -1
  341. package/dist/esm/services/api/base/blclient.js.map +1 -0
  342. package/dist/esm/{service → services}/api/base/bsclient.js +2 -2
  343. package/dist/esm/services/api/base/bsclient.js.map +1 -0
  344. package/dist/esm/services/api/base/index.js +5 -0
  345. package/dist/esm/services/api/base/index.js.map +1 -0
  346. package/dist/esm/{service → services}/api/base/ssclient.js +2 -2
  347. package/dist/esm/services/api/base/ssclient.js.map +1 -0
  348. package/dist/esm/{service → services}/api/index.js +16 -8
  349. package/dist/esm/services/api/index.js.map +1 -0
  350. package/dist/esm/services/api/interfaces/beatleader/index.js +6 -0
  351. package/dist/esm/services/api/interfaces/beatleader/index.js.map +1 -0
  352. package/dist/esm/services/api/interfaces/beatsaver/index.js +6 -0
  353. package/dist/esm/services/api/interfaces/beatsaver/index.js.map +1 -0
  354. package/dist/esm/services/api/interfaces/scoresaber/index.js +4 -0
  355. package/dist/esm/services/api/interfaces/scoresaber/index.js.map +1 -0
  356. package/dist/esm/services/api/sortScore.js.map +1 -0
  357. package/dist/esm/{infra → services}/errors/index.js +1 -17
  358. package/dist/esm/services/errors/index.js.map +1 -0
  359. package/dist/esm/services/i18n/index.js +21 -0
  360. package/dist/esm/services/i18n/index.js.map +1 -0
  361. package/dist/esm/services/index.js +9 -0
  362. package/dist/esm/services/index.js.map +1 -0
  363. package/dist/esm/services/preference.js.map +1 -0
  364. package/dist/esm/{service → services}/render/index.js +34 -11
  365. package/dist/esm/services/render/index.js.map +1 -0
  366. package/dist/esm/utils/bsorDecoder.js +301 -0
  367. package/dist/esm/utils/bsorDecoder.js.map +1 -0
  368. package/dist/esm/utils/index.js +2 -0
  369. package/dist/esm/utils/index.js.map +1 -1
  370. package/dist/esm/utils/platform.js +14 -0
  371. package/dist/esm/utils/platform.js.map +1 -0
  372. package/dist/types/index.d.ts +1376 -48
  373. package/package.json +19 -10
  374. package/dist/cjs/components/utils/canvas.js +0 -2
  375. package/dist/cjs/components/utils/canvas.js.map +0 -1
  376. package/dist/cjs/infra/errors/index.js.map +0 -1
  377. package/dist/cjs/infra/i18n/index.js.map +0 -1
  378. package/dist/cjs/infra/i18n/parser.js.map +0 -1
  379. package/dist/cjs/infra/index.js.map +0 -1
  380. package/dist/cjs/infra/s3/index.js.map +0 -1
  381. package/dist/cjs/infra/support/cache.js.map +0 -1
  382. package/dist/cjs/infra/support/fetch/error.js.map +0 -1
  383. package/dist/cjs/infra/support/fetch/index.js.map +0 -1
  384. package/dist/cjs/infra/support/fetch/ofetch.js.map +0 -1
  385. package/dist/cjs/infra/support/render/index.js.map +0 -1
  386. package/dist/cjs/infra/support/render/puppeteer.js.map +0 -1
  387. package/dist/cjs/interface/bot.js.map +0 -1
  388. package/dist/cjs/interface/cmd/builder.js.map +0 -1
  389. package/dist/cjs/interface/cmd/type.js.map +0 -1
  390. package/dist/cjs/interface/logger.js.map +0 -1
  391. package/dist/cjs/schedules/index.js.map +0 -1
  392. package/dist/cjs/schedules/interface.js +0 -16
  393. package/dist/cjs/schedules/interface.js.map +0 -1
  394. package/dist/cjs/schedules/temp.js.map +0 -1
  395. package/dist/cjs/service/api/base/aioclient.js.map +0 -1
  396. package/dist/cjs/service/api/base/blclient.js.map +0 -1
  397. package/dist/cjs/service/api/base/bsclient.js.map +0 -1
  398. package/dist/cjs/service/api/base/index.js.map +0 -1
  399. package/dist/cjs/service/api/base/ssclient.js.map +0 -1
  400. package/dist/cjs/service/api/index.js.map +0 -1
  401. package/dist/cjs/service/api/interfaces/aiosaber/index.js.map +0 -1
  402. package/dist/cjs/service/api/interfaces/beatleader/bsor.js.map +0 -1
  403. package/dist/cjs/service/api/interfaces/beatleader/index.js.map +0 -1
  404. package/dist/cjs/service/api/interfaces/beatleader/req.js.map +0 -1
  405. package/dist/cjs/service/api/interfaces/beatleader/score.js.map +0 -1
  406. package/dist/cjs/service/api/interfaces/beatleader/user.js.map +0 -1
  407. package/dist/cjs/service/api/interfaces/beatleader/ws.js.map +0 -1
  408. package/dist/cjs/service/api/interfaces/beatsaver/alert.js.map +0 -1
  409. package/dist/cjs/service/api/interfaces/beatsaver/bsmap.js.map +0 -1
  410. package/dist/cjs/service/api/interfaces/beatsaver/index.js.map +0 -1
  411. package/dist/cjs/service/api/interfaces/beatsaver/resp.js.map +0 -1
  412. package/dist/cjs/service/api/interfaces/beatsaver/user.js.map +0 -1
  413. package/dist/cjs/service/api/interfaces/beatsaver/ws.js.map +0 -1
  414. package/dist/cjs/service/api/interfaces/index.js.map +0 -1
  415. package/dist/cjs/service/api/interfaces/scoresaber/index.js.map +0 -1
  416. package/dist/cjs/service/api/interfaces/scoresaber/item.js.map +0 -1
  417. package/dist/cjs/service/api/interfaces/scoresaber/leaderboard.js.map +0 -1
  418. package/dist/cjs/service/api/interfaces/scoresaber/resp.js.map +0 -1
  419. package/dist/cjs/service/api/interfaces/scoresaber/user.js.map +0 -1
  420. package/dist/cjs/service/api/interfaces/scoresaber/ws.js.map +0 -1
  421. package/dist/cjs/service/api/sortScore.js.map +0 -1
  422. package/dist/cjs/service/index.js +0 -16
  423. package/dist/cjs/service/index.js.map +0 -1
  424. package/dist/cjs/service/preference.js.map +0 -1
  425. package/dist/cjs/service/render/index.js.map +0 -1
  426. package/dist/cjs/service/render/interfaces.js +0 -16
  427. package/dist/cjs/service/render/interfaces.js.map +0 -1
  428. package/dist/cjs/ws/beatleader.js.map +0 -1
  429. package/dist/cjs/ws/beatsaver.js.map +0 -1
  430. package/dist/cjs/ws/bl-filter.js +0 -1
  431. package/dist/cjs/ws/handler.js.map +0 -1
  432. package/dist/cjs/ws/index.js.map +0 -1
  433. package/dist/cjs/ws/scoresaber.js +0 -75
  434. package/dist/cjs/ws/scoresaber.js.map +0 -1
  435. package/dist/esm/components/utils/canvas.js +0 -2
  436. package/dist/esm/components/utils/canvas.js.map +0 -1
  437. package/dist/esm/infra/errors/index.js.map +0 -1
  438. package/dist/esm/infra/i18n/index.js.map +0 -1
  439. package/dist/esm/infra/i18n/parser.js.map +0 -1
  440. package/dist/esm/infra/index.js +0 -6
  441. package/dist/esm/infra/index.js.map +0 -1
  442. package/dist/esm/infra/s3/index.js.map +0 -1
  443. package/dist/esm/infra/support/cache.js.map +0 -1
  444. package/dist/esm/infra/support/fetch/error.js.map +0 -1
  445. package/dist/esm/infra/support/fetch/index.js +0 -33
  446. package/dist/esm/infra/support/fetch/index.js.map +0 -1
  447. package/dist/esm/infra/support/fetch/ofetch.js.map +0 -1
  448. package/dist/esm/infra/support/render/index.js.map +0 -1
  449. package/dist/esm/infra/support/render/puppeteer.js.map +0 -1
  450. package/dist/esm/interface/bot.js +0 -1
  451. package/dist/esm/interface/cmd/builder.js.map +0 -1
  452. package/dist/esm/schedules/index.js +0 -15
  453. package/dist/esm/schedules/index.js.map +0 -1
  454. package/dist/esm/schedules/interface.js +0 -1
  455. package/dist/esm/schedules/temp.js.map +0 -1
  456. package/dist/esm/service/api/base/aioclient.js.map +0 -1
  457. package/dist/esm/service/api/base/blclient.js.map +0 -1
  458. package/dist/esm/service/api/base/bsclient.js.map +0 -1
  459. package/dist/esm/service/api/base/index.js +0 -5
  460. package/dist/esm/service/api/base/index.js.map +0 -1
  461. package/dist/esm/service/api/base/ssclient.js.map +0 -1
  462. package/dist/esm/service/api/index.js.map +0 -1
  463. package/dist/esm/service/api/interfaces/beatleader/index.js +0 -6
  464. package/dist/esm/service/api/interfaces/beatleader/index.js.map +0 -1
  465. package/dist/esm/service/api/interfaces/beatsaver/index.js +0 -6
  466. package/dist/esm/service/api/interfaces/beatsaver/index.js.map +0 -1
  467. package/dist/esm/service/api/interfaces/scoresaber/index.js +0 -4
  468. package/dist/esm/service/api/interfaces/scoresaber/index.js.map +0 -1
  469. package/dist/esm/service/api/sortScore.js.map +0 -1
  470. package/dist/esm/service/index.js +0 -1
  471. package/dist/esm/service/index.js.map +0 -1
  472. package/dist/esm/service/preference.js.map +0 -1
  473. package/dist/esm/service/render/index.js.map +0 -1
  474. package/dist/esm/service/render/interfaces.js +0 -1
  475. package/dist/esm/service/render/interfaces.js.map +0 -1
  476. package/dist/esm/ws/beatleader.js.map +0 -1
  477. package/dist/esm/ws/beatsaver.js.map +0 -1
  478. package/dist/esm/ws/bl-filter.js +0 -1
  479. package/dist/esm/ws/bl-filter.js.map +0 -1
  480. package/dist/esm/ws/index.js +0 -5
  481. package/dist/esm/ws/index.js.map +0 -1
  482. package/dist/esm/ws/scoresaber.js +0 -53
  483. package/dist/esm/ws/scoresaber.js.map +0 -1
  484. package/dist/types/cmd/bind/bind-beatleader.d.ts +0 -34
  485. package/dist/types/cmd/bind/bind-beatsaver.d.ts +0 -34
  486. package/dist/types/cmd/bind/bind-id-beatleader.d.ts +0 -34
  487. package/dist/types/cmd/bind/bind-id-beatsaver.d.ts +0 -34
  488. package/dist/types/cmd/bind/bind-scoresaber.d.ts +0 -34
  489. package/dist/types/cmd/bind/index.d.ts +0 -41
  490. package/dist/types/cmd/bsmap/id-search.d.ts +0 -41
  491. package/dist/types/cmd/bsmap/key-search.d.ts +0 -41
  492. package/dist/types/cmd/bsmap/latest.d.ts +0 -41
  493. package/dist/types/cmd/config/index.d.ts +0 -2
  494. package/dist/types/cmd/deprecated/tmp.d.ts +0 -41
  495. package/dist/types/cmd/index.d.ts +0 -34
  496. package/dist/types/cmd/rank.d.ts +0 -41
  497. package/dist/types/cmd/score.d.ts +0 -41
  498. package/dist/types/cmd/subscribe/beatleader.d.ts +0 -34
  499. package/dist/types/cmd/subscribe/beatsaver.d.ts +0 -34
  500. package/dist/types/cmd/subscribe/id-beatleader-score.d.ts +0 -34
  501. package/dist/types/cmd/subscribe/id-beatsaver-mapper.d.ts +0 -34
  502. package/dist/types/cmd/subscribe/index.d.ts +0 -41
  503. package/dist/types/cmd/subscribe/subjoin.d.ts +0 -41
  504. package/dist/types/cmd/subscribe/subleave.d.ts +0 -41
  505. package/dist/types/cmd/subscribe/unsubscribe.d.ts +0 -41
  506. package/dist/types/components/components/RankDifficulty.d.ts +0 -10
  507. package/dist/types/components/components/base/avatar.d.ts +0 -10
  508. package/dist/types/components/components/bl-rank-score-item.d.ts +0 -21
  509. package/dist/types/components/components/bl-score-item.d.ts +0 -10
  510. package/dist/types/components/components/characteristic.d.ts +0 -9
  511. package/dist/types/components/components/flag.d.ts +0 -9
  512. package/dist/types/components/components/icons/BeatLeader.d.ts +0 -6
  513. package/dist/types/components/components/icons/RankIcon.d.ts +0 -8
  514. package/dist/types/components/components/icons/ScoreSaberIcon.d.ts +0 -6
  515. package/dist/types/components/components/progressbar.d.ts +0 -8
  516. package/dist/types/components/components/scoreItem.d.ts +0 -8
  517. package/dist/types/components/components/scoregraph.d.ts +0 -15
  518. package/dist/types/components/components/skill-graph.d.ts +0 -9
  519. package/dist/types/components/components/socre-badge.d.ts +0 -9
  520. package/dist/types/components/components/ss-rank-score-item.d.ts +0 -21
  521. package/dist/types/components/components/ss-score-item.d.ts +0 -8
  522. package/dist/types/components/index.d.ts +0 -5
  523. package/dist/types/components/pages/bl-player.d.ts +0 -11
  524. package/dist/types/components/pages/bl-score-with-rank.d.ts +0 -18
  525. package/dist/types/components/pages/bl-score.d.ts +0 -15
  526. package/dist/types/components/pages/bs-map.d.ts +0 -11
  527. package/dist/types/components/pages/index.d.ts +0 -14
  528. package/dist/types/components/pages/ss-player.d.ts +0 -13
  529. package/dist/types/components/utils/bl/beatleader.d.ts +0 -15
  530. package/dist/types/components/utils/bl/blheadset.d.ts +0 -275
  531. package/dist/types/components/utils/bl/bsorDecoder.d.ts +0 -189
  532. package/dist/types/components/utils/bl/bsorReplayAcc.d.ts +0 -38
  533. package/dist/types/components/utils/bl/getPart.d.ts +0 -9
  534. package/dist/types/components/utils/bl/stastic.d.ts +0 -3
  535. package/dist/types/components/utils/canvas.d.ts +0 -2
  536. package/dist/types/components/utils/format.d.ts +0 -8
  537. package/dist/types/components/utils/getMods.d.ts +0 -5
  538. package/dist/types/components/utils/index.d.ts +0 -6
  539. package/dist/types/components/utils/qrcode.d.ts +0 -3
  540. package/dist/types/components/utils/sleep.d.ts +0 -3
  541. package/dist/types/components/utils/tag-format.d.ts +0 -3
  542. package/dist/types/components/utils/tw-join.d.ts +0 -5
  543. package/dist/types/config.d.ts +0 -30
  544. package/dist/types/index-Dagy_c8G.d.ts +0 -74
  545. package/dist/types/infra/errors/index.d.ts +0 -69
  546. package/dist/types/infra/i18n/index.d.ts +0 -4
  547. package/dist/types/infra/i18n/parser.d.ts +0 -16
  548. package/dist/types/infra/index.d.ts +0 -6
  549. package/dist/types/infra/s3/index.d.ts +0 -20
  550. package/dist/types/infra/support/cache.d.ts +0 -6
  551. package/dist/types/infra/support/fetch/error.d.ts +0 -11
  552. package/dist/types/infra/support/fetch/index.d.ts +0 -7
  553. package/dist/types/infra/support/fetch/ofetch.d.ts +0 -24
  554. package/dist/types/infra/support/render/index.d.ts +0 -38
  555. package/dist/types/infra/support/render/puppeteer.d.ts +0 -43
  556. package/dist/types/interface/bot.d.ts +0 -22
  557. package/dist/types/interface/cmd/builder.d.ts +0 -53
  558. package/dist/types/interface/cmd/type.d.ts +0 -30
  559. package/dist/types/interface/db/index.d.ts +0 -45
  560. package/dist/types/interface/db/models.d.ts +0 -41
  561. package/dist/types/interface/index.d.ts +0 -30
  562. package/dist/types/interface/logger.d.ts +0 -8
  563. package/dist/types/schedules/index.d.ts +0 -40
  564. package/dist/types/schedules/interface.d.ts +0 -45
  565. package/dist/types/schedules/temp.d.ts +0 -35
  566. package/dist/types/service/api/base/aioclient.d.ts +0 -13
  567. package/dist/types/service/api/base/blclient.d.ts +0 -28
  568. package/dist/types/service/api/base/bsclient.d.ts +0 -29
  569. package/dist/types/service/api/base/index.d.ts +0 -19
  570. package/dist/types/service/api/base/ssclient.d.ts +0 -17
  571. package/dist/types/service/api/index.d.ts +0 -59
  572. package/dist/types/service/api/interfaces/aiosaber/index.d.ts +0 -9
  573. package/dist/types/service/api/interfaces/beatleader/bsor.d.ts +0 -113
  574. package/dist/types/service/api/interfaces/beatleader/index.d.ts +0 -5
  575. package/dist/types/service/api/interfaces/beatleader/req.d.ts +0 -22
  576. package/dist/types/service/api/interfaces/beatleader/score.d.ts +0 -164
  577. package/dist/types/service/api/interfaces/beatleader/user.d.ts +0 -173
  578. package/dist/types/service/api/interfaces/beatleader/ws.d.ts +0 -90
  579. package/dist/types/service/api/interfaces/beatsaver/alert.d.ts +0 -20
  580. package/dist/types/service/api/interfaces/beatsaver/bsmap.d.ts +0 -70
  581. package/dist/types/service/api/interfaces/beatsaver/index.d.ts +0 -13
  582. package/dist/types/service/api/interfaces/beatsaver/resp.d.ts +0 -11
  583. package/dist/types/service/api/interfaces/beatsaver/user.d.ts +0 -10
  584. package/dist/types/service/api/interfaces/beatsaver/ws.d.ts +0 -13
  585. package/dist/types/service/api/interfaces/index.d.ts +0 -14
  586. package/dist/types/service/api/interfaces/scoresaber/index.d.ts +0 -3
  587. package/dist/types/service/api/interfaces/scoresaber/item.d.ts +0 -67
  588. package/dist/types/service/api/interfaces/scoresaber/leaderboard.d.ts +0 -13
  589. package/dist/types/service/api/interfaces/scoresaber/resp.d.ts +0 -12
  590. package/dist/types/service/api/interfaces/scoresaber/user.d.ts +0 -35
  591. package/dist/types/service/api/interfaces/scoresaber/ws.d.ts +0 -80
  592. package/dist/types/service/api/sortScore.d.ts +0 -5
  593. package/dist/types/service/index.d.ts +0 -30
  594. package/dist/types/service/preference.d.ts +0 -38
  595. package/dist/types/service/render/index.d.ts +0 -43
  596. package/dist/types/service/render/interfaces.d.ts +0 -30
  597. package/dist/types/utils/index.d.ts +0 -5
  598. package/dist/types/ws/beatleader.d.ts +0 -47
  599. package/dist/types/ws/beatsaver.d.ts +0 -52
  600. package/dist/types/ws/bl-filter.d.ts +0 -2
  601. package/dist/types/ws/handler.d.ts +0 -8
  602. package/dist/types/ws/index.d.ts +0 -36
  603. package/dist/types/ws/scoresaber.d.ts +0 -47
  604. /package/dist/cjs/{infra/support → common}/cache.js +0 -0
  605. /package/dist/cjs/{infra/support → common}/fetch/error.js +0 -0
  606. /package/dist/cjs/{infra → common}/i18n/parser.js +0 -0
  607. /package/dist/cjs/{infra/support → common}/render/puppeteer.js +0 -0
  608. /package/dist/cjs/{interface → core}/cmd/type.js +0 -0
  609. /package/dist/cjs/{interface → core}/logger.js +0 -0
  610. /package/dist/cjs/{ws → events/ws}/handler.js +0 -0
  611. /package/dist/cjs/{service → services}/api/interfaces/aiosaber/index.js +0 -0
  612. /package/dist/cjs/{service → services}/api/interfaces/beatleader/bsor.js +0 -0
  613. /package/dist/cjs/{service → services}/api/interfaces/beatleader/req.js +0 -0
  614. /package/dist/cjs/{service → services}/api/interfaces/beatleader/score.js +0 -0
  615. /package/dist/cjs/{service → services}/api/interfaces/beatleader/user.js +0 -0
  616. /package/dist/cjs/{service → services}/api/interfaces/beatleader/ws.js +0 -0
  617. /package/dist/cjs/{service → services}/api/interfaces/beatsaver/alert.js +0 -0
  618. /package/dist/cjs/{service → services}/api/interfaces/beatsaver/bsmap.js +0 -0
  619. /package/dist/cjs/{service → services}/api/interfaces/beatsaver/resp.js +0 -0
  620. /package/dist/cjs/{service → services}/api/interfaces/beatsaver/user.js +0 -0
  621. /package/dist/cjs/{service → services}/api/interfaces/beatsaver/ws.js +0 -0
  622. /package/dist/cjs/{service → services}/api/interfaces/index.js +0 -0
  623. /package/dist/cjs/{service → services}/api/interfaces/scoresaber/item.js +0 -0
  624. /package/dist/cjs/{service → services}/api/interfaces/scoresaber/leaderboard.js +0 -0
  625. /package/dist/cjs/{service → services}/api/interfaces/scoresaber/resp.js +0 -0
  626. /package/dist/cjs/{service → services}/api/interfaces/scoresaber/user.js +0 -0
  627. /package/dist/cjs/{service → services}/api/interfaces/scoresaber/ws.js +0 -0
  628. /package/dist/cjs/{service → services}/api/sortScore.js +0 -0
  629. /package/dist/cjs/{service → services}/preference.js +0 -0
  630. /package/dist/esm/{infra/support → common}/cache.js +0 -0
  631. /package/dist/esm/{infra/support → common}/fetch/error.js +0 -0
  632. /package/dist/esm/{infra → common}/i18n/parser.js +0 -0
  633. /package/dist/esm/{infra/support → common}/render/puppeteer.js +0 -0
  634. /package/dist/esm/{interface → core}/cmd/type.js +0 -0
  635. /package/dist/esm/{interface → core}/cmd/type.js.map +0 -0
  636. /package/dist/{cjs/ws/bl-filter.js.map → esm/core/domain.js.map} +0 -0
  637. /package/dist/esm/{interface/bot.js.map → core/event.js.map} +0 -0
  638. /package/dist/esm/{interface → core}/logger.js +0 -0
  639. /package/dist/esm/{interface → core}/logger.js.map +0 -0
  640. /package/dist/esm/{schedules/interface.js.map → core/session.js.map} +0 -0
  641. /package/dist/esm/{ws → events/ws}/handler.js +0 -0
  642. /package/dist/esm/{ws → events/ws}/handler.js.map +0 -0
  643. /package/dist/esm/{service → services}/api/interfaces/aiosaber/index.js +0 -0
  644. /package/dist/esm/{service → services}/api/interfaces/aiosaber/index.js.map +0 -0
  645. /package/dist/esm/{service → services}/api/interfaces/beatleader/bsor.js +0 -0
  646. /package/dist/esm/{service → services}/api/interfaces/beatleader/bsor.js.map +0 -0
  647. /package/dist/esm/{service → services}/api/interfaces/beatleader/req.js +0 -0
  648. /package/dist/esm/{service → services}/api/interfaces/beatleader/req.js.map +0 -0
  649. /package/dist/esm/{service → services}/api/interfaces/beatleader/score.js +0 -0
  650. /package/dist/esm/{service → services}/api/interfaces/beatleader/score.js.map +0 -0
  651. /package/dist/esm/{service → services}/api/interfaces/beatleader/user.js +0 -0
  652. /package/dist/esm/{service → services}/api/interfaces/beatleader/user.js.map +0 -0
  653. /package/dist/esm/{service → services}/api/interfaces/beatleader/ws.js +0 -0
  654. /package/dist/esm/{service → services}/api/interfaces/beatleader/ws.js.map +0 -0
  655. /package/dist/esm/{service → services}/api/interfaces/beatsaver/alert.js +0 -0
  656. /package/dist/esm/{service → services}/api/interfaces/beatsaver/alert.js.map +0 -0
  657. /package/dist/esm/{service → services}/api/interfaces/beatsaver/bsmap.js +0 -0
  658. /package/dist/esm/{service → services}/api/interfaces/beatsaver/bsmap.js.map +0 -0
  659. /package/dist/esm/{service → services}/api/interfaces/beatsaver/resp.js +0 -0
  660. /package/dist/esm/{service → services}/api/interfaces/beatsaver/resp.js.map +0 -0
  661. /package/dist/esm/{service → services}/api/interfaces/beatsaver/user.js +0 -0
  662. /package/dist/esm/{service → services}/api/interfaces/beatsaver/user.js.map +0 -0
  663. /package/dist/esm/{service → services}/api/interfaces/beatsaver/ws.js +0 -0
  664. /package/dist/esm/{service → services}/api/interfaces/beatsaver/ws.js.map +0 -0
  665. /package/dist/esm/{service → services}/api/interfaces/index.js +0 -0
  666. /package/dist/esm/{service → services}/api/interfaces/index.js.map +0 -0
  667. /package/dist/esm/{service → services}/api/interfaces/scoresaber/item.js +0 -0
  668. /package/dist/esm/{service → services}/api/interfaces/scoresaber/item.js.map +0 -0
  669. /package/dist/esm/{service → services}/api/interfaces/scoresaber/leaderboard.js +0 -0
  670. /package/dist/esm/{service → services}/api/interfaces/scoresaber/leaderboard.js.map +0 -0
  671. /package/dist/esm/{service → services}/api/interfaces/scoresaber/resp.js +0 -0
  672. /package/dist/esm/{service → services}/api/interfaces/scoresaber/resp.js.map +0 -0
  673. /package/dist/esm/{service → services}/api/interfaces/scoresaber/user.js +0 -0
  674. /package/dist/esm/{service → services}/api/interfaces/scoresaber/user.js.map +0 -0
  675. /package/dist/esm/{service → services}/api/interfaces/scoresaber/ws.js +0 -0
  676. /package/dist/esm/{service → services}/api/interfaces/scoresaber/ws.js.map +0 -0
  677. /package/dist/esm/{service → services}/api/sortScore.js +0 -0
  678. /package/dist/esm/{service → services}/preference.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../src/config.ts"],"sourcesContent":["import {z} from 'zod/v4'\nimport {renderSchema} from \"@/common/render\";\nimport {s3ConfigSchema} from \"@/common/s3\";\n\nconst cronSchema = z.object({\n enabled: z.boolean().optional().default(false),\n cron: z.string().optional(),\n}).optional().default({ enabled: false })\n\nexport const configSchema = z.object({\n s3: s3ConfigSchema.default({ enabled: false }).optional(),\n render: renderSchema,\n beatsaver: z.object({\n host: z.string().default('https://api.beatsaver.com').optional(),\n wsURL: z.string().default('wss://ws.beatsaver.com/maps').optional(),\n oauthClientId: z.string().optional(),\n oauthClientSecret: z.string().optional(),\n }).default({\n host: 'https://api.beatsaver.com',\n wsURL: 'wss://ws.beatsaver.com/maps',\n }).optional(),\n beatleader: z.object({\n oauthClientId: z.string().optional(),\n oauthClientSecret: z.string().optional(),\n }).default({}).optional(),\n cron: z.object({\n temp: cronSchema,\n }).default({\n temp: {enabled: false},\n }).optional()\n})\n\nexport type Config = z.infer<typeof configSchema>\n"],"mappings":"AAAA,SAAQ,SAAQ;AAChB,SAAQ,oBAAmB;AAC3B,SAAQ,sBAAqB;AAE7B,MAAM,aAAa,EAAE,OAAO;AAAA,EAC1B,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC7C,MAAM,EAAE,OAAO,EAAE,SAAS;AAC5B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,MAAM,CAAC;AAEjC,MAAM,eAAe,EAAE,OAAO;AAAA,EACnC,IAAI,eAAe,QAAQ,EAAE,SAAS,MAAM,CAAC,EAAE,SAAS;AAAA,EACxD,QAAQ;AAAA,EACR,WAAW,EAAE,OAAO;AAAA,IAClB,MAAM,EAAE,OAAO,EAAE,QAAQ,2BAA2B,EAAE,SAAS;AAAA,IAC/D,OAAO,EAAE,OAAO,EAAE,QAAQ,6BAA6B,EAAE,SAAS;AAAA,IAClE,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,IACnC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACzC,CAAC,EAAE,QAAQ;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACT,CAAC,EAAE,SAAS;AAAA,EACZ,YAAY,EAAE,OAAO;AAAA,IACnB,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,IACnC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACzC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS;AAAA,EACxB,MAAM,EAAE,OAAO;AAAA,IACb,MAAM;AAAA,EACR,CAAC,EAAE,QAAQ;AAAA,IACT,MAAM,EAAC,SAAS,MAAK;AAAA,EACvB,CAAC,EAAE,SAAS;AACd,CAAC;","names":[]}
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { BizError } from "../../infra/errors";
24
+ import { BizError } from "../error.js";
25
25
  class CommandBuilder {
26
26
  constructor() {
27
27
  __publicField(this, "name");
@@ -29,9 +29,9 @@ class CommandBuilder {
29
29
  __publicField(this, "options", []);
30
30
  __publicField(this, "aliases", []);
31
31
  }
32
- static create(name) {
33
- return new CommandBuilder().setName(name);
34
- }
32
+ // static create<Service, Config, OPT extends {} = {}>(name: string) {
33
+ // return new CommandBuilder<Service, Config, OPT> ().setName(name)
34
+ // }
35
35
  addOption(name, description) {
36
36
  this.options.push({
37
37
  name,
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/core/cmd/builder.ts"],"sourcesContent":["import type { CmdAlias, CmdContext, CmdExecutor, CmdOption, OptionType, Extend } from './type'\nimport { BizError } from '../error'\n\nexport class CommandBuilder<Service, Config, OPT extends {} = {}> {\n private name: string\n private description: string\n private options: CmdOption[] = []\n private aliases: CmdAlias[] = []\n\n constructor() {}\n // static create<Service, Config, OPT extends {} = {}>(name: string) {\n // return new CommandBuilder<Service, Config, OPT> ().setName(name)\n // }\n\n addOption<N extends string, D extends string>(name: N, description: D) {\n this.options.push({\n name: name,\n description: description,\n type: 'string',\n })\n return this as CommandBuilder<Service, Config, Extend<OPT, N, OptionType<D>>>\n }\n\n addAlias(alias: string, option?: object) {\n this.aliases.push({ alias, option })\n return this\n }\n\n setName<T extends string>(name: T) {\n this.name = name\n return this\n }\n setDescription(description: string) {\n this.description = description\n return this\n }\n\n setExecutor(executor: CmdExecutor<Service, Config, OPT>) {\n const that = this\n const errorHandler = (executor: CmdExecutor<Service, Config, OPT>) => {\n return async (c: CmdContext<Service, Config, OPT>) => {\n try {\n await executor(c)\n } catch (e: any) {\n if (e instanceof BizError) {\n await c.session.send(c.session.text(e.id, e.params))\n } else {\n c.logger.error(\n `unexpectError occur during cmd 「${that.name}」executing`,\n e\n )\n c.session.send(\n 'An unexpected error occurs, reporting it may help to fix it.'\n )\n }\n }\n }\n }\n\n return {\n name: this.name,\n description: this.description,\n aliases: this.aliases,\n options: this.options,\n callback: errorHandler(executor),\n children: [],\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,gBAAgB;AAElB,MAAM,eAAqD;AAAA,EAMhE,cAAc;AALd,wBAAQ;AACR,wBAAQ;AACR,wBAAQ,WAAuB,CAAC;AAChC,wBAAQ,WAAsB,CAAC;AAAA,EAEhB;AAAA;AAAA;AAAA;AAAA,EAKf,UAA8C,MAAS,aAAgB;AACrE,SAAK,QAAQ,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,OAAe,QAAiB;AACvC,SAAK,QAAQ,KAAK,EAAE,OAAO,OAAO,CAAC;AACnC,WAAO;AAAA,EACT;AAAA,EAEA,QAA0B,MAAS;AACjC,SAAK,OAAO;AACZ,WAAO;AAAA,EACT;AAAA,EACA,eAAe,aAAqB;AAClC,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,UAA6C;AACvD,UAAM,OAAO;AACb,UAAM,eAAe,CAACA,cAAgD;AACpE,aAAO,CAAO,MAAwC;AACpD,YAAI;AACF,gBAAMA,UAAS,CAAC;AAAA,QAClB,SAAS,GAAQ;AACf,cAAI,aAAa,UAAU;AACzB,kBAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC;AAAA,UACrD,OAAO;AACL,cAAE,OAAO;AAAA,cACP,wCAAmC,KAAK,IAAI;AAAA,cAC5C;AAAA,YACF;AACA,cAAE,QAAQ;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,UAAU,aAAa,QAAQ;AAAA,MAC/B,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AACF;","names":["executor"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1,16 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ class BizError extends Error {
5
+ constructor() {
6
+ super(...arguments);
7
+ __publicField(this, "id");
8
+ __publicField(this, "code");
9
+ __publicField(this, "layer");
10
+ __publicField(this, "params");
11
+ }
12
+ }
13
+ export {
14
+ BizError
15
+ };
16
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/error.ts"],"sourcesContent":["export class BizError extends Error {\n id: string\n code: string\n layer?: string\n params?: any\n}\n"],"mappings":";;;AAAO,MAAM,iBAAiB,MAAM;AAAA,EAA7B;AAAA;AACL;AACA;AACA;AACA;AAAA;AACF;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=event.js.map
@@ -0,0 +1,10 @@
1
+ import { CommandBuilder } from "./cmd/builder.js";
2
+ export * from "./domain.js";
3
+ export * from "./logger.js";
4
+ export * from "./error.js";
5
+ export * from "./session.js";
6
+ export * from "./event.js";
7
+ export {
8
+ CommandBuilder
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/index.ts"],"sourcesContent":["export { CommandBuilder } from './cmd/builder'\nexport * from './domain'\nexport * from './logger'\nexport * from './error'\nexport * from './session'\nexport * from './event'\n\nexport type { CmdContext } from \"./cmd/type\";\nexport type { Command } from \"./cmd/type\";\n"],"mappings":"AAAA,SAAS,sBAAsB;AAC/B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1,16 @@
1
+ import { LBScoreMonitor } from "./temp.js";
2
+ const getScheduleTasks = (config) => {
3
+ var _a, _b, _c, _d, _e;
4
+ return [
5
+ {
6
+ name: "lb-rank-notifier",
7
+ handler: LBScoreMonitor,
8
+ cron: (_b = (_a = config.cron) == null ? void 0 : _a.temp) == null ? void 0 : _b.cron,
9
+ enabled: (_e = (_d = (_c = config.cron) == null ? void 0 : _c.temp) == null ? void 0 : _d.enabled) != null ? _e : false
10
+ }
11
+ ];
12
+ };
13
+ export {
14
+ getScheduleTasks
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/events/schedules/index.ts"],"sourcesContent":["import { Config } from '@/config'\nimport { LBScoreMonitor } from './temp'\n\nexport const getScheduleTasks = (config: Config) => {\n return [\n {\n name: 'lb-rank-notifier',\n handler: LBScoreMonitor,\n cron: config.cron?.temp?.cron,\n enabled: config.cron?.temp?.enabled ?? false,\n },\n ]\n}\n"],"mappings":"AACA,SAAS,sBAAsB;AAExB,MAAM,mBAAmB,CAAC,WAAmB;AAHpD;AAIE,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAM,kBAAO,SAAP,mBAAa,SAAb,mBAAmB;AAAA,MACzB,UAAS,wBAAO,SAAP,mBAAa,SAAb,mBAAmB,YAAnB,YAA8B;AAAA,IACzC;AAAA,EACF;AACF;","names":[]}
@@ -24,11 +24,15 @@ const LBScoreMonitor = (c) => __async(null, null, function* () {
24
24
  return;
25
25
  }
26
26
  const [hitbuf, scorebuf] = yield Promise.all([
27
- c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt"),
28
- c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/score")
27
+ c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt", {
28
+ selector: "#render-result"
29
+ }),
30
+ c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/score", {
31
+ selector: "#render-result"
32
+ })
29
33
  ]);
30
34
  for (const group of channels) {
31
- const session = c.botService.getSessionByChannelInfo(group.groupChannel);
35
+ const session = c.agentService.getAgentSessionByChannelInfo(group.channel);
32
36
  if (!session) {
33
37
  continue;
34
38
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/events/schedules/temp.ts"],"sourcesContent":["import { EventHandlerCtx } from \"@/core\";\nimport { Config } from \"@/config\";\nimport {Services} from \"@/interface\";\n\nexport const LBScoreMonitor = async (c: EventHandlerCtx<Services, Config>) => {\n const channels = await c.services.db.getSubscriptionsByType('lb-rank')\n if (channels.length <= 0) {\n return\n }\n const [hitbuf, scorebuf] = await Promise.all([\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/hitcnt', {\n selector: '#render-result',\n }),\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/score', {\n selector: '#render-result',\n }),\n ])\n for (const group of channels) {\n // 获取一个带有 Agent 的 Service\n const session = c.agentService.getAgentSessionByChannelInfo(group.channel)\n if (!session) {\n continue\n }\n await session.sendImgBuffer(hitbuf, 'image/png')\n await session.sendImgBuffer(scorebuf, 'image/png')\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAIO,MAAM,iBAAiB,CAAO,MAAyC;AAC5E,QAAM,WAAW,MAAM,EAAE,SAAS,GAAG,uBAAuB,SAAS;AACrE,MAAI,SAAS,UAAU,GAAG;AACxB;AAAA,EACF;AACA,QAAM,CAAC,QAAQ,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC3C,EAAE,SAAS,OAAO,UAAU,wCAAwC;AAAA,MAClE,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,EAAE,SAAS,OAAO,UAAU,uCAAuC;AAAA,MACjE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,aAAW,SAAS,UAAU;AAE5B,UAAM,UAAU,EAAE,aAAa,6BAA6B,MAAM,OAAO;AACzE,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,QAAQ,cAAc,QAAQ,WAAW;AAC/C,UAAM,QAAQ,cAAc,UAAU,WAAW;AAAA,EACnD;AACF;","names":[]}
@@ -22,16 +22,16 @@ var __async = (__this, __arguments, generator) => {
22
22
  });
23
23
  };
24
24
  class BeatleaderWSHandler {
25
- constructor(db, render, logger, config, botService) {
25
+ constructor(db, render, logger, config, agentService) {
26
26
  __publicField(this, "logger");
27
27
  __publicField(this, "render");
28
- __publicField(this, "botService");
28
+ __publicField(this, "agentService");
29
29
  __publicField(this, "wsUrl", "wss://sockets.api.beatleader.xyz/scores");
30
30
  __publicField(this, "db");
31
31
  __publicField(this, "config");
32
32
  this.logger = logger;
33
33
  this.render = render;
34
- this.botService = botService;
34
+ this.agentService = agentService;
35
35
  this.config = config;
36
36
  this.db = db;
37
37
  }
@@ -47,17 +47,17 @@ class BeatleaderWSHandler {
47
47
  const playerId = data.player.id;
48
48
  const subscriptions = yield this.db.getAllSubscriptionByUIDAndPlatform(playerId, "beatleader");
49
49
  const restSub = subscriptions.filter(
50
- (it) => it.subscribe.type == "beatleader-score" && it.subscribe.enable == true
50
+ (it) => it.subscription.type == "beatleader-score" && it.subscription.enabled == true
51
51
  );
52
52
  if (restSub.length === 0) return;
53
53
  const img = yield this.render.renderScore(data.id.toString());
54
54
  for (const item of restSub) {
55
- const session = this.botService.getSessionByChannelInfo(item.groupChannel);
55
+ const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
56
56
  if (!session) {
57
57
  continue;
58
58
  }
59
59
  yield session.send(
60
- `\u606D\u559C <at id="${item.account.uid}"/> \u521A\u521A\u5728\u8C31\u9762\u300C${data.leaderboard.song.name}\u300D\u4E2D\u6253\u51FA\u4E86 ${(data.accuracy * 100).toFixed(2)}% \u7684\u597D\u6210\u7EE9`
60
+ `\u606D\u559C <at id="${item.account.userId}"/> \u521A\u521A\u5728\u8C31\u9762\u300C${data.leaderboard.song.name}\u300D\u4E2D\u6253\u51FA\u4E86 ${(data.accuracy * 100).toFixed(2)}% \u7684\u597D\u6210\u7EE9`
61
61
  );
62
62
  yield session.sendImgBuffer(img);
63
63
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/events/ws/beatleader.ts"],"sourcesContent":["import { WSHandler } from './handler'\nimport { AgentService, Logger } from '@/core'\nimport { Config } from '@/config'\nimport { DB } from '@/interface/db'\nimport {RenderService} from \"@/services\";\nimport { BeatLeaderWSEvent } from \"@/services/api/interfaces/beatleader\";\n\nexport class BeatleaderWSHandler<T> implements WSHandler {\n private readonly logger: Logger\n private render: RenderService\n private agentService: AgentService\n wsUrl: string = 'wss://sockets.api.beatleader.xyz/scores'\n private db: DB\n config: Config\n constructor(\n db: DB,\n render: RenderService,\n logger: Logger,\n config: Config,\n agentService: AgentService\n ) {\n this.logger = logger\n this.render = render\n this.agentService = agentService\n this.config = config\n this.db = db\n }\n\n onOpen() {\n this.logger.info('BeatleaderWS opened')\n }\n\n onClose() {\n this.logger.info('BeatleaderWS closed')\n }\n\n async onEvent(event: any) {\n const data = JSON.parse(event.toString()) as BeatLeaderWSEvent\n const playerId = data.player.id\n // const ok = BeatLeaderFilter(data, ...this.config.BLScoreFilters)\n // if (!ok) {\n // return\n // }\n // logger.info('Received beatleader message',data.id, data.player.id);\n // cache all playerId\n const subscriptions = await this.db.getAllSubscriptionByUIDAndPlatform(playerId, 'beatleader')\n // .filter(item=> {\n // const channelFilters = item.sub.data as BLScoreFilter[]\n // const memberFilters = item.member.subscribeData\n // return BeatLeaderFilter(data, ...channelFilters, ...memberFilters)\n // })\n const restSub = subscriptions.filter((it) =>\n it.subscription.type == 'beatleader-score' && it.subscription.enabled == true\n )\n // cacheService\n if (restSub.length === 0) return\n const img = await this.render.renderScore(data.id.toString())\n for (const item of restSub) {\n const session = this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `恭喜 <at id=\"${item.account.userId}\"/> 刚刚在谱面「${data.leaderboard.song.name}」中打出了 ${(data.accuracy * 100).toFixed(2)}% 的好成绩`\n )\n await session.sendImgBuffer(img)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,oBAA4C;AAAA,EAOvD,YACE,IACA,QACA,QACA,QACA,cACA;AAZF,wBAAiB;AACjB,wBAAQ;AACR,wBAAQ;AACR,iCAAgB;AAChB,wBAAQ;AACR;AAQE,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,SAAS;AACd,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,KAAK,qBAAqB;AAAA,EACxC;AAAA,EAEA,UAAU;AACR,SAAK,OAAO,KAAK,qBAAqB;AAAA,EACxC;AAAA,EAEM,QAAQ,OAAY;AAAA;AACxB,YAAM,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AACxC,YAAM,WAAW,KAAK,OAAO;AAO7B,YAAM,gBAAgB,MAAM,KAAK,GAAG,mCAAmC,UAAU,YAAY;AAM7F,YAAM,UAAU,cAAc;AAAA,QAAO,CAAC,OACpC,GAAG,aAAa,QAAQ,sBAAsB,GAAG,aAAa,WAAW;AAAA,MAC3E;AAEA,UAAI,QAAQ,WAAW,EAAG;AAC1B,YAAM,MAAM,MAAM,KAAK,OAAO,YAAY,KAAK,GAAG,SAAS,CAAC;AAC5D,iBAAW,QAAQ,SAAS;AAC1B,cAAM,UAAU,KAAK,aAAa,6BAA6B,KAAK,OAAO;AAC3E,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,wBAAc,KAAK,QAAQ,MAAM,2CAAa,KAAK,YAAY,KAAK,IAAI,mCAAU,KAAK,WAAW,KAAK,QAAQ,CAAC,CAAC;AAAA,QACnH;AACA,cAAM,QAAQ,cAAc,GAAG;AAAA,MACjC;AAAA,IACF;AAAA;AACF;","names":[]}
@@ -21,12 +21,12 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { handleWSEventWithCache } from "../utils";
24
+ import { handleWSEventWithCache } from "../../utils/index.js";
25
25
  class BeatSaverWSHandler {
26
- constructor(db, render, logger, config, botService) {
26
+ constructor(db, render, logger, config, agentService) {
27
27
  __publicField(this, "logger");
28
28
  __publicField(this, "render");
29
- __publicField(this, "botService");
29
+ __publicField(this, "agentService");
30
30
  __publicField(this, "wsUrl", "wss://ws.beatsaver.com/maps");
31
31
  __publicField(this, "db");
32
32
  __publicField(this, "config");
@@ -44,7 +44,7 @@ class BeatSaverWSHandler {
44
44
  ));
45
45
  this.logger = logger;
46
46
  this.render = render;
47
- this.botService = botService;
47
+ this.agentService = agentService;
48
48
  this.config = config;
49
49
  this.db = db;
50
50
  }
@@ -62,35 +62,35 @@ class BeatSaverWSHandler {
62
62
  const bsmap = data.msg;
63
63
  const userId = bsmap.uploader.id;
64
64
  const subscriptions = yield this.db.getAllSubscriptionByUIDAndPlatform(
65
- userId,
65
+ String(userId),
66
66
  "beatsaver"
67
67
  );
68
68
  const restSub = subscriptions.filter(
69
- (it) => it.subscribe.type == "beatsaver-map" && it.subscribe.enable == true
69
+ (it) => it.subscription.type == "beatsaver-map" && it.subscription.enabled == true
70
70
  );
71
- const gids = restSub.map((it) => it.groupChannel.id);
71
+ const gids = restSub.map((it) => it.channel.id);
72
72
  const groupSubs = yield this.db.getIDSubscriptionByType("id-beatsaver-map");
73
73
  const restGroupSubs = groupSubs.filter(
74
74
  (it) => {
75
75
  var _a, _b;
76
- return !gids.includes(it.groupChannel.id) && ((_b = (_a = it.subscribe.data) == null ? void 0 : _a.mapperId) == null ? void 0 : _b.toString()) === userId.toString();
76
+ return !gids.includes(it.channel.id) && ((_b = (_a = it.subscription.data) == null ? void 0 : _a.mapperId) == null ? void 0 : _b.toString()) === userId.toString();
77
77
  }
78
78
  );
79
79
  if (restSub.length === 0 && restGroupSubs) return;
80
80
  const image = this.render.renderMap(bsmap);
81
81
  for (const item of restSub) {
82
- const session = this.botService.getSessionByChannelInfo(item.groupChannel);
82
+ const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
83
83
  if (!session) {
84
84
  continue;
85
85
  }
86
86
  yield session.send(
87
- `\u672C\u7FA4\u8C31\u5E08 \u300C<at id="${item.account.uid}"/> (${bsmap.uploader.name})\u300D\u521A\u521A\u53D1\u5E03\u4E86\u65B0\u8C31\u9762\uFF0C\u300C${bsmap.name}\u300D`
87
+ `\u672C\u7FA4\u8C31\u5E08 \u300C<at id="${item.account.userId}"/> (${bsmap.uploader.name})\u300D\u521A\u521A\u53D1\u5E03\u4E86\u65B0\u8C31\u9762\uFF0C\u300C${bsmap.name}\u300D`
88
88
  );
89
89
  yield session.sendImgBuffer(yield image);
90
90
  yield session.sendAudioByUrl(bsmap.versions[0].previewURL);
91
91
  }
92
92
  for (const item of restGroupSubs) {
93
- const session = this.botService.getSessionByChannelInfo(item.groupChannel);
93
+ const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
94
94
  if (!session) {
95
95
  continue;
96
96
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/events/ws/beatsaver.ts"],"sourcesContent":["import { WSHandler } from './handler'\nimport {AgentService, EventHandlerCtx, Logger} from '@/core'\nimport { Config } from '@/config'\nimport { DB } from '@/interface/db'\nimport { handleWSEventWithCache } from '@/utils'\nimport {BeatSaverWSEvent, BSMap} from \"@/services/api/interfaces/beatsaver\";\nimport {RenderService} from \"@/services\";\nimport {Services} from \"@/interface\";\nexport class BeatSaverWSHandler<T> implements WSHandler {\n private readonly logger: Logger\n private render: RenderService\n private agentService: AgentService\n wsUrl: string = 'wss://ws.beatsaver.com/maps'\n private db: DB\n config: Config\n constructor(\n db: DB,\n render: RenderService,\n logger: Logger,\n config: Config,\n agentService: AgentService\n ) {\n this.logger = logger\n this.render = render\n this.agentService = agentService\n this.config = config\n this.db = db\n }\n\n onOpen() {\n this.logger.info('BeatsaverWS opened')\n }\n\n onClose() {\n this.logger.info('BeatsaverWS closed')\n }\n\n eventParser(event) {\n return JSON.parse(event.toString()) as BeatSaverWSEvent\n }\n\n eventFilter = (data: BeatSaverWSEvent) => {\n return (\n data.type === 'MAP_UPDATE' &&\n data.msg.versions.some((it) => it.state == 'Published') &&\n data.msg.declaredAi === 'None'\n )\n }\n eventIdSelector = (data: BeatSaverWSEvent) =>\n `ws.bs.${data.type === 'MAP_DELETE' ? data.msg : data.msg.id}.${data.type}`\n\n async BSWSHandler(data: BeatSaverWSEvent) {\n // this.logger.info('Beatsaver message received', data.type, data?.msg?.id)\n\n const bsmap = data.msg as BSMap\n const userId = bsmap.uploader.id\n const subscriptions = await this.db.getAllSubscriptionByUIDAndPlatform(\n String(userId),\n 'beatsaver'\n )\n\n const restSub = subscriptions.filter(\n (it) =>\n it.subscription.type == 'beatsaver-map' && it.subscription.enabled == true\n )\n const gids = restSub.map((it) => it.channel.id)\n const groupSubs = await this.db.getIDSubscriptionByType('id-beatsaver-map')\n const restGroupSubs = groupSubs.filter(\n (it) =>\n !gids.includes(it.channel.id) &&\n it.subscription.data?.mapperId?.toString() === userId.toString()\n )\n\n // cacheService\n if (restSub.length === 0 && restGroupSubs) return\n const image = this.render.renderMap(bsmap)\n for (const item of restSub) {\n const session = this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `本群谱师 「<at id=\"${item.account.userId}\"/> (${bsmap.uploader.name})」刚刚发布了新谱面,「${bsmap.name}」`\n )\n // text + mention element\n await session.sendImgBuffer(await image)\n await session.sendAudioByUrl(bsmap.versions[0].previewURL)\n }\n for (const item of restGroupSubs) {\n const session = this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `谱师「${bsmap.uploader.name}」刚刚发布了新谱面,「${bsmap.name}」`\n )\n // text + mention element\n await session.sendImgBuffer(await image)\n await session.sendAudioByUrl(bsmap.versions[0].previewURL)\n }\n }\n\n onEvent = handleWSEventWithCache(\n this,\n this.BSWSHandler,\n 1000 * 60 * 15,\n this.eventParser,\n this.eventFilter,\n this.eventIdSelector\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,8BAA8B;AAIhC,MAAM,mBAA2C;AAAA,EAOtD,YACE,IACA,QACA,QACA,QACA,cACA;AAZF,wBAAiB;AACjB,wBAAQ;AACR,wBAAQ;AACR,iCAAgB;AAChB,wBAAQ;AACR;AA2BA,uCAAc,CAAC,SAA2B;AACxC,aACE,KAAK,SAAS,gBACd,KAAK,IAAI,SAAS,KAAK,CAAC,OAAO,GAAG,SAAS,WAAW,KACtD,KAAK,IAAI,eAAe;AAAA,IAE5B;AACA,2CAAkB,CAAC,SACjB,SAAS,KAAK,SAAS,eAAe,KAAK,MAAM,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI;AAqD3E,mCAAU;AAAA,MACR;AAAA,MACA,KAAK;AAAA,MACL,MAAO,KAAK;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAvFE,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,SAAS;AACd,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,KAAK,oBAAoB;AAAA,EACvC;AAAA,EAEA,UAAU;AACR,SAAK,OAAO,KAAK,oBAAoB;AAAA,EACvC;AAAA,EAEA,YAAY,OAAO;AACjB,WAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACpC;AAAA,EAYM,YAAY,MAAwB;AAAA;AAGxC,YAAM,QAAQ,KAAK;AACnB,YAAM,SAAS,MAAM,SAAS;AAC9B,YAAM,gBAAgB,MAAM,KAAK,GAAG;AAAA,QAClC,OAAO,MAAM;AAAA,QACb;AAAA,MACF;AAEA,YAAM,UAAU,cAAc;AAAA,QAC5B,CAAC,OACC,GAAG,aAAa,QAAQ,mBAAmB,GAAG,aAAa,WAAW;AAAA,MAC1E;AACA,YAAM,OAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE;AAC9C,YAAM,YAAY,MAAM,KAAK,GAAG,wBAAwB,kBAAkB;AAC1E,YAAM,gBAAgB,UAAU;AAAA,QAC9B,CAAC,OAAI;AApEX;AAqEQ,kBAAC,KAAK,SAAS,GAAG,QAAQ,EAAE,OAC5B,cAAG,aAAa,SAAhB,mBAAsB,aAAtB,mBAAgC,gBAAe,OAAO,SAAS;AAAA;AAAA,MACnE;AAGA,UAAI,QAAQ,WAAW,KAAK,cAAe;AAC3C,YAAM,QAAQ,KAAK,OAAO,UAAU,KAAK;AACzC,iBAAW,QAAQ,SAAS;AAC1B,cAAM,UAAU,KAAK,aAAa,6BAA6B,KAAK,OAAO;AAC3E,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,0CAAiB,KAAK,QAAQ,MAAM,QAAQ,MAAM,SAAS,IAAI,sEAAe,MAAM,IAAI;AAAA,QAC1F;AAEA,cAAM,QAAQ,cAAc,MAAM,KAAK;AACvC,cAAM,QAAQ,eAAe,MAAM,SAAS,CAAC,EAAE,UAAU;AAAA,MAC3D;AACA,iBAAW,QAAQ,eAAe;AAChC,cAAM,UAAU,KAAK,aAAa,6BAA6B,KAAK,OAAO;AAC3E,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,qBAAM,MAAM,SAAS,IAAI,qEAAc,MAAM,IAAI;AAAA,QACnD;AAEA,cAAM,QAAQ,cAAc,MAAM,KAAK;AACvC,cAAM,QAAQ,eAAe,MAAM,SAAS,CAAC,EAAE,UAAU;AAAA,MAC3D;AAAA,IACF;AAAA;AAUF;","names":[]}
@@ -0,0 +1,4 @@
1
+ export * from "./beatleader.js";
2
+ export * from "./beatsaver.js";
3
+ export * from "./handler.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/events/ws/index.ts"],"sourcesContent":["export * from './beatleader'\nexport * from './beatsaver'\nexport * from './handler'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
package/dist/esm/index.js CHANGED
@@ -1,18 +1,23 @@
1
- import { botCommands } from "./cmd";
2
- import { getScheduleTasks } from "./schedules";
3
- export * from "./interface";
4
- export * from "./schedules";
5
- export * from "./config";
6
- export * from "./cmd";
7
- export * from "./ws";
8
- export * from "./utils";
9
- export * from "./service";
10
- export * from "./infra";
1
+ import { botCommands } from "./cmd/index.js";
2
+ import { getScheduleTasks } from "./events/schedules/index.js";
3
+ export * from "./interface/index.js";
4
+ export * from "./events/schedules/index.js";
5
+ export * from "./config.js";
6
+ export * from "./cmd/index.js";
7
+ export * from "./events/ws/index.js";
8
+ export * from "./utils/index.js";
9
+ export * from "./services/index.js";
10
+ export * from "./common/s3/index.js";
11
+ export * from "./common/render/index.js";
12
+ export * from "./core/session.js";
13
+ export * from "./core/logger.js";
14
+ import { SessionAgent } from "./core/domain.js";
11
15
  const getBot = (config) => ({
12
16
  commands: botCommands(),
13
17
  schedule: getScheduleTasks(config)
14
18
  });
15
19
  export {
20
+ SessionAgent,
16
21
  getBot
17
22
  };
18
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import {botCommands} from \"@/cmd\";\nimport {getScheduleTasks} from \"@/schedules\";\nimport {Config} from \"@/config\";\n\nexport * from './interface'\nexport * from './schedules'\nexport * from './config'\nexport * from './cmd'\nexport * from './ws'\nexport * from './utils'\nexport * from './service'\nexport * from './infra'\n\nexport const getBot = <T>(config: Config) => ({\n commands: botCommands<T>(),\n schedule: getScheduleTasks(config),\n})\n\n"],"mappings":"AAAA,SAAQ,mBAAkB;AAC1B,SAAQ,wBAAuB;AAG/B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEP,MAAM,SAAS,CAAI,YAAoB;AAAA,EAC5C,UAAU,YAAe;AAAA,EACzB,UAAU,iBAAiB,MAAM;AACnC;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import {botCommands} from \"./cmd\";\nimport type {Config} from \"./config\";\nimport {getScheduleTasks} from \"./events/schedules\";\nexport * from './interface'\nexport * from './events/schedules'\nexport * from './config'\nexport * from './cmd'\nexport * from './events/ws'\nexport * from './utils'\nexport * from './services'\nexport * from '@/common/s3'\nexport * from '@/common/render'\nexport * from '@/core/session'\nexport * from '@/core/logger'\nexport { SessionAgent } from '@/core/domain'\n\nexport const getBot = (config: Config) => ({\n commands: botCommands(),\n schedule: getScheduleTasks(config),\n})\n\n"],"mappings":"AAAA,SAAQ,mBAAkB;AAE1B,SAAQ,wBAAuB;AAC/B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,oBAAoB;AAEtB,MAAM,SAAS,CAAC,YAAoB;AAAA,EACzC,UAAU,YAAY;AAAA,EACtB,UAAU,iBAAiB,MAAM;AACnC;","names":[]}
@@ -1,2 +1 @@
1
- export * from "./models";
2
1
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/interface/db/index.ts"],"sourcesContent":["import {\n RelateAccount,\n RelateChannelInfo,\n Subscribe,\n SubscribeMember,\n} from './models'\n\nexport * from './models'\n\nexport interface SubInfoRes {\n subscribe: Subscribe\n memberCount: number\n me: any\n}\n\nexport interface SubInfoRes {\n subscribe: Subscribe\n memberCount: number\n me: any\n}\n\nexport interface SubDetailWithGroupRes<T> {\n account: RelateAccount\n accountChannel: RelateChannelInfo<T>\n subscribeMember: SubscribeMember\n subscribe: Subscribe\n groupChannel: RelateChannelInfo<T>\n}\n\nexport interface SubWithGroupRes<T> {\n subscribe: Subscribe\n groupChannel: RelateChannelInfo<T>\n}\n\nexport interface DB<T> {\n storeUserPreference<V = any>(\n uid: number,\n // channelId: string | undefined,\n value: V\n ): Promise<boolean>\n getUserPreference<V = any>(\n uid: number\n // channelId: string | undefined,\n // value: V\n ): Promise<V>\n getUserAccountsByUid(id: number): Promise<Record<string, RelateAccount>>\n\n batchGetOrCreateUBySessionInfo(s: T[]): Promise<RelateChannelInfo<T>[]>\n getUAndGBySessionInfo(\n s: T\n ): Promise<[RelateChannelInfo<T>, RelateChannelInfo<T>]>\n\n // binding\n addUserBindingInfo(account: Partial<RelateAccount>): Promise<void>\n\n // subscription\n upsertSubscription(data: Partial<Subscribe>): Promise<void>\n\n getSubscriptionInfoByUGID(gid: number, uid: number): Promise<SubInfoRes[]>\n getSubscriptionsByGID(gid: number): Promise<Record<string, Subscribe>>\n // group subscription\n getIDSubscriptionByGID(gid: number): Promise<Subscribe[]>\n getIDSubscriptionByType(type: string): Promise<SubWithGroupRes<T>[]>\n removeIDSubscriptionByID(id: number): Promise<void>\n getIDSubscriptionByGIDAndType(gid: number, type: string): Promise<Subscribe[]>\n getAllSubscriptionByUIDAndPlatform(\n id: string | number,\n type: string\n ): Promise<SubDetailWithGroupRes<T>[]>\n\n getSubscriptionsByType(type: string): Promise<SubDetailWithGroupRes<T>[]>\n addSubscribeMember(data: Partial<SubscribeMember>): Promise<void>\n removeFromSubGroupBySubAndUid(subId: number, id: number): Promise<void>\n}\n"],"mappings":"AAOA,cAAc;","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,18 +1,12 @@
1
- export * from "./db";
2
- export * from "./logger";
3
- export * from "./bot";
4
- var Platform = /* @__PURE__ */ ((Platform2) => {
5
- Platform2["SS"] = "scoresaber";
6
- Platform2["BS"] = "beatsaver";
7
- Platform2["BL"] = "beatleader";
8
- return Platform2;
9
- })(Platform || {});
10
- const parsePlatform = (p) => {
11
- return p == "ss" ? "scoresaber" /* SS */ : "beatleader" /* BL */;
12
- };
13
- export * from "./cmd/type";
1
+ import { CommandBuilder as _CommandBuilder } from "../core/index.js";
2
+ export * from "./db/index.js";
3
+ class CommandBuilder extends _CommandBuilder {
4
+ // static create(name: string) {
5
+ // return _CommandBuilder.create<Services<any>, Config, {}>(name)
6
+ // }
7
+ }
8
+ export * from "../core/session.js";
14
9
  export {
15
- Platform,
16
- parsePlatform
10
+ CommandBuilder
17
11
  };
18
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/interface/index.ts"],"sourcesContent":["export * from './db'\nexport * from './logger'\nexport * from './bot'\nexport enum Platform {\n SS = 'scoresaber',\n BS = 'beatsaver',\n BL = 'beatleader',\n}\n\nexport const parsePlatform = (p: string) => {\n return p == 'ss' ? Platform.SS : Platform.BL\n}\n\nexport * from './cmd/type'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACP,IAAK,WAAL,kBAAKA,cAAL;AACL,EAAAA,UAAA,QAAK;AACL,EAAAA,UAAA,QAAK;AACL,EAAAA,UAAA,QAAK;AAHK,SAAAA;AAAA,GAAA;AAML,MAAM,gBAAgB,CAAC,MAAc;AAC1C,SAAO,KAAK,OAAO,wBAAc;AACnC;AAEA,cAAc;","names":["Platform"]}
1
+ {"version":3,"sources":["../../../src/interface/index.ts"],"sourcesContent":["import {DB} from \"@/interface/db\";\nimport {APIService, I18nService, RenderService} from \"@/services\";\nimport {CommandBuilder as _CommandBuilder, CmdContext as _CmdContext, Command as _Command} from \"@/core\";\nimport {Config} from \"@/config\";\nimport {S3Service} from \"@/common/s3\";\nexport * from './db'\n\nexport type Services = {\n db: DB,\n api: APIService,\n render: RenderService,\n i18n: I18nService,\n s3: S3Service\n}\n\nexport class CommandBuilder<T, OPT = unknown> extends _CommandBuilder<Services, Config, OPT> {\n // static create(name: string) {\n // return _CommandBuilder.create<Services<any>, Config, {}>(name)\n // }\n}\n\nexport type CmdContext<O = unknown> = _CmdContext<Services, Config, O>\n\nexport type Command<O = unknown> = _Command<Services, Config, O>\nexport * from '@/core/session'\n"],"mappings":"AAEA,SAAQ,kBAAkB,uBAAsE;AAGhG,cAAc;AAUP,MAAM,uBAAyC,gBAAuC;AAAA;AAAA;AAAA;AAI7F;AAKA,cAAc;","names":[]}
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { createFetch } from "../../../infra/support/fetch";
24
+ import { createFetch } from "../../../common/fetch/index.js";
25
25
  class AIOSaberClient {
26
26
  constructor(logger) {
27
27
  __publicField(this, "f");
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/services/api/base/aioclient.ts"],"sourcesContent":["import { createFetch, Fetch } from '@/common/fetch'\nimport { Logger } from '@/core'\nimport { AioOauthTokenResponse } from '../interfaces/aiosaber'\n\nexport class AIOSaberClient {\n f: Fetch\n constructor(logger: Logger) {\n this.f = createFetch(logger).baseUrl('https://abs.ktlab.io')\n }\n async getBSOAuthToken(key: string) {\n return this.f.get<AioOauthTokenResponse>(\n `/api/oauth/beatsaver/token/${key}`\n )\n }\n async getBLOAuthToken(key: string) {\n return this.f.get<AioOauthTokenResponse>(\n `/api/oauth/beatleader/token/${key}`\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,mBAA0B;AAI5B,MAAM,eAAe;AAAA,EAE1B,YAAY,QAAgB;AAD5B;AAEE,SAAK,IAAI,YAAY,MAAM,EAAE,QAAQ,sBAAsB;AAAA,EAC7D;AAAA,EACM,gBAAgB,KAAa;AAAA;AACjC,aAAO,KAAK,EAAE;AAAA,QACZ,8BAA8B,GAAG;AAAA,MACnC;AAAA,IACF;AAAA;AAAA,EACM,gBAAgB,KAAa;AAAA;AACjC,aAAO,KAAK,EAAE;AAAA,QACZ,+BAA+B,GAAG;AAAA,MACpC;AAAA,IACF;AAAA;AACF;","names":[]}
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { createFetch } from "../../../infra/support/fetch";
24
+ import { createFetch } from "../../../common/fetch/index.js";
25
25
  class BeatLeaderClient {
26
26
  constructor(opt) {
27
27
  __publicField(this, "f");
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/services/api/base/blclient.ts"],"sourcesContent":["import { OAuthTokenInfoResponse, OAuthTokenResponse } from '../interfaces'\nimport { createFetch, Fetch } from '@/common/fetch'\nimport { Logger } from '@/core'\nimport {\n BeadLeaderScoresResponse,\n BeatLeaderPlayerScoreRequest,\n BeatLeaderUser,\n Leaderboard,\n Score,\n} from '../interfaces/beatleader'\n\ntype ClientOptions = {\n client_id?: string\n client_secret?: string\n logger?: Logger\n}\n\nexport class BeatLeaderClient {\n f: Fetch\n opt?: ClientOptions\n constructor(opt?: ClientOptions) {\n this.f = createFetch(opt?.logger).baseUrl('https://api.beatleader.xyz').extend({\n ignoreResponseError: false,\n })\n }\n async getPlayerScore(req: BeatLeaderPlayerScoreRequest) {\n const res = await this.f.get<Leaderboard>(\n `/score/${req.leaderboardContext}/${req.playerID}/${req.hash}/${req.diff}/${req.mode}`\n )\n return res\n }\n\n async getTokenInfo(accessToken: string) {\n return this.f.get<OAuthTokenInfoResponse>(`/oauth2/identity`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n })\n }\n\n async refreshOAuthToken(refreshToken: string) {\n return this.f.post<OAuthTokenResponse>(\n 'https://beatsaver.com/api/oauth2/token',\n {\n form: {\n client_id: this.opt.client_id,\n client_secret: this.opt.client_secret,\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n },\n }\n )\n }\n\n async getPlayerInfo(accountId: string) {\n return this.f.get<BeatLeaderUser>(`/player/${accountId}`)\n }\n\n async getPlayerScores(accountId: string) {\n return this.f.get<BeadLeaderScoresResponse>(\n `/player/${accountId}/scores?count=24&sortBy=pp`\n )\n }\n async getPlayerPinnedScores(accountId: string) {\n return this.f.get<Score[]>(`/player/${accountId}/pinnedScores`)\n }\n\n async getBeatScore(scoreId: string) {\n return this.f.get<Score>(`/score/${scoreId}`)\n }\n\n async getLeaderboard(leaderboardId: string, params?: Record<string, any>) {\n return this.f.get(`/leaderboard/${leaderboardId}`, { query: params })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,mBAA0B;AAgB5B,MAAM,iBAAiB;AAAA,EAG5B,YAAY,KAAqB;AAFjC;AACA;AAEE,SAAK,IAAI,YAAY,2BAAK,MAAM,EAAE,QAAQ,4BAA4B,EAAE,OAAO;AAAA,MAC7E,qBAAqB;AAAA,IACvB,CAAC;AAAA,EACH;AAAA,EACM,eAAe,KAAmC;AAAA;AACtD,YAAM,MAAM,MAAM,KAAK,EAAE;AAAA,QACvB,UAAU,IAAI,kBAAkB,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAAA,MACtF;AACA,aAAO;AAAA,IACT;AAAA;AAAA,EAEM,aAAa,aAAqB;AAAA;AACtC,aAAO,KAAK,EAAE,IAA4B,oBAAoB;AAAA,QAC5D,SAAS;AAAA,UACP,eAAe,UAAU,WAAW;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,EAEM,kBAAkB,cAAsB;AAAA;AAC5C,aAAO,KAAK,EAAE;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAM;AAAA,YACJ,WAAW,KAAK,IAAI;AAAA,YACpB,eAAe,KAAK,IAAI;AAAA,YACxB,YAAY;AAAA,YACZ,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAEM,cAAc,WAAmB;AAAA;AACrC,aAAO,KAAK,EAAE,IAAoB,WAAW,SAAS,EAAE;AAAA,IAC1D;AAAA;AAAA,EAEM,gBAAgB,WAAmB;AAAA;AACvC,aAAO,KAAK,EAAE;AAAA,QACZ,WAAW,SAAS;AAAA,MACtB;AAAA,IACF;AAAA;AAAA,EACM,sBAAsB,WAAmB;AAAA;AAC7C,aAAO,KAAK,EAAE,IAAa,WAAW,SAAS,eAAe;AAAA,IAChE;AAAA;AAAA,EAEM,aAAa,SAAiB;AAAA;AAClC,aAAO,KAAK,EAAE,IAAW,UAAU,OAAO,EAAE;AAAA,IAC9C;AAAA;AAAA,EAEM,eAAe,eAAuB,QAA8B;AAAA;AACxE,aAAO,KAAK,EAAE,IAAI,gBAAgB,aAAa,IAAI,EAAE,OAAO,OAAO,CAAC;AAAA,IACtE;AAAA;AACF;","names":[]}
@@ -35,8 +35,8 @@ var __async = (__this, __arguments, generator) => {
35
35
  step((generator = generator.apply(__this, __arguments)).next());
36
36
  });
37
37
  };
38
- import { createFetch } from "../../../infra/support/fetch";
39
- import { NotFoundError } from "../../../infra/support/fetch/error";
38
+ import { createFetch } from "../../../common/fetch/index.js";
39
+ import { NotFoundError } from "../../../common/fetch/error.js";
40
40
  class BeatSaverClient {
41
41
  constructor(opt) {
42
42
  __publicField(this, "f");
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/services/api/base/bsclient.ts"],"sourcesContent":["import { OAuthTokenInfoResponse, OAuthTokenResponse } from '../interfaces'\nimport { createFetch, Fetch } from '@/common/fetch'\nimport { Logger } from '@/core'\n\nimport {\n BSMap,\n BSMapLatestResponse,\n BSUserResponse,\n HashReqResponse,\n} from '../interfaces/beatsaver'\nimport {NotFoundError} from \"@/common/fetch/error\";\n\ntype ClientOptions = {\n logger?: Logger,\n host?: string,\n client_id?: string,\n client_secret?: string\n f?: Fetch\n}\n\nexport class BeatSaverClient {\n f: Fetch\n opt?: ClientOptions\n constructor(opt?: ClientOptions) {\n this.opt = opt\n this.f = opt.f || createFetch(opt.logger)\n .baseUrl(opt.host ?? 'https://api.beatsaver.com')\n .extend({\n ignoreResponseError: false,\n onResponseError: (context) => {\n if (\n context.response.status === 404 ||\n context.response.status === 400\n ) {\n throw new NotFoundError()\n }\n },\n })\n }\n async getBSMapperById(userId: string) {\n return this.f.get<BSUserResponse>(`/users/id/${userId}`)\n }\n\n async getLatestMaps(pageSize: number = 5) {\n return this.f\n .get<BSMapLatestResponse>(`/maps/latest`, {\n query: {\n sort: 'FIRST_PUBLISHED',\n pageSize,\n },\n })\n .then((res) => res.docs)\n }\n\n async searchMapByKeyword(\n key: string,\n params?: Record<string, boolean | number | string>\n ) {\n return this.f\n .get<BSMapLatestResponse>(`/search/text/0`, {\n query: {\n q: key,\n ...params,\n },\n })\n .then((res) => res.docs)\n }\n\n async searchMapById(id: string) {\n return this.f.get<BSMap>(`/maps/id/${id}`)\n }\n async getTokenInfo(ak: string) {\n return this.f.get<OAuthTokenInfoResponse>(`/oauth2/identity`, {\n headers: {\n Authorization: `Bearer ${ak}`,\n },\n })\n }\n\n async getMapsByHashes(hashes: string[]) {\n return this.f.get<HashReqResponse>(`/maps/hash/${hashes.join(',')}`)\n }\n\n async refreshOAuthToken(rk: string) {\n return this.f.post<OAuthTokenResponse>(\n 'https://beatsaver.com/api/oauth2/token',\n {\n form: {\n client_id: this.opt.client_id,\n client_secret: this.opt.client_secret,\n grant_type: 'refresh_token',\n refresh_token: rk,\n },\n }\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,mBAA0B;AASnC,SAAQ,qBAAoB;AAUrB,MAAM,gBAAgB;AAAA,EAG3B,YAAY,KAAqB;AAFjC;AACA;AAtBF;AAwBI,SAAK,MAAM;AACX,SAAK,IAAI,IAAI,KAAK,YAAY,IAAI,MAAM,EACrC,SAAQ,SAAI,SAAJ,YAAY,2BAA2B,EAC/C,OAAO;AAAA,MACN,qBAAqB;AAAA,MACrB,iBAAiB,CAAC,YAAY;AAC5B,YACE,QAAQ,SAAS,WAAW,OAC5B,QAAQ,SAAS,WAAW,KAC5B;AACA,gBAAM,IAAI,cAAc;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACL;AAAA,EACM,gBAAgB,QAAgB;AAAA;AACpC,aAAO,KAAK,EAAE,IAAoB,aAAa,MAAM,EAAE;AAAA,IACzD;AAAA;AAAA,EAEM,cAAc,WAAmB,GAAG;AAAA;AACxC,aAAO,KAAK,EACT,IAAyB,gBAAgB;AAAA,QACxC,OAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,QACF;AAAA,MACF,CAAC,EACA,KAAK,CAAC,QAAQ,IAAI,IAAI;AAAA,IAC3B;AAAA;AAAA,EAEM,mBACJ,KACA,QACA;AAAA;AACA,aAAO,KAAK,EACT,IAAyB,kBAAkB;AAAA,QAC1C,OAAO;AAAA,UACL,GAAG;AAAA,WACA;AAAA,MAEP,CAAC,EACA,KAAK,CAAC,QAAQ,IAAI,IAAI;AAAA,IAC3B;AAAA;AAAA,EAEM,cAAc,IAAY;AAAA;AAC9B,aAAO,KAAK,EAAE,IAAW,YAAY,EAAE,EAAE;AAAA,IAC3C;AAAA;AAAA,EACM,aAAa,IAAY;AAAA;AAC7B,aAAO,KAAK,EAAE,IAA4B,oBAAoB;AAAA,QAC5D,SAAS;AAAA,UACP,eAAe,UAAU,EAAE;AAAA,QAC7B;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,EAEM,gBAAgB,QAAkB;AAAA;AACtC,aAAO,KAAK,EAAE,IAAqB,cAAc,OAAO,KAAK,GAAG,CAAC,EAAE;AAAA,IACrE;AAAA;AAAA,EAEM,kBAAkB,IAAY;AAAA;AAClC,aAAO,KAAK,EAAE;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAM;AAAA,YACJ,WAAW,KAAK,IAAI;AAAA,YACpB,eAAe,KAAK,IAAI;AAAA,YACxB,YAAY;AAAA,YACZ,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AACF;","names":[]}
@@ -0,0 +1,5 @@
1
+ export * from "./ssclient.js";
2
+ export * from "./blclient.js";
3
+ export * from "./aioclient.js";
4
+ export * from "./bsclient.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/services/api/base/index.ts"],"sourcesContent":["export * from './ssclient'\nexport * from './blclient'\nexport * from './aioclient'\nexport * from './bsclient'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -21,8 +21,8 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { createFetch } from "../../../infra/support/fetch";
25
- import { NotFoundError } from "../../../infra/support/fetch/error";
24
+ import { createFetch } from "../../../common/fetch/index.js";
25
+ import { NotFoundError } from "../../../common/fetch/error.js";
26
26
  class ScoreSaberClient {
27
27
  constructor(logger) {
28
28
  __publicField(this, "f");
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/services/api/base/ssclient.ts"],"sourcesContent":["import {\n ScoreSaberUser,\n ScoreSaberUserResponse,\n} from '../interfaces/scoresaber'\nimport { ScoresaberLeaderboardResp } from '../interfaces/scoresaber/leaderboard'\nimport { createFetch, Fetch } from '@/common/fetch'\nimport { Logger } from '@/core'\nimport {NotFoundError} from \"@/common/fetch/error\";\nexport class ScoreSaberClient {\n f: Fetch\n constructor(logger: Logger) {\n this.f = createFetch(logger).extend({\n baseURL: 'https://scoresaber.com',\n ignoreResponseError: false,\n onResponseError: (context) => {\n if (\n context.response.status === 500 ||\n context.response.status === 404\n ) {\n throw new NotFoundError()\n }\n },\n })\n }\n async getScoreUserById(userId: string) {\n return this.f.get<ScoreSaberUser>(`/api/player/${userId}/full`)\n }\n\n async getScoreItemsById(userId: string, page: number, pageSize: number = 8) {\n return this.f.get<ScoreSaberUserResponse>(`/api/player/${userId}/scores`, {\n query: {\n sort: 'top',\n page: page,\n limit: pageSize,\n },\n })\n }\n async getScoreItemsByMapId(\n mapId: string,\n diff: string,\n mode: string,\n page: number,\n pageSize: number = 8\n ): Promise<ScoresaberLeaderboardResp> {\n const id = convertToLeaderboardId(mapId, diff, mode)\n return this.f.get(`/api/leaderboard/by-id/${id}/scores`, {\n query: {\n page: page,\n limit: pageSize,\n },\n })\n }\n}\n\nconst convertToLeaderboardId = (mapid: string, diff: string, mode: string) => {\n return mapid\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAS,mBAA0B;AAEnC,SAAQ,qBAAoB;AACrB,MAAM,iBAAiB;AAAA,EAE5B,YAAY,QAAgB;AAD5B;AAEE,SAAK,IAAI,YAAY,MAAM,EAAE,OAAO;AAAA,MAClC,SAAS;AAAA,MACT,qBAAqB;AAAA,MACrB,iBAAiB,CAAC,YAAY;AAC5B,YACE,QAAQ,SAAS,WAAW,OAC5B,QAAQ,SAAS,WAAW,KAC5B;AACA,gBAAM,IAAI,cAAc;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACM,iBAAiB,QAAgB;AAAA;AACrC,aAAO,KAAK,EAAE,IAAoB,eAAe,MAAM,OAAO;AAAA,IAChE;AAAA;AAAA,EAEM,kBAAkB,QAAgB,MAAc,WAAmB,GAAG;AAAA;AAC1E,aAAO,KAAK,EAAE,IAA4B,eAAe,MAAM,WAAW;AAAA,QACxE,OAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,EACM,qBACJ,OACA,MACA,MACA,MACA,WAAmB,GACiB;AAAA;AACpC,YAAM,KAAK,uBAAuB,OAAO,MAAM,IAAI;AACnD,aAAO,KAAK,EAAE,IAAI,0BAA0B,EAAE,WAAW;AAAA,QACvD,OAAO;AAAA,UACL;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AACF;AAEA,MAAM,yBAAyB,CAAC,OAAe,MAAc,SAAiB;AAC5E,SAAO;AACT;","names":[]}
@@ -35,19 +35,27 @@ var __async = (__this, __arguments, generator) => {
35
35
  step((generator = generator.apply(__this, __arguments)).next());
36
36
  });
37
37
  };
38
- import { AIOSaberClient, BeatLeaderClient, BeatSaverClient, ScoreSaberClient } from "./base";
39
- import { BLIDNotFoundError, MapIdNotFoundError, SSIDNotFoundError } from "../../infra/errors";
40
- import { NotFoundError } from "../../infra/support/fetch/error";
41
- import { sortScore } from "../../service/api/sortScore";
42
- import { decode } from "../../components/utils/bl/bsorDecoder";
38
+ import { AIOSaberClient, BeatLeaderClient, BeatSaverClient, ScoreSaberClient } from "./base/index.js";
39
+ import { BLIDNotFoundError, MapIdNotFoundError, SSIDNotFoundError } from "../errors/index.js";
40
+ import { sortScore } from "./sortScore.js";
41
+ import { decode } from "../../utils/index.js";
43
42
  class APIService {
44
43
  constructor(cfg, logger) {
45
44
  __publicField(this, "BeatLeader");
46
45
  __publicField(this, "ScoreSaber");
47
46
  __publicField(this, "BeatSaver");
48
47
  __publicField(this, "AIOSaber");
49
- this.BeatSaver = new BeatSaverClient({ logger });
50
- this.BeatLeader = new BeatLeaderClient({ logger });
48
+ this.BeatSaver = new BeatSaverClient({
49
+ logger,
50
+ host: cfg.beatsaver.host,
51
+ client_id: cfg.beatsaver.oauthClientId,
52
+ client_secret: cfg.beatsaver.oauthClientSecret
53
+ });
54
+ this.BeatLeader = new BeatLeaderClient({
55
+ logger,
56
+ client_id: cfg.beatleader.oauthClientId,
57
+ client_secret: cfg.beatleader.oauthClientSecret
58
+ });
51
59
  this.ScoreSaber = new ScoreSaberClient(logger);
52
60
  this.AIOSaber = new AIOSaberClient(logger);
53
61
  }
@@ -100,7 +108,7 @@ class APIService {
100
108
  ));
101
109
  const scores = res.filter((item) => item.status === "fulfilled").map((it) => it.value);
102
110
  if (scores.length < 1) {
103
- throw new NotFoundError();
111
+ return null;
104
112
  }
105
113
  scores.sort(sortScore);
106
114
  return scores[0];
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/services/api/index.ts"],"sourcesContent":["import {AIOSaberClient, BeatLeaderClient, BeatSaverClient, ScoreSaberClient} from \"./base\";\nimport {Config} from \"@/config\";\nimport { Logger } from \"@/core\";\nimport {BLIDNotFoundError, MapIdNotFoundError, SSIDNotFoundError} from \"../errors\";\nimport {BSMap, HashResponse} from \"./interfaces/beatsaver\";\nimport {ScoreSaberItem} from \"./interfaces/scoresaber\";\nimport {Leaderboard} from \"./interfaces/beatleader\";\nimport {sortScore} from \"./sortScore\";\nimport { decode } from \"@/utils\";\n\ntype MapDiffOption = {\n difficulty?: string\n mode?: string\n}\n\n\nexport class APIService {\n BeatLeader: BeatLeaderClient\n ScoreSaber: ScoreSaberClient\n BeatSaver: BeatSaverClient\n AIOSaber: AIOSaberClient\n constructor(cfg: Config, logger: Logger) {\n this.BeatSaver = new BeatSaverClient({\n logger,\n host: cfg.beatsaver.host,\n client_id: cfg.beatsaver.oauthClientId,\n client_secret: cfg.beatsaver.oauthClientSecret\n })\n this.BeatLeader = new BeatLeaderClient({\n logger,\n client_id: cfg.beatleader.oauthClientId,\n client_secret: cfg.beatleader.oauthClientSecret\n })\n this.ScoreSaber = new ScoreSaberClient(logger)\n this.AIOSaber = new AIOSaberClient(logger)\n }\n async getBLPlayerScoresWithUserInfo(accountId: string) {\n const [userInfo, playerScores, pinnedScores] = await Promise.all([\n this.BeatLeader.getPlayerInfo(accountId),\n this.BeatLeader.getPlayerScores(accountId),\n this.BeatLeader.getPlayerPinnedScores(accountId),\n ])\n if (!(userInfo && playerScores)) {\n throw new BLIDNotFoundError({ accountId })\n }\n const filteredScores = playerScores.data.filter(\n (item) => !pinnedScores.some((pinned) => pinned.id === item.id)\n )\n const scores = pinnedScores.concat(filteredScores).slice(0, 24)\n return {\n scores: scores,\n userInfo: userInfo,\n }\n }\n async getSSPlayerScoresWithUserInfo(accountId: string) {\n\n }\n async getScoreByPlayerIdAndMapId(\n playerId: string,\n mapId: string,\n option?: MapDiffOption\n ): Promise<Leaderboard | null> {\n const map = await this.BeatSaver.searchMapById(mapId)\n if (!map) {\n throw new MapIdNotFoundError()\n }\n const hash = map.versions[0].hash\n let reqs = map.versions[0].diffs.map((it) => ({\n diff: it.difficulty,\n mode: it.characteristic,\n hash: hash,\n playerID: playerId,\n leaderboardContext: 'general',\n }))\n if (option && option.difficulty) {\n reqs = reqs.filter((item) => item.diff == option.difficulty)\n }\n if (option && option.mode) {\n reqs = reqs.filter((item) => item.mode == option.mode)\n }\n const res = await Promise.allSettled(reqs.map(\n (it) => this.BeatLeader.getPlayerScore(it)))\n const scores = res\n .filter((item) => item.status === 'fulfilled')\n .map(<T>(it: PromiseFulfilledResult<T>) => it.value)\n if (scores.length < 1) {\n return null\n }\n scores.sort(sortScore)\n return scores[0]\n }\n\n async getAroundScoreAndRegionScoreByRankAndPage(\n leaderboardId: string,\n rank: number,\n regionCode: string\n ) {\n const page = Math.ceil(rank / 10)\n const rest = rank % 10\n let startIndex = 0\n if (rest > 7) {\n startIndex = 2\n }\n const [regionScore, aroundScore] = await Promise.all([\n this.BeatLeader.getLeaderboard(leaderboardId, {\n leaderboardContext: 'general',\n page: 1,\n sortBy: 'rank',\n order: 'desc',\n countries: regionCode,\n }),\n this.BeatLeader.getLeaderboard(leaderboardId, {\n leaderboardContext: 'general',\n page: page,\n sortBy: 'rank',\n order: 'desc',\n }),\n ])\n const difficulties = regionScore.song.difficulties\n return {\n difficulties: difficulties,\n aroundScores: aroundScore.scores.slice(startIndex, startIndex + 7),\n regionTopScores: regionScore.scores,\n }\n }\n async getScoreAndBSMapByScoreId(scoreId: string) {\n const res = await this.BeatLeader.getBeatScore(scoreId)\n const bsorLink = res.replay\n const bsorContent = await fetch(bsorLink)\n const bsor = await new Promise((resolve, reject) => {\n bsorContent.arrayBuffer().then((res) => decode(res, resolve))\n setTimeout(() => reject('timeout exceed'), 5000)\n })\n const statistic = await fetch(\n `https://cdn.scorestats.beatleader.xyz/${scoreId}.json`\n ).then((res) => res.json())\n const id = res.song.id.split('x')?.[0]\n const bsMap = await this.BeatSaver.searchMapById(id)\n return {\n score: res,\n bsMap: bsMap,\n statistic: statistic,\n bsor: bsor,\n }\n }\n async getSSPlayerRecentScoreWithUserInfo(uid: string) {\n const [userInfo, scores] = await Promise.all([\n this.ScoreSaber.getScoreUserById(uid),\n this.ScoreSaber.getScoreItemsById(uid, 1, 24)\n .then((res) => res?.playerScores),\n ])\n if (!scores || !userInfo) {\n throw new SSIDNotFoundError({ accountId: uid })\n }\n const hashes = scores.map((it) => it.leaderboard.songHash)\n\n let hashInfo = await this.BeatSaver.getMapsByHashes(hashes)\n if (hashInfo.id) {\n const map = hashInfo as BSMap\n hashInfo = {} as HashResponse\n hashInfo[map.versions[0].hash] = map\n }\n const res = scores.map(\n (it) =>\n ({\n mapId: (hashInfo as HashResponse)[\n it.leaderboard.songHash.toLowerCase()\n ]?.id,\n ...it,\n }) as ScoreSaberItem\n )\n return {\n scores: res,\n userInfo: userInfo,\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,gBAAgB,kBAAkB,iBAAiB,wBAAuB;AAGlF,SAAQ,mBAAmB,oBAAoB,yBAAwB;AAIvE,SAAQ,iBAAgB;AACxB,SAAS,cAAc;AAQhB,MAAM,WAAW;AAAA,EAKtB,YAAY,KAAa,QAAgB;AAJzC;AACA;AACA;AACA;AAEE,SAAK,YAAY,IAAI,gBAAgB;AAAA,MACnC;AAAA,MACA,MAAM,IAAI,UAAU;AAAA,MACpB,WAAW,IAAI,UAAU;AAAA,MACzB,eAAe,IAAI,UAAU;AAAA,IAC/B,CAAC;AACD,SAAK,aAAa,IAAI,iBAAiB;AAAA,MACrC;AAAA,MACA,WAAW,IAAI,WAAW;AAAA,MAC1B,eAAe,IAAI,WAAW;AAAA,IAChC,CAAC;AACD,SAAK,aAAa,IAAI,iBAAiB,MAAM;AAC7C,SAAK,WAAW,IAAI,eAAe,MAAM;AAAA,EAC3C;AAAA,EACM,8BAA8B,WAAmB;AAAA;AACrD,YAAM,CAAC,UAAU,cAAc,YAAY,IAAI,MAAM,QAAQ,IAAI;AAAA,QAC/D,KAAK,WAAW,cAAc,SAAS;AAAA,QACvC,KAAK,WAAW,gBAAgB,SAAS;AAAA,QACzC,KAAK,WAAW,sBAAsB,SAAS;AAAA,MACjD,CAAC;AACD,UAAI,EAAE,YAAY,eAAe;AAC/B,cAAM,IAAI,kBAAkB,EAAE,UAAU,CAAC;AAAA,MAC3C;AACA,YAAM,iBAAiB,aAAa,KAAK;AAAA,QACvC,CAAC,SAAS,CAAC,aAAa,KAAK,CAAC,WAAW,OAAO,OAAO,KAAK,EAAE;AAAA,MAChE;AACA,YAAM,SAAS,aAAa,OAAO,cAAc,EAAE,MAAM,GAAG,EAAE;AAC9D,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EACM,8BAA8B,WAAmB;AAAA;AAAA,IAEvD;AAAA;AAAA,EACM,2BACJ,UACA,OACA,QAC6B;AAAA;AAC7B,YAAM,MAAM,MAAM,KAAK,UAAU,cAAc,KAAK;AACpD,UAAI,CAAC,KAAK;AACR,cAAM,IAAI,mBAAmB;AAAA,MAC/B;AACA,YAAM,OAAO,IAAI,SAAS,CAAC,EAAE;AAC7B,UAAI,OAAO,IAAI,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,QAAQ;AAAA,QAC5C,MAAM,GAAG;AAAA,QACT,MAAM,GAAG;AAAA,QACT;AAAA,QACA,UAAU;AAAA,QACV,oBAAoB;AAAA,MACtB,EAAE;AACF,UAAI,UAAU,OAAO,YAAY;AAC/B,eAAO,KAAK,OAAO,CAAC,SAAS,KAAK,QAAQ,OAAO,UAAU;AAAA,MAC7D;AACA,UAAI,UAAU,OAAO,MAAM;AACzB,eAAO,KAAK,OAAO,CAAC,SAAS,KAAK,QAAQ,OAAO,IAAI;AAAA,MACvD;AACA,YAAM,MAAM,MAAM,QAAQ,WAAW,KAAK;AAAA,QACxC,CAAC,OAAO,KAAK,WAAW,eAAe,EAAE;AAAA,MAAC,CAAC;AAC7C,YAAM,SAAS,IACZ,OAAO,CAAC,SAAS,KAAK,WAAW,WAAW,EAC5C,IAAI,CAAI,OAAkC,GAAG,KAAK;AACrD,UAAI,OAAO,SAAS,GAAG;AACrB,eAAO;AAAA,MACT;AACA,aAAO,KAAK,SAAS;AACrB,aAAO,OAAO,CAAC;AAAA,IACjB;AAAA;AAAA,EAEM,0CACJ,eACA,MACA,YACA;AAAA;AACA,YAAM,OAAO,KAAK,KAAK,OAAO,EAAE;AAChC,YAAM,OAAO,OAAO;AACpB,UAAI,aAAa;AACjB,UAAI,OAAO,GAAG;AACZ,qBAAa;AAAA,MACf;AACA,YAAM,CAAC,aAAa,WAAW,IAAI,MAAM,QAAQ,IAAI;AAAA,QACnD,KAAK,WAAW,eAAe,eAAe;AAAA,UAC5C,oBAAoB;AAAA,UACpB,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,WAAW;AAAA,QACb,CAAC;AAAA,QACD,KAAK,WAAW,eAAe,eAAe;AAAA,UAC5C,oBAAoB;AAAA,UACpB;AAAA,UACA,QAAQ;AAAA,UACR,OAAO;AAAA,QACT,CAAC;AAAA,MACH,CAAC;AACD,YAAM,eAAe,YAAY,KAAK;AACtC,aAAO;AAAA,QACL;AAAA,QACA,cAAc,YAAY,OAAO,MAAM,YAAY,aAAa,CAAC;AAAA,QACjE,iBAAiB,YAAY;AAAA,MAC/B;AAAA,IACF;AAAA;AAAA,EACM,0BAA0B,SAAiB;AAAA;AA7HnD;AA8HI,YAAM,MAAM,MAAM,KAAK,WAAW,aAAa,OAAO;AACtD,YAAM,WAAW,IAAI;AACrB,YAAM,cAAc,MAAM,MAAM,QAAQ;AACxC,YAAM,OAAO,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AAClD,oBAAY,YAAY,EAAE,KAAK,CAACA,SAAQ,OAAOA,MAAK,OAAO,CAAC;AAC5D,mBAAW,MAAM,OAAO,gBAAgB,GAAG,GAAI;AAAA,MACjD,CAAC;AACD,YAAM,YAAY,MAAM;AAAA,QACtB,yCAAyC,OAAO;AAAA,MAClD,EAAE,KAAK,CAACA,SAAQA,KAAI,KAAK,CAAC;AAC1B,YAAM,MAAK,SAAI,KAAK,GAAG,MAAM,GAAG,MAArB,mBAAyB;AACpC,YAAM,QAAQ,MAAM,KAAK,UAAU,cAAc,EAAE;AACnD,aAAO;AAAA,QACL,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EACM,mCAAmC,KAAa;AAAA;AACpD,YAAM,CAAC,UAAU,MAAM,IAAI,MAAM,QAAQ,IAAI;AAAA,QAC3C,KAAK,WAAW,iBAAiB,GAAG;AAAA,QACpC,KAAK,WAAW,kBAAkB,KAAK,GAAG,EAAE,EACzC,KAAK,CAACA,SAAQA,QAAA,gBAAAA,KAAK,YAAY;AAAA,MACpC,CAAC;AACD,UAAI,CAAC,UAAU,CAAC,UAAU;AACxB,cAAM,IAAI,kBAAkB,EAAE,WAAW,IAAI,CAAC;AAAA,MAChD;AACA,YAAM,SAAS,OAAO,IAAI,CAAC,OAAO,GAAG,YAAY,QAAQ;AAEzD,UAAI,WAAW,MAAM,KAAK,UAAU,gBAAgB,MAAM;AAC1D,UAAI,SAAS,IAAI;AACf,cAAM,MAAM;AACZ,mBAAW,CAAC;AACZ,iBAAS,IAAI,SAAS,CAAC,EAAE,IAAI,IAAI;AAAA,MACnC;AACA,YAAM,MAAM,OAAO;AAAA,QACjB,CAAC,OAAI;AAnKX;AAoKS;AAAA,YACC,QAAQ,cACN,GAAG,YAAY,SAAS,YAAY,CACpC,MAFM,mBAEH;AAAA,aACF;AAAA;AAAA,MAET;AACA,aAAO;AAAA,QACL,QAAQ;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AACF;","names":["res"]}
@@ -0,0 +1,6 @@
1
+ export * from "./bsor.js";
2
+ export * from "./req.js";
3
+ export * from "./score.js";
4
+ export * from "./user.js";
5
+ export * from "./ws.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/services/api/interfaces/beatleader/index.ts"],"sourcesContent":["export * from './bsor'\nexport * from './req'\nexport * from './score'\nexport * from './user'\nexport * from './ws'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,6 @@
1
+ export * from "./ws.js";
2
+ export * from "./bsmap.js";
3
+ export * from "./resp.js";
4
+ export * from "./user.js";
5
+ export * from "./alert.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/services/api/interfaces/beatsaver/index.ts"],"sourcesContent":["export * from './ws'\nexport * from './bsmap'\nexport * from './resp'\nexport * from './user'\nexport * from './alert'\n\nimport { BSUserResponse } from './user'\n\nexport type BSUserResp = BSUserResponse | BSErrorResponse\n\nexport interface BSErrorResponse {\n success?: boolean\n errors?: string\n}\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,4 @@
1
+ export * from "./item.js";
2
+ export * from "./resp.js";
3
+ export * from "./user.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/services/api/interfaces/scoresaber/index.ts"],"sourcesContent":["export * from './item'\nexport * from './resp'\nexport * from './user'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/services/api/sortScore.ts"],"sourcesContent":["import { Leaderboard } from './interfaces/beatleader'\n\nconst difficulties = {\n Easy: 0,\n Normal: 1,\n Hard: 2,\n Expert: 3,\n ExpertPlus: 4,\n}\n\nconst modes = {\n Legacy: 0,\n Lawless: 1,\n Lightshow: 2,\n '360Degree': 3,\n '90Degree': 4,\n NoArrows: 5,\n OneSaber: 6,\n Standard: 7,\n}\n\nexport function sortScore(a: Leaderboard, b: Leaderboard) {\n let res = modes[b.difficulty.modeName] - modes[a.difficulty.modeName]\n if (res == 0) {\n res =\n difficulties[b.difficulty.difficultyName] -\n difficulties[a.difficulty.difficultyName]\n }\n return res\n}\n"],"mappings":"AAEA,MAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AACd;AAEA,MAAM,QAAQ;AAAA,EACZ,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,SAAS,UAAU,GAAgB,GAAgB;AACxD,MAAI,MAAM,MAAM,EAAE,WAAW,QAAQ,IAAI,MAAM,EAAE,WAAW,QAAQ;AACpE,MAAI,OAAO,GAAG;AACZ,UACE,aAAa,EAAE,WAAW,cAAc,IACxC,aAAa,EAAE,WAAW,cAAc;AAAA,EAC5C;AACA,SAAO;AACT;","names":[]}