beatsaber-bot-core 0.2.0-dev.9 → 0.2.0-rc.10
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.
- package/dist/cjs/cmd/bind/bind-beatleader.js +101 -0
- package/dist/cjs/cmd/bind/bind-beatleader.js.map +1 -0
- package/dist/cjs/cmd/bind/bind-beatsaver.js +95 -0
- package/dist/cjs/cmd/bind/bind-beatsaver.js.map +1 -0
- package/dist/cjs/cmd/bind/bind-id-beatleader.js +87 -0
- package/dist/cjs/cmd/bind/bind-id-beatleader.js.map +1 -0
- package/dist/cjs/cmd/bind/bind-id-beatsaver.js +87 -0
- package/dist/cjs/cmd/bind/bind-id-beatsaver.js.map +1 -0
- package/dist/cjs/cmd/bind/bind-scoresaber.js +85 -0
- package/dist/cjs/cmd/bind/bind-scoresaber.js.map +1 -0
- package/dist/cjs/cmd/bind/index.js +80 -0
- package/dist/cjs/cmd/bind/index.js.map +1 -0
- package/dist/cjs/cmd/bsmap/id-search.js +70 -0
- package/dist/cjs/cmd/bsmap/id-search.js.map +1 -0
- package/dist/cjs/cmd/bsmap/key-search.js +76 -0
- package/dist/cjs/cmd/bsmap/key-search.js.map +1 -0
- package/dist/cjs/cmd/bsmap/latest.js +57 -0
- package/dist/cjs/cmd/bsmap/latest.js.map +1 -0
- package/dist/cjs/cmd/config/index.js.map +1 -0
- package/dist/cjs/cmd/deprecated/tmp.js +62 -0
- package/dist/cjs/cmd/deprecated/tmp.js.map +1 -0
- package/dist/cjs/cmd/index.js +65 -0
- package/dist/cjs/cmd/index.js.map +1 -0
- package/dist/cjs/cmd/rank.js +65 -0
- package/dist/cjs/cmd/rank.js.map +1 -0
- package/dist/cjs/cmd/score.js +86 -0
- package/dist/cjs/cmd/score.js.map +1 -0
- package/dist/cjs/cmd/subscribe/beatleader.js +90 -0
- package/dist/cjs/cmd/subscribe/beatleader.js.map +1 -0
- package/dist/cjs/cmd/subscribe/beatsaver.js +90 -0
- package/dist/cjs/cmd/subscribe/beatsaver.js.map +1 -0
- package/dist/cjs/cmd/subscribe/id-beatleader-score.js +110 -0
- package/dist/cjs/cmd/subscribe/id-beatleader-score.js.map +1 -0
- package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js +111 -0
- package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js.map +1 -0
- package/dist/cjs/cmd/subscribe/index.js +89 -0
- package/dist/cjs/cmd/subscribe/index.js.map +1 -0
- package/dist/cjs/cmd/subscribe/subjoin.js +77 -0
- package/dist/cjs/cmd/subscribe/subjoin.js.map +1 -0
- package/dist/cjs/cmd/subscribe/subleave.js +82 -0
- package/dist/cjs/cmd/subscribe/subleave.js.map +1 -0
- package/dist/cjs/cmd/subscribe/unsubscribe.js +149 -0
- package/dist/cjs/cmd/subscribe/unsubscribe.js.map +1 -0
- package/dist/cjs/components/components/RankDifficulty.js +158 -0
- package/dist/cjs/components/components/RankDifficulty.js.map +1 -0
- package/dist/cjs/components/components/base/avatar.js +31 -0
- package/dist/cjs/components/components/base/avatar.js.map +1 -0
- package/dist/cjs/components/components/bl-rank-score-item.js +137 -0
- package/dist/cjs/components/components/bl-rank-score-item.js.map +1 -0
- package/dist/cjs/components/components/bl-score-item.js +104 -0
- package/dist/cjs/components/components/bl-score-item.js.map +1 -0
- package/dist/cjs/components/components/characteristic.js +184 -0
- package/dist/cjs/components/components/characteristic.js.map +1 -0
- package/dist/cjs/components/components/flag.js +65 -0
- package/dist/cjs/components/components/flag.js.map +1 -0
- package/dist/cjs/components/components/icons/BeatLeader.js +115 -0
- package/dist/cjs/components/components/icons/BeatLeader.js.map +1 -0
- package/dist/cjs/components/components/icons/RankIcon.js +45 -0
- package/dist/cjs/components/components/icons/RankIcon.js.map +1 -0
- package/dist/cjs/components/components/icons/ScoreSaberIcon.js +356 -0
- package/dist/cjs/components/components/icons/ScoreSaberIcon.js.map +1 -0
- package/dist/cjs/components/components/progressbar.js +34 -0
- package/dist/cjs/components/components/progressbar.js.map +1 -0
- package/dist/cjs/components/components/scoreItem.js +110 -0
- package/dist/cjs/components/components/scoreItem.js.map +1 -0
- package/dist/cjs/components/components/scoregraph.js +329 -0
- package/dist/cjs/components/components/scoregraph.js.map +1 -0
- package/dist/cjs/components/components/skill-graph.js +230 -0
- package/dist/cjs/components/components/skill-graph.js.map +1 -0
- package/dist/cjs/components/components/socre-badge.js +45 -0
- package/dist/cjs/components/components/socre-badge.js.map +1 -0
- package/dist/cjs/components/components/ss-rank-score-item.js +137 -0
- package/dist/cjs/components/components/ss-rank-score-item.js.map +1 -0
- package/dist/cjs/components/components/ss-score-item.js +100 -0
- package/dist/cjs/components/components/ss-score-item.js.map +1 -0
- package/dist/cjs/components/index.js +87 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/cjs/components/pages/bl-player.js +204 -0
- package/dist/cjs/components/pages/bl-player.js.map +1 -0
- package/dist/cjs/components/pages/bl-score-with-rank.js +300 -0
- package/dist/cjs/components/pages/bl-score-with-rank.js.map +1 -0
- package/dist/cjs/components/pages/bl-score.js +223 -0
- package/dist/cjs/components/pages/bl-score.js.map +1 -0
- package/dist/cjs/components/pages/bs-map.js +214 -0
- package/dist/cjs/components/pages/bs-map.js.map +1 -0
- package/dist/cjs/components/pages/index.js +94 -0
- package/dist/cjs/components/pages/index.js.map +1 -0
- package/dist/cjs/components/pages/ss-player.js +120 -0
- package/dist/cjs/components/pages/ss-player.js.map +1 -0
- package/dist/cjs/components/utils/bl/beatleader.js +57 -0
- package/dist/cjs/components/utils/bl/beatleader.js.map +1 -0
- package/dist/cjs/components/utils/bl/blheadset.js +306 -0
- package/dist/cjs/components/utils/bl/blheadset.js.map +1 -0
- package/dist/cjs/components/utils/bl/bsorDecoder.js +329 -0
- package/dist/cjs/components/utils/bl/bsorDecoder.js.map +1 -0
- package/dist/cjs/components/utils/bl/bsorReplayAcc.js +616 -0
- package/dist/cjs/components/utils/bl/bsorReplayAcc.js.map +1 -0
- package/dist/cjs/components/utils/bl/getPart.js +51 -0
- package/dist/cjs/components/utils/bl/getPart.js.map +1 -0
- package/dist/cjs/components/utils/bl/stastic.js +57 -0
- package/dist/cjs/components/utils/bl/stastic.js.map +1 -0
- package/dist/cjs/components/utils/canvas.js +2 -0
- package/dist/cjs/components/utils/canvas.js.map +1 -0
- package/dist/cjs/components/utils/format.js +93 -0
- package/dist/cjs/components/utils/format.js.map +1 -0
- package/dist/cjs/components/utils/getMods.js +44 -0
- package/dist/cjs/components/utils/getMods.js.map +1 -0
- package/dist/cjs/components/utils/index.js +44 -0
- package/dist/cjs/components/utils/index.js.map +1 -0
- package/dist/cjs/components/utils/qrcode.js +84 -0
- package/dist/cjs/components/utils/qrcode.js.map +1 -0
- package/dist/cjs/components/utils/sleep.js +52 -0
- package/dist/cjs/components/utils/sleep.js.map +1 -0
- package/dist/cjs/components/utils/tag-format.js +248 -0
- package/dist/cjs/components/utils/tag-format.js.map +1 -0
- package/dist/cjs/components/utils/tw-join.js +58 -0
- package/dist/cjs/components/utils/tw-join.js.map +1 -0
- package/dist/cjs/config.js +16 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/index.js +50 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/infra/errors/index.js +249 -0
- package/dist/cjs/infra/errors/index.js.map +1 -0
- package/dist/cjs/infra/i18n/index.js +137 -0
- package/dist/cjs/infra/i18n/index.js.map +1 -0
- package/dist/cjs/infra/i18n/parser.js +171 -0
- package/dist/cjs/infra/i18n/parser.js.map +1 -0
- package/dist/cjs/infra/i18n/zh-cn.json +1 -0
- package/dist/cjs/infra/index.js +31 -0
- package/dist/cjs/infra/index.js.map +1 -0
- package/dist/cjs/infra/s3/index.js +114 -0
- package/dist/cjs/infra/s3/index.js.map +1 -0
- package/dist/cjs/infra/support/cache.js +40 -0
- package/dist/cjs/infra/support/cache.js.map +1 -0
- package/dist/cjs/infra/support/fetch/error.js +49 -0
- package/dist/cjs/infra/support/fetch/error.js.map +1 -0
- package/dist/cjs/infra/support/fetch/index.js +57 -0
- package/dist/cjs/infra/support/fetch/index.js.map +1 -0
- package/dist/cjs/infra/support/fetch/ofetch.js +137 -0
- package/dist/cjs/infra/support/fetch/ofetch.js.map +1 -0
- package/dist/cjs/infra/support/render/index.js +152 -0
- package/dist/cjs/infra/support/render/index.js.map +1 -0
- package/dist/cjs/infra/support/render/puppeteer.js +129 -0
- package/dist/cjs/infra/support/render/puppeteer.js.map +1 -0
- package/dist/cjs/interface/bot.js +16 -0
- package/dist/cjs/interface/bot.js.map +1 -0
- package/dist/cjs/interface/cmd/builder.js +111 -0
- package/dist/cjs/interface/cmd/builder.js.map +1 -0
- package/dist/cjs/interface/cmd/type.js +16 -0
- package/dist/cjs/interface/cmd/type.js.map +1 -0
- package/dist/cjs/interface/db/index.js +22 -0
- package/dist/cjs/interface/db/index.js.map +1 -0
- package/dist/cjs/interface/db/models.js +16 -0
- package/dist/cjs/interface/db/models.js.map +1 -0
- package/dist/cjs/interface/index.js +47 -0
- package/dist/cjs/interface/index.js.map +1 -0
- package/dist/cjs/interface/logger.js +16 -0
- package/dist/cjs/interface/logger.js.map +1 -0
- package/dist/cjs/schedules/index.js +38 -0
- package/dist/cjs/schedules/index.js.map +1 -0
- package/dist/cjs/schedules/interface.js +16 -0
- package/dist/cjs/schedules/interface.js.map +1 -0
- package/dist/cjs/schedules/temp.js +65 -0
- package/dist/cjs/schedules/temp.js.map +1 -0
- package/dist/cjs/service/api/base/aioclient.js +70 -0
- package/dist/cjs/service/api/base/aioclient.js.map +1 -0
- package/dist/cjs/service/api/base/blclient.js +118 -0
- package/dist/cjs/service/api/base/blclient.js.map +1 -0
- package/dist/cjs/service/api/base/bsclient.js +138 -0
- package/dist/cjs/service/api/base/bsclient.js.map +1 -0
- package/dist/cjs/service/api/base/index.js +28 -0
- package/dist/cjs/service/api/base/index.js.map +1 -0
- package/dist/cjs/service/api/base/ssclient.js +95 -0
- package/dist/cjs/service/api/base/ssclient.js.map +1 -0
- package/dist/cjs/service/api/index.js +218 -0
- package/dist/cjs/service/api/index.js.map +1 -0
- package/dist/cjs/service/api/interfaces/aiosaber/index.js +16 -0
- package/dist/cjs/service/api/interfaces/aiosaber/index.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatleader/bsor.js +16 -0
- package/dist/cjs/service/api/interfaces/beatleader/bsor.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatleader/index.js +30 -0
- package/dist/cjs/service/api/interfaces/beatleader/index.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatleader/req.js +16 -0
- package/dist/cjs/service/api/interfaces/beatleader/req.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatleader/score.js +16 -0
- package/dist/cjs/service/api/interfaces/beatleader/score.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatleader/user.js +16 -0
- package/dist/cjs/service/api/interfaces/beatleader/user.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatleader/ws.js +16 -0
- package/dist/cjs/service/api/interfaces/beatleader/ws.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatsaver/alert.js +16 -0
- package/dist/cjs/service/api/interfaces/beatsaver/alert.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatsaver/bsmap.js +16 -0
- package/dist/cjs/service/api/interfaces/beatsaver/bsmap.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatsaver/index.js +30 -0
- package/dist/cjs/service/api/interfaces/beatsaver/index.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatsaver/resp.js +16 -0
- package/dist/cjs/service/api/interfaces/beatsaver/resp.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatsaver/user.js +16 -0
- package/dist/cjs/service/api/interfaces/beatsaver/user.js.map +1 -0
- package/dist/cjs/service/api/interfaces/beatsaver/ws.js +16 -0
- package/dist/cjs/service/api/interfaces/beatsaver/ws.js.map +1 -0
- package/dist/cjs/service/api/interfaces/index.js +16 -0
- package/dist/cjs/service/api/interfaces/index.js.map +1 -0
- package/dist/cjs/service/api/interfaces/scoresaber/index.js +26 -0
- package/dist/cjs/service/api/interfaces/scoresaber/index.js.map +1 -0
- package/dist/cjs/service/api/interfaces/scoresaber/item.js +16 -0
- package/dist/cjs/service/api/interfaces/scoresaber/item.js.map +1 -0
- package/dist/cjs/service/api/interfaces/scoresaber/leaderboard.js +16 -0
- package/dist/cjs/service/api/interfaces/scoresaber/leaderboard.js.map +1 -0
- package/dist/cjs/service/api/interfaces/scoresaber/resp.js +16 -0
- package/dist/cjs/service/api/interfaces/scoresaber/resp.js.map +1 -0
- package/dist/cjs/service/api/interfaces/scoresaber/user.js +16 -0
- package/dist/cjs/service/api/interfaces/scoresaber/user.js.map +1 -0
- package/dist/cjs/service/api/interfaces/scoresaber/ws.js +16 -0
- package/dist/cjs/service/api/interfaces/scoresaber/ws.js.map +1 -0
- package/dist/cjs/service/api/sortScore.js +51 -0
- package/dist/cjs/service/api/sortScore.js.map +1 -0
- package/dist/cjs/service/index.js +16 -0
- package/dist/cjs/service/index.js.map +1 -0
- package/dist/cjs/service/preference.js +181 -0
- package/dist/cjs/service/preference.js.map +1 -0
- package/dist/cjs/service/render/index.js +154 -0
- package/dist/cjs/service/render/index.js.map +1 -0
- package/dist/cjs/service/render/interfaces.js +16 -0
- package/dist/cjs/service/render/interfaces.js.map +1 -0
- package/dist/cjs/utils/index.js +95 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/ws/beatleader.js +92 -0
- package/dist/cjs/ws/beatleader.js.map +1 -0
- package/dist/cjs/ws/beatsaver.js +131 -0
- package/dist/cjs/ws/beatsaver.js.map +1 -0
- package/dist/cjs/ws/bl-filter.js +1 -0
- package/dist/cjs/ws/bl-filter.js.map +1 -0
- package/dist/cjs/ws/handler.js +16 -0
- package/dist/cjs/ws/handler.js.map +1 -0
- package/dist/cjs/ws/index.js +28 -0
- package/dist/cjs/ws/index.js.map +1 -0
- package/dist/cjs/ws/scoresaber.js +75 -0
- package/dist/cjs/ws/scoresaber.js.map +1 -0
- package/dist/esm/cmd/bind/bind-beatleader.js +78 -0
- package/dist/esm/cmd/bind/bind-beatleader.js.map +1 -0
- package/dist/esm/cmd/bind/bind-beatsaver.js +72 -0
- package/dist/esm/cmd/bind/bind-beatsaver.js.map +1 -0
- package/dist/esm/cmd/bind/bind-id-beatleader.js +68 -0
- package/dist/esm/cmd/bind/bind-id-beatleader.js.map +1 -0
- package/dist/esm/cmd/bind/bind-id-beatsaver.js +68 -0
- package/dist/esm/cmd/bind/bind-id-beatsaver.js.map +1 -0
- package/dist/esm/cmd/bind/bind-scoresaber.js +66 -0
- package/dist/esm/cmd/bind/bind-scoresaber.js.map +1 -0
- package/dist/esm/cmd/bind/index.js +61 -0
- package/dist/esm/cmd/bind/index.js.map +1 -0
- package/dist/esm/cmd/bsmap/id-search.js +51 -0
- package/dist/esm/cmd/bsmap/id-search.js.map +1 -0
- package/dist/esm/cmd/bsmap/key-search.js +57 -0
- package/dist/esm/cmd/bsmap/key-search.js.map +1 -0
- package/dist/esm/cmd/bsmap/latest.js +38 -0
- package/dist/esm/cmd/bsmap/latest.js.map +1 -0
- package/dist/esm/cmd/config/index.js +1 -0
- package/dist/esm/cmd/config/index.js.map +1 -0
- package/dist/esm/cmd/deprecated/tmp.js +43 -0
- package/dist/esm/cmd/deprecated/tmp.js.map +1 -0
- package/dist/esm/cmd/index.js +32 -0
- package/dist/esm/cmd/index.js.map +1 -0
- package/dist/esm/cmd/rank.js +46 -0
- package/dist/esm/cmd/rank.js.map +1 -0
- package/dist/esm/cmd/score.js +70 -0
- package/dist/esm/cmd/score.js.map +1 -0
- package/dist/esm/cmd/subscribe/beatleader.js +69 -0
- package/dist/esm/cmd/subscribe/beatleader.js.map +1 -0
- package/dist/esm/cmd/subscribe/beatsaver.js +69 -0
- package/dist/esm/cmd/subscribe/beatsaver.js.map +1 -0
- package/dist/esm/cmd/subscribe/id-beatleader-score.js +89 -0
- package/dist/esm/cmd/subscribe/id-beatleader-score.js.map +1 -0
- package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +90 -0
- package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js.map +1 -0
- package/dist/esm/cmd/subscribe/index.js +70 -0
- package/dist/esm/cmd/subscribe/index.js.map +1 -0
- package/dist/esm/cmd/subscribe/subjoin.js +58 -0
- package/dist/esm/cmd/subscribe/subjoin.js.map +1 -0
- package/dist/esm/cmd/subscribe/subleave.js +63 -0
- package/dist/esm/cmd/subscribe/subleave.js.map +1 -0
- package/dist/esm/cmd/subscribe/unsubscribe.js +135 -0
- package/dist/esm/cmd/subscribe/unsubscribe.js.map +1 -0
- package/dist/esm/components/components/RankDifficulty.js +137 -0
- package/dist/esm/components/components/RankDifficulty.js.map +1 -0
- package/dist/esm/components/components/base/avatar.js +8 -0
- package/dist/esm/components/components/base/avatar.js.map +1 -0
- package/dist/esm/components/components/bl-rank-score-item.js +103 -0
- package/dist/esm/components/components/bl-rank-score-item.js.map +1 -0
- package/dist/esm/components/components/bl-score-item.js +85 -0
- package/dist/esm/components/components/bl-score-item.js.map +1 -0
- package/dist/esm/components/components/characteristic.js +161 -0
- package/dist/esm/components/components/characteristic.js.map +1 -0
- package/dist/esm/components/components/flag.js +32 -0
- package/dist/esm/components/components/flag.js.map +1 -0
- package/dist/esm/components/components/icons/BeatLeader.js +98 -0
- package/dist/esm/components/components/icons/BeatLeader.js.map +1 -0
- package/dist/esm/components/components/icons/RankIcon.js +16 -0
- package/dist/esm/components/components/icons/RankIcon.js.map +1 -0
- package/dist/esm/components/components/icons/ScoreSaberIcon.js +339 -0
- package/dist/esm/components/components/icons/ScoreSaberIcon.js.map +1 -0
- package/dist/esm/components/components/progressbar.js +15 -0
- package/dist/esm/components/components/progressbar.js.map +1 -0
- package/dist/esm/components/components/scoreItem.js +91 -0
- package/dist/esm/components/components/scoreItem.js.map +1 -0
- package/dist/esm/components/components/scoregraph.js +299 -0
- package/dist/esm/components/components/scoregraph.js.map +1 -0
- package/dist/esm/components/components/skill-graph.js +211 -0
- package/dist/esm/components/components/skill-graph.js.map +1 -0
- package/dist/esm/components/components/socre-badge.js +26 -0
- package/dist/esm/components/components/socre-badge.js.map +1 -0
- package/dist/esm/components/components/ss-rank-score-item.js +103 -0
- package/dist/esm/components/components/ss-rank-score-item.js.map +1 -0
- package/dist/esm/components/components/ss-score-item.js +81 -0
- package/dist/esm/components/components/ss-score-item.js.map +1 -0
- package/dist/esm/components/index.js +54 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/esm/components/pages/bl-player.js +177 -0
- package/dist/esm/components/pages/bl-player.js.map +1 -0
- package/dist/esm/components/pages/bl-score-with-rank.js +284 -0
- package/dist/esm/components/pages/bl-score-with-rank.js.map +1 -0
- package/dist/esm/components/pages/bl-score.js +199 -0
- package/dist/esm/components/pages/bl-score.js.map +1 -0
- package/dist/esm/components/pages/bs-map.js +194 -0
- package/dist/esm/components/pages/bs-map.js.map +1 -0
- package/dist/esm/components/pages/index.js +57 -0
- package/dist/esm/components/pages/index.js.map +1 -0
- package/dist/esm/components/pages/ss-player.js +91 -0
- package/dist/esm/components/pages/ss-player.js.map +1 -0
- package/dist/esm/components/utils/bl/beatleader.js +33 -0
- package/dist/esm/components/utils/bl/beatleader.js.map +1 -0
- package/dist/esm/components/utils/bl/blheadset.js +282 -0
- package/dist/esm/components/utils/bl/blheadset.js.map +1 -0
- package/dist/esm/components/utils/bl/bsorDecoder.js +301 -0
- package/dist/esm/components/utils/bl/bsorDecoder.js.map +1 -0
- package/dist/esm/components/utils/bl/bsorReplayAcc.js +588 -0
- package/dist/esm/components/utils/bl/bsorReplayAcc.js.map +1 -0
- package/dist/esm/components/utils/bl/getPart.js +32 -0
- package/dist/esm/components/utils/bl/getPart.js.map +1 -0
- package/dist/esm/components/utils/bl/stastic.js +38 -0
- package/dist/esm/components/utils/bl/stastic.js.map +1 -0
- package/dist/esm/components/utils/canvas.js +2 -0
- package/dist/esm/components/utils/canvas.js.map +1 -0
- package/dist/esm/components/utils/format.js +55 -0
- package/dist/esm/components/utils/format.js.map +1 -0
- package/dist/esm/components/utils/getMods.js +21 -0
- package/dist/esm/components/utils/getMods.js.map +1 -0
- package/dist/esm/components/utils/index.js +18 -0
- package/dist/esm/components/utils/index.js.map +1 -0
- package/dist/esm/components/utils/qrcode.js +65 -0
- package/dist/esm/components/utils/qrcode.js.map +1 -0
- package/dist/esm/components/utils/sleep.js +29 -0
- package/dist/esm/components/utils/sleep.js.map +1 -0
- package/dist/esm/components/utils/tag-format.js +225 -0
- package/dist/esm/components/utils/tag-format.js.map +1 -0
- package/dist/esm/components/utils/tw-join.js +35 -0
- package/dist/esm/components/utils/tw-join.js.map +1 -0
- package/dist/esm/config.js +1 -0
- package/dist/esm/config.js.map +1 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/infra/errors/index.js +206 -0
- package/dist/esm/infra/errors/index.js.map +1 -0
- package/dist/esm/infra/i18n/index.js +103 -0
- package/dist/esm/infra/i18n/index.js.map +1 -0
- package/dist/esm/infra/i18n/parser.js +148 -0
- package/dist/esm/infra/i18n/parser.js.map +1 -0
- package/dist/esm/infra/index.js +6 -0
- package/dist/esm/infra/index.js.map +1 -0
- package/dist/esm/infra/s3/index.js +82 -0
- package/dist/esm/infra/s3/index.js.map +1 -0
- package/dist/esm/infra/support/cache.js +16 -0
- package/dist/esm/infra/support/cache.js.map +1 -0
- package/dist/esm/infra/support/fetch/error.js +24 -0
- package/dist/esm/infra/support/fetch/error.js.map +1 -0
- package/dist/esm/infra/support/fetch/index.js +33 -0
- package/dist/esm/infra/support/fetch/index.js.map +1 -0
- package/dist/esm/infra/support/fetch/ofetch.js +114 -0
- package/dist/esm/infra/support/fetch/ofetch.js.map +1 -0
- package/dist/esm/infra/support/render/index.js +127 -0
- package/dist/esm/infra/support/render/index.js.map +1 -0
- package/dist/esm/infra/support/render/puppeteer.js +107 -0
- package/dist/esm/infra/support/render/puppeteer.js.map +1 -0
- package/dist/esm/interface/bot.js +1 -0
- package/dist/esm/interface/bot.js.map +1 -0
- package/dist/esm/interface/cmd/builder.js +89 -0
- package/dist/esm/interface/cmd/builder.js.map +1 -0
- package/dist/esm/interface/cmd/type.js +1 -0
- package/dist/esm/interface/cmd/type.js.map +1 -0
- package/dist/esm/interface/db/index.js +2 -0
- package/dist/esm/interface/db/index.js.map +1 -0
- package/dist/esm/interface/db/models.js +1 -0
- package/dist/esm/interface/db/models.js.map +1 -0
- package/dist/esm/interface/index.js +18 -0
- package/dist/esm/interface/index.js.map +1 -0
- package/dist/esm/interface/logger.js +1 -0
- package/dist/esm/interface/logger.js.map +1 -0
- package/dist/esm/schedules/index.js +15 -0
- package/dist/esm/schedules/index.js.map +1 -0
- package/dist/esm/schedules/interface.js +1 -0
- package/dist/esm/schedules/interface.js.map +1 -0
- package/dist/esm/schedules/temp.js +42 -0
- package/dist/esm/schedules/temp.js.map +1 -0
- package/dist/esm/service/api/base/aioclient.js +48 -0
- package/dist/esm/service/api/base/aioclient.js.map +1 -0
- package/dist/esm/service/api/base/blclient.js +96 -0
- package/dist/esm/service/api/base/blclient.js.map +1 -0
- package/dist/esm/service/api/base/bsclient.js +117 -0
- package/dist/esm/service/api/base/bsclient.js.map +1 -0
- package/dist/esm/service/api/base/index.js +5 -0
- package/dist/esm/service/api/base/index.js.map +1 -0
- package/dist/esm/service/api/base/ssclient.js +73 -0
- package/dist/esm/service/api/base/ssclient.js.map +1 -0
- package/dist/esm/service/api/index.js +197 -0
- package/dist/esm/service/api/index.js.map +1 -0
- package/dist/esm/service/api/interfaces/aiosaber/index.js +1 -0
- package/dist/esm/service/api/interfaces/aiosaber/index.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatleader/bsor.js +1 -0
- package/dist/esm/service/api/interfaces/beatleader/bsor.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatleader/index.js +6 -0
- package/dist/esm/service/api/interfaces/beatleader/index.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatleader/req.js +1 -0
- package/dist/esm/service/api/interfaces/beatleader/req.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatleader/score.js +1 -0
- package/dist/esm/service/api/interfaces/beatleader/score.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatleader/user.js +1 -0
- package/dist/esm/service/api/interfaces/beatleader/user.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatleader/ws.js +1 -0
- package/dist/esm/service/api/interfaces/beatleader/ws.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/alert.js +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/alert.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/bsmap.js +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/bsmap.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/index.js +6 -0
- package/dist/esm/service/api/interfaces/beatsaver/index.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/resp.js +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/resp.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/user.js +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/user.js.map +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/ws.js +1 -0
- package/dist/esm/service/api/interfaces/beatsaver/ws.js.map +1 -0
- package/dist/esm/service/api/interfaces/index.js +1 -0
- package/dist/esm/service/api/interfaces/index.js.map +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/index.js +4 -0
- package/dist/esm/service/api/interfaces/scoresaber/index.js.map +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/item.js +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/item.js.map +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/leaderboard.js +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/leaderboard.js.map +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/resp.js +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/resp.js.map +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/user.js +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/user.js.map +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/ws.js +1 -0
- package/dist/esm/service/api/interfaces/scoresaber/ws.js.map +1 -0
- package/dist/esm/service/api/sortScore.js +28 -0
- package/dist/esm/service/api/sortScore.js.map +1 -0
- package/dist/esm/service/index.js +1 -0
- package/dist/esm/service/index.js.map +1 -0
- package/dist/esm/service/preference.js +156 -0
- package/dist/esm/service/preference.js.map +1 -0
- package/dist/esm/service/render/index.js +123 -0
- package/dist/esm/service/render/index.js.map +1 -0
- package/dist/esm/service/render/interfaces.js +1 -0
- package/dist/esm/service/render/interfaces.js.map +1 -0
- package/dist/esm/utils/index.js +70 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/ws/beatleader.js +70 -0
- package/dist/esm/ws/beatleader.js.map +1 -0
- package/dist/esm/ws/beatsaver.js +109 -0
- package/dist/esm/ws/beatsaver.js.map +1 -0
- package/dist/esm/ws/bl-filter.js +1 -0
- package/dist/esm/ws/bl-filter.js.map +1 -0
- package/dist/esm/ws/handler.js +1 -0
- package/dist/esm/ws/handler.js.map +1 -0
- package/dist/esm/ws/index.js +5 -0
- package/dist/esm/ws/index.js.map +1 -0
- package/dist/esm/ws/scoresaber.js +53 -0
- package/dist/esm/ws/scoresaber.js.map +1 -0
- package/dist/types/cmd/bind/bind-beatleader.d.ts +34 -0
- package/dist/types/cmd/bind/bind-beatsaver.d.ts +34 -0
- package/dist/types/cmd/bind/bind-id-beatleader.d.ts +34 -0
- package/dist/types/cmd/bind/bind-id-beatsaver.d.ts +34 -0
- package/dist/types/cmd/bind/bind-scoresaber.d.ts +34 -0
- package/dist/types/cmd/bind/index.d.ts +41 -0
- package/dist/types/cmd/bsmap/id-search.d.ts +41 -0
- package/dist/types/cmd/bsmap/key-search.d.ts +41 -0
- package/dist/types/cmd/bsmap/latest.d.ts +41 -0
- package/dist/types/cmd/config/index.d.ts +2 -0
- package/dist/types/cmd/deprecated/tmp.d.ts +41 -0
- package/dist/types/cmd/index.d.ts +34 -0
- package/dist/types/cmd/rank.d.ts +41 -0
- package/dist/types/cmd/score.d.ts +41 -0
- package/dist/types/cmd/subscribe/beatleader.d.ts +34 -0
- package/dist/types/cmd/subscribe/beatsaver.d.ts +34 -0
- package/dist/types/cmd/subscribe/id-beatleader-score.d.ts +34 -0
- package/dist/types/cmd/subscribe/id-beatsaver-mapper.d.ts +34 -0
- package/dist/types/cmd/subscribe/index.d.ts +41 -0
- package/dist/types/cmd/subscribe/subjoin.d.ts +41 -0
- package/dist/types/cmd/subscribe/subleave.d.ts +41 -0
- package/dist/types/cmd/subscribe/unsubscribe.d.ts +41 -0
- package/dist/types/components/components/RankDifficulty.d.ts +10 -0
- package/dist/types/components/components/base/avatar.d.ts +10 -0
- package/dist/types/components/components/bl-rank-score-item.d.ts +21 -0
- package/dist/types/components/components/bl-score-item.d.ts +10 -0
- package/dist/types/components/components/characteristic.d.ts +9 -0
- package/dist/types/components/components/flag.d.ts +9 -0
- package/dist/types/components/components/icons/BeatLeader.d.ts +6 -0
- package/dist/types/components/components/icons/RankIcon.d.ts +8 -0
- package/dist/types/components/components/icons/ScoreSaberIcon.d.ts +6 -0
- package/dist/types/components/components/progressbar.d.ts +8 -0
- package/dist/types/components/components/scoreItem.d.ts +8 -0
- package/dist/types/components/components/scoregraph.d.ts +15 -0
- package/dist/types/components/components/skill-graph.d.ts +9 -0
- package/dist/types/components/components/socre-badge.d.ts +9 -0
- package/dist/types/components/components/ss-rank-score-item.d.ts +21 -0
- package/dist/types/components/components/ss-score-item.d.ts +8 -0
- package/dist/types/components/index.d.ts +5 -0
- package/dist/types/components/pages/bl-player.d.ts +11 -0
- package/dist/types/components/pages/bl-score-with-rank.d.ts +18 -0
- package/dist/types/components/pages/bl-score.d.ts +15 -0
- package/dist/types/components/pages/bs-map.d.ts +11 -0
- package/dist/types/components/pages/index.d.ts +14 -0
- package/dist/types/components/pages/ss-player.d.ts +13 -0
- package/dist/types/components/utils/bl/beatleader.d.ts +15 -0
- package/dist/types/components/utils/bl/blheadset.d.ts +275 -0
- package/dist/types/components/utils/bl/bsorDecoder.d.ts +189 -0
- package/dist/types/components/utils/bl/bsorReplayAcc.d.ts +38 -0
- package/dist/types/components/utils/bl/getPart.d.ts +9 -0
- package/dist/types/components/utils/bl/stastic.d.ts +3 -0
- package/dist/types/components/utils/canvas.d.ts +2 -0
- package/dist/types/components/utils/format.d.ts +8 -0
- package/dist/types/components/utils/getMods.d.ts +5 -0
- package/dist/types/components/utils/index.d.ts +6 -0
- package/dist/types/components/utils/qrcode.d.ts +3 -0
- package/dist/types/components/utils/sleep.d.ts +3 -0
- package/dist/types/components/utils/tag-format.d.ts +3 -0
- package/dist/types/components/utils/tw-join.d.ts +5 -0
- package/dist/types/config.d.ts +30 -0
- package/dist/types/index-Dagy_c8G.d.ts +74 -0
- package/dist/types/index.d.ts +54 -0
- package/dist/types/infra/errors/index.d.ts +69 -0
- package/dist/types/infra/i18n/index.d.ts +4 -0
- package/dist/types/infra/i18n/parser.d.ts +16 -0
- package/dist/types/infra/index.d.ts +6 -0
- package/dist/types/infra/s3/index.d.ts +20 -0
- package/dist/types/infra/support/cache.d.ts +6 -0
- package/dist/types/infra/support/fetch/error.d.ts +11 -0
- package/dist/types/infra/support/fetch/index.d.ts +7 -0
- package/dist/types/infra/support/fetch/ofetch.d.ts +24 -0
- package/dist/types/infra/support/render/index.d.ts +38 -0
- package/dist/types/infra/support/render/puppeteer.d.ts +43 -0
- package/dist/types/interface/bot.d.ts +22 -0
- package/dist/types/interface/cmd/builder.d.ts +53 -0
- package/dist/types/interface/cmd/type.d.ts +30 -0
- package/dist/types/interface/db/index.d.ts +45 -0
- package/dist/types/interface/db/models.d.ts +41 -0
- package/dist/types/interface/index.d.ts +30 -0
- package/dist/types/interface/logger.d.ts +8 -0
- package/dist/types/schedules/index.d.ts +40 -0
- package/dist/types/schedules/interface.d.ts +45 -0
- package/dist/types/schedules/temp.d.ts +35 -0
- package/dist/types/service/api/base/aioclient.d.ts +13 -0
- package/dist/types/service/api/base/blclient.d.ts +28 -0
- package/dist/types/service/api/base/bsclient.d.ts +29 -0
- package/dist/types/service/api/base/index.d.ts +19 -0
- package/dist/types/service/api/base/ssclient.d.ts +17 -0
- package/dist/types/service/api/index.d.ts +59 -0
- package/dist/types/service/api/interfaces/aiosaber/index.d.ts +9 -0
- package/dist/types/service/api/interfaces/beatleader/bsor.d.ts +113 -0
- package/dist/types/service/api/interfaces/beatleader/index.d.ts +5 -0
- package/dist/types/service/api/interfaces/beatleader/req.d.ts +22 -0
- package/dist/types/service/api/interfaces/beatleader/score.d.ts +164 -0
- package/dist/types/service/api/interfaces/beatleader/user.d.ts +173 -0
- package/dist/types/service/api/interfaces/beatleader/ws.d.ts +90 -0
- package/dist/types/service/api/interfaces/beatsaver/alert.d.ts +20 -0
- package/dist/types/service/api/interfaces/beatsaver/bsmap.d.ts +70 -0
- package/dist/types/service/api/interfaces/beatsaver/index.d.ts +13 -0
- package/dist/types/service/api/interfaces/beatsaver/resp.d.ts +11 -0
- package/dist/types/service/api/interfaces/beatsaver/user.d.ts +10 -0
- package/dist/types/service/api/interfaces/beatsaver/ws.d.ts +13 -0
- package/dist/types/service/api/interfaces/index.d.ts +14 -0
- package/dist/types/service/api/interfaces/scoresaber/index.d.ts +3 -0
- package/dist/types/service/api/interfaces/scoresaber/item.d.ts +67 -0
- package/dist/types/service/api/interfaces/scoresaber/leaderboard.d.ts +13 -0
- package/dist/types/service/api/interfaces/scoresaber/resp.d.ts +12 -0
- package/dist/types/service/api/interfaces/scoresaber/user.d.ts +35 -0
- package/dist/types/service/api/interfaces/scoresaber/ws.d.ts +80 -0
- package/dist/types/service/api/sortScore.d.ts +5 -0
- package/dist/types/service/index.d.ts +30 -0
- package/dist/types/service/preference.d.ts +38 -0
- package/dist/types/service/render/index.d.ts +43 -0
- package/dist/types/service/render/interfaces.d.ts +30 -0
- package/dist/types/utils/index.d.ts +5 -0
- package/dist/types/ws/beatleader.d.ts +47 -0
- package/dist/types/ws/beatsaver.d.ts +52 -0
- package/dist/types/ws/bl-filter.d.ts +2 -0
- package/dist/types/ws/handler.d.ts +8 -0
- package/dist/types/ws/index.d.ts +36 -0
- package/dist/types/ws/scoresaber.d.ts +47 -0
- package/package.json +38 -58
- package/lib/api/base/aioRequest.d.ts +0 -6
- package/lib/api/base/aioRequest.js +0 -24
- package/lib/api/base/aioRequest.js.map +0 -1
- package/lib/api/base/blRequset.d.ts +0 -12
- package/lib/api/base/blRequset.js +0 -68
- package/lib/api/base/blRequset.js.map +0 -1
- package/lib/api/base/bsRequest.d.ts +0 -24
- package/lib/api/base/bsRequest.js +0 -64
- package/lib/api/base/bsRequest.js.map +0 -1
- package/lib/api/base/index.d.ts +0 -12
- package/lib/api/base/index.js +0 -21
- package/lib/api/base/index.js.map +0 -1
- package/lib/api/base/scRequest.d.ts +0 -6
- package/lib/api/base/scRequest.js +0 -28
- package/lib/api/base/scRequest.js.map +0 -1
- package/lib/api/composed/aiosaber.d.ts +0 -7
- package/lib/api/composed/aiosaber.js +0 -16
- package/lib/api/composed/aiosaber.js.map +0 -1
- package/lib/api/composed/beatleader.d.ts +0 -32
- package/lib/api/composed/beatleader.js +0 -112
- package/lib/api/composed/beatleader.js.map +0 -1
- package/lib/api/composed/beatsaver.d.ts +0 -12
- package/lib/api/composed/beatsaver.js +0 -18
- package/lib/api/composed/beatsaver.js.map +0 -1
- package/lib/api/composed/scoresaber.d.ts +0 -14
- package/lib/api/composed/scoresaber.js +0 -67
- package/lib/api/composed/scoresaber.js.map +0 -1
- package/lib/api/index.d.ts +0 -31
- package/lib/api/index.js +0 -134
- package/lib/api/index.js.map +0 -1
- package/lib/api/interfaces/aiosaber/index.d.ts +0 -7
- package/lib/api/interfaces/aiosaber/index.js +0 -3
- package/lib/api/interfaces/aiosaber/index.js.map +0 -1
- package/lib/api/interfaces/beatleader/bsor.d.ts +0 -112
- package/lib/api/interfaces/beatleader/bsor.js +0 -3
- package/lib/api/interfaces/beatleader/bsor.js.map +0 -1
- package/lib/api/interfaces/beatleader/index.d.ts +0 -5
- package/lib/api/interfaces/beatleader/index.js +0 -22
- package/lib/api/interfaces/beatleader/index.js.map +0 -1
- package/lib/api/interfaces/beatleader/req.d.ts +0 -19
- package/lib/api/interfaces/beatleader/req.js +0 -3
- package/lib/api/interfaces/beatleader/req.js.map +0 -1
- package/lib/api/interfaces/beatleader/score.d.ts +0 -162
- package/lib/api/interfaces/beatleader/score.js +0 -3
- package/lib/api/interfaces/beatleader/score.js.map +0 -1
- package/lib/api/interfaces/beatleader/user.d.ts +0 -171
- package/lib/api/interfaces/beatleader/user.js +0 -3
- package/lib/api/interfaces/beatleader/user.js.map +0 -1
- package/lib/api/interfaces/beatleader/ws.d.ts +0 -87
- package/lib/api/interfaces/beatleader/ws.js +0 -3
- package/lib/api/interfaces/beatleader/ws.js.map +0 -1
- package/lib/api/interfaces/beatsaver/alert.d.ts +0 -18
- package/lib/api/interfaces/beatsaver/alert.js +0 -3
- package/lib/api/interfaces/beatsaver/alert.js.map +0 -1
- package/lib/api/interfaces/beatsaver/bsmap.d.ts +0 -66
- package/lib/api/interfaces/beatsaver/bsmap.js +0 -3
- package/lib/api/interfaces/beatsaver/bsmap.js.map +0 -1
- package/lib/api/interfaces/beatsaver/index.d.ts +0 -10
- package/lib/api/interfaces/beatsaver/index.js +0 -22
- package/lib/api/interfaces/beatsaver/index.js.map +0 -1
- package/lib/api/interfaces/beatsaver/resp.d.ts +0 -8
- package/lib/api/interfaces/beatsaver/resp.js +0 -3
- package/lib/api/interfaces/beatsaver/resp.js.map +0 -1
- package/lib/api/interfaces/beatsaver/user.d.ts +0 -8
- package/lib/api/interfaces/beatsaver/user.js +0 -3
- package/lib/api/interfaces/beatsaver/user.js.map +0 -1
- package/lib/api/interfaces/beatsaver/ws.d.ts +0 -11
- package/lib/api/interfaces/beatsaver/ws.js +0 -3
- package/lib/api/interfaces/beatsaver/ws.js.map +0 -1
- package/lib/api/interfaces/scoresaber/index.d.ts +0 -3
- package/lib/api/interfaces/scoresaber/index.js +0 -20
- package/lib/api/interfaces/scoresaber/index.js.map +0 -1
- package/lib/api/interfaces/scoresaber/item.d.ts +0 -57
- package/lib/api/interfaces/scoresaber/item.js +0 -3
- package/lib/api/interfaces/scoresaber/item.js.map +0 -1
- package/lib/api/interfaces/scoresaber/resp.d.ts +0 -9
- package/lib/api/interfaces/scoresaber/resp.js +0 -3
- package/lib/api/interfaces/scoresaber/resp.js.map +0 -1
- package/lib/api/interfaces/scoresaber/user.d.ts +0 -33
- package/lib/api/interfaces/scoresaber/user.js +0 -3
- package/lib/api/interfaces/scoresaber/user.js.map +0 -1
- package/lib/api/interfaces/scoresaber/ws.d.ts +0 -78
- package/lib/api/interfaces/scoresaber/ws.js +0 -3
- package/lib/api/interfaces/scoresaber/ws.js.map +0 -1
- package/lib/api/netResult.d.ts +0 -18
- package/lib/api/netResult.js +0 -42
- package/lib/api/netResult.js.map +0 -1
- package/lib/api/sortScore.d.ts +0 -2
- package/lib/api/sortScore.js +0 -31
- package/lib/api/sortScore.js.map +0 -1
- package/lib/cmd/bind/bind-beatleader.d.ts +0 -2
- package/lib/cmd/bind/bind-beatleader.js +0 -53
- package/lib/cmd/bind/bind-beatleader.js.map +0 -1
- package/lib/cmd/bind/bind-beatsaver.d.ts +0 -2
- package/lib/cmd/bind/bind-beatsaver.js +0 -55
- package/lib/cmd/bind/bind-beatsaver.js.map +0 -1
- package/lib/cmd/bind/bind-id-beatleader.d.ts +0 -2
- package/lib/cmd/bind/bind-id-beatleader.js +0 -55
- package/lib/cmd/bind/bind-id-beatleader.js.map +0 -1
- package/lib/cmd/bind/bind-id-beatsaver.d.ts +0 -2
- package/lib/cmd/bind/bind-id-beatsaver.js +0 -55
- package/lib/cmd/bind/bind-id-beatsaver.js.map +0 -1
- package/lib/cmd/bind/bind-scoresaber.d.ts +0 -2
- package/lib/cmd/bind/bind-scoresaber.js +0 -61
- package/lib/cmd/bind/bind-scoresaber.js.map +0 -1
- package/lib/cmd/bind/index.d.ts +0 -11
- package/lib/cmd/bind/index.js +0 -52
- package/lib/cmd/bind/index.js.map +0 -1
- package/lib/cmd/bsmap/id-search.d.ts +0 -9
- package/lib/cmd/bsmap/id-search.js +0 -35
- package/lib/cmd/bsmap/id-search.js.map +0 -1
- package/lib/cmd/bsmap/key-search.d.ts +0 -9
- package/lib/cmd/bsmap/key-search.js +0 -41
- package/lib/cmd/bsmap/key-search.js.map +0 -1
- package/lib/cmd/bsmap/latest.d.ts +0 -9
- package/lib/cmd/bsmap/latest.js +0 -36
- package/lib/cmd/bsmap/latest.js.map +0 -1
- package/lib/cmd/builder.d.ts +0 -27
- package/lib/cmd/builder.js +0 -60
- package/lib/cmd/builder.js.map +0 -1
- package/lib/cmd/deprecated/cmp.d.ts +0 -9
- package/lib/cmd/deprecated/cmp.js +0 -15
- package/lib/cmd/deprecated/cmp.js.map +0 -1
- package/lib/cmd/deprecated/me.d.ts +0 -13
- package/lib/cmd/deprecated/me.js +0 -66
- package/lib/cmd/deprecated/me.js.map +0 -1
- package/lib/cmd/deprecated/tmp.d.ts +0 -9
- package/lib/cmd/deprecated/tmp.js +0 -21
- package/lib/cmd/deprecated/tmp.js.map +0 -1
- package/lib/cmd/deprecated/whois.d.ts +0 -11
- package/lib/cmd/deprecated/whois.js +0 -40
- package/lib/cmd/deprecated/whois.js.map +0 -1
- package/lib/cmd/help.d.ts +0 -9
- package/lib/cmd/help.js +0 -14
- package/lib/cmd/help.js.map +0 -1
- package/lib/cmd/index.d.ts +0 -2
- package/lib/cmd/index.js +0 -23
- package/lib/cmd/index.js.map +0 -1
- package/lib/cmd/rank.d.ts +0 -11
- package/lib/cmd/rank.js +0 -55
- package/lib/cmd/rank.js.map +0 -1
- package/lib/cmd/score.d.ts +0 -13
- package/lib/cmd/score.js +0 -43
- package/lib/cmd/score.js.map +0 -1
- package/lib/cmd/subscribe/beatleader.d.ts +0 -2
- package/lib/cmd/subscribe/beatleader.js +0 -27
- package/lib/cmd/subscribe/beatleader.js.map +0 -1
- package/lib/cmd/subscribe/beatsaver.d.ts +0 -2
- package/lib/cmd/subscribe/beatsaver.js +0 -27
- package/lib/cmd/subscribe/beatsaver.js.map +0 -1
- package/lib/cmd/subscribe/deprecated/alert.d.ts +0 -0
- package/lib/cmd/subscribe/deprecated/alert.js +0 -86
- package/lib/cmd/subscribe/deprecated/alert.js.map +0 -1
- package/lib/cmd/subscribe/deprecated/blfilters.d.ts +0 -0
- package/lib/cmd/subscribe/deprecated/blfilters.js +0 -49
- package/lib/cmd/subscribe/deprecated/blfilters.js.map +0 -1
- package/lib/cmd/subscribe/deprecated/scoresaber.d.ts +0 -0
- package/lib/cmd/subscribe/deprecated/scoresaber.js +0 -43
- package/lib/cmd/subscribe/deprecated/scoresaber.js.map +0 -1
- package/lib/cmd/subscribe/index.d.ts +0 -11
- package/lib/cmd/subscribe/index.js +0 -45
- package/lib/cmd/subscribe/index.js.map +0 -1
- package/lib/cmd/subscribe/subjoin.d.ts +0 -11
- package/lib/cmd/subscribe/subjoin.js +0 -42
- package/lib/cmd/subscribe/subjoin.js.map +0 -1
- package/lib/cmd/subscribe/subleave.d.ts +0 -11
- package/lib/cmd/subscribe/subleave.js +0 -35
- package/lib/cmd/subscribe/subleave.js.map +0 -1
- package/lib/cmd/subscribe/unsubscribe.d.ts +0 -11
- package/lib/cmd/subscribe/unsubscribe.js +0 -41
- package/lib/cmd/subscribe/unsubscribe.js.map +0 -1
- package/lib/config.d.ts +0 -23
- package/lib/config.js +0 -3
- package/lib/config.js.map +0 -1
- package/lib/db/index.d.ts +0 -0
- package/lib/db/index.js.map +0 -1
- package/lib/errors/index.d.ts +0 -37
- package/lib/errors/index.js +0 -108
- package/lib/errors/index.js.map +0 -1
- package/lib/i18n/index.d.ts +0 -2
- package/lib/i18n/index.js +0 -112
- package/lib/i18n/index.js.map +0 -1
- package/lib/i18n/zh-cn.json +0 -1
- package/lib/img-render/components/RankDifficulty.d.ts +0 -5
- package/lib/img-render/components/RankDifficulty.js +0 -11
- package/lib/img-render/components/RankDifficulty.js.map +0 -1
- package/lib/img-render/components/base/avatar.d.ts +0 -7
- package/lib/img-render/components/base/avatar.js +0 -12
- package/lib/img-render/components/base/avatar.js.map +0 -1
- package/lib/img-render/components/blScoreItem.d.ts +0 -6
- package/lib/img-render/components/blScoreItem.js +0 -14
- package/lib/img-render/components/blScoreItem.js.map +0 -1
- package/lib/img-render/components/characteristic.d.ts +0 -5
- package/lib/img-render/components/characteristic.js +0 -27
- package/lib/img-render/components/characteristic.js.map +0 -1
- package/lib/img-render/components/flag.d.ts +0 -5
- package/lib/img-render/components/flag.js +0 -39
- package/lib/img-render/components/flag.js.map +0 -1
- package/lib/img-render/components/icons/BeatLeader.d.ts +0 -3
- package/lib/img-render/components/icons/BeatLeader.js +0 -10
- package/lib/img-render/components/icons/BeatLeader.js.map +0 -1
- package/lib/img-render/components/icons/RankIcon.d.ts +0 -4
- package/lib/img-render/components/icons/RankIcon.js +0 -14
- package/lib/img-render/components/icons/RankIcon.js.map +0 -1
- package/lib/img-render/components/icons/ScoreSaberIcon.d.ts +0 -3
- package/lib/img-render/components/icons/ScoreSaberIcon.js +0 -8
- package/lib/img-render/components/icons/ScoreSaberIcon.js.map +0 -1
- package/lib/img-render/components/progressbar.d.ts +0 -4
- package/lib/img-render/components/progressbar.js +0 -9
- package/lib/img-render/components/progressbar.js.map +0 -1
- package/lib/img-render/components/rankScoreItem.d.ts +0 -15
- package/lib/img-render/components/rankScoreItem.js +0 -38
- package/lib/img-render/components/rankScoreItem.js.map +0 -1
- package/lib/img-render/components/scoreItem.d.ts +0 -4
- package/lib/img-render/components/scoreItem.js +0 -29
- package/lib/img-render/components/scoreItem.js.map +0 -1
- package/lib/img-render/components/scoregraph.d.ts +0 -10
- package/lib/img-render/components/scoregraph.js +0 -301
- package/lib/img-render/components/scoregraph.js.map +0 -1
- package/lib/img-render/components/skill-graph.d.ts +0 -5
- package/lib/img-render/components/skill-graph.js +0 -50
- package/lib/img-render/components/skill-graph.js.map +0 -1
- package/lib/img-render/components/socre-badge.d.ts +0 -5
- package/lib/img-render/components/socre-badge.js +0 -10
- package/lib/img-render/components/socre-badge.js.map +0 -1
- package/lib/img-render/components/ssScoreItem.d.ts +0 -4
- package/lib/img-render/components/ssScoreItem.js +0 -14
- package/lib/img-render/components/ssScoreItem.js.map +0 -1
- package/lib/img-render/index.d.ts +0 -22
- package/lib/img-render/index.js +0 -134
- package/lib/img-render/index.js.map +0 -1
- package/lib/img-render/interfaces.d.ts +0 -17
- package/lib/img-render/interfaces.js +0 -3
- package/lib/img-render/interfaces.js.map +0 -1
- package/lib/img-render/remote/index.d.ts +0 -0
- package/lib/img-render/remote/index.js +0 -56
- package/lib/img-render/remote/index.js.map +0 -1
- package/lib/img-render/render.d.ts +0 -7
- package/lib/img-render/render.js +0 -65
- package/lib/img-render/render.js.map +0 -1
- package/lib/img-render/renderImg.d.ts +0 -0
- package/lib/img-render/renderImg.js +0 -1
- package/lib/img-render/renderImg.js.map +0 -1
- package/lib/img-render/result/bl-player.d.ts +0 -7
- package/lib/img-render/result/bl-player.js +0 -44
- package/lib/img-render/result/bl-player.js.map +0 -1
- package/lib/img-render/result/bl-score.d.ts +0 -11
- package/lib/img-render/result/bl-score.js +0 -18
- package/lib/img-render/result/bl-score.js.map +0 -1
- package/lib/img-render/result/bs-map.d.ts +0 -8
- package/lib/img-render/result/bs-map.js +0 -26
- package/lib/img-render/result/bs-map.js.map +0 -1
- package/lib/img-render/result/bs-score-with-rank.d.ts +0 -13
- package/lib/img-render/result/bs-score-with-rank.js +0 -21
- package/lib/img-render/result/bs-score-with-rank.js.map +0 -1
- package/lib/img-render/result/index.d.ts +0 -8
- package/lib/img-render/result/index.js +0 -33
- package/lib/img-render/result/index.js.map +0 -1
- package/lib/img-render/result/ss-player.d.ts +0 -8
- package/lib/img-render/result/ss-player.js +0 -39
- package/lib/img-render/result/ss-player.js.map +0 -1
- package/lib/img-render/utils/bl/beatleader.d.ts +0 -13
- package/lib/img-render/utils/bl/beatleader.js +0 -38
- package/lib/img-render/utils/bl/beatleader.js.map +0 -1
- package/lib/img-render/utils/bl/blheadset.d.ts +0 -273
- package/lib/img-render/utils/bl/blheadset.js +0 -281
- package/lib/img-render/utils/bl/blheadset.js.map +0 -1
- package/lib/img-render/utils/bl/bsorDecoder.d.ts +0 -68
- package/lib/img-render/utils/bl/bsorDecoder.js +0 -286
- package/lib/img-render/utils/bl/bsorDecoder.js.map +0 -1
- package/lib/img-render/utils/bl/bsorReplayAcc.d.ts +0 -35
- package/lib/img-render/utils/bl/bsorReplayAcc.js +0 -590
- package/lib/img-render/utils/bl/bsorReplayAcc.js.map +0 -1
- package/lib/img-render/utils/bl/getPart.d.ts +0 -7
- package/lib/img-render/utils/bl/getPart.js +0 -31
- package/lib/img-render/utils/bl/getPart.js.map +0 -1
- package/lib/img-render/utils/bl/stastic.d.ts +0 -2
- package/lib/img-render/utils/bl/stastic.js +0 -53
- package/lib/img-render/utils/bl/stastic.js.map +0 -1
- package/lib/img-render/utils/canvas.d.ts +0 -5
- package/lib/img-render/utils/canvas.js +0 -70
- package/lib/img-render/utils/canvas.js.map +0 -1
- package/lib/img-render/utils/format.d.ts +0 -5
- package/lib/img-render/utils/format.js +0 -52
- package/lib/img-render/utils/format.js.map +0 -1
- package/lib/img-render/utils/getMods.d.ts +0 -2
- package/lib/img-render/utils/getMods.js +0 -22
- package/lib/img-render/utils/getMods.js.map +0 -1
- package/lib/img-render/utils/index.d.ts +0 -3
- package/lib/img-render/utils/index.js +0 -36
- package/lib/img-render/utils/index.js.map +0 -1
- package/lib/img-render/utils/qrcode.d.ts +0 -1
- package/lib/img-render/utils/qrcode.js +0 -43
- package/lib/img-render/utils/qrcode.js.map +0 -1
- package/lib/img-render/utils/sleep.d.ts +0 -1
- package/lib/img-render/utils/sleep.js +0 -10
- package/lib/img-render/utils/sleep.js.map +0 -1
- package/lib/img-render/utils/tag-format.d.ts +0 -1
- package/lib/img-render/utils/tag-format.js +0 -225
- package/lib/img-render/utils/tag-format.js.map +0 -1
- package/lib/img-render/utils/tw-join.d.ts +0 -4
- package/lib/img-render/utils/tw-join.js +0 -36
- package/lib/img-render/utils/tw-join.js.map +0 -1
- package/lib/index.d.ts +0 -8
- package/lib/index.js +0 -25
- package/lib/index.js.map +0 -1
- package/lib/interface/bot.d.ts +0 -20
- package/lib/interface/bot.js +0 -3
- package/lib/interface/bot.js.map +0 -1
- package/lib/interface/cmd.d.ts +0 -36
- package/lib/interface/cmd.js +0 -3
- package/lib/interface/cmd.js.map +0 -1
- package/lib/interface/db/index.d.ts +0 -35
- package/lib/interface/db/index.js +0 -18
- package/lib/interface/db/index.js.map +0 -1
- package/lib/interface/db/models.d.ts +0 -34
- package/lib/interface/db/models.js +0 -3
- package/lib/interface/db/models.js.map +0 -1
- package/lib/interface/index.d.ts +0 -14
- package/lib/interface/index.js +0 -34
- package/lib/interface/index.js.map +0 -1
- package/lib/interface/logger.d.ts +0 -6
- package/lib/interface/logger.js +0 -3
- package/lib/interface/logger.js.map +0 -1
- package/lib/interface/render.d.ts +0 -21
- package/lib/interface/render.js +0 -3
- package/lib/interface/render.js.map +0 -1
- package/lib/schedules/BeatSaverAlertMonitor.d.ts +0 -0
- package/lib/schedules/BeatSaverAlertMonitor.js +0 -231
- package/lib/schedules/BeatSaverAlertMonitor.js.map +0 -1
- package/lib/schedules/index.d.ts +0 -3
- package/lib/schedules/index.js +0 -16
- package/lib/schedules/index.js.map +0 -1
- package/lib/schedules/interface.d.ts +0 -17
- package/lib/schedules/interface.js +0 -3
- package/lib/schedules/interface.js.map +0 -1
- package/lib/schedules/oauthTokenRefreshTask.d.ts +0 -2
- package/lib/schedules/oauthTokenRefreshTask.js +0 -53
- package/lib/schedules/oauthTokenRefreshTask.js.map +0 -1
- package/lib/schedules/temp.d.ts +0 -1
- package/lib/schedules/temp.js +0 -28
- package/lib/schedules/temp.js.map +0 -1
- package/lib/utils/cache.d.ts +0 -2
- package/lib/utils/cache.js +0 -28
- package/lib/utils/cache.js.map +0 -1
- package/lib/utils/index.d.ts +0 -5
- package/lib/utils/index.js +0 -77
- package/lib/utils/index.js.map +0 -1
- package/lib/ws/beatleader.d.ts +0 -18
- package/lib/ws/beatleader.js +0 -56
- package/lib/ws/beatleader.js.map +0 -1
- package/lib/ws/beatsaver.d.ts +0 -23
- package/lib/ws/beatsaver.js +0 -58
- package/lib/ws/beatsaver.js.map +0 -1
- package/lib/ws/bl-filter.d.ts +0 -0
- package/lib/ws/bl-filter.js +0 -64
- package/lib/ws/bl-filter.js.map +0 -1
- package/lib/ws/handler.d.ts +0 -6
- package/lib/ws/handler.js +0 -3
- package/lib/ws/handler.js.map +0 -1
- package/lib/ws/index.d.ts +0 -4
- package/lib/ws/index.js +0 -21
- package/lib/ws/index.js.map +0 -1
- package/lib/ws/scoresaber.d.ts +0 -18
- package/lib/ws/scoresaber.js +0 -37
- package/lib/ws/scoresaber.js.map +0 -1
- /package/{lib/db → dist/cjs/cmd/config}/index.js +0 -0
@@ -0,0 +1,588 @@
|
|
1
|
+
var __defProp = Object.defineProperty;
|
2
|
+
var __defProps = Object.defineProperties;
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
8
|
+
var __spreadValues = (a, b) => {
|
9
|
+
for (var prop in b || (b = {}))
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
12
|
+
if (__getOwnPropSymbols)
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
14
|
+
if (__propIsEnum.call(b, prop))
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
16
|
+
}
|
17
|
+
return a;
|
18
|
+
};
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
20
|
+
var __objRest = (source, exclude) => {
|
21
|
+
var target = {};
|
22
|
+
for (var prop in source)
|
23
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
24
|
+
target[prop] = source[prop];
|
25
|
+
if (source != null && __getOwnPropSymbols)
|
26
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
27
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
28
|
+
target[prop] = source[prop];
|
29
|
+
}
|
30
|
+
return target;
|
31
|
+
};
|
32
|
+
import { NoteEventType } from "./bsorDecoder";
|
33
|
+
import { createDistanceWeightFunction } from "./beatleader";
|
34
|
+
const NoteScoringType = {
|
35
|
+
Ignore: -1,
|
36
|
+
NoScore: 0,
|
37
|
+
Normal: 1,
|
38
|
+
SliderHead: 2,
|
39
|
+
SliderTail: 3,
|
40
|
+
BurstSliderHead: 4,
|
41
|
+
BurstSliderElement: 5
|
42
|
+
};
|
43
|
+
function processAccuracySpread(replay) {
|
44
|
+
var _a;
|
45
|
+
if (replay == null) return null;
|
46
|
+
const result = {
|
47
|
+
totalLeftCount: 0,
|
48
|
+
leftCount: [],
|
49
|
+
leftTD: [],
|
50
|
+
totalRightCount: 0,
|
51
|
+
rightCount: [],
|
52
|
+
rightTD: [],
|
53
|
+
timeDeviation: [],
|
54
|
+
maxCount: 0,
|
55
|
+
maxTD: 0,
|
56
|
+
maxTimeDeviation: 0
|
57
|
+
};
|
58
|
+
if (!((_a = replay == null ? void 0 : replay.notes) == null ? void 0 : _a.length)) return result;
|
59
|
+
const timings = [];
|
60
|
+
for (let i = 0; i <= 15; i++) {
|
61
|
+
result.leftCount.push(0);
|
62
|
+
result.leftTD.push(0);
|
63
|
+
result.rightCount.push(0);
|
64
|
+
result.rightTD.push(0);
|
65
|
+
result.timeDeviation.push(0);
|
66
|
+
timings.push([]);
|
67
|
+
}
|
68
|
+
for (let i = 0; i < replay.notes.length; i++) {
|
69
|
+
const note = replay.notes[i];
|
70
|
+
if (note.eventType !== NoteEventType.good) continue;
|
71
|
+
const noteData = decodeNoteData(note.noteID);
|
72
|
+
if (noteData.scoringType !== NoteScoringType.Normal) continue;
|
73
|
+
const acc = getAccForDistance(note.noteCutInfo.cutDistanceToCenter);
|
74
|
+
const td = Math.abs(note.noteCutInfo.cutNormal.z);
|
75
|
+
if (note.noteCutInfo.saberType === 0) {
|
76
|
+
result.totalLeftCount += 1;
|
77
|
+
result.leftCount[acc] += 1;
|
78
|
+
result.leftTD[acc] += td;
|
79
|
+
} else {
|
80
|
+
result.totalRightCount += 1;
|
81
|
+
result.rightCount[acc] += 1;
|
82
|
+
result.rightTD[acc] += td;
|
83
|
+
}
|
84
|
+
result.timeDeviation[acc] += note.noteCutInfo.timeDeviation;
|
85
|
+
timings[acc].push(note.noteCutInfo.timeDeviation);
|
86
|
+
}
|
87
|
+
for (let i = 0; i <= 15; i++) {
|
88
|
+
const totalCount = result.rightCount[i] + result.leftCount[i];
|
89
|
+
result.leftTD[i] = result.leftCount[i] > 0 ? result.leftTD[i] / result.leftCount[i] : null;
|
90
|
+
result.rightTD[i] = result.rightCount[i] > 0 ? result.rightTD[i] / result.rightCount[i] : null;
|
91
|
+
result.timeDeviation[i] = totalCount > 0 ? result.timeDeviation[i] / totalCount : null;
|
92
|
+
result.leftCount[i] /= result.totalLeftCount;
|
93
|
+
result.rightCount[i] /= result.totalRightCount;
|
94
|
+
result.timeDeviation[i] = getStandardDeviation(
|
95
|
+
timings[i],
|
96
|
+
result.timeDeviation[i]
|
97
|
+
);
|
98
|
+
if (result.leftCount[i] > result.maxCount)
|
99
|
+
result.maxCount = result.leftCount[i];
|
100
|
+
if (result.rightCount[i] > result.maxCount)
|
101
|
+
result.maxCount = result.rightCount[i];
|
102
|
+
if (result.leftTD[i] > result.maxTD) result.maxTD = result.leftTD[i];
|
103
|
+
if (result.rightTD[i] > result.maxTD) result.maxTD = result.rightTD[i];
|
104
|
+
if (result.timeDeviation[i] > result.maxTimeDeviation)
|
105
|
+
result.maxTimeDeviation = result.timeDeviation[i];
|
106
|
+
}
|
107
|
+
return result;
|
108
|
+
}
|
109
|
+
function decodeNoteData(noteId) {
|
110
|
+
const result = {};
|
111
|
+
result.cutDirection = Math.round(noteId % 10);
|
112
|
+
noteId /= 10;
|
113
|
+
result.colorType = Math.round(noteId % 10);
|
114
|
+
noteId /= 10;
|
115
|
+
result.noteLineLayer = Math.round(noteId % 10);
|
116
|
+
noteId /= 10;
|
117
|
+
result.lineIndex = Math.round(noteId % 10);
|
118
|
+
noteId /= 10;
|
119
|
+
result.scoringType = Math.round((noteId -= 2) < -1 ? noteId + 3 : noteId);
|
120
|
+
return result;
|
121
|
+
}
|
122
|
+
function getAccForDistance(cutDistanceToCenter) {
|
123
|
+
let mul = 1 - cutDistanceToCenter / 0.3;
|
124
|
+
if (mul > 1) mul = 1;
|
125
|
+
if (mul < 0) mul = 0;
|
126
|
+
return Math.round(15 * mul);
|
127
|
+
}
|
128
|
+
const SummaryGroup = {
|
129
|
+
Midlanes: 0,
|
130
|
+
Outerlanes: 1,
|
131
|
+
Crossovers: 2,
|
132
|
+
Forehands: 3,
|
133
|
+
Backhands: 4
|
134
|
+
};
|
135
|
+
function getStandardDeviation(numArray, mean) {
|
136
|
+
if (numArray.length === 0) return null;
|
137
|
+
let sqrSum = 0;
|
138
|
+
numArray.forEach((num) => {
|
139
|
+
sqrSum += Math.pow(num - mean, 2);
|
140
|
+
});
|
141
|
+
return Math.sqrt(sqrSum / numArray.length);
|
142
|
+
}
|
143
|
+
function getScore(noteCutInfo) {
|
144
|
+
let score = 0;
|
145
|
+
score += getAccForDistance(noteCutInfo.cutDistanceToCenter);
|
146
|
+
score += getPreSwingScore(noteCutInfo.beforeCutRating);
|
147
|
+
score += getPostSwingScore(noteCutInfo.afterCutRating);
|
148
|
+
return score;
|
149
|
+
}
|
150
|
+
function getPreSwingScore(preSwingRating) {
|
151
|
+
if (preSwingRating > 1) preSwingRating = 1;
|
152
|
+
if (preSwingRating < 0) preSwingRating = 0;
|
153
|
+
return Math.round(preSwingRating * 70);
|
154
|
+
}
|
155
|
+
function getPostSwingScore(postSwingRating) {
|
156
|
+
if (postSwingRating > 1) postSwingRating = 1;
|
157
|
+
if (postSwingRating < 0) postSwingRating = 0;
|
158
|
+
return Math.round(postSwingRating * 30);
|
159
|
+
}
|
160
|
+
const accGraphResolution = 100;
|
161
|
+
const smoothPeriodPercentage = 0.02;
|
162
|
+
const weightFunctionSteepness = 3;
|
163
|
+
function processAccGraphs(replay) {
|
164
|
+
var _a;
|
165
|
+
if (replay == null) return null;
|
166
|
+
const result = {
|
167
|
+
times: [],
|
168
|
+
fullSwingBySaber: {
|
169
|
+
red: [],
|
170
|
+
blue: [],
|
171
|
+
total: []
|
172
|
+
},
|
173
|
+
realScoreBySaber: {
|
174
|
+
red: [],
|
175
|
+
blue: [],
|
176
|
+
total: []
|
177
|
+
}
|
178
|
+
};
|
179
|
+
if (!((_a = replay == null ? void 0 : replay.notes) == null ? void 0 : _a.length)) return result;
|
180
|
+
const lastNoteTime = replay.notes[replay.notes.length - 1].eventTime;
|
181
|
+
const distanceWeightFunction = createDistanceWeightFunction(
|
182
|
+
lastNoteTime * smoothPeriodPercentage,
|
183
|
+
weightFunctionSteepness
|
184
|
+
);
|
185
|
+
for (let i = 0; i < accGraphResolution; i += 1) {
|
186
|
+
const time = lastNoteTime * (i / (accGraphResolution - 1));
|
187
|
+
const sumsBySaber = {
|
188
|
+
red: [0, 0],
|
189
|
+
blue: [0, 0],
|
190
|
+
total: [0, 0]
|
191
|
+
};
|
192
|
+
const dividerBySaber = { red: 0, blue: 0, total: 0 };
|
193
|
+
for (let j = 0; j < replay.notes.length; j++) {
|
194
|
+
const note = replay.notes[j];
|
195
|
+
if (note.eventType !== NoteEventType.good) continue;
|
196
|
+
const noteData = decodeNoteData(note.noteID);
|
197
|
+
if (noteData.scoringType !== NoteScoringType.Normal) continue;
|
198
|
+
const weight = distanceWeightFunction.getWeight(note.eventTime - time);
|
199
|
+
const acc = getAccForDistance(note.noteCutInfo.cutDistanceToCenter);
|
200
|
+
const pre = getPreSwingScore(note.noteCutInfo.beforeCutRating);
|
201
|
+
const post = getPostSwingScore(note.noteCutInfo.afterCutRating);
|
202
|
+
const fullSwing = acc + 100;
|
203
|
+
const realScore = acc + pre + post;
|
204
|
+
sumsBySaber.total[0] += fullSwing * weight;
|
205
|
+
sumsBySaber.total[1] += realScore * weight;
|
206
|
+
dividerBySaber.total += weight;
|
207
|
+
const saberType = note.noteCutInfo.saberType === 0 ? "red" : "blue";
|
208
|
+
sumsBySaber[saberType][0] += fullSwing * weight;
|
209
|
+
sumsBySaber[saberType][1] += realScore * weight;
|
210
|
+
dividerBySaber[saberType] += weight;
|
211
|
+
}
|
212
|
+
result.times.push(time);
|
213
|
+
["red", "blue", "total"].forEach((saberType) => {
|
214
|
+
result.fullSwingBySaber[saberType].push(
|
215
|
+
dividerBySaber[saberType] === 0 ? 0 : sumsBySaber[saberType][0] / dividerBySaber[saberType]
|
216
|
+
);
|
217
|
+
result.realScoreBySaber[saberType].push(
|
218
|
+
dividerBySaber[saberType] === 0 ? 0 : sumsBySaber[saberType][1] / dividerBySaber[saberType]
|
219
|
+
);
|
220
|
+
});
|
221
|
+
}
|
222
|
+
return result;
|
223
|
+
}
|
224
|
+
function processSliceSummary(replay) {
|
225
|
+
var _a;
|
226
|
+
if (replay == null) return null;
|
227
|
+
function createEmptySummary(label) {
|
228
|
+
return {
|
229
|
+
label,
|
230
|
+
left: { count: 0, averageScore: 0, averageTD: 0 },
|
231
|
+
right: { count: 0, averageScore: 0, averageTD: 0 }
|
232
|
+
};
|
233
|
+
}
|
234
|
+
const result = [
|
235
|
+
createEmptySummary("Midlanes"),
|
236
|
+
createEmptySummary("Outerlanes"),
|
237
|
+
createEmptySummary("Crossovers"),
|
238
|
+
createEmptySummary("Forehands"),
|
239
|
+
createEmptySummary("Backhands")
|
240
|
+
];
|
241
|
+
if (!((_a = replay == null ? void 0 : replay.notes) == null ? void 0 : _a.length)) return result;
|
242
|
+
function getLaneSummaryEntry(noteLineIndex, saberType) {
|
243
|
+
const summaryGroup = getLaneSummaryGroup(noteLineIndex, saberType);
|
244
|
+
return saberType === 0 ? result[summaryGroup].left : result[summaryGroup].right;
|
245
|
+
}
|
246
|
+
function getParitySummaryEntry(noteCutInfo, saberType) {
|
247
|
+
const summaryGroup = getParitySummaryGroup(noteCutInfo);
|
248
|
+
return saberType === 0 ? result[summaryGroup].left : result[summaryGroup].right;
|
249
|
+
}
|
250
|
+
function addScore(handSummary, score, td) {
|
251
|
+
handSummary.count += 1;
|
252
|
+
handSummary.averageScore += score;
|
253
|
+
handSummary.averageTD += td;
|
254
|
+
}
|
255
|
+
function applyAverage(handSummary) {
|
256
|
+
if (handSummary.count === 0) return;
|
257
|
+
handSummary.averageScore /= handSummary.count;
|
258
|
+
handSummary.averageTD /= handSummary.count;
|
259
|
+
}
|
260
|
+
for (let i = 0; i < replay.notes.length; i++) {
|
261
|
+
const note = replay.notes[i];
|
262
|
+
if (note.eventType !== NoteEventType.good) continue;
|
263
|
+
const noteData = decodeNoteData(note.noteID);
|
264
|
+
if (noteData.scoringType !== NoteScoringType.Normal) continue;
|
265
|
+
const laneSummaryEntry = getLaneSummaryEntry(
|
266
|
+
noteData.lineIndex,
|
267
|
+
note.noteCutInfo.saberType
|
268
|
+
);
|
269
|
+
const paritySummaryEntry = getParitySummaryEntry(
|
270
|
+
note.noteCutInfo,
|
271
|
+
note.noteCutInfo.saberType
|
272
|
+
);
|
273
|
+
const score = getScore(note.noteCutInfo);
|
274
|
+
const td = Math.abs(note.noteCutInfo.cutNormal.z);
|
275
|
+
addScore(laneSummaryEntry, score, td);
|
276
|
+
addScore(paritySummaryEntry, score, td);
|
277
|
+
}
|
278
|
+
result.forEach((summary) => {
|
279
|
+
applyAverage(summary.left);
|
280
|
+
applyAverage(summary.right);
|
281
|
+
});
|
282
|
+
return result;
|
283
|
+
}
|
284
|
+
function processSliceDetails(replay) {
|
285
|
+
var _a;
|
286
|
+
if (replay == null) return null;
|
287
|
+
const result = {
|
288
|
+
mainGrid: [],
|
289
|
+
summaryGrids: []
|
290
|
+
};
|
291
|
+
for (let i = 0; i < 12; i++) {
|
292
|
+
const mainGridCell = {
|
293
|
+
count: 0,
|
294
|
+
averageScore: 0,
|
295
|
+
left: [],
|
296
|
+
right: []
|
297
|
+
};
|
298
|
+
for (let j = 0; j < 9; j++) {
|
299
|
+
mainGridCell.left.push({ count: 0, averageScore: 0 });
|
300
|
+
mainGridCell.right.push({ count: 0, averageScore: 0 });
|
301
|
+
}
|
302
|
+
result.mainGrid.push(mainGridCell);
|
303
|
+
}
|
304
|
+
for (let summaryGroup = 0; summaryGroup < 5; summaryGroup++) {
|
305
|
+
const summaryGrid = [];
|
306
|
+
for (let i = 0; i < 12; i++) {
|
307
|
+
summaryGrid.push({ count: 0, averageScore: 0 });
|
308
|
+
}
|
309
|
+
result.summaryGrids.push(summaryGrid);
|
310
|
+
}
|
311
|
+
if (!((_a = replay == null ? void 0 : replay.notes) == null ? void 0 : _a.length)) return result;
|
312
|
+
function addScore(cell, score) {
|
313
|
+
cell.count += 1;
|
314
|
+
cell.averageScore += score;
|
315
|
+
}
|
316
|
+
function applyAverageScore(cell) {
|
317
|
+
if (cell.count === 0) return;
|
318
|
+
cell.averageScore /= cell.count;
|
319
|
+
}
|
320
|
+
for (let i = 0; i < replay.notes.length; i++) {
|
321
|
+
const note = replay.notes[i];
|
322
|
+
if (note.eventType !== NoteEventType.good) continue;
|
323
|
+
const noteData = decodeNoteData(note.noteID);
|
324
|
+
if (noteData.scoringType !== NoteScoringType.Normal) continue;
|
325
|
+
const mainGridIndex = getMainGridIndex(
|
326
|
+
noteData.noteLineLayer,
|
327
|
+
noteData.lineIndex
|
328
|
+
);
|
329
|
+
const secondaryGridIndex = getSecondaryGridIndex(noteData.cutDirection);
|
330
|
+
const laneSummaryGroup = getLaneSummaryGroup(
|
331
|
+
noteData.lineIndex,
|
332
|
+
note.noteCutInfo.saberType
|
333
|
+
);
|
334
|
+
const paritySummaryGroup = getParitySummaryGroup(note.noteCutInfo);
|
335
|
+
const mainCell = result.mainGrid[mainGridIndex];
|
336
|
+
let secondaryCell;
|
337
|
+
if (note.noteCutInfo.saberType === 0) {
|
338
|
+
secondaryCell = mainCell.left[secondaryGridIndex];
|
339
|
+
} else {
|
340
|
+
secondaryCell = mainCell.right[secondaryGridIndex];
|
341
|
+
}
|
342
|
+
const laneSummaryCell = result.summaryGrids[laneSummaryGroup][mainGridIndex];
|
343
|
+
const paritySummaryCell = result.summaryGrids[paritySummaryGroup][mainGridIndex];
|
344
|
+
const score = getScore(note.noteCutInfo);
|
345
|
+
addScore(mainCell, score);
|
346
|
+
addScore(secondaryCell, score);
|
347
|
+
addScore(laneSummaryCell, score);
|
348
|
+
addScore(paritySummaryCell, score);
|
349
|
+
}
|
350
|
+
for (let i = 0; i < 12; i++) {
|
351
|
+
const mainCell = result.mainGrid[i];
|
352
|
+
applyAverageScore(mainCell);
|
353
|
+
for (let j = 0; j < 9; j++) {
|
354
|
+
applyAverageScore(mainCell.left[j]);
|
355
|
+
applyAverageScore(mainCell.right[j]);
|
356
|
+
}
|
357
|
+
}
|
358
|
+
for (let summaryGroup = 0; summaryGroup < 5; summaryGroup++) {
|
359
|
+
const summaryGrid = result.summaryGrids[summaryGroup];
|
360
|
+
for (let i = 0; i < 12; i++) {
|
361
|
+
applyAverageScore(summaryGrid[i]);
|
362
|
+
}
|
363
|
+
}
|
364
|
+
return result;
|
365
|
+
}
|
366
|
+
const NoteCutDirection = {
|
367
|
+
Up: 0,
|
368
|
+
Down: 1,
|
369
|
+
Left: 2,
|
370
|
+
Right: 3,
|
371
|
+
UpLeft: 4,
|
372
|
+
UpRight: 5,
|
373
|
+
DownLeft: 6,
|
374
|
+
DownRight: 7,
|
375
|
+
Any: 8,
|
376
|
+
None: 9
|
377
|
+
};
|
378
|
+
const NoteLineLayer = {
|
379
|
+
Base: 0,
|
380
|
+
Upper: 1,
|
381
|
+
Top: 2
|
382
|
+
};
|
383
|
+
const ColorType = {
|
384
|
+
None: -1,
|
385
|
+
ColorA: 0,
|
386
|
+
ColorB: 1
|
387
|
+
};
|
388
|
+
function getMainGridIndex(noteLineLayer, noteLineIndex) {
|
389
|
+
switch (noteLineLayer) {
|
390
|
+
case NoteLineLayer.Top:
|
391
|
+
return noteLineIndex;
|
392
|
+
case NoteLineLayer.Upper:
|
393
|
+
return noteLineIndex + 4;
|
394
|
+
case NoteLineLayer.Base:
|
395
|
+
return noteLineIndex + 8;
|
396
|
+
}
|
397
|
+
return -1;
|
398
|
+
}
|
399
|
+
function getSecondaryGridIndex(noteCutDirection) {
|
400
|
+
switch (noteCutDirection) {
|
401
|
+
case NoteCutDirection.UpLeft:
|
402
|
+
return 0;
|
403
|
+
case NoteCutDirection.Up:
|
404
|
+
return 1;
|
405
|
+
case NoteCutDirection.UpRight:
|
406
|
+
return 2;
|
407
|
+
case NoteCutDirection.Left:
|
408
|
+
return 3;
|
409
|
+
case NoteCutDirection.Any:
|
410
|
+
return 4;
|
411
|
+
case NoteCutDirection.Right:
|
412
|
+
return 5;
|
413
|
+
case NoteCutDirection.DownLeft:
|
414
|
+
return 6;
|
415
|
+
case NoteCutDirection.Down:
|
416
|
+
return 7;
|
417
|
+
case NoteCutDirection.DownRight:
|
418
|
+
return 8;
|
419
|
+
}
|
420
|
+
return -1;
|
421
|
+
}
|
422
|
+
function getParitySummaryGroup(noteCutInfo) {
|
423
|
+
const isForehand = noteCutInfo.cutNormal.x < 0;
|
424
|
+
return isForehand ? SummaryGroup.Forehands : SummaryGroup.Backhands;
|
425
|
+
}
|
426
|
+
function getLaneSummaryGroup(noteLineIndex, saberType) {
|
427
|
+
switch (saberType) {
|
428
|
+
case 0:
|
429
|
+
if (noteLineIndex >= 2) return SummaryGroup.Crossovers;
|
430
|
+
break;
|
431
|
+
case 1:
|
432
|
+
if (noteLineIndex <= 1) return SummaryGroup.Crossovers;
|
433
|
+
break;
|
434
|
+
}
|
435
|
+
if (noteLineIndex === 1 || noteLineIndex === 2) return SummaryGroup.Midlanes;
|
436
|
+
return SummaryGroup.Outerlanes;
|
437
|
+
}
|
438
|
+
const createMultiplierCounter = () => {
|
439
|
+
const MAX_MULTIPLIER = 8;
|
440
|
+
let value = 1;
|
441
|
+
let progress = 1;
|
442
|
+
const inc = () => {
|
443
|
+
if (value >= MAX_MULTIPLIER) return MAX_MULTIPLIER;
|
444
|
+
if (progress + 1 >= value * 2) {
|
445
|
+
value *= 2;
|
446
|
+
progress = 0;
|
447
|
+
} else {
|
448
|
+
progress++;
|
449
|
+
}
|
450
|
+
return value;
|
451
|
+
};
|
452
|
+
const dec = () => {
|
453
|
+
if (value > 1) {
|
454
|
+
value /= 2;
|
455
|
+
}
|
456
|
+
progress = 1;
|
457
|
+
return value;
|
458
|
+
};
|
459
|
+
return {
|
460
|
+
get: () => value,
|
461
|
+
inc,
|
462
|
+
dec
|
463
|
+
};
|
464
|
+
};
|
465
|
+
const clamp = (num, min, max) => Math.min(Math.max(num, min), max);
|
466
|
+
const getNoteType = (noteId) => {
|
467
|
+
if (!Number.isFinite(noteId) || noteId >= 8e4) return null;
|
468
|
+
return Math.floor(noteId / 1e4);
|
469
|
+
};
|
470
|
+
const getNoteScore = (noteData, noteCutInfo) => {
|
471
|
+
let beforeCut = 0, accuracy = 0, afterCut = 0;
|
472
|
+
if (noteData.scoringType === NoteScoringType.SliderTail) {
|
473
|
+
beforeCut = 70;
|
474
|
+
} else if (noteData.scoringType !== NoteScoringType.BurstSliderElement) {
|
475
|
+
beforeCut = Math.round(clamp(noteCutInfo.beforeCutRating * 70, 0, 70));
|
476
|
+
}
|
477
|
+
if (noteData.scoringType === NoteScoringType.SliderHead) {
|
478
|
+
afterCut = 30;
|
479
|
+
} else if (![
|
480
|
+
NoteScoringType.BurstSliderElement,
|
481
|
+
NoteScoringType.BurstSliderHead
|
482
|
+
].includes(noteData.scoringType)) {
|
483
|
+
afterCut = Math.round(clamp(noteCutInfo.afterCutRating * 30, 0, 30));
|
484
|
+
}
|
485
|
+
if (noteData.scoringType === NoteScoringType.BurstSliderElement) {
|
486
|
+
accuracy = 20;
|
487
|
+
} else {
|
488
|
+
accuracy = Math.round(
|
489
|
+
15 * (1 - clamp(noteCutInfo.cutDistanceToCenter / 0.3, 0, 1))
|
490
|
+
);
|
491
|
+
}
|
492
|
+
return beforeCut + accuracy + afterCut;
|
493
|
+
};
|
494
|
+
function processUnderswings(replay) {
|
495
|
+
var _a, _b;
|
496
|
+
if (!replay) return null;
|
497
|
+
if (!((_a = replay == null ? void 0 : replay.notes) == null ? void 0 : _a.length))
|
498
|
+
return {
|
499
|
+
count: 0,
|
500
|
+
acc: 0,
|
501
|
+
fcAcc: 0,
|
502
|
+
noUnderswingsAcc: 0,
|
503
|
+
noUnderswingsFcAcc: 0,
|
504
|
+
score: 0,
|
505
|
+
fcScore: 0,
|
506
|
+
noUnderswingsScore: 0,
|
507
|
+
noUnderswingsFcScore: 0,
|
508
|
+
maxCutScore: 0,
|
509
|
+
maxSongScore: 0
|
510
|
+
};
|
511
|
+
const multiplier = createMultiplierCounter();
|
512
|
+
const fcMultiplier = createMultiplierCounter();
|
513
|
+
const result = [...replay.notes, ...(_b = replay.walls) != null ? _b : []].map((e, idx) => {
|
514
|
+
var _a2;
|
515
|
+
return __spreadProps(__spreadValues({}, e), { idx, eventTime: (_a2 = e == null ? void 0 : e.eventTime) != null ? _a2 : e == null ? void 0 : e.time });
|
516
|
+
}).sort(
|
517
|
+
(a, b) => a.eventTime === b.eventTime ? a.idx - b.idx : a.eventTime - b.eventTime
|
518
|
+
).reduce(
|
519
|
+
(acc, event) => {
|
520
|
+
if (!Number.isFinite(event == null ? void 0 : event.eventType) || NoteEventType.bomb === event.eventType) {
|
521
|
+
acc.multiplier.dec();
|
522
|
+
return acc;
|
523
|
+
}
|
524
|
+
const noteData = decodeNoteData(event.noteID);
|
525
|
+
if (noteData < NoteScoringType.Normal) return acc;
|
526
|
+
const maxNoteScore = getNoteScore(noteData, {
|
527
|
+
cutDistanceToCenter: 0,
|
528
|
+
beforeCutRating: 1,
|
529
|
+
afterCutRating: 1
|
530
|
+
});
|
531
|
+
switch (event.eventType) {
|
532
|
+
case NoteEventType.good:
|
533
|
+
const realScore = getNoteScore(noteData, event.noteCutInfo);
|
534
|
+
const fullSwing = getNoteScore(noteData, {
|
535
|
+
cutDistanceToCenter: event.noteCutInfo.cutDistanceToCenter,
|
536
|
+
beforeCutRating: 1,
|
537
|
+
afterCutRating: 1
|
538
|
+
});
|
539
|
+
acc.count++;
|
540
|
+
acc.score += realScore * multiplier.get();
|
541
|
+
acc.noUnderswingsScore += fullSwing * multiplier.get();
|
542
|
+
acc.fcScore += realScore * fcMultiplier.get();
|
543
|
+
acc.noUnderswingsFcScore += fullSwing * fcMultiplier.get();
|
544
|
+
acc.maxCutScore += maxNoteScore * fcMultiplier.get();
|
545
|
+
acc.multiplier.inc();
|
546
|
+
break;
|
547
|
+
case NoteEventType.bad:
|
548
|
+
case NoteEventType.miss:
|
549
|
+
acc.multiplier.dec();
|
550
|
+
break;
|
551
|
+
}
|
552
|
+
acc.maxSongScore += maxNoteScore * fcMultiplier.get();
|
553
|
+
acc.fcMultiplier.inc();
|
554
|
+
return acc;
|
555
|
+
},
|
556
|
+
{
|
557
|
+
count: 0,
|
558
|
+
maxCutScore: 0,
|
559
|
+
maxSongScore: 0,
|
560
|
+
score: 0,
|
561
|
+
fcScore: 0,
|
562
|
+
noUnderswingsScore: 0,
|
563
|
+
noUnderswingsFcScore: 0,
|
564
|
+
multiplier,
|
565
|
+
fcMultiplier
|
566
|
+
}
|
567
|
+
);
|
568
|
+
const _c = result, { multiplier: foo, fcMultiplier: bar } = _c, rest = __objRest(_c, ["multiplier", "fcMultiplier"]);
|
569
|
+
return __spreadProps(__spreadValues({}, rest), {
|
570
|
+
maxCutScore: result.maxCutScore,
|
571
|
+
maxSongScore: result.maxSongScore,
|
572
|
+
acc: result.maxSongScore ? result.score / result.maxSongScore * 100 : 0,
|
573
|
+
fcAcc: result.maxCutScore ? result.fcScore / result.maxCutScore * 100 : 0,
|
574
|
+
noUnderswingsAcc: result.maxSongScore ? result.noUnderswingsScore / result.maxSongScore * 100 : 0,
|
575
|
+
noUnderswingsFcAcc: result.maxCutScore ? result.noUnderswingsFcScore / result.maxCutScore * 100 : 0
|
576
|
+
});
|
577
|
+
}
|
578
|
+
export {
|
579
|
+
ColorType,
|
580
|
+
NoteCutDirection,
|
581
|
+
NoteLineLayer,
|
582
|
+
processAccGraphs,
|
583
|
+
processAccuracySpread,
|
584
|
+
processSliceDetails,
|
585
|
+
processSliceSummary,
|
586
|
+
processUnderswings
|
587
|
+
};
|
588
|
+
//# sourceMappingURL=bsorReplayAcc.js.map
|
@@ -0,0 +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":["_a"]}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
const DEFAULT_MAX_TECH_PP = 1300;
|
2
|
+
const DEFAULT_MAX_ACC_PP = 15e3;
|
3
|
+
const DEFAULT_MAX_PASS_PP = 6e3;
|
4
|
+
const getPart = (playerInfo) => {
|
5
|
+
const techPp = playerInfo.techPp;
|
6
|
+
const accPp = playerInfo.accPp;
|
7
|
+
const passPp = playerInfo.passPp;
|
8
|
+
const techScale = techPp > DEFAULT_MAX_TECH_PP ? techPp / DEFAULT_MAX_TECH_PP : 1;
|
9
|
+
const accScale = accPp > DEFAULT_MAX_ACC_PP ? accPp / DEFAULT_MAX_ACC_PP : 1;
|
10
|
+
const passScale = passPp > DEFAULT_MAX_PASS_PP ? passPp / DEFAULT_MAX_PASS_PP : 1;
|
11
|
+
const triangleScale = Math.max(techScale, Math.max(accScale, passScale));
|
12
|
+
const maxTechPp = DEFAULT_MAX_TECH_PP * triangleScale;
|
13
|
+
const maxAccPp = DEFAULT_MAX_ACC_PP * triangleScale;
|
14
|
+
const maxPassPp = DEFAULT_MAX_PASS_PP * triangleScale;
|
15
|
+
const totalNormalizedPp = techPp * (maxAccPp / maxTechPp) + accPp + passPp * (maxAccPp / maxPassPp);
|
16
|
+
const normalizedTechPp = techPp / maxTechPp;
|
17
|
+
const normalizedAccPp = accPp / maxAccPp;
|
18
|
+
const normalizedPassPp = passPp / maxPassPp;
|
19
|
+
const techPpPart = techPp * (maxAccPp / maxTechPp) / totalNormalizedPp;
|
20
|
+
const accPpPart = accPp / totalNormalizedPp;
|
21
|
+
const passPpPart = passPp * (maxAccPp / maxPassPp) / totalNormalizedPp;
|
22
|
+
return {
|
23
|
+
techPpPart,
|
24
|
+
accPpPart,
|
25
|
+
passPpPart
|
26
|
+
};
|
27
|
+
};
|
28
|
+
var getPart_default = getPart;
|
29
|
+
export {
|
30
|
+
getPart_default as default
|
31
|
+
};
|
32
|
+
//# sourceMappingURL=getPart.js.map
|