beatsaber-bot-core 0.2.0-rc.9 → 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":["../../../../src/components/pages/ss-player.tsx"],"sourcesContent":["/** @jsxImportSource react */\nimport Flags, { EarchIcon } from '../components/flag'\nimport { twJoin } from '../utils/tw-join'\nimport ScoreItem from '../components/ss-score-item'\nimport { ScoreSaberItem, ScoreSaberUser } from '@/service/api/interfaces/scoresaber'\n\ninterface SSPlayerProps {\n leaderItems: ScoreSaberItem[]\n scoreUser: ScoreSaberUser\n params?: Record<string, string>\n bg: string\n}\n\nexport default function SSPlayerPage({\n leaderItems,\n scoreUser,\n bg,\n params,\n}: SSPlayerProps) {\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[1200px] my-auto'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white rounded-lg flex flex-col space-y-2 z-10'\n }\n >\n <div className={'flex space-x-4 pb-2'}>\n <img\n className={'h-32 w-32 rounded-md'}\n src={scoreUser.profilePicture}\n loading={'eager'}\n // fallback={scoreUser.name.slice(0, 1)}\n />\n <div className={'flex flex-col justify-between'}>\n <span className={'text-3xl font-bold'}>{scoreUser.name}</span>\n <div className={'flex space-x-2 text-md font-bold items-center'}>\n <span className=\"flex items-center space-x-1\">\n <EarchIcon />\n <span># {scoreUser.rank}</span>\n </span>\n <span className=\"flex items-center space-x-1\">\n <Flags flagNationCode={scoreUser.country} />\n <span># {scoreUser.countryRank}</span>\n </span>\n </div>\n <div\n className={twJoin(\n 'text-4xl font-bold ',\n ' bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300',\n 'text-orange-100'\n )}\n >\n {scoreUser.pp.toFixed(3)} PP\n </div>\n </div>\n <div\n className={\n 'text-4xl pl-40 items-center flex text-gray-100 opacity-70'\n }\n >\n <span>coming soon, ... maybe?</span>\n </div>\n </div>\n <div className={'grid grid-cols-4 gap-2'}>\n {leaderItems.map((item, idx) => (\n <ScoreItem scoreItem={item} key={idx} />\n ))}\n </div>\n </div>\n\n <img\n src={bg}\n className={\n 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center'\n }\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBI;AAnBJ,kBAAiC;AACjC,qBAAuB;AACvB,2BAAsB;AAUP,SAAR,aAA8B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAkB;AAChB,SACE,2EACE;AAAA,IAAC;AAAA;AAAA,MACC,WACE;AAAA,MAEF,IAAG;AAAA,MAEH;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WACE;AAAA,YAGF;AAAA,2DAAC,SAAI,WAAW,uBACd;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAW;AAAA,oBACX,KAAK,UAAU;AAAA,oBACf,SAAS;AAAA;AAAA,gBAEX;AAAA,gBACA,6CAAC,SAAI,WAAW,iCACd;AAAA,8DAAC,UAAK,WAAW,sBAAuB,oBAAU,MAAK;AAAA,kBACvD,6CAAC,SAAI,WAAW,iDACd;AAAA,iEAAC,UAAK,WAAU,+BACd;AAAA,kEAAC,yBAAU;AAAA,sBACX,6CAAC,UAAK;AAAA;AAAA,wBAAG,UAAU;AAAA,yBAAK;AAAA,uBAC1B;AAAA,oBACA,6CAAC,UAAK,WAAU,+BACd;AAAA,kEAAC,YAAAA,SAAA,EAAM,gBAAgB,UAAU,SAAS;AAAA,sBAC1C,6CAAC,UAAK;AAAA;AAAA,wBAAG,UAAU;AAAA,yBAAY;AAAA,uBACjC;AAAA,qBACF;AAAA,kBACA;AAAA,oBAAC;AAAA;AAAA,sBACC,eAAW;AAAA,wBACT;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF;AAAA,sBAEC;AAAA,kCAAU,GAAG,QAAQ,CAAC;AAAA,wBAAE;AAAA;AAAA;AAAA,kBAC3B;AAAA,mBACF;AAAA,gBACA;AAAA,kBAAC;AAAA;AAAA,oBACC,WACE;AAAA,oBAGF,sDAAC,UAAK,qCAAuB;AAAA;AAAA,gBAC/B;AAAA,iBACF;AAAA,cACA,4CAAC,SAAI,WAAW,0BACb,sBAAY,IAAI,CAAC,MAAM,QACtB,4CAAC,qBAAAC,SAAA,EAAU,WAAW,QAAW,GAAK,CACvC,GACH;AAAA;AAAA;AAAA,QACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,WACE;AAAA,YAEF,SAAS;AAAA;AAAA,QACX;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;","names":["Flags","ScoreItem"]}
1
+ {"version":3,"sources":["../../../../src/components/pages/ss-player.tsx"],"sourcesContent":["import Flags, { EarchIcon } from '../components/flag'\nimport { twJoin } from '../utils/tw-join'\nimport ScoreItem from '../components/ss-score-item'\nimport { ScoreSaberItem, ScoreSaberUser } from '@/services/api/interfaces/scoresaber'\nimport React from 'react'\n\ninterface SSPlayerProps {\n leaderItems: ScoreSaberItem[]\n scoreUser: ScoreSaberUser\n params?: Record<string, string>\n bg: string\n}\n\nexport default function SSPlayerPage({\n leaderItems,\n scoreUser,\n bg,\n params,\n}: SSPlayerProps) {\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[1200px] my-auto'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white rounded-lg flex flex-col space-y-2 z-10'\n }\n >\n <div className={'flex space-x-4 pb-2'}>\n <img\n className={'h-32 w-32 rounded-md'}\n src={scoreUser.profilePicture}\n loading={'eager'}\n // fallback={scoreUser.name.slice(0, 1)}\n />\n <div className={'flex flex-col justify-between'}>\n <span className={'text-3xl font-bold'}>{scoreUser.name}</span>\n <div className={'flex space-x-2 text-md font-bold items-center'}>\n <span className=\"flex items-center space-x-1\">\n <EarchIcon />\n <span># {scoreUser.rank}</span>\n </span>\n <span className=\"flex items-center space-x-1\">\n <Flags flagNationCode={scoreUser.country} />\n <span># {scoreUser.countryRank}</span>\n </span>\n </div>\n <div\n className={twJoin(\n 'text-4xl font-bold ',\n ' bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300',\n 'text-orange-100'\n )}\n >\n {scoreUser.pp.toFixed(3)} PP\n </div>\n </div>\n <div\n className={\n 'text-4xl pl-40 items-center flex text-gray-100 opacity-70'\n }\n >\n <span>coming soon, ... maybe?</span>\n </div>\n </div>\n <div className={'grid grid-cols-4 gap-2'}>\n {leaderItems.map((item, idx) => (\n <ScoreItem scoreItem={item} key={idx} />\n ))}\n </div>\n </div>\n\n <img\n src={bg}\n className={\n 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center'\n }\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiC;AACjC,qBAAuB;AACvB,2BAAsB;AAEtB,mBAAkB;AASH,SAAR,aAA8B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAkB;AAChB,SACE,6BAAAA,QAAA,2BAAAA,QAAA,gBACE,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,WACE;AAAA,MAEF,IAAG;AAAA;AAAA,IAEH,6BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,WACE;AAAA;AAAA,MAGF,6BAAAA,QAAA,cAAC,SAAI,WAAW,yBACd,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,UACX,KAAK,UAAU;AAAA,UACf,SAAS;AAAA;AAAA,MAEX,GACA,6BAAAA,QAAA,cAAC,SAAI,WAAW,mCACd,6BAAAA,QAAA,cAAC,UAAK,WAAW,wBAAuB,UAAU,IAAK,GACvD,6BAAAA,QAAA,cAAC,SAAI,WAAW,mDACd,6BAAAA,QAAA,cAAC,UAAK,WAAU,iCACd,6BAAAA,QAAA,cAAC,2BAAU,GACX,6BAAAA,QAAA,cAAC,cAAK,MAAG,UAAU,IAAK,CAC1B,GACA,6BAAAA,QAAA,cAAC,UAAK,WAAU,iCACd,6BAAAA,QAAA,cAAC,YAAAC,SAAA,EAAM,gBAAgB,UAAU,SAAS,GAC1C,6BAAAD,QAAA,cAAC,cAAK,MAAG,UAAU,WAAY,CACjC,CACF,GACA,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,eAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,QAEC,UAAU,GAAG,QAAQ,CAAC;AAAA,QAAE;AAAA,MAC3B,CACF,GACA,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,WACE;AAAA;AAAA,QAGF,6BAAAA,QAAA,cAAC,cAAK,yBAAuB;AAAA,MAC/B,CACF;AAAA,MACA,6BAAAA,QAAA,cAAC,SAAI,WAAW,4BACb,YAAY,IAAI,CAAC,MAAM,QACtB,6BAAAA,QAAA,cAAC,qBAAAE,SAAA,EAAU,WAAW,MAAM,KAAK,KAAK,CACvC,CACH;AAAA,IACF;AAAA,IAEA,6BAAAF,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WACE;AAAA,QAEF,SAAS;AAAA;AAAA,IACX;AAAA,EACF,CACF;AAEJ;","names":["React","Flags","ScoreItem"]}
@@ -56,8 +56,8 @@ __export(bsorReplayAcc_exports, {
56
56
  processUnderswings: () => processUnderswings
57
57
  });
58
58
  module.exports = __toCommonJS(bsorReplayAcc_exports);
59
- var import_bsorDecoder = require("./bsorDecoder");
60
- var import_beatleader2 = require("./beatleader");
59
+ var import_bsorDecoder = require("./bsorDecoder.js");
60
+ var import_beatleader2 = require("./beatleader.js");
61
61
  const NoteScoringType = {
62
62
  Ignore: -1,
63
63
  NoScore: 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/utils/bl/bsorReplayAcc.ts"],"sourcesContent":["import { BSOR, BSORNote, NoteCutInfo } from \"@/service/api/interfaces/beatleader\";\nimport { NoteEventType } from \"./bsorDecoder\";\nimport { createDistanceWeightFunction } from \"./beatleader\";\n\nconst NoteScoringType = {\n Ignore: -1,\n NoScore: 0,\n Normal: 1,\n SliderHead: 2,\n SliderTail: 3,\n BurstSliderHead: 4,\n BurstSliderElement: 5,\n};\n\nexport function processAccuracySpread(replay: BSOR) {\n if (replay == null) return null;\n\n const result = {\n totalLeftCount: 0.0,\n leftCount: [] as number[],\n leftTD: [] as number[],\n\n totalRightCount: 0.0,\n rightCount: [] as number[],\n rightTD: [] as number[],\n\n timeDeviation: [] as number[],\n\n maxCount: 0,\n maxTD: 0.0,\n maxTimeDeviation: 0.0,\n } as any;\n\n if (!replay?.notes?.length) return result;\n\n const timings = [] as any[];\n\n for (let i = 0; i <= 15; i++) {\n result.leftCount.push(0.0);\n result.leftTD.push(0.0);\n result.rightCount.push(0.0);\n result.rightTD.push(0.0);\n result.timeDeviation.push(0.0);\n timings.push([]);\n }\n\n for (let i = 0; i < replay.notes.length; i++) {\n const note = replay.notes[i] as BSORNote;\n if (note.eventType !== NoteEventType.good) continue;\n const noteData = decodeNoteData(note.noteID);\n if (noteData.scoringType !== NoteScoringType.Normal) continue;\n const acc = getAccForDistance(note.noteCutInfo.cutDistanceToCenter);\n const td = Math.abs(note.noteCutInfo.cutNormal.z);\n\n if (note.noteCutInfo.saberType === 0) {\n result.totalLeftCount += 1.0;\n result.leftCount[acc] += 1.0;\n result.leftTD[acc] += td;\n } else {\n result.totalRightCount += 1.0;\n result.rightCount[acc] += 1.0;\n result.rightTD[acc] += td;\n }\n\n result.timeDeviation[acc] += note.noteCutInfo.timeDeviation;\n timings[acc].push(note.noteCutInfo.timeDeviation);\n }\n\n for (let i = 0; i <= 15; i++) {\n //<-- Averages ---\n const totalCount = result.rightCount[i] + result.leftCount[i];\n result.leftTD[i] =\n result.leftCount[i] > 0 ? result.leftTD[i] / result.leftCount[i] : null;\n result.rightTD[i] =\n result.rightCount[i] > 0\n ? result.rightTD[i] / result.rightCount[i]\n : null;\n result.timeDeviation[i] =\n totalCount > 0 ? result.timeDeviation[i] / totalCount : null;\n\n result.leftCount[i] /= result.totalLeftCount;\n result.rightCount[i] /= result.totalRightCount;\n\n //<-- TimeDeviation ---\n result.timeDeviation[i] = getStandardDeviation(\n timings[i],\n result.timeDeviation[i],\n );\n\n //<-- Min / Max ---\n if (result.leftCount[i] > result.maxCount)\n result.maxCount = result.leftCount[i];\n if (result.rightCount[i] > result.maxCount)\n result.maxCount = result.rightCount[i];\n\n if (result.leftTD[i] > result.maxTD) result.maxTD = result.leftTD[i];\n if (result.rightTD[i] > result.maxTD) result.maxTD = result.rightTD[i];\n\n if (result.timeDeviation[i] > result.maxTimeDeviation)\n result.maxTimeDeviation = result.timeDeviation[i];\n }\n\n return result;\n}\n\nfunction decodeNoteData(noteId: number) {\n const result = {} as any;\n\n result.cutDirection = Math.round(noteId % 10);\n noteId /= 10;\n result.colorType = Math.round(noteId % 10);\n noteId /= 10;\n result.noteLineLayer = Math.round(noteId % 10);\n noteId /= 10;\n result.lineIndex = Math.round(noteId % 10);\n noteId /= 10;\n result.scoringType = Math.round((noteId -= 2) < -1 ? noteId + 3 : noteId);\n\n return result;\n}\n\nfunction getAccForDistance(cutDistanceToCenter: number) {\n let mul = 1 - cutDistanceToCenter / 0.3;\n if (mul > 1) mul = 1;\n if (mul < 0) mul = 0;\n return Math.round(15.0 * mul);\n}\n\nconst SummaryGroup = {\n Midlanes: 0,\n Outerlanes: 1,\n Crossovers: 2,\n Forehands: 3,\n Backhands: 4,\n};\n\nfunction getStandardDeviation(numArray: number[], mean: number) {\n if (numArray.length === 0) return null;\n\n let sqrSum = 0.0;\n numArray.forEach((num: number) => {\n sqrSum += Math.pow(num - mean, 2);\n });\n return Math.sqrt(sqrSum / numArray.length);\n}\n\nfunction getScore(noteCutInfo: any) {\n let score = 0.0;\n score += getAccForDistance(noteCutInfo.cutDistanceToCenter);\n score += getPreSwingScore(noteCutInfo.beforeCutRating);\n score += getPostSwingScore(noteCutInfo.afterCutRating);\n return score;\n}\n\nfunction getPreSwingScore(preSwingRating: number) {\n if (preSwingRating > 1) preSwingRating = 1;\n if (preSwingRating < 0) preSwingRating = 0;\n return Math.round(preSwingRating * 70);\n}\n\nfunction getPostSwingScore(postSwingRating: number) {\n if (postSwingRating > 1) postSwingRating = 1;\n if (postSwingRating < 0) postSwingRating = 0;\n return Math.round(postSwingRating * 30);\n}\n\nconst accGraphResolution = 100;\nconst smoothPeriodPercentage = 0.02;\nconst weightFunctionSteepness = 3.0;\n\nexport function processAccGraphs(replay: BSOR) {\n if (replay == null) return null;\n\n const result = {\n times: [] as any[],\n fullSwingBySaber: {\n red: [] as any[],\n blue: [] as any[],\n total: [] as any[],\n } as any,\n realScoreBySaber: {\n red: [] as any[],\n blue: [] as any[],\n total: [] as any[],\n } as any,\n };\n\n if (!replay?.notes?.length) return result;\n\n const lastNoteTime = replay.notes[replay.notes.length - 1].eventTime;\n const distanceWeightFunction = createDistanceWeightFunction(\n lastNoteTime * smoothPeriodPercentage,\n weightFunctionSteepness,\n );\n\n for (let i = 0.0; i < accGraphResolution; i += 1.0) {\n const time = lastNoteTime * (i / (accGraphResolution - 1));\n\n const sumsBySaber = {\n red: [0.0, 0.0],\n blue: [0.0, 0.0],\n total: [0.0, 0.0],\n } as any;\n const dividerBySaber = { red: 0.0, blue: 0.0, total: 0.0 } as any;\n\n for (let j = 0; j < replay.notes.length; j++) {\n const note = replay.notes[j];\n if (note.eventType !== NoteEventType.good) continue;\n const noteData = decodeNoteData(note.noteID);\n if (noteData.scoringType !== NoteScoringType.Normal) continue;\n\n const weight = distanceWeightFunction.getWeight(note.eventTime - time);\n\n const acc = getAccForDistance(note.noteCutInfo.cutDistanceToCenter);\n const pre = getPreSwingScore(note.noteCutInfo.beforeCutRating);\n const post = getPostSwingScore(note.noteCutInfo.afterCutRating);\n\n const fullSwing = acc + 100;\n const realScore = acc + pre + post;\n\n sumsBySaber.total[0] += fullSwing * weight;\n sumsBySaber.total[1] += realScore * weight;\n dividerBySaber.total += weight;\n\n const saberType = note.noteCutInfo.saberType === 0 ? \"red\" : \"blue\";\n sumsBySaber[saberType][0] += fullSwing * weight;\n sumsBySaber[saberType][1] += realScore * weight;\n dividerBySaber[saberType] += weight;\n }\n\n result.times.push(time);\n\n [\"red\", \"blue\", \"total\"].forEach((saberType) => {\n result.fullSwingBySaber[saberType].push(\n dividerBySaber[saberType] === 0\n ? 0.0\n : sumsBySaber[saberType][0] / dividerBySaber[saberType],\n );\n result.realScoreBySaber[saberType].push(\n dividerBySaber[saberType] === 0\n ? 0.0\n : sumsBySaber[saberType][1] / dividerBySaber[saberType],\n );\n });\n }\n\n return result;\n}\n\n//endregion\n\n//region SliceSummary\n\nexport function processSliceSummary(replay: any) {\n if (replay == null) return null;\n\n function createEmptySummary(label: any) {\n return {\n label,\n left: { count: 0, averageScore: 0.0, averageTD: 0.0 },\n right: { count: 0, averageScore: 0.0, averageTD: 0.0 },\n };\n }\n\n const result = [\n createEmptySummary(\"Midlanes\"),\n createEmptySummary(\"Outerlanes\"),\n createEmptySummary(\"Crossovers\"),\n createEmptySummary(\"Forehands\"),\n createEmptySummary(\"Backhands\"),\n ] as any;\n\n if (!replay?.notes?.length) return result;\n\n function getLaneSummaryEntry(noteLineIndex: any, saberType: any) {\n const summaryGroup = getLaneSummaryGroup(noteLineIndex, saberType);\n return saberType === 0\n ? result[summaryGroup].left\n : result[summaryGroup].right;\n }\n\n function getParitySummaryEntry(noteCutInfo: NoteCutInfo, saberType: any) {\n const summaryGroup = getParitySummaryGroup(noteCutInfo);\n return saberType === 0\n ? result[summaryGroup].left\n : result[summaryGroup].right;\n }\n\n function addScore(handSummary: any, score: any, td: any) {\n handSummary.count += 1;\n handSummary.averageScore += score;\n handSummary.averageTD += td;\n }\n\n function applyAverage(handSummary: any) {\n if (handSummary.count === 0) return;\n handSummary.averageScore /= handSummary.count;\n handSummary.averageTD /= handSummary.count;\n }\n\n for (let i = 0; i < replay.notes.length; i++) {\n const note = replay.notes[i];\n if (note.eventType !== NoteEventType.good) continue;\n const noteData = decodeNoteData(note.noteID);\n if (noteData.scoringType !== NoteScoringType.Normal) continue;\n\n const laneSummaryEntry = getLaneSummaryEntry(\n noteData.lineIndex,\n note.noteCutInfo.saberType,\n );\n const paritySummaryEntry = getParitySummaryEntry(\n note.noteCutInfo,\n note.noteCutInfo.saberType,\n );\n\n const score = getScore(note.noteCutInfo);\n const td = Math.abs(note.noteCutInfo.cutNormal.z);\n addScore(laneSummaryEntry, score, td);\n addScore(paritySummaryEntry, score, td);\n }\n\n result.forEach((summary: any) => {\n applyAverage(summary.left);\n applyAverage(summary.right);\n });\n\n return result;\n}\n\n//endregion\n\n//region SliceDetails\n\nexport function processSliceDetails(replay: any) {\n if (replay == null) return null;\n\n const result = {\n mainGrid: [] as any[],\n summaryGrids: [] as any[],\n };\n\n for (let i = 0; i < 12; i++) {\n const mainGridCell = {\n count: 0,\n averageScore: 0.0,\n left: [] as any[],\n right: [] as any[],\n };\n for (let j = 0; j < 9; j++) {\n mainGridCell.left.push({ count: 0, averageScore: 0.0 });\n mainGridCell.right.push({ count: 0, averageScore: 0.0 });\n }\n result.mainGrid.push(mainGridCell);\n }\n\n for (let summaryGroup = 0; summaryGroup < 5; summaryGroup++) {\n const summaryGrid = [];\n for (let i = 0; i < 12; i++) {\n summaryGrid.push({ count: 0, averageScore: 0.0 });\n }\n result.summaryGrids.push(summaryGrid);\n }\n\n if (!replay?.notes?.length) return result;\n\n function addScore(cell: any, score: any) {\n cell.count += 1;\n cell.averageScore += score;\n }\n\n function applyAverageScore(cell: any) {\n if (cell.count === 0) return;\n cell.averageScore /= cell.count;\n }\n\n for (let i = 0; i < replay.notes.length; i++) {\n const note = replay.notes[i];\n if (note.eventType !== NoteEventType.good) continue;\n const noteData = decodeNoteData(note.noteID);\n if (noteData.scoringType !== NoteScoringType.Normal) continue;\n\n const mainGridIndex = getMainGridIndex(\n noteData.noteLineLayer,\n noteData.lineIndex,\n );\n const secondaryGridIndex = getSecondaryGridIndex(noteData.cutDirection);\n const laneSummaryGroup = getLaneSummaryGroup(\n noteData.lineIndex,\n note.noteCutInfo.saberType,\n );\n const paritySummaryGroup = getParitySummaryGroup(note.noteCutInfo);\n\n const mainCell = result.mainGrid[mainGridIndex];\n let secondaryCell;\n if (note.noteCutInfo.saberType === 0) {\n secondaryCell = mainCell.left[secondaryGridIndex];\n } else {\n secondaryCell = mainCell.right[secondaryGridIndex];\n }\n const laneSummaryCell =\n result.summaryGrids[laneSummaryGroup][mainGridIndex];\n const paritySummaryCell =\n result.summaryGrids[paritySummaryGroup][mainGridIndex];\n\n const score = getScore(note.noteCutInfo);\n addScore(mainCell, score);\n addScore(secondaryCell, score);\n addScore(laneSummaryCell, score);\n addScore(paritySummaryCell, score);\n }\n\n for (let i = 0; i < 12; i++) {\n const mainCell = result.mainGrid[i];\n applyAverageScore(mainCell);\n\n for (let j = 0; j < 9; j++) {\n applyAverageScore(mainCell.left[j]);\n applyAverageScore(mainCell.right[j]);\n }\n }\n\n for (let summaryGroup = 0; summaryGroup < 5; summaryGroup++) {\n const summaryGrid = result.summaryGrids[summaryGroup];\n for (let i = 0; i < 12; i++) {\n applyAverageScore(summaryGrid[i]);\n }\n }\n\n return result;\n}\n\nexport const NoteCutDirection = {\n Up: 0,\n Down: 1,\n Left: 2,\n Right: 3,\n UpLeft: 4,\n UpRight: 5,\n DownLeft: 6,\n DownRight: 7,\n Any: 8,\n None: 9,\n};\n\nexport const NoteLineLayer = {\n Base: 0,\n Upper: 1,\n Top: 2,\n};\n\nexport const ColorType = {\n None: -1,\n ColorA: 0,\n ColorB: 1,\n};\nfunction getMainGridIndex(noteLineLayer: any, noteLineIndex: any) {\n switch (noteLineLayer) {\n case NoteLineLayer.Top:\n return noteLineIndex;\n case NoteLineLayer.Upper:\n return noteLineIndex + 4;\n case NoteLineLayer.Base:\n return noteLineIndex + 8;\n }\n return -1;\n}\n\nfunction getSecondaryGridIndex(noteCutDirection: any) {\n switch (noteCutDirection) {\n case NoteCutDirection.UpLeft:\n return 0;\n case NoteCutDirection.Up:\n return 1;\n case NoteCutDirection.UpRight:\n return 2;\n case NoteCutDirection.Left:\n return 3;\n case NoteCutDirection.Any:\n return 4;\n case NoteCutDirection.Right:\n return 5;\n case NoteCutDirection.DownLeft:\n return 6;\n case NoteCutDirection.Down:\n return 7;\n case NoteCutDirection.DownRight:\n return 8;\n }\n return -1;\n}\n\n//endregion\n\n//region Utils\n\nfunction getParitySummaryGroup(noteCutInfo: NoteCutInfo) {\n const isForehand = noteCutInfo.cutNormal.x < 0;\n return isForehand ? SummaryGroup.Forehands : SummaryGroup.Backhands;\n}\n\nfunction getLaneSummaryGroup(noteLineIndex: any, saberType: any) {\n switch (saberType) {\n case 0:\n if (noteLineIndex >= 2) return SummaryGroup.Crossovers;\n break;\n case 1:\n if (noteLineIndex <= 1) return SummaryGroup.Crossovers;\n break;\n }\n if (noteLineIndex === 1 || noteLineIndex === 2) return SummaryGroup.Midlanes;\n return SummaryGroup.Outerlanes;\n}\n\n//endregion\n\nconst createMultiplierCounter = () => {\n const MAX_MULTIPLIER = 8;\n\n let value = 1;\n let progress = 1;\n\n const inc = () => {\n if (value >= MAX_MULTIPLIER) return MAX_MULTIPLIER;\n\n if (progress + 1 >= value * 2) {\n value *= 2;\n progress = 0;\n } else {\n progress++;\n }\n\n return value;\n };\n const dec = () => {\n if (value > 1) {\n value /= 2;\n }\n\n progress = 1;\n\n return value;\n };\n\n return {\n get: () => value,\n inc,\n dec,\n };\n};\n\nconst clamp = (num: number, min: number, max: number) =>\n Math.min(Math.max(num, min), max);\n\nconst getNoteType = (noteId: number) => {\n if (!Number.isFinite(noteId) || noteId >= 80000) return null;\n\n return Math.floor(noteId / 10000);\n};\n\nconst getNoteScore = (noteData: any, noteCutInfo: any) => {\n let beforeCut = 0,\n accuracy = 0,\n afterCut = 0;\n\n if (noteData.scoringType === NoteScoringType.SliderTail) {\n beforeCut = 70;\n } else if (noteData.scoringType !== NoteScoringType.BurstSliderElement) {\n beforeCut = Math.round(clamp(noteCutInfo.beforeCutRating * 70, 0, 70));\n }\n\n if (noteData.scoringType === NoteScoringType.SliderHead) {\n afterCut = 30;\n } else if (\n ![\n NoteScoringType.BurstSliderElement,\n NoteScoringType.BurstSliderHead,\n ].includes(noteData.scoringType)\n ) {\n afterCut = Math.round(clamp(noteCutInfo.afterCutRating * 30, 0, 30));\n }\n\n if (noteData.scoringType === NoteScoringType.BurstSliderElement) {\n accuracy = 20;\n } else {\n accuracy = Math.round(\n 15 * (1 - clamp(noteCutInfo.cutDistanceToCenter / 0.3, 0, 1)),\n );\n }\n\n return beforeCut + accuracy + afterCut;\n};\n\nexport function processUnderswings(replay: any) {\n if (!replay) return null;\n\n if (!replay?.notes?.length)\n return {\n count: 0,\n acc: 0,\n fcAcc: 0,\n noUnderswingsAcc: 0,\n noUnderswingsFcAcc: 0,\n score: 0,\n fcScore: 0,\n noUnderswingsScore: 0,\n noUnderswingsFcScore: 0,\n maxCutScore: 0,\n maxSongScore: 0,\n };\n\n const multiplier = createMultiplierCounter();\n const fcMultiplier = createMultiplierCounter();\n\n const result = [...replay.notes, ...(replay.walls ?? [])]\n .map((e, idx) => ({ ...e, idx, eventTime: e?.eventTime ?? e?.time }))\n .sort((a, b) =>\n a.eventTime === b.eventTime ? a.idx - b.idx : a.eventTime - b.eventTime,\n )\n .reduce(\n (acc, event) => {\n if (\n !Number.isFinite(event?.eventType) ||\n NoteEventType.bomb === event.eventType\n ) {\n acc.multiplier.dec();\n return acc;\n }\n\n const noteData = decodeNoteData(event.noteID);\n if (noteData < NoteScoringType.Normal) return acc;\n\n const maxNoteScore = getNoteScore(noteData, {\n cutDistanceToCenter: 0,\n beforeCutRating: 1,\n afterCutRating: 1,\n });\n\n switch (event.eventType) {\n case NoteEventType.good:\n const realScore = getNoteScore(noteData, event.noteCutInfo);\n const fullSwing = getNoteScore(noteData, {\n cutDistanceToCenter: event.noteCutInfo.cutDistanceToCenter,\n beforeCutRating: 1,\n afterCutRating: 1,\n });\n\n acc.count++;\n acc.score += realScore * multiplier.get();\n acc.noUnderswingsScore += fullSwing * multiplier.get();\n acc.fcScore += realScore * fcMultiplier.get();\n acc.noUnderswingsFcScore += fullSwing * fcMultiplier.get();\n acc.maxCutScore += maxNoteScore * fcMultiplier.get();\n acc.multiplier.inc();\n break;\n\n case NoteEventType.bad:\n case NoteEventType.miss:\n acc.multiplier.dec();\n break;\n }\n\n acc.maxSongScore += maxNoteScore * fcMultiplier.get();\n acc.fcMultiplier.inc();\n\n return acc;\n },\n {\n count: 0,\n maxCutScore: 0,\n maxSongScore: 0,\n score: 0,\n fcScore: 0,\n noUnderswingsScore: 0,\n noUnderswingsFcScore: 0,\n multiplier,\n fcMultiplier,\n },\n );\n\n const { multiplier: foo, fcMultiplier: bar, ...rest } = result;\n\n return {\n ...rest,\n maxCutScore: result.maxCutScore,\n maxSongScore: result.maxSongScore,\n acc: result.maxSongScore ? (result.score / result.maxSongScore) * 100 : 0,\n fcAcc: result.maxCutScore ? (result.fcScore / result.maxCutScore) * 100 : 0,\n noUnderswingsAcc: result.maxSongScore\n ? (result.noUnderswingsScore / result.maxSongScore) * 100\n : 0,\n noUnderswingsFcAcc: result.maxCutScore\n ? (result.noUnderswingsFcScore / result.maxCutScore) * 100\n : 0,\n };\n}\n"],"mappings":"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","names":["import_beatleader","_a"]}
1
+ {"version":3,"sources":["../../../../../src/components/utils/bl/bsorReplayAcc.ts"],"sourcesContent":["import { BSOR, BSORNote, NoteCutInfo } from \"@/services/api/interfaces/beatleader\";\nimport { NoteEventType } from \"./bsorDecoder\";\nimport { createDistanceWeightFunction } from \"./beatleader\";\n\nconst NoteScoringType = {\n Ignore: -1,\n NoScore: 0,\n Normal: 1,\n SliderHead: 2,\n SliderTail: 3,\n BurstSliderHead: 4,\n BurstSliderElement: 5,\n};\n\nexport function processAccuracySpread(replay: BSOR) {\n if (replay == null) return null;\n\n const result = {\n totalLeftCount: 0.0,\n leftCount: [] as number[],\n leftTD: [] as number[],\n\n totalRightCount: 0.0,\n rightCount: [] as number[],\n rightTD: [] as number[],\n\n timeDeviation: [] as number[],\n\n maxCount: 0,\n maxTD: 0.0,\n maxTimeDeviation: 0.0,\n } as any;\n\n if (!replay?.notes?.length) return result;\n\n const timings = [] as any[];\n\n for (let i = 0; i <= 15; i++) {\n result.leftCount.push(0.0);\n result.leftTD.push(0.0);\n result.rightCount.push(0.0);\n result.rightTD.push(0.0);\n result.timeDeviation.push(0.0);\n timings.push([]);\n }\n\n for (let i = 0; i < replay.notes.length; i++) {\n const note = replay.notes[i] as BSORNote;\n if (note.eventType !== NoteEventType.good) continue;\n const noteData = decodeNoteData(note.noteID);\n if (noteData.scoringType !== NoteScoringType.Normal) continue;\n const acc = getAccForDistance(note.noteCutInfo.cutDistanceToCenter);\n const td = Math.abs(note.noteCutInfo.cutNormal.z);\n\n if (note.noteCutInfo.saberType === 0) {\n result.totalLeftCount += 1.0;\n result.leftCount[acc] += 1.0;\n result.leftTD[acc] += td;\n } else {\n result.totalRightCount += 1.0;\n result.rightCount[acc] += 1.0;\n result.rightTD[acc] += td;\n }\n\n result.timeDeviation[acc] += note.noteCutInfo.timeDeviation;\n timings[acc].push(note.noteCutInfo.timeDeviation);\n }\n\n for (let i = 0; i <= 15; i++) {\n //<-- Averages ---\n const totalCount = result.rightCount[i] + result.leftCount[i];\n result.leftTD[i] =\n result.leftCount[i] > 0 ? result.leftTD[i] / result.leftCount[i] : null;\n result.rightTD[i] =\n result.rightCount[i] > 0\n ? result.rightTD[i] / result.rightCount[i]\n : null;\n result.timeDeviation[i] =\n totalCount > 0 ? result.timeDeviation[i] / totalCount : null;\n\n result.leftCount[i] /= result.totalLeftCount;\n result.rightCount[i] /= result.totalRightCount;\n\n //<-- TimeDeviation ---\n result.timeDeviation[i] = getStandardDeviation(\n timings[i],\n result.timeDeviation[i],\n );\n\n //<-- Min / Max ---\n if (result.leftCount[i] > result.maxCount)\n result.maxCount = result.leftCount[i];\n if (result.rightCount[i] > result.maxCount)\n result.maxCount = result.rightCount[i];\n\n if (result.leftTD[i] > result.maxTD) result.maxTD = result.leftTD[i];\n if (result.rightTD[i] > result.maxTD) result.maxTD = result.rightTD[i];\n\n if (result.timeDeviation[i] > result.maxTimeDeviation)\n result.maxTimeDeviation = result.timeDeviation[i];\n }\n\n return result;\n}\n\nfunction decodeNoteData(noteId: number) {\n const result = {} as any;\n\n result.cutDirection = Math.round(noteId % 10);\n noteId /= 10;\n result.colorType = Math.round(noteId % 10);\n noteId /= 10;\n result.noteLineLayer = Math.round(noteId % 10);\n noteId /= 10;\n result.lineIndex = Math.round(noteId % 10);\n noteId /= 10;\n result.scoringType = Math.round((noteId -= 2) < -1 ? noteId + 3 : noteId);\n\n return result;\n}\n\nfunction getAccForDistance(cutDistanceToCenter: number) {\n let mul = 1 - cutDistanceToCenter / 0.3;\n if (mul > 1) mul = 1;\n if (mul < 0) mul = 0;\n return Math.round(15.0 * mul);\n}\n\nconst SummaryGroup = {\n Midlanes: 0,\n Outerlanes: 1,\n Crossovers: 2,\n Forehands: 3,\n Backhands: 4,\n};\n\nfunction getStandardDeviation(numArray: number[], mean: number) {\n if (numArray.length === 0) return null;\n\n let sqrSum = 0.0;\n numArray.forEach((num: number) => {\n sqrSum += Math.pow(num - mean, 2);\n });\n return Math.sqrt(sqrSum / numArray.length);\n}\n\nfunction getScore(noteCutInfo: any) {\n let score = 0.0;\n score += getAccForDistance(noteCutInfo.cutDistanceToCenter);\n score += getPreSwingScore(noteCutInfo.beforeCutRating);\n score += getPostSwingScore(noteCutInfo.afterCutRating);\n return score;\n}\n\nfunction getPreSwingScore(preSwingRating: number) {\n if (preSwingRating > 1) preSwingRating = 1;\n if (preSwingRating < 0) preSwingRating = 0;\n return Math.round(preSwingRating * 70);\n}\n\nfunction getPostSwingScore(postSwingRating: number) {\n if (postSwingRating > 1) postSwingRating = 1;\n if (postSwingRating < 0) postSwingRating = 0;\n return Math.round(postSwingRating * 30);\n}\n\nconst accGraphResolution = 100;\nconst smoothPeriodPercentage = 0.02;\nconst weightFunctionSteepness = 3.0;\n\nexport function processAccGraphs(replay: BSOR) {\n if (replay == null) return null;\n\n const result = {\n times: [] as any[],\n fullSwingBySaber: {\n red: [] as any[],\n blue: [] as any[],\n total: [] as any[],\n } as any,\n realScoreBySaber: {\n red: [] as any[],\n blue: [] as any[],\n total: [] as any[],\n } as any,\n };\n\n if (!replay?.notes?.length) return result;\n\n const lastNoteTime = replay.notes[replay.notes.length - 1].eventTime;\n const distanceWeightFunction = createDistanceWeightFunction(\n lastNoteTime * smoothPeriodPercentage,\n weightFunctionSteepness,\n );\n\n for (let i = 0.0; i < accGraphResolution; i += 1.0) {\n const time = lastNoteTime * (i / (accGraphResolution - 1));\n\n const sumsBySaber = {\n red: [0.0, 0.0],\n blue: [0.0, 0.0],\n total: [0.0, 0.0],\n } as any;\n const dividerBySaber = { red: 0.0, blue: 0.0, total: 0.0 } as any;\n\n for (let j = 0; j < replay.notes.length; j++) {\n const note = replay.notes[j];\n if (note.eventType !== NoteEventType.good) continue;\n const noteData = decodeNoteData(note.noteID);\n if (noteData.scoringType !== NoteScoringType.Normal) continue;\n\n const weight = distanceWeightFunction.getWeight(note.eventTime - time);\n\n const acc = getAccForDistance(note.noteCutInfo.cutDistanceToCenter);\n const pre = getPreSwingScore(note.noteCutInfo.beforeCutRating);\n const post = getPostSwingScore(note.noteCutInfo.afterCutRating);\n\n const fullSwing = acc + 100;\n const realScore = acc + pre + post;\n\n sumsBySaber.total[0] += fullSwing * weight;\n sumsBySaber.total[1] += realScore * weight;\n dividerBySaber.total += weight;\n\n const saberType = note.noteCutInfo.saberType === 0 ? \"red\" : \"blue\";\n sumsBySaber[saberType][0] += fullSwing * weight;\n sumsBySaber[saberType][1] += realScore * weight;\n dividerBySaber[saberType] += weight;\n }\n\n result.times.push(time);\n\n [\"red\", \"blue\", \"total\"].forEach((saberType) => {\n result.fullSwingBySaber[saberType].push(\n dividerBySaber[saberType] === 0\n ? 0.0\n : sumsBySaber[saberType][0] / dividerBySaber[saberType],\n );\n result.realScoreBySaber[saberType].push(\n dividerBySaber[saberType] === 0\n ? 0.0\n : sumsBySaber[saberType][1] / dividerBySaber[saberType],\n );\n });\n }\n\n return result;\n}\n\n//endregion\n\n//region SliceSummary\n\nexport function processSliceSummary(replay: any) {\n if (replay == null) return null;\n\n function createEmptySummary(label: any) {\n return {\n label,\n left: { count: 0, averageScore: 0.0, averageTD: 0.0 },\n right: { count: 0, averageScore: 0.0, averageTD: 0.0 },\n };\n }\n\n const result = [\n createEmptySummary(\"Midlanes\"),\n createEmptySummary(\"Outerlanes\"),\n createEmptySummary(\"Crossovers\"),\n createEmptySummary(\"Forehands\"),\n createEmptySummary(\"Backhands\"),\n ] as any;\n\n if (!replay?.notes?.length) return result;\n\n function getLaneSummaryEntry(noteLineIndex: any, saberType: any) {\n const summaryGroup = getLaneSummaryGroup(noteLineIndex, saberType);\n return saberType === 0\n ? result[summaryGroup].left\n : result[summaryGroup].right;\n }\n\n function getParitySummaryEntry(noteCutInfo: NoteCutInfo, saberType: any) {\n const summaryGroup = getParitySummaryGroup(noteCutInfo);\n return saberType === 0\n ? result[summaryGroup].left\n : result[summaryGroup].right;\n }\n\n function addScore(handSummary: any, score: any, td: any) {\n handSummary.count += 1;\n handSummary.averageScore += score;\n handSummary.averageTD += td;\n }\n\n function applyAverage(handSummary: any) {\n if (handSummary.count === 0) return;\n handSummary.averageScore /= handSummary.count;\n handSummary.averageTD /= handSummary.count;\n }\n\n for (let i = 0; i < replay.notes.length; i++) {\n const note = replay.notes[i];\n if (note.eventType !== NoteEventType.good) continue;\n const noteData = decodeNoteData(note.noteID);\n if (noteData.scoringType !== NoteScoringType.Normal) continue;\n\n const laneSummaryEntry = getLaneSummaryEntry(\n noteData.lineIndex,\n note.noteCutInfo.saberType,\n );\n const paritySummaryEntry = getParitySummaryEntry(\n note.noteCutInfo,\n note.noteCutInfo.saberType,\n );\n\n const score = getScore(note.noteCutInfo);\n const td = Math.abs(note.noteCutInfo.cutNormal.z);\n addScore(laneSummaryEntry, score, td);\n addScore(paritySummaryEntry, score, td);\n }\n\n result.forEach((summary: any) => {\n applyAverage(summary.left);\n applyAverage(summary.right);\n });\n\n return result;\n}\n\n//endregion\n\n//region SliceDetails\n\nexport function processSliceDetails(replay: any) {\n if (replay == null) return null;\n\n const result = {\n mainGrid: [] as any[],\n summaryGrids: [] as any[],\n };\n\n for (let i = 0; i < 12; i++) {\n const mainGridCell = {\n count: 0,\n averageScore: 0.0,\n left: [] as any[],\n right: [] as any[],\n };\n for (let j = 0; j < 9; j++) {\n mainGridCell.left.push({ count: 0, averageScore: 0.0 });\n mainGridCell.right.push({ count: 0, averageScore: 0.0 });\n }\n result.mainGrid.push(mainGridCell);\n }\n\n for (let summaryGroup = 0; summaryGroup < 5; summaryGroup++) {\n const summaryGrid = [];\n for (let i = 0; i < 12; i++) {\n summaryGrid.push({ count: 0, averageScore: 0.0 });\n }\n result.summaryGrids.push(summaryGrid);\n }\n\n if (!replay?.notes?.length) return result;\n\n function addScore(cell: any, score: any) {\n cell.count += 1;\n cell.averageScore += score;\n }\n\n function applyAverageScore(cell: any) {\n if (cell.count === 0) return;\n cell.averageScore /= cell.count;\n }\n\n for (let i = 0; i < replay.notes.length; i++) {\n const note = replay.notes[i];\n if (note.eventType !== NoteEventType.good) continue;\n const noteData = decodeNoteData(note.noteID);\n if (noteData.scoringType !== NoteScoringType.Normal) continue;\n\n const mainGridIndex = getMainGridIndex(\n noteData.noteLineLayer,\n noteData.lineIndex,\n );\n const secondaryGridIndex = getSecondaryGridIndex(noteData.cutDirection);\n const laneSummaryGroup = getLaneSummaryGroup(\n noteData.lineIndex,\n note.noteCutInfo.saberType,\n );\n const paritySummaryGroup = getParitySummaryGroup(note.noteCutInfo);\n\n const mainCell = result.mainGrid[mainGridIndex];\n let secondaryCell;\n if (note.noteCutInfo.saberType === 0) {\n secondaryCell = mainCell.left[secondaryGridIndex];\n } else {\n secondaryCell = mainCell.right[secondaryGridIndex];\n }\n const laneSummaryCell =\n result.summaryGrids[laneSummaryGroup][mainGridIndex];\n const paritySummaryCell =\n result.summaryGrids[paritySummaryGroup][mainGridIndex];\n\n const score = getScore(note.noteCutInfo);\n addScore(mainCell, score);\n addScore(secondaryCell, score);\n addScore(laneSummaryCell, score);\n addScore(paritySummaryCell, score);\n }\n\n for (let i = 0; i < 12; i++) {\n const mainCell = result.mainGrid[i];\n applyAverageScore(mainCell);\n\n for (let j = 0; j < 9; j++) {\n applyAverageScore(mainCell.left[j]);\n applyAverageScore(mainCell.right[j]);\n }\n }\n\n for (let summaryGroup = 0; summaryGroup < 5; summaryGroup++) {\n const summaryGrid = result.summaryGrids[summaryGroup];\n for (let i = 0; i < 12; i++) {\n applyAverageScore(summaryGrid[i]);\n }\n }\n\n return result;\n}\n\nexport const NoteCutDirection = {\n Up: 0,\n Down: 1,\n Left: 2,\n Right: 3,\n UpLeft: 4,\n UpRight: 5,\n DownLeft: 6,\n DownRight: 7,\n Any: 8,\n None: 9,\n};\n\nexport const NoteLineLayer = {\n Base: 0,\n Upper: 1,\n Top: 2,\n};\n\nexport const ColorType = {\n None: -1,\n ColorA: 0,\n ColorB: 1,\n};\nfunction getMainGridIndex(noteLineLayer: any, noteLineIndex: any) {\n switch (noteLineLayer) {\n case NoteLineLayer.Top:\n return noteLineIndex;\n case NoteLineLayer.Upper:\n return noteLineIndex + 4;\n case NoteLineLayer.Base:\n return noteLineIndex + 8;\n }\n return -1;\n}\n\nfunction getSecondaryGridIndex(noteCutDirection: any) {\n switch (noteCutDirection) {\n case NoteCutDirection.UpLeft:\n return 0;\n case NoteCutDirection.Up:\n return 1;\n case NoteCutDirection.UpRight:\n return 2;\n case NoteCutDirection.Left:\n return 3;\n case NoteCutDirection.Any:\n return 4;\n case NoteCutDirection.Right:\n return 5;\n case NoteCutDirection.DownLeft:\n return 6;\n case NoteCutDirection.Down:\n return 7;\n case NoteCutDirection.DownRight:\n return 8;\n }\n return -1;\n}\n\n//endregion\n\n//region Utils\n\nfunction getParitySummaryGroup(noteCutInfo: NoteCutInfo) {\n const isForehand = noteCutInfo.cutNormal.x < 0;\n return isForehand ? SummaryGroup.Forehands : SummaryGroup.Backhands;\n}\n\nfunction getLaneSummaryGroup(noteLineIndex: any, saberType: any) {\n switch (saberType) {\n case 0:\n if (noteLineIndex >= 2) return SummaryGroup.Crossovers;\n break;\n case 1:\n if (noteLineIndex <= 1) return SummaryGroup.Crossovers;\n break;\n }\n if (noteLineIndex === 1 || noteLineIndex === 2) return SummaryGroup.Midlanes;\n return SummaryGroup.Outerlanes;\n}\n\n//endregion\n\nconst createMultiplierCounter = () => {\n const MAX_MULTIPLIER = 8;\n\n let value = 1;\n let progress = 1;\n\n const inc = () => {\n if (value >= MAX_MULTIPLIER) return MAX_MULTIPLIER;\n\n if (progress + 1 >= value * 2) {\n value *= 2;\n progress = 0;\n } else {\n progress++;\n }\n\n return value;\n };\n const dec = () => {\n if (value > 1) {\n value /= 2;\n }\n\n progress = 1;\n\n return value;\n };\n\n return {\n get: () => value,\n inc,\n dec,\n };\n};\n\nconst clamp = (num: number, min: number, max: number) =>\n Math.min(Math.max(num, min), max);\n\nconst getNoteType = (noteId: number) => {\n if (!Number.isFinite(noteId) || noteId >= 80000) return null;\n\n return Math.floor(noteId / 10000);\n};\n\nconst getNoteScore = (noteData: any, noteCutInfo: any) => {\n let beforeCut = 0,\n accuracy = 0,\n afterCut = 0;\n\n if (noteData.scoringType === NoteScoringType.SliderTail) {\n beforeCut = 70;\n } else if (noteData.scoringType !== NoteScoringType.BurstSliderElement) {\n beforeCut = Math.round(clamp(noteCutInfo.beforeCutRating * 70, 0, 70));\n }\n\n if (noteData.scoringType === NoteScoringType.SliderHead) {\n afterCut = 30;\n } else if (\n ![\n NoteScoringType.BurstSliderElement,\n NoteScoringType.BurstSliderHead,\n ].includes(noteData.scoringType)\n ) {\n afterCut = Math.round(clamp(noteCutInfo.afterCutRating * 30, 0, 30));\n }\n\n if (noteData.scoringType === NoteScoringType.BurstSliderElement) {\n accuracy = 20;\n } else {\n accuracy = Math.round(\n 15 * (1 - clamp(noteCutInfo.cutDistanceToCenter / 0.3, 0, 1)),\n );\n }\n\n return beforeCut + accuracy + afterCut;\n};\n\nexport function processUnderswings(replay: any) {\n if (!replay) return null;\n\n if (!replay?.notes?.length)\n return {\n count: 0,\n acc: 0,\n fcAcc: 0,\n noUnderswingsAcc: 0,\n noUnderswingsFcAcc: 0,\n score: 0,\n fcScore: 0,\n noUnderswingsScore: 0,\n noUnderswingsFcScore: 0,\n maxCutScore: 0,\n maxSongScore: 0,\n };\n\n const multiplier = createMultiplierCounter();\n const fcMultiplier = createMultiplierCounter();\n\n const result = [...replay.notes, ...(replay.walls ?? [])]\n .map((e, idx) => ({ ...e, idx, eventTime: e?.eventTime ?? e?.time }))\n .sort((a, b) =>\n a.eventTime === b.eventTime ? a.idx - b.idx : a.eventTime - b.eventTime,\n )\n .reduce(\n (acc, event) => {\n if (\n !Number.isFinite(event?.eventType) ||\n NoteEventType.bomb === event.eventType\n ) {\n acc.multiplier.dec();\n return acc;\n }\n\n const noteData = decodeNoteData(event.noteID);\n if (noteData < NoteScoringType.Normal) return acc;\n\n const maxNoteScore = getNoteScore(noteData, {\n cutDistanceToCenter: 0,\n beforeCutRating: 1,\n afterCutRating: 1,\n });\n\n switch (event.eventType) {\n case NoteEventType.good:\n const realScore = getNoteScore(noteData, event.noteCutInfo);\n const fullSwing = getNoteScore(noteData, {\n cutDistanceToCenter: event.noteCutInfo.cutDistanceToCenter,\n beforeCutRating: 1,\n afterCutRating: 1,\n });\n\n acc.count++;\n acc.score += realScore * multiplier.get();\n acc.noUnderswingsScore += fullSwing * multiplier.get();\n acc.fcScore += realScore * fcMultiplier.get();\n acc.noUnderswingsFcScore += fullSwing * fcMultiplier.get();\n acc.maxCutScore += maxNoteScore * fcMultiplier.get();\n acc.multiplier.inc();\n break;\n\n case NoteEventType.bad:\n case NoteEventType.miss:\n acc.multiplier.dec();\n break;\n }\n\n acc.maxSongScore += maxNoteScore * fcMultiplier.get();\n acc.fcMultiplier.inc();\n\n return acc;\n },\n {\n count: 0,\n maxCutScore: 0,\n maxSongScore: 0,\n score: 0,\n fcScore: 0,\n noUnderswingsScore: 0,\n noUnderswingsFcScore: 0,\n multiplier,\n fcMultiplier,\n },\n );\n\n const { multiplier: foo, fcMultiplier: bar, ...rest } = result;\n\n return {\n ...rest,\n maxCutScore: result.maxCutScore,\n maxSongScore: result.maxSongScore,\n acc: result.maxSongScore ? (result.score / result.maxSongScore) * 100 : 0,\n fcAcc: result.maxCutScore ? (result.fcScore / result.maxCutScore) * 100 : 0,\n noUnderswingsAcc: result.maxSongScore\n ? (result.noUnderswingsScore / result.maxSongScore) * 100\n : 0,\n noUnderswingsFcAcc: result.maxCutScore\n ? (result.noUnderswingsFcScore / result.maxCutScore) * 100\n : 0,\n };\n}\n"],"mappings":"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","names":["import_beatleader","_a"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/utils/bl/getPart.ts"],"sourcesContent":["import { BeatLeaderUser } from '@/service/api/interfaces/beatleader'\n\nconst DEFAULT_MAX_TECH_PP = 1300\nconst DEFAULT_MAX_ACC_PP = 15000\nconst DEFAULT_MAX_PASS_PP = 6000\n\nconst getPart = (playerInfo: BeatLeaderUser) => {\n const techPp = playerInfo.techPp\n const accPp = playerInfo.accPp\n const passPp = playerInfo.passPp\n const techScale =\n techPp > DEFAULT_MAX_TECH_PP ? techPp / DEFAULT_MAX_TECH_PP : 1\n const accScale = accPp > DEFAULT_MAX_ACC_PP ? accPp / DEFAULT_MAX_ACC_PP : 1\n const passScale =\n passPp > DEFAULT_MAX_PASS_PP ? passPp / DEFAULT_MAX_PASS_PP : 1\n const triangleScale = Math.max(techScale, Math.max(accScale, passScale))\n\n const maxTechPp = DEFAULT_MAX_TECH_PP * triangleScale\n const maxAccPp = DEFAULT_MAX_ACC_PP * triangleScale\n const maxPassPp = DEFAULT_MAX_PASS_PP * triangleScale\n\n const totalNormalizedPp =\n techPp * (maxAccPp / maxTechPp) + accPp + passPp * (maxAccPp / maxPassPp)\n const normalizedTechPp = techPp / maxTechPp\n const normalizedAccPp = accPp / maxAccPp\n const normalizedPassPp = passPp / maxPassPp\n\n const techPpPart = (techPp * (maxAccPp / maxTechPp)) / totalNormalizedPp\n const accPpPart = accPp / totalNormalizedPp\n const passPpPart = (passPp * (maxAccPp / maxPassPp)) / totalNormalizedPp\n\n return {\n techPpPart,\n accPpPart,\n passPpPart,\n }\n}\n\nexport default getPart\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAE5B,MAAM,UAAU,CAAC,eAA+B;AAC9C,QAAM,SAAS,WAAW;AAC1B,QAAM,QAAQ,WAAW;AACzB,QAAM,SAAS,WAAW;AAC1B,QAAM,YACJ,SAAS,sBAAsB,SAAS,sBAAsB;AAChE,QAAM,WAAW,QAAQ,qBAAqB,QAAQ,qBAAqB;AAC3E,QAAM,YACJ,SAAS,sBAAsB,SAAS,sBAAsB;AAChE,QAAM,gBAAgB,KAAK,IAAI,WAAW,KAAK,IAAI,UAAU,SAAS,CAAC;AAEvE,QAAM,YAAY,sBAAsB;AACxC,QAAM,WAAW,qBAAqB;AACtC,QAAM,YAAY,sBAAsB;AAExC,QAAM,oBACJ,UAAU,WAAW,aAAa,QAAQ,UAAU,WAAW;AACjE,QAAM,mBAAmB,SAAS;AAClC,QAAM,kBAAkB,QAAQ;AAChC,QAAM,mBAAmB,SAAS;AAElC,QAAM,aAAc,UAAU,WAAW,aAAc;AACvD,QAAM,YAAY,QAAQ;AAC1B,QAAM,aAAc,UAAU,WAAW,aAAc;AAEvD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,kBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/components/utils/bl/getPart.ts"],"sourcesContent":["import { BeatLeaderUser } from '@/services/api/interfaces/beatleader'\n\nconst DEFAULT_MAX_TECH_PP = 1300\nconst DEFAULT_MAX_ACC_PP = 15000\nconst DEFAULT_MAX_PASS_PP = 6000\n\nconst getPart = (playerInfo: BeatLeaderUser) => {\n const techPp = playerInfo.techPp\n const accPp = playerInfo.accPp\n const passPp = playerInfo.passPp\n const techScale =\n techPp > DEFAULT_MAX_TECH_PP ? techPp / DEFAULT_MAX_TECH_PP : 1\n const accScale = accPp > DEFAULT_MAX_ACC_PP ? accPp / DEFAULT_MAX_ACC_PP : 1\n const passScale =\n passPp > DEFAULT_MAX_PASS_PP ? passPp / DEFAULT_MAX_PASS_PP : 1\n const triangleScale = Math.max(techScale, Math.max(accScale, passScale))\n\n const maxTechPp = DEFAULT_MAX_TECH_PP * triangleScale\n const maxAccPp = DEFAULT_MAX_ACC_PP * triangleScale\n const maxPassPp = DEFAULT_MAX_PASS_PP * triangleScale\n\n const totalNormalizedPp =\n techPp * (maxAccPp / maxTechPp) + accPp + passPp * (maxAccPp / maxPassPp)\n const normalizedTechPp = techPp / maxTechPp\n const normalizedAccPp = accPp / maxAccPp\n const normalizedPassPp = passPp / maxPassPp\n\n const techPpPart = (techPp * (maxAccPp / maxTechPp)) / totalNormalizedPp\n const accPpPart = accPp / totalNormalizedPp\n const passPpPart = (passPp * (maxAccPp / maxPassPp)) / totalNormalizedPp\n\n return {\n techPpPart,\n accPpPart,\n passPpPart,\n }\n}\n\nexport default getPart\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAE5B,MAAM,UAAU,CAAC,eAA+B;AAC9C,QAAM,SAAS,WAAW;AAC1B,QAAM,QAAQ,WAAW;AACzB,QAAM,SAAS,WAAW;AAC1B,QAAM,YACJ,SAAS,sBAAsB,SAAS,sBAAsB;AAChE,QAAM,WAAW,QAAQ,qBAAqB,QAAQ,qBAAqB;AAC3E,QAAM,YACJ,SAAS,sBAAsB,SAAS,sBAAsB;AAChE,QAAM,gBAAgB,KAAK,IAAI,WAAW,KAAK,IAAI,UAAU,SAAS,CAAC;AAEvE,QAAM,YAAY,sBAAsB;AACxC,QAAM,WAAW,qBAAqB;AACtC,QAAM,YAAY,sBAAsB;AAExC,QAAM,oBACJ,UAAU,WAAW,aAAa,QAAQ,UAAU,WAAW;AACjE,QAAM,mBAAmB,SAAS;AAClC,QAAM,kBAAkB,QAAQ;AAChC,QAAM,mBAAmB,SAAS;AAElC,QAAM,aAAc,UAAU,WAAW,aAAc;AACvD,QAAM,YAAY,QAAQ;AAC1B,QAAM,aAAc,UAAU,WAAW,aAAc;AAEvD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,kBAAQ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/utils/bl/stastic.ts"],"sourcesContent":["const scoresService = null\nconst leaderboardService = null\n\n// scoreStatisticEnhancer(songScore)\nconst getStatistic = (data: any, scoreId: number, statistic: any) => {\n try {\n //fetch score stats\n // stats =\n // const statistic = leaderboard\n // \t? await leaderboardService.fetchLeaderboardStats(leaderboard.leaderboardId)\n // \t: await scoresService.fetchScoreStats(data.id);\n //\n const beatSavior = {} as any\n\n const stats = statistic.accuracyTracker\n\n stats.missedNotes =\n data?.missedNotes ??\n (statistic?.hitTracker?.leftMiss ?? 0) +\n (statistic?.hitTracker?.leftMiss ?? 0)\n stats.badCuts =\n data?.badCuts ??\n (statistic?.hitTracker?.leftBadCuts ?? 0) +\n (statistic?.hitTracker?.rightBadCuts ?? 0)\n stats.bombHit =\n data?.bombCuts ??\n (statistic?.hitTracker?.leftBombs ?? 0) +\n (statistic?.hitTracker?.rightBombs ?? 0)\n stats.wallHit = data?.wallsHit ?? 0\n stats.miss = stats.missedNotes + stats.badCuts\n stats.maxCombo = statistic.hitTracker.maxCombo\n stats.maxStreak = statistic.hitTracker.maxStreak\n stats.leftMiss = statistic.hitTracker.leftMiss\n stats.rightMiss = statistic.hitTracker.rightMiss\n stats.leftBadCuts = statistic.hitTracker.leftBadCuts\n stats.rightBadCuts = statistic.hitTracker.rightBadCuts\n stats.leftBombs = statistic.hitTracker.leftBombs\n stats.rightBombs = statistic.hitTracker.rightBombs\n\n stats.won = statistic.winTracker.won\n stats.pauses = statistic.winTracker.nbOfPause\n\n statistic.scoreTracker = {\n rawRatio: data?.unmodifiedAcc ? data.unmodifiedAcc / 100 : null,\n }\n\n beatSavior.songJumpDistance = statistic.winTracker.jumpDistance\n beatSavior.stats = stats\n beatSavior.trackers = statistic\n\n return beatSavior\n } catch (err) {\n return null\n }\n}\n\nexport default getStatistic\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,gBAAgB;AACtB,MAAM,qBAAqB;AAG3B,MAAM,eAAe,CAAC,MAAW,SAAiB,cAAmB;AAJrE;AAKE,MAAI;AAOF,UAAM,aAAa,CAAC;AAEpB,UAAM,QAAQ,UAAU;AAExB,UAAM,eACJ,kCAAM,gBAAN,cACC,kDAAW,eAAX,mBAAuB,aAAvB,YAAmC,OACjC,kDAAW,eAAX,mBAAuB,aAAvB,YAAmC;AACxC,UAAM,WACJ,kCAAM,YAAN,cACC,kDAAW,eAAX,mBAAuB,gBAAvB,YAAsC,OACpC,kDAAW,eAAX,mBAAuB,iBAAvB,YAAuC;AAC5C,UAAM,WACJ,kCAAM,aAAN,cACC,kDAAW,eAAX,mBAAuB,cAAvB,YAAoC,OAClC,kDAAW,eAAX,mBAAuB,eAAvB,YAAqC;AAC1C,UAAM,WAAU,kCAAM,aAAN,YAAkB;AAClC,UAAM,OAAO,MAAM,cAAc,MAAM;AACvC,UAAM,WAAW,UAAU,WAAW;AACtC,UAAM,YAAY,UAAU,WAAW;AACvC,UAAM,WAAW,UAAU,WAAW;AACtC,UAAM,YAAY,UAAU,WAAW;AACvC,UAAM,cAAc,UAAU,WAAW;AACzC,UAAM,eAAe,UAAU,WAAW;AAC1C,UAAM,YAAY,UAAU,WAAW;AACvC,UAAM,aAAa,UAAU,WAAW;AAExC,UAAM,MAAM,UAAU,WAAW;AACjC,UAAM,SAAS,UAAU,WAAW;AAEpC,cAAU,eAAe;AAAA,MACvB,WAAU,6BAAM,iBAAgB,KAAK,gBAAgB,MAAM;AAAA,IAC7D;AAEA,eAAW,mBAAmB,UAAU,WAAW;AACnD,eAAW,QAAQ;AACnB,eAAW,WAAW;AAEtB,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,WAAO;AAAA,EACT;AACF;AAEA,IAAO,kBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/components/utils/bl/stastic.ts"],"sourcesContent":["const scoresService = null\nconst leaderboardService = null\n\nconst getStatistic = (data: any, scoreId: number, statistic: any) => {\n try {\n const beatSavior = {} as any\n\n const stats = statistic.accuracyTracker\n\n stats.missedNotes =\n data?.missedNotes ??\n (statistic?.hitTracker?.leftMiss ?? 0) +\n (statistic?.hitTracker?.leftMiss ?? 0)\n stats.badCuts =\n data?.badCuts ??\n (statistic?.hitTracker?.leftBadCuts ?? 0) +\n (statistic?.hitTracker?.rightBadCuts ?? 0)\n stats.bombHit =\n data?.bombCuts ??\n (statistic?.hitTracker?.leftBombs ?? 0) +\n (statistic?.hitTracker?.rightBombs ?? 0)\n stats.wallHit = data?.wallsHit ?? 0\n stats.miss = stats.missedNotes + stats.badCuts\n stats.maxCombo = statistic.hitTracker.maxCombo\n stats.maxStreak = statistic.hitTracker.maxStreak\n stats.leftMiss = statistic.hitTracker.leftMiss\n stats.rightMiss = statistic.hitTracker.rightMiss\n stats.leftBadCuts = statistic.hitTracker.leftBadCuts\n stats.rightBadCuts = statistic.hitTracker.rightBadCuts\n stats.leftBombs = statistic.hitTracker.leftBombs\n stats.rightBombs = statistic.hitTracker.rightBombs\n\n stats.won = statistic.winTracker.won\n stats.pauses = statistic.winTracker.nbOfPause\n\n statistic.scoreTracker = {\n rawRatio: data?.unmodifiedAcc ? data.unmodifiedAcc / 100 : null,\n }\n\n beatSavior.songJumpDistance = statistic.winTracker.jumpDistance\n beatSavior.stats = stats\n beatSavior.trackers = statistic\n\n return beatSavior\n } catch (err) {\n return null\n }\n}\n\nexport default getStatistic\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,gBAAgB;AACtB,MAAM,qBAAqB;AAE3B,MAAM,eAAe,CAAC,MAAW,SAAiB,cAAmB;AAHrE;AAIE,MAAI;AACF,UAAM,aAAa,CAAC;AAEpB,UAAM,QAAQ,UAAU;AAExB,UAAM,eACJ,kCAAM,gBAAN,cACC,kDAAW,eAAX,mBAAuB,aAAvB,YAAmC,OACjC,kDAAW,eAAX,mBAAuB,aAAvB,YAAmC;AACxC,UAAM,WACJ,kCAAM,YAAN,cACC,kDAAW,eAAX,mBAAuB,gBAAvB,YAAsC,OACpC,kDAAW,eAAX,mBAAuB,iBAAvB,YAAuC;AAC5C,UAAM,WACJ,kCAAM,aAAN,cACC,kDAAW,eAAX,mBAAuB,cAAvB,YAAoC,OAClC,kDAAW,eAAX,mBAAuB,eAAvB,YAAqC;AAC1C,UAAM,WAAU,kCAAM,aAAN,YAAkB;AAClC,UAAM,OAAO,MAAM,cAAc,MAAM;AACvC,UAAM,WAAW,UAAU,WAAW;AACtC,UAAM,YAAY,UAAU,WAAW;AACvC,UAAM,WAAW,UAAU,WAAW;AACtC,UAAM,YAAY,UAAU,WAAW;AACvC,UAAM,cAAc,UAAU,WAAW;AACzC,UAAM,eAAe,UAAU,WAAW;AAC1C,UAAM,YAAY,UAAU,WAAW;AACvC,UAAM,aAAa,UAAU,WAAW;AAExC,UAAM,MAAM,UAAU,WAAW;AACjC,UAAM,SAAS,UAAU,WAAW;AAEpC,cAAU,eAAe;AAAA,MACvB,WAAU,6BAAM,iBAAgB,KAAK,gBAAgB,MAAM;AAAA,IAC7D;AAEA,eAAW,mBAAmB,UAAU,WAAW;AACnD,eAAW,QAAQ;AACnB,eAAW,WAAW;AAEtB,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,WAAO;AAAA,EACT;AACF;AAEA,IAAO,kBAAQ;","names":[]}
@@ -36,9 +36,9 @@ __export(format_exports, {
36
36
  });
37
37
  module.exports = __toCommonJS(format_exports);
38
38
  var import_dayjs = __toESM(require("dayjs"));
39
- var import_duration = __toESM(require("dayjs/plugin/duration"));
40
- var import_relativeTime = __toESM(require("dayjs/plugin/relativeTime"));
41
- var import_zh_cn = __toESM(require("dayjs/locale/zh-cn"));
39
+ var import_duration = __toESM(require("dayjs/plugin/duration.js"));
40
+ var import_relativeTime = __toESM(require("dayjs/plugin/relativeTime.js"));
41
+ var import_zh_cn = __toESM(require("dayjs/locale/zh-cn.js"));
42
42
  import_dayjs.default.extend(import_duration.default);
43
43
  import_dayjs.default.extend(import_relativeTime.default);
44
44
  const formatDuration = (duration2) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/utils/format.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport duration from 'dayjs/plugin/duration'\nimport relativeTime from 'dayjs/plugin/relativeTime'\nimport zh from 'dayjs/locale/zh-cn'\ndayjs.extend(duration)\ndayjs.extend(relativeTime)\nexport const formatDuration = (duration: number) => {\n const d = dayjs.duration(duration, 'second')\n return d.format('m[m]s[s]')\n}\n\n// export const formatDuration = (duration: number) => {\n// return dayjs.duration(duration,'seconds').format('mm:ss')\n// }\n\nexport const formatTime = (time: string) => {\n return dayjs(time).locale(zh).fromNow()\n}\n\nexport function formatRelativeTimeByDay(time: string | number | Date) {\n let res = dayjs().diff(dayjs(time), 'd')\n let unit = 'd'\n if (res <= 0) {\n res = dayjs().diff(dayjs(time), 'h')\n unit = 'h'\n }\n if (res <= 0) {\n res = dayjs().diff(dayjs(time), 'm')\n unit = 'm'\n }\n return `${res}${unit}`\n}\n\nexport const formatNumber = (number: number) => {\n // 1.11w\n try {\n if (number > 10000) {\n return `${(number / 10000.0).toFixed(2)}w`\n }\n // 1.11k\n if (number > 1000) {\n return `${(number / 1000.0).toFixed(2)}k`\n }\n return number.toString()\n } catch (e) {\n return '0'\n }\n}\n\nexport function numberWithCommas(x: number) {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n}\nexport const formatDate = (time: Date | undefined, template?: string) => {\n if (!time) return undefined\n return dayjs(time).format(template ?? 'YYYY-MM-DD')\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,sBAAqB;AACrB,0BAAyB;AACzB,mBAAe;AACf,aAAAA,QAAM,OAAO,gBAAAC,OAAQ;AACrB,aAAAD,QAAM,OAAO,oBAAAE,OAAY;AAClB,MAAM,iBAAiB,CAACD,cAAqB;AAClD,QAAM,IAAI,aAAAD,QAAM,SAASC,WAAU,QAAQ;AAC3C,SAAO,EAAE,OAAO,UAAU;AAC5B;AAMO,MAAM,aAAa,CAAC,SAAiB;AAC1C,aAAO,aAAAD,SAAM,IAAI,EAAE,OAAO,aAAAG,OAAE,EAAE,QAAQ;AACxC;AAEO,SAAS,wBAAwB,MAA8B;AACpE,MAAI,UAAM,aAAAH,SAAM,EAAE,SAAK,aAAAA,SAAM,IAAI,GAAG,GAAG;AACvC,MAAI,OAAO;AACX,MAAI,OAAO,GAAG;AACZ,cAAM,aAAAA,SAAM,EAAE,SAAK,aAAAA,SAAM,IAAI,GAAG,GAAG;AACnC,WAAO;AAAA,EACT;AACA,MAAI,OAAO,GAAG;AACZ,cAAM,aAAAA,SAAM,EAAE,SAAK,aAAAA,SAAM,IAAI,GAAG,GAAG;AACnC,WAAO;AAAA,EACT;AACA,SAAO,GAAG,GAAG,GAAG,IAAI;AACtB;AAEO,MAAM,eAAe,CAAC,WAAmB;AAE9C,MAAI;AACF,QAAI,SAAS,KAAO;AAClB,aAAO,IAAI,SAAS,KAAS,QAAQ,CAAC,CAAC;AAAA,IACzC;AAEA,QAAI,SAAS,KAAM;AACjB,aAAO,IAAI,SAAS,KAAQ,QAAQ,CAAC,CAAC;AAAA,IACxC;AACA,WAAO,OAAO,SAAS;AAAA,EACzB,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEO,SAAS,iBAAiB,GAAW;AAC1C,SAAO,EAAE,SAAS,EAAE,QAAQ,yBAAyB,GAAG;AAC1D;AACO,MAAM,aAAa,CAAC,MAAwB,aAAsB;AACvE,MAAI,CAAC,KAAM,QAAO;AAClB,aAAO,aAAAA,SAAM,IAAI,EAAE,OAAO,8BAAY,YAAY;AACpD;","names":["dayjs","duration","relativeTime","zh"]}
1
+ {"version":3,"sources":["../../../../src/components/utils/format.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport duration from 'dayjs/plugin/duration.js'\nimport relativeTime from 'dayjs/plugin/relativeTime.js'\nimport zh from 'dayjs/locale/zh-cn.js'\ndayjs.extend(duration)\ndayjs.extend(relativeTime)\nexport const formatDuration = (duration: number) => {\n const d = dayjs.duration(duration, 'second')\n return d.format('m[m]s[s]')\n}\n\n// export const formatDuration = (duration: number) => {\n// return dayjs.duration(duration,'seconds').format('mm:ss')\n// }\n\nexport const formatTime = (time: string) => {\n return dayjs(time).locale(zh).fromNow()\n}\n\nexport function formatRelativeTimeByDay(time: string | number | Date) {\n let res = dayjs().diff(dayjs(time), 'd')\n let unit = 'd'\n if (res <= 0) {\n res = dayjs().diff(dayjs(time), 'h')\n unit = 'h'\n }\n if (res <= 0) {\n res = dayjs().diff(dayjs(time), 'm')\n unit = 'm'\n }\n return `${res}${unit}`\n}\n\nexport const formatNumber = (number: number) => {\n // 1.11w\n try {\n if (number > 10000) {\n return `${(number / 10000.0).toFixed(2)}w`\n }\n // 1.11k\n if (number > 1000) {\n return `${(number / 1000.0).toFixed(2)}k`\n }\n return number.toString()\n } catch (e) {\n return '0'\n }\n}\n\nexport function numberWithCommas(x: number) {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n}\nexport const formatDate = (time: Date | undefined, template?: string) => {\n if (!time) return undefined\n return dayjs(time).format(template ?? 'YYYY-MM-DD')\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,sBAAqB;AACrB,0BAAyB;AACzB,mBAAe;AACf,aAAAA,QAAM,OAAO,gBAAAC,OAAQ;AACrB,aAAAD,QAAM,OAAO,oBAAAE,OAAY;AAClB,MAAM,iBAAiB,CAACD,cAAqB;AAClD,QAAM,IAAI,aAAAD,QAAM,SAASC,WAAU,QAAQ;AAC3C,SAAO,EAAE,OAAO,UAAU;AAC5B;AAMO,MAAM,aAAa,CAAC,SAAiB;AAC1C,aAAO,aAAAD,SAAM,IAAI,EAAE,OAAO,aAAAG,OAAE,EAAE,QAAQ;AACxC;AAEO,SAAS,wBAAwB,MAA8B;AACpE,MAAI,UAAM,aAAAH,SAAM,EAAE,SAAK,aAAAA,SAAM,IAAI,GAAG,GAAG;AACvC,MAAI,OAAO;AACX,MAAI,OAAO,GAAG;AACZ,cAAM,aAAAA,SAAM,EAAE,SAAK,aAAAA,SAAM,IAAI,GAAG,GAAG;AACnC,WAAO;AAAA,EACT;AACA,MAAI,OAAO,GAAG;AACZ,cAAM,aAAAA,SAAM,EAAE,SAAK,aAAAA,SAAM,IAAI,GAAG,GAAG;AACnC,WAAO;AAAA,EACT;AACA,SAAO,GAAG,GAAG,GAAG,IAAI;AACtB;AAEO,MAAM,eAAe,CAAC,WAAmB;AAE9C,MAAI;AACF,QAAI,SAAS,KAAO;AAClB,aAAO,IAAI,SAAS,KAAS,QAAQ,CAAC,CAAC;AAAA,IACzC;AAEA,QAAI,SAAS,KAAM;AACjB,aAAO,IAAI,SAAS,KAAQ,QAAQ,CAAC,CAAC;AAAA,IACxC;AACA,WAAO,OAAO,SAAS;AAAA,EACzB,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEO,SAAS,iBAAiB,GAAW;AAC1C,SAAO,EAAE,SAAS,EAAE,QAAQ,yBAAyB,GAAG;AAC1D;AACO,MAAM,aAAa,CAAC,MAAwB,aAAsB;AACvE,MAAI,CAAC,KAAM,QAAO;AAClB,aAAO,aAAAA,SAAM,IAAI,EAAE,OAAO,8BAAY,YAAY;AACpD;","names":["dayjs","duration","relativeTime","zh"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/utils/getMods.ts"],"sourcesContent":["import { BSMap } from '@/service/api/interfaces/beatsaver'\n\nexport const getMods = (bsMap: BSMap) => {\n const res: string[] = []\n const publishedVersion = bsMap.versions[0]\n if (publishedVersion.diffs.some((it) => it.chroma)) {\n res.push('Chroma')\n }\n if (publishedVersion.diffs.some((it) => it.cinema)) {\n res.push('Cinema')\n }\n if (publishedVersion.diffs.some((it) => it.me)) {\n res.push('Mapping')\n }\n if (publishedVersion.diffs.some((it) => it.ne)) {\n res.push('Noodle')\n }\n return res\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,UAAU,CAAC,UAAiB;AACvC,QAAM,MAAgB,CAAC;AACvB,QAAM,mBAAmB,MAAM,SAAS,CAAC;AACzC,MAAI,iBAAiB,MAAM,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG;AAClD,QAAI,KAAK,QAAQ;AAAA,EACnB;AACA,MAAI,iBAAiB,MAAM,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG;AAClD,QAAI,KAAK,QAAQ;AAAA,EACnB;AACA,MAAI,iBAAiB,MAAM,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG;AAC9C,QAAI,KAAK,SAAS;AAAA,EACpB;AACA,MAAI,iBAAiB,MAAM,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG;AAC9C,QAAI,KAAK,QAAQ;AAAA,EACnB;AACA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/utils/getMods.ts"],"sourcesContent":["import { BSMap } from '@/services/api/interfaces/beatsaver'\n\nexport const getMods = (bsMap: BSMap) => {\n const res: string[] = []\n const publishedVersion = bsMap.versions[0]\n if (publishedVersion.diffs.some((it) => it.chroma)) {\n res.push('Chroma')\n }\n if (publishedVersion.diffs.some((it) => it.cinema)) {\n res.push('Cinema')\n }\n if (publishedVersion.diffs.some((it) => it.me)) {\n res.push('Mapping')\n }\n if (publishedVersion.diffs.some((it) => it.ne)) {\n res.push('Noodle')\n }\n return res\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,UAAU,CAAC,UAAiB;AACvC,QAAM,MAAgB,CAAC;AACvB,QAAM,mBAAmB,MAAM,SAAS,CAAC;AACzC,MAAI,iBAAiB,MAAM,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG;AAClD,QAAI,KAAK,QAAQ;AAAA,EACnB;AACA,MAAI,iBAAiB,MAAM,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG;AAClD,QAAI,KAAK,QAAQ;AAAA,EACnB;AACA,MAAI,iBAAiB,MAAM,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG;AAC9C,QAAI,KAAK,SAAS;AAAA,EACpB;AACA,MAAI,iBAAiB,MAAM,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG;AAC9C,QAAI,KAAK,QAAQ;AAAA,EACnB;AACA,SAAO;AACT;","names":[]}
@@ -21,8 +21,8 @@ __export(utils_exports, {
21
21
  diffConv: () => diffConv
22
22
  });
23
23
  module.exports = __toCommonJS(utils_exports);
24
- __reExport(utils_exports, require("./format"), module.exports);
25
- __reExport(utils_exports, require("./tag-format"), module.exports);
24
+ __reExport(utils_exports, require("./format.js"), module.exports);
25
+ __reExport(utils_exports, require("./tag-format.js"), module.exports);
26
26
  const diffConv = (diff) => {
27
27
  if (diff.includes("ExpertPlus")) {
28
28
  return "EX+";
@@ -38,7 +38,7 @@ const diffConv = (diff) => {
38
38
  // Annotate the CommonJS export names for ESM import in node:
39
39
  0 && (module.exports = {
40
40
  diffConv,
41
- ...require("./format"),
42
- ...require("./tag-format")
41
+ ...require("./format.js"),
42
+ ...require("./tag-format.js")
43
43
  });
44
44
  //# sourceMappingURL=index.js.map
@@ -2,6 +2,10 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
5
9
  var __copyProps = (to, from, except, desc) => {
6
10
  if (from && typeof from === "object" || typeof from === "function") {
7
11
  for (let key of __getOwnPropNames(from))
@@ -12,5 +16,41 @@ var __copyProps = (to, from, except, desc) => {
12
16
  };
13
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
18
  var config_exports = {};
19
+ __export(config_exports, {
20
+ configSchema: () => configSchema
21
+ });
15
22
  module.exports = __toCommonJS(config_exports);
23
+ var import_v4 = require("zod/v4");
24
+ var import_render = require("./common/render/index.js");
25
+ var import_s3 = require("./common/s3/index.js");
26
+ const cronSchema = import_v4.z.object({
27
+ enabled: import_v4.z.boolean().optional().default(false),
28
+ cron: import_v4.z.string().optional()
29
+ }).optional().default({ enabled: false });
30
+ const configSchema = import_v4.z.object({
31
+ s3: import_s3.s3ConfigSchema.default({ enabled: false }).optional(),
32
+ render: import_render.renderSchema,
33
+ beatsaver: import_v4.z.object({
34
+ host: import_v4.z.string().default("https://api.beatsaver.com").optional(),
35
+ wsURL: import_v4.z.string().default("wss://ws.beatsaver.com/maps").optional(),
36
+ oauthClientId: import_v4.z.string().optional(),
37
+ oauthClientSecret: import_v4.z.string().optional()
38
+ }).default({
39
+ host: "https://api.beatsaver.com",
40
+ wsURL: "wss://ws.beatsaver.com/maps"
41
+ }).optional(),
42
+ beatleader: import_v4.z.object({
43
+ oauthClientId: import_v4.z.string().optional(),
44
+ oauthClientSecret: import_v4.z.string().optional()
45
+ }).default({}).optional(),
46
+ cron: import_v4.z.object({
47
+ temp: cronSchema
48
+ }).default({
49
+ temp: { enabled: false }
50
+ }).optional()
51
+ });
52
+ // Annotate the CommonJS export names for ESM import in node:
53
+ 0 && (module.exports = {
54
+ configSchema
55
+ });
16
56
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/config.ts"],"sourcesContent":["import type { S3Config } from \"@/infra/s3\";\nimport {RenderConfig} from \"@/infra\";\n\n\nexport interface Config {\n s3: {\n enabled: boolean\n } & S3Config\n render: {\n\n } & RenderConfig\n minRawMatchMapIdLength: number\n beatSaverHost: string\n beatSaverWSURL: string\n bsOauthClientId: string\n bsOauthClientSecret: string\n blOauthClientId: string\n blOauthClientSecret: string\n bsNotifyMonitorCron: ScheduleTaskConfig\n tokenRefreshCron: ScheduleTaskConfig\n tempCron: ScheduleTaskConfig\n BLScoreFilters: any\n}\n\ninterface ScheduleTaskConfig {\n cron: string\n enable: boolean\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","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;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAgB;AAChB,oBAA2B;AAC3B,gBAA6B;AAE7B,MAAM,aAAa,YAAE,OAAO;AAAA,EAC1B,SAAS,YAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC7C,MAAM,YAAE,OAAO,EAAE,SAAS;AAC5B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,MAAM,CAAC;AAEjC,MAAM,eAAe,YAAE,OAAO;AAAA,EACnC,IAAI,yBAAe,QAAQ,EAAE,SAAS,MAAM,CAAC,EAAE,SAAS;AAAA,EACxD,QAAQ;AAAA,EACR,WAAW,YAAE,OAAO;AAAA,IAClB,MAAM,YAAE,OAAO,EAAE,QAAQ,2BAA2B,EAAE,SAAS;AAAA,IAC/D,OAAO,YAAE,OAAO,EAAE,QAAQ,6BAA6B,EAAE,SAAS;AAAA,IAClE,eAAe,YAAE,OAAO,EAAE,SAAS;AAAA,IACnC,mBAAmB,YAAE,OAAO,EAAE,SAAS;AAAA,EACzC,CAAC,EAAE,QAAQ;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACT,CAAC,EAAE,SAAS;AAAA,EACZ,YAAY,YAAE,OAAO;AAAA,IACnB,eAAe,YAAE,OAAO,EAAE,SAAS;AAAA,IACnC,mBAAmB,YAAE,OAAO,EAAE,SAAS;AAAA,EACzC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS;AAAA,EACxB,MAAM,YAAE,OAAO;AAAA,IACb,MAAM;AAAA,EACR,CAAC,EAAE,QAAQ;AAAA,IACT,MAAM,EAAC,SAAS,MAAK;AAAA,EACvB,CAAC,EAAE,SAAS;AACd,CAAC;","names":[]}
@@ -42,7 +42,7 @@ __export(builder_exports, {
42
42
  CommandBuilder: () => CommandBuilder
43
43
  });
44
44
  module.exports = __toCommonJS(builder_exports);
45
- var import_errors = require("../../infra/errors");
45
+ var import_error = require("../error.js");
46
46
  class CommandBuilder {
47
47
  constructor() {
48
48
  __publicField(this, "name");
@@ -50,9 +50,9 @@ class CommandBuilder {
50
50
  __publicField(this, "options", []);
51
51
  __publicField(this, "aliases", []);
52
52
  }
53
- static create(name) {
54
- return new CommandBuilder().setName(name);
55
- }
53
+ // static create<Service, Config, OPT extends {} = {}>(name: string) {
54
+ // return new CommandBuilder<Service, Config, OPT> ().setName(name)
55
+ // }
56
56
  addOption(name, description) {
57
57
  this.options.push({
58
58
  name,
@@ -80,7 +80,7 @@ class CommandBuilder {
80
80
  try {
81
81
  yield executor2(c);
82
82
  } catch (e) {
83
- if (e instanceof import_errors.BizError) {
83
+ if (e instanceof import_error.BizError) {
84
84
  yield c.session.send(c.session.text(e.id, e.params));
85
85
  } else {
86
86
  c.logger.error(
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAyB;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,uBAAU;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
+ {"version":3,"sources":["../../../../src/core/cmd/type.ts"],"sourcesContent":["import { Logger } from \"../logger\";\nimport {PassiveSession} from \"../session\";\n\nexport interface CmdContext<Service, Cfg, OPT> {\n logger: Logger\n session: PassiveSession\n config: Cfg\n services: Service\n options: OPT\n input?: string\n}\n\nexport type CmdExecutor<Service, Cfg, OPT> = (\n c: CmdContext<Service, Cfg, OPT>\n) => Promise<void>\n\nexport interface CmdOption {\n type: 'boolean' | 'number' | 'string'\n name: string\n short?: string\n description?: string\n required?: boolean\n}\n\nexport type CmdAlias = {\n alias: string\n option?: {}\n}\n\nexport interface Command<Service, Cfg, OPT> {\n name: string\n description: string\n aliases: CmdAlias[]\n options: CmdOption[]\n callback: CmdExecutor<Service, Cfg, OPT>\n}\n\nexport type Extend<BASE extends {}, N extends string, D> = {\n [P in N | keyof BASE]?: (P extends keyof BASE ? BASE[P] : unknown) &\n (P extends N ? D : unknown)\n}\n\ntype ExtractType<T extends string> = T extends 'string'\n ? string\n : T extends 'boolean'\n ? boolean\n : T extends 'number'\n ? number\n : any\n\ntype Nullable<T> = T | null\n\ntype ExtractNullSafeType<T extends string> = T extends `${infer Type}?`\n ? Nullable<ExtractType<Type>>\n : ExtractType<T>\n// paramName:typename?\n// eg: online:boolean?\nexport type OptionType<T extends string> = T extends `${infer L}:${infer R}`\n ? ExtractNullSafeType<R>\n : unknown\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,16 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
+ var domain_exports = {};
15
+ module.exports = __toCommonJS(domain_exports);
16
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/domain.ts"],"sourcesContent":["export type User = {\n id: string;\n name: string;\n createdAt?: Date;\n updatedAt?: Date;\n}\n\n// 比如同一个channel 中的不同 Topic,乃至于不同子区,算不算同一个 channel?\n// 注意,不同 Agent 视角下,可能面对的同一个 Session,因此需要结合 AgentToSession 才能对应到一个独立的,完整的 Session 信息\nexport type Channel = {\n id: string;\n channelId: string;\n providerId: string;\n}\n\nexport type Account = {\n id: string;\n userId: string;\n providerId: string;\n accountId: string;\n}\n\n\n// 内存状态?\nexport type SessionAgent = {\n id: string;\n providerId: string;\n accountId: string;\n // active,offline?\n status: string;\n enabled: boolean;\n // other status\n}\n\nexport type AgentToChannel = {\n agentId: string;\n sessionId: string;\n}\n\ntype Message = {\n id: string;\n // 发送消息的 UserID\n senderId: string;\n // 收到消息的会话ID\n channelId: string;\n // 平台\n providerId: string;\n // 代行收发职责的 AgentId\n agentId: string;\n // 收发内容序号等平台数据\n providerMsgSeq: string;\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,38 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
20
+ var error_exports = {};
21
+ __export(error_exports, {
22
+ BizError: () => BizError
23
+ });
24
+ module.exports = __toCommonJS(error_exports);
25
+ class BizError extends Error {
26
+ constructor() {
27
+ super(...arguments);
28
+ __publicField(this, "id");
29
+ __publicField(this, "code");
30
+ __publicField(this, "layer");
31
+ __publicField(this, "params");
32
+ }
33
+ }
34
+ // Annotate the CommonJS export names for ESM import in node:
35
+ 0 && (module.exports = {
36
+ BizError
37
+ });
38
+ //# 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":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,iBAAiB,MAAM;AAAA,EAA7B;AAAA;AACL;AACA;AACA;AACA;AAAA;AACF;","names":[]}
@@ -11,6 +11,6 @@ var __copyProps = (to, from, except, desc) => {
11
11
  return to;
12
12
  };
13
13
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
- var bot_exports = {};
15
- module.exports = __toCommonJS(bot_exports);
16
- //# sourceMappingURL=bot.js.map
14
+ var event_exports = {};
15
+ module.exports = __toCommonJS(event_exports);
16
+ //# sourceMappingURL=event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/event.ts"],"sourcesContent":["import {Logger} from \"@/core/logger\";\nimport { AgentService, PassiveSession } from \"@/core/session\";\n\n\nexport type EventHandlerCtx<Service, Config> = {\n config: Config\n logger: Logger\n services: Service\n agentService: AgentService\n}\n\nexport type CmdHandlerCtx<Service, Config> = {\n config: Config\n logger: Logger\n services: Service\n session: PassiveSession\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,39 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var core_exports = {};
20
+ __export(core_exports, {
21
+ CommandBuilder: () => import_builder.CommandBuilder
22
+ });
23
+ module.exports = __toCommonJS(core_exports);
24
+ var import_builder = require("./cmd/builder.js");
25
+ __reExport(core_exports, require("./domain.js"), module.exports);
26
+ __reExport(core_exports, require("./logger.js"), module.exports);
27
+ __reExport(core_exports, require("./error.js"), module.exports);
28
+ __reExport(core_exports, require("./session.js"), module.exports);
29
+ __reExport(core_exports, require("./event.js"), module.exports);
30
+ // Annotate the CommonJS export names for ESM import in node:
31
+ 0 && (module.exports = {
32
+ CommandBuilder,
33
+ ...require("./domain.js"),
34
+ ...require("./logger.js"),
35
+ ...require("./error.js"),
36
+ ...require("./session.js"),
37
+ ...require("./event.js")
38
+ });
39
+ //# 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;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA+B;AAC/B,yBAAc,qBADd;AAEA,yBAAc,qBAFd;AAGA,yBAAc,oBAHd;AAIA,yBAAc,sBAJd;AAKA,yBAAc,oBALd;","names":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/logger.ts"],"sourcesContent":["export interface Logger {\n info(msg: string, ...args): void\n warn(msg: string, ...args): void\n error(msg: string, ...args): void\n debug(msg: string, ...args): void\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,16 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
+ var session_exports = {};
15
+ module.exports = __toCommonJS(session_exports);
16
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/session.ts"],"sourcesContent":["import {User, Account, SessionAgent, Channel} from \"./domain\";\n\ntype Message = string\n\n\n// 被动session\nexport interface ISession {\n // 被动 Session,对方有用户\n sendImgBuffer(content: any, mimeType?: string): Promise<void>\n sendImgByUrl(url: string): Promise<void>\n sendAudioByUrl(url: string): Promise<void>\n send(msg: Message): Promise<void>\n sendQueued(msg: Message): Promise<void>\n sendQuote(msg: Message): Promise<void>\n text(path: string, args?): Message\n prompt(timeout?: number): Promise<Message | undefined>\n}\n\nexport interface PassiveSession extends ISession {\n user: User\n channel: Channel\n mentions: User[]\n agent: SessionAgent\n}\n\n\nexport interface AgentService {\n getAgentSessionByChannelInfo(channel: Channel): PositiveSession\n}\n\nexport interface PositiveSession extends ISession {\n channel: Channel\n agent: SessionAgent\n}\n// 例如定时任务。或者监控数据的产生的事件。\n\n// NotificationAgent\n//\n\n\n// 主动Session\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -20,14 +20,15 @@ __export(schedules_exports, {
20
20
  getScheduleTasks: () => getScheduleTasks
21
21
  });
22
22
  module.exports = __toCommonJS(schedules_exports);
23
- var import_temp = require("../schedules/temp");
23
+ var import_temp = require("./temp.js");
24
24
  const getScheduleTasks = (config) => {
25
+ var _a, _b, _c, _d, _e;
25
26
  return [
26
27
  {
27
28
  name: "lb-rank-notifier",
28
29
  handler: import_temp.LBScoreMonitor,
29
- cron: config.tempCron.cron,
30
- enable: config.tempCron.enable
30
+ cron: (_b = (_a = config.cron) == null ? void 0 : _a.temp) == null ? void 0 : _b.cron,
31
+ enabled: (_e = (_d = (_c = config.cron) == null ? void 0 : _c.temp) == null ? void 0 : _d.enabled) != null ? _e : false
31
32
  }
32
33
  ];
33
34
  };
@@ -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":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAA+B;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":[]}
@@ -46,11 +46,15 @@ const LBScoreMonitor = (c) => __async(null, null, function* () {
46
46
  return;
47
47
  }
48
48
  const [hitbuf, scorebuf] = yield Promise.all([
49
- c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt"),
50
- c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/score")
49
+ c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt", {
50
+ selector: "#render-result"
51
+ }),
52
+ c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/score", {
53
+ selector: "#render-result"
54
+ })
51
55
  ]);
52
56
  for (const group of channels) {
53
- const session = c.botService.getSessionByChannelInfo(group.groupChannel);
57
+ const session = c.agentService.getAgentSessionByChannelInfo(group.channel);
54
58
  if (!session) {
55
59
  continue;
56
60
  }