beatsaber-bot-core 0.2.0-rc.8 → 0.3.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cmd/bind/bind-beatleader.js +2 -2
- package/dist/cjs/cmd/bind/bind-beatleader.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-beatsaver.js +2 -2
- package/dist/cjs/cmd/bind/bind-beatsaver.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-id-beatleader.js +3 -3
- package/dist/cjs/cmd/bind/bind-id-beatleader.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-id-beatsaver.js +3 -3
- package/dist/cjs/cmd/bind/bind-id-beatsaver.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-scoresaber.js +3 -3
- package/dist/cjs/cmd/bind/bind-scoresaber.js.map +1 -1
- package/dist/cjs/cmd/bind/index.js +12 -12
- package/dist/cjs/cmd/bind/index.js.map +1 -1
- package/dist/cjs/cmd/bsmap/id-search.js +3 -3
- package/dist/cjs/cmd/bsmap/id-search.js.map +1 -1
- package/dist/cjs/cmd/bsmap/key-search.js +2 -2
- package/dist/cjs/cmd/bsmap/key-search.js.map +1 -1
- package/dist/cjs/cmd/bsmap/latest.js +2 -2
- package/dist/cjs/cmd/bsmap/latest.js.map +1 -1
- package/dist/cjs/cmd/deprecated/tmp.js +4 -4
- package/dist/cjs/cmd/deprecated/tmp.js.map +1 -1
- package/dist/cjs/cmd/index.js +11 -11
- package/dist/cjs/cmd/index.js.map +1 -1
- package/dist/cjs/cmd/rank.js +8 -8
- package/dist/cjs/cmd/rank.js.map +1 -1
- package/dist/cjs/cmd/score.js +16 -20
- package/dist/cjs/cmd/score.js.map +1 -1
- package/dist/cjs/cmd/subscribe/beatleader.js +3 -3
- package/dist/cjs/cmd/subscribe/beatleader.js.map +1 -1
- package/dist/cjs/cmd/subscribe/beatsaver.js +3 -3
- package/dist/cjs/cmd/subscribe/beatsaver.js.map +1 -1
- package/dist/cjs/cmd/subscribe/id-beatleader-score.js +4 -4
- package/dist/cjs/cmd/subscribe/id-beatleader-score.js.map +1 -1
- package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js +4 -4
- package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
- package/dist/cjs/cmd/subscribe/index.js +8 -8
- package/dist/cjs/cmd/subscribe/index.js.map +1 -1
- package/dist/cjs/cmd/subscribe/subjoin.js +6 -6
- package/dist/cjs/cmd/subscribe/subjoin.js.map +1 -1
- package/dist/cjs/cmd/subscribe/subleave.js +6 -6
- package/dist/cjs/cmd/subscribe/subleave.js.map +1 -1
- package/dist/cjs/cmd/subscribe/unsubscribe.js +8 -8
- package/dist/cjs/cmd/subscribe/unsubscribe.js.map +1 -1
- package/dist/cjs/common/cache.js.map +1 -0
- package/dist/cjs/common/fetch/error.js.map +1 -0
- package/dist/cjs/{infra/support → common}/fetch/index.js +16 -14
- package/dist/cjs/common/fetch/index.js.map +1 -0
- package/dist/cjs/{infra/support → common}/fetch/ofetch.js +5 -12
- package/dist/cjs/common/fetch/ofetch.js.map +1 -0
- package/dist/cjs/common/i18n/index.js +55 -0
- package/dist/cjs/common/i18n/index.js.map +1 -0
- package/dist/cjs/common/i18n/parser.js.map +1 -0
- package/dist/cjs/{infra/i18n/index.js → common/i18n/util.js} +10 -71
- package/dist/cjs/common/i18n/util.js.map +1 -0
- package/dist/cjs/{infra/support → common}/render/index.js +55 -15
- package/dist/cjs/common/render/index.js.map +1 -0
- package/dist/cjs/common/render/puppeteer.js.map +1 -0
- package/dist/cjs/{infra → common}/s3/index.js +34 -13
- package/dist/cjs/common/s3/index.js.map +1 -0
- package/dist/cjs/components/components/RankDifficulty.js +60 -84
- package/dist/cjs/components/components/RankDifficulty.js.map +1 -1
- package/dist/cjs/components/components/base/avatar.js +1 -2
- package/dist/cjs/components/components/base/avatar.js.map +1 -1
- package/dist/cjs/components/components/bl-rank-score-item.js +25 -87
- package/dist/cjs/components/components/bl-rank-score-item.js.map +1 -1
- package/dist/cjs/components/components/bl-score-item.js +28 -69
- package/dist/cjs/components/components/bl-score-item.js.map +1 -1
- package/dist/cjs/components/components/characteristic.js +106 -118
- package/dist/cjs/components/components/characteristic.js.map +1 -1
- package/dist/cjs/components/components/flag.js +6 -14
- package/dist/cjs/components/components/flag.js.map +1 -1
- package/dist/cjs/components/components/icons/BeatLeader.js +55 -71
- package/dist/cjs/components/components/icons/BeatLeader.js.map +1 -1
- package/dist/cjs/components/components/icons/RankIcon.js +3 -7
- package/dist/cjs/components/components/icons/RankIcon.js.map +1 -1
- package/dist/cjs/components/components/icons/ScoreSaberIcon.js +276 -312
- package/dist/cjs/components/components/icons/ScoreSaberIcon.js.map +1 -1
- package/dist/cjs/components/components/progressbar.js +12 -2
- package/dist/cjs/components/components/progressbar.js.map +1 -1
- package/dist/cjs/components/components/scoreItem.js +26 -63
- package/dist/cjs/components/components/scoreItem.js.map +1 -1
- package/dist/cjs/components/components/scoregraph.js +4 -5
- package/dist/cjs/components/components/scoregraph.js.map +1 -1
- package/dist/cjs/components/components/skill-graph.js +147 -164
- package/dist/cjs/components/components/skill-graph.js.map +1 -1
- package/dist/cjs/components/components/socre-badge.js +7 -10
- package/dist/cjs/components/components/socre-badge.js.map +1 -1
- package/dist/cjs/components/components/ss-rank-score-item.js +25 -87
- package/dist/cjs/components/components/ss-rank-score-item.js.map +1 -1
- package/dist/cjs/components/components/ss-score-item.js +38 -65
- package/dist/cjs/components/components/ss-score-item.js.map +1 -1
- package/dist/cjs/components/index.js +3 -43
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/pages/bl-player.js +91 -136
- package/dist/cjs/components/pages/bl-player.js.map +1 -1
- package/dist/cjs/components/pages/bl-score-with-rank.js +114 -221
- package/dist/cjs/components/pages/bl-score-with-rank.js.map +1 -1
- package/dist/cjs/components/pages/bl-score.js +67 -169
- package/dist/cjs/components/pages/bl-score.js.map +1 -1
- package/dist/cjs/components/pages/bs-map.js +95 -166
- package/dist/cjs/components/pages/bs-map.js.map +1 -1
- package/dist/cjs/components/pages/index.js +26 -26
- package/dist/cjs/components/pages/index.js.map +1 -1
- package/dist/cjs/components/pages/ss-player.js +48 -77
- package/dist/cjs/components/pages/ss-player.js.map +1 -1
- package/dist/cjs/components/utils/bl/bsorReplayAcc.js +2 -2
- package/dist/cjs/components/utils/bl/bsorReplayAcc.js.map +1 -1
- package/dist/cjs/components/utils/bl/getPart.js.map +1 -1
- package/dist/cjs/components/utils/bl/stastic.js.map +1 -1
- package/dist/cjs/components/utils/format.js +3 -3
- package/dist/cjs/components/utils/format.js.map +1 -1
- package/dist/cjs/components/utils/getMods.js.map +1 -1
- package/dist/cjs/components/utils/index.js +4 -4
- package/dist/cjs/config.js +40 -0
- package/dist/cjs/config.js.map +1 -1
- package/dist/cjs/{interface → core}/cmd/builder.js +5 -5
- package/dist/cjs/core/cmd/builder.js.map +1 -0
- package/dist/cjs/core/cmd/type.js.map +1 -0
- package/dist/cjs/core/domain.js +16 -0
- package/dist/cjs/core/domain.js.map +1 -0
- package/dist/cjs/core/error.js +38 -0
- package/dist/cjs/core/error.js.map +1 -0
- package/dist/cjs/{interface/bot.js → core/event.js} +3 -3
- package/dist/cjs/core/event.js.map +1 -0
- package/dist/cjs/core/index.js +39 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/cjs/core/logger.js.map +1 -0
- package/dist/cjs/core/session.js +16 -0
- package/dist/cjs/core/session.js.map +1 -0
- package/dist/cjs/{schedules → events/schedules}/index.js +4 -3
- package/dist/cjs/events/schedules/index.js.map +1 -0
- package/dist/cjs/{schedules → events/schedules}/temp.js +7 -3
- package/dist/cjs/events/schedules/temp.js.map +1 -0
- package/dist/cjs/{ws → events/ws}/beatleader.js +6 -6
- package/dist/cjs/events/ws/beatleader.js.map +1 -0
- package/dist/cjs/{ws → events/ws}/beatsaver.js +11 -11
- package/dist/cjs/events/ws/beatsaver.js.map +1 -0
- package/dist/cjs/events/ws/handler.js.map +1 -0
- package/dist/cjs/{ws → events/ws}/index.js +6 -8
- package/dist/cjs/events/ws/index.js.map +1 -0
- package/dist/cjs/index.js +27 -18
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interface/db/index.js +0 -6
- package/dist/cjs/interface/db/index.js.map +1 -1
- package/dist/cjs/interface/db/models.js.map +1 -1
- package/dist/cjs/interface/index.js +12 -21
- package/dist/cjs/interface/index.js.map +1 -1
- package/dist/cjs/{service → services}/api/base/aioclient.js +1 -1
- package/dist/cjs/services/api/base/aioclient.js.map +1 -0
- package/dist/cjs/{service → services}/api/base/blclient.js +1 -1
- package/dist/cjs/services/api/base/blclient.js.map +1 -0
- package/dist/cjs/{service → services}/api/base/bsclient.js +2 -2
- package/dist/cjs/services/api/base/bsclient.js.map +1 -0
- package/dist/cjs/{service → services}/api/base/index.js +8 -8
- package/dist/cjs/services/api/base/index.js.map +1 -0
- package/dist/cjs/{service → services}/api/base/ssclient.js +2 -2
- package/dist/cjs/services/api/base/ssclient.js.map +1 -0
- package/dist/cjs/{service → services}/api/index.js +17 -9
- package/dist/cjs/services/api/index.js.map +1 -0
- package/dist/cjs/services/api/interfaces/aiosaber/index.js.map +1 -0
- package/dist/cjs/services/api/interfaces/beatleader/bsor.js.map +1 -0
- package/dist/cjs/{service → services}/api/interfaces/beatleader/index.js +10 -10
- package/dist/cjs/services/api/interfaces/beatleader/index.js.map +1 -0
- package/dist/cjs/services/api/interfaces/beatleader/req.js.map +1 -0
- package/dist/cjs/services/api/interfaces/beatleader/score.js.map +1 -0
- package/dist/cjs/services/api/interfaces/beatleader/user.js.map +1 -0
- package/dist/cjs/services/api/interfaces/beatleader/ws.js.map +1 -0
- package/dist/cjs/services/api/interfaces/beatsaver/alert.js.map +1 -0
- package/dist/cjs/services/api/interfaces/beatsaver/bsmap.js.map +1 -0
- package/dist/cjs/{service → services}/api/interfaces/beatsaver/index.js +10 -10
- package/dist/cjs/services/api/interfaces/beatsaver/index.js.map +1 -0
- package/dist/cjs/services/api/interfaces/beatsaver/resp.js.map +1 -0
- package/dist/cjs/services/api/interfaces/beatsaver/user.js.map +1 -0
- package/dist/cjs/services/api/interfaces/beatsaver/ws.js.map +1 -0
- package/dist/cjs/services/api/interfaces/index.js.map +1 -0
- package/dist/cjs/{service → services}/api/interfaces/scoresaber/index.js +6 -6
- package/dist/cjs/services/api/interfaces/scoresaber/index.js.map +1 -0
- package/dist/cjs/services/api/interfaces/scoresaber/item.js.map +1 -0
- package/dist/cjs/services/api/interfaces/scoresaber/leaderboard.js.map +1 -0
- package/dist/cjs/services/api/interfaces/scoresaber/resp.js.map +1 -0
- package/dist/cjs/services/api/interfaces/scoresaber/user.js.map +1 -0
- package/dist/cjs/services/api/interfaces/scoresaber/ws.js.map +1 -0
- package/dist/cjs/services/api/sortScore.js.map +1 -0
- package/dist/cjs/{infra → services}/errors/index.js +21 -38
- package/dist/cjs/services/errors/index.js.map +1 -0
- package/dist/cjs/services/i18n/index.js +43 -0
- package/dist/cjs/services/i18n/index.js.map +1 -0
- package/dist/cjs/{infra → services}/i18n/zh-cn.json +1 -1
- package/dist/cjs/{infra → services}/index.js +12 -9
- package/dist/cjs/services/index.js.map +1 -0
- package/dist/cjs/services/preference.js.map +1 -0
- package/dist/cjs/{service → services}/render/index.js +36 -13
- package/dist/cjs/services/render/index.js.map +1 -0
- package/dist/cjs/utils/bsorDecoder.js +329 -0
- package/dist/cjs/utils/bsorDecoder.js.map +1 -0
- package/dist/cjs/utils/index.js +6 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/platform.js +38 -0
- package/dist/cjs/utils/platform.js.map +1 -0
- package/dist/esm/cmd/bind/bind-beatleader.js +2 -2
- package/dist/esm/cmd/bind/bind-beatleader.js.map +1 -1
- package/dist/esm/cmd/bind/bind-beatsaver.js +2 -2
- package/dist/esm/cmd/bind/bind-beatsaver.js.map +1 -1
- package/dist/esm/cmd/bind/bind-id-beatleader.js +3 -3
- package/dist/esm/cmd/bind/bind-id-beatleader.js.map +1 -1
- package/dist/esm/cmd/bind/bind-id-beatsaver.js +3 -3
- package/dist/esm/cmd/bind/bind-id-beatsaver.js.map +1 -1
- package/dist/esm/cmd/bind/bind-scoresaber.js +3 -3
- package/dist/esm/cmd/bind/bind-scoresaber.js.map +1 -1
- package/dist/esm/cmd/bind/index.js +5 -5
- package/dist/esm/cmd/bind/index.js.map +1 -1
- package/dist/esm/cmd/bsmap/id-search.js +2 -2
- package/dist/esm/cmd/bsmap/id-search.js.map +1 -1
- package/dist/esm/cmd/bsmap/key-search.js +1 -1
- package/dist/esm/cmd/bsmap/key-search.js.map +1 -1
- package/dist/esm/cmd/bsmap/latest.js +2 -2
- package/dist/esm/cmd/bsmap/latest.js.map +1 -1
- package/dist/esm/cmd/deprecated/tmp.js +3 -3
- package/dist/esm/cmd/deprecated/tmp.js.map +1 -1
- package/dist/esm/cmd/index.js +11 -11
- package/dist/esm/cmd/index.js.map +1 -1
- package/dist/esm/cmd/rank.js +5 -5
- package/dist/esm/cmd/rank.js.map +1 -1
- package/dist/esm/cmd/score.js +13 -17
- package/dist/esm/cmd/score.js.map +1 -1
- package/dist/esm/cmd/subscribe/beatleader.js +3 -3
- package/dist/esm/cmd/subscribe/beatleader.js.map +1 -1
- package/dist/esm/cmd/subscribe/beatsaver.js +3 -3
- package/dist/esm/cmd/subscribe/beatsaver.js.map +1 -1
- package/dist/esm/cmd/subscribe/id-beatleader-score.js +4 -4
- package/dist/esm/cmd/subscribe/id-beatleader-score.js.map +1 -1
- package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +4 -4
- package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
- package/dist/esm/cmd/subscribe/index.js +7 -7
- package/dist/esm/cmd/subscribe/index.js.map +1 -1
- package/dist/esm/cmd/subscribe/subjoin.js +5 -5
- package/dist/esm/cmd/subscribe/subjoin.js.map +1 -1
- package/dist/esm/cmd/subscribe/subleave.js +5 -5
- package/dist/esm/cmd/subscribe/subleave.js.map +1 -1
- package/dist/esm/cmd/subscribe/unsubscribe.js +7 -7
- package/dist/esm/cmd/subscribe/unsubscribe.js.map +1 -1
- package/dist/esm/common/cache.js.map +1 -0
- package/dist/esm/common/fetch/error.js.map +1 -0
- package/dist/esm/common/fetch/index.js +35 -0
- package/dist/esm/common/fetch/index.js.map +1 -0
- package/dist/esm/{infra/support → common}/fetch/ofetch.js +4 -10
- package/dist/esm/common/fetch/ofetch.js.map +1 -0
- package/dist/esm/common/i18n/index.js +32 -0
- package/dist/esm/common/i18n/index.js.map +1 -0
- package/dist/esm/common/i18n/parser.js.map +1 -0
- package/dist/esm/{infra/i18n/index.js → common/i18n/util.js} +4 -56
- package/dist/esm/common/i18n/util.js.map +1 -0
- package/dist/esm/{infra/support → common}/render/index.js +53 -13
- package/dist/esm/common/render/index.js.map +1 -0
- package/dist/esm/common/render/puppeteer.js.map +1 -0
- package/dist/esm/{infra → common}/s3/index.js +32 -12
- package/dist/esm/common/s3/index.js.map +1 -0
- package/dist/esm/components/components/RankDifficulty.js +60 -84
- package/dist/esm/components/components/RankDifficulty.js.map +1 -1
- package/dist/esm/components/components/base/avatar.js +1 -2
- package/dist/esm/components/components/base/avatar.js.map +1 -1
- package/dist/esm/components/components/bl-rank-score-item.js +25 -87
- package/dist/esm/components/components/bl-rank-score-item.js.map +1 -1
- package/dist/esm/components/components/bl-score-item.js +28 -69
- package/dist/esm/components/components/bl-score-item.js.map +1 -1
- package/dist/esm/components/components/characteristic.js +106 -118
- package/dist/esm/components/components/characteristic.js.map +1 -1
- package/dist/esm/components/components/flag.js +6 -14
- package/dist/esm/components/components/flag.js.map +1 -1
- package/dist/esm/components/components/icons/BeatLeader.js +55 -71
- package/dist/esm/components/components/icons/BeatLeader.js.map +1 -1
- package/dist/esm/components/components/icons/RankIcon.js +3 -7
- package/dist/esm/components/components/icons/RankIcon.js.map +1 -1
- package/dist/esm/components/components/icons/ScoreSaberIcon.js +276 -312
- package/dist/esm/components/components/icons/ScoreSaberIcon.js.map +1 -1
- package/dist/esm/components/components/progressbar.js +2 -2
- package/dist/esm/components/components/progressbar.js.map +1 -1
- package/dist/esm/components/components/scoreItem.js +26 -63
- package/dist/esm/components/components/scoreItem.js.map +1 -1
- package/dist/esm/components/components/scoregraph.js +4 -5
- package/dist/esm/components/components/scoregraph.js.map +1 -1
- package/dist/esm/components/components/skill-graph.js +147 -164
- package/dist/esm/components/components/skill-graph.js.map +1 -1
- package/dist/esm/components/components/socre-badge.js +7 -10
- package/dist/esm/components/components/socre-badge.js.map +1 -1
- package/dist/esm/components/components/ss-rank-score-item.js +25 -87
- package/dist/esm/components/components/ss-rank-score-item.js.map +1 -1
- package/dist/esm/components/components/ss-score-item.js +28 -65
- package/dist/esm/components/components/ss-score-item.js.map +1 -1
- package/dist/esm/components/index.js +3 -43
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/pages/bl-player.js +91 -136
- package/dist/esm/components/pages/bl-player.js.map +1 -1
- package/dist/esm/components/pages/bl-score-with-rank.js +114 -221
- package/dist/esm/components/pages/bl-score-with-rank.js.map +1 -1
- package/dist/esm/components/pages/bl-score.js +67 -169
- package/dist/esm/components/pages/bl-score.js.map +1 -1
- package/dist/esm/components/pages/bs-map.js +95 -166
- package/dist/esm/components/pages/bs-map.js.map +1 -1
- package/dist/esm/components/pages/index.js +21 -21
- package/dist/esm/components/pages/index.js.map +1 -1
- package/dist/esm/components/pages/ss-player.js +48 -77
- package/dist/esm/components/pages/ss-player.js.map +1 -1
- package/dist/esm/components/utils/bl/bsorReplayAcc.js +2 -2
- package/dist/esm/components/utils/bl/bsorReplayAcc.js.map +1 -1
- package/dist/esm/components/utils/bl/getPart.js.map +1 -1
- package/dist/esm/components/utils/bl/stastic.js.map +1 -1
- package/dist/esm/components/utils/format.js +3 -3
- package/dist/esm/components/utils/format.js.map +1 -1
- package/dist/esm/components/utils/getMods.js.map +1 -1
- package/dist/esm/components/utils/index.js +2 -2
- package/dist/esm/config.js +32 -0
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/{interface → core}/cmd/builder.js +4 -4
- package/dist/esm/core/cmd/builder.js.map +1 -0
- package/dist/esm/core/domain.js +1 -0
- package/dist/esm/core/error.js +16 -0
- package/dist/esm/core/error.js.map +1 -0
- package/dist/esm/core/event.js +1 -0
- package/dist/esm/core/index.js +10 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/core/session.js +1 -0
- package/dist/esm/events/schedules/index.js +16 -0
- package/dist/esm/events/schedules/index.js.map +1 -0
- package/dist/esm/{schedules → events/schedules}/temp.js +7 -3
- package/dist/esm/events/schedules/temp.js.map +1 -0
- package/dist/esm/{ws → events/ws}/beatleader.js +6 -6
- package/dist/esm/events/ws/beatleader.js.map +1 -0
- package/dist/esm/{ws → events/ws}/beatsaver.js +11 -11
- package/dist/esm/events/ws/beatsaver.js.map +1 -0
- package/dist/esm/events/ws/index.js +4 -0
- package/dist/esm/events/ws/index.js.map +1 -0
- package/dist/esm/index.js +15 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interface/db/index.js +0 -1
- package/dist/esm/interface/db/index.js.map +1 -1
- package/dist/esm/interface/index.js +9 -15
- package/dist/esm/interface/index.js.map +1 -1
- package/dist/esm/{service → services}/api/base/aioclient.js +1 -1
- package/dist/esm/services/api/base/aioclient.js.map +1 -0
- package/dist/esm/{service → services}/api/base/blclient.js +1 -1
- package/dist/esm/services/api/base/blclient.js.map +1 -0
- package/dist/esm/{service → services}/api/base/bsclient.js +2 -2
- package/dist/esm/services/api/base/bsclient.js.map +1 -0
- package/dist/esm/services/api/base/index.js +5 -0
- package/dist/esm/services/api/base/index.js.map +1 -0
- package/dist/esm/{service → services}/api/base/ssclient.js +2 -2
- package/dist/esm/services/api/base/ssclient.js.map +1 -0
- package/dist/esm/{service → services}/api/index.js +16 -8
- package/dist/esm/services/api/index.js.map +1 -0
- package/dist/esm/services/api/interfaces/beatleader/index.js +6 -0
- package/dist/esm/services/api/interfaces/beatleader/index.js.map +1 -0
- package/dist/esm/services/api/interfaces/beatsaver/index.js +6 -0
- package/dist/esm/services/api/interfaces/beatsaver/index.js.map +1 -0
- package/dist/esm/services/api/interfaces/scoresaber/index.js +4 -0
- package/dist/esm/services/api/interfaces/scoresaber/index.js.map +1 -0
- package/dist/esm/services/api/sortScore.js.map +1 -0
- package/dist/esm/{infra → services}/errors/index.js +1 -17
- package/dist/esm/services/errors/index.js.map +1 -0
- package/dist/esm/services/i18n/index.js +21 -0
- package/dist/esm/services/i18n/index.js.map +1 -0
- package/dist/esm/services/index.js +9 -0
- package/dist/esm/services/index.js.map +1 -0
- package/dist/esm/services/preference.js.map +1 -0
- package/dist/esm/{service → services}/render/index.js +34 -11
- package/dist/esm/services/render/index.js.map +1 -0
- package/dist/esm/utils/bsorDecoder.js +301 -0
- package/dist/esm/utils/bsorDecoder.js.map +1 -0
- package/dist/esm/utils/index.js +2 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/platform.js +14 -0
- package/dist/esm/utils/platform.js.map +1 -0
- package/dist/types/index.d.ts +1376 -48
- package/package.json +19 -10
- package/dist/cjs/components/utils/canvas.js +0 -2
- package/dist/cjs/components/utils/canvas.js.map +0 -1
- package/dist/cjs/infra/errors/index.js.map +0 -1
- package/dist/cjs/infra/i18n/index.js.map +0 -1
- package/dist/cjs/infra/i18n/parser.js.map +0 -1
- package/dist/cjs/infra/index.js.map +0 -1
- package/dist/cjs/infra/s3/index.js.map +0 -1
- package/dist/cjs/infra/support/cache.js.map +0 -1
- package/dist/cjs/infra/support/fetch/error.js.map +0 -1
- package/dist/cjs/infra/support/fetch/index.js.map +0 -1
- package/dist/cjs/infra/support/fetch/ofetch.js.map +0 -1
- package/dist/cjs/infra/support/render/index.js.map +0 -1
- package/dist/cjs/infra/support/render/puppeteer.js.map +0 -1
- package/dist/cjs/interface/bot.js.map +0 -1
- package/dist/cjs/interface/cmd/builder.js.map +0 -1
- package/dist/cjs/interface/cmd/type.js.map +0 -1
- package/dist/cjs/interface/logger.js.map +0 -1
- package/dist/cjs/schedules/index.js.map +0 -1
- package/dist/cjs/schedules/interface.js +0 -16
- package/dist/cjs/schedules/interface.js.map +0 -1
- package/dist/cjs/schedules/temp.js.map +0 -1
- package/dist/cjs/service/api/base/aioclient.js.map +0 -1
- package/dist/cjs/service/api/base/blclient.js.map +0 -1
- package/dist/cjs/service/api/base/bsclient.js.map +0 -1
- package/dist/cjs/service/api/base/index.js.map +0 -1
- package/dist/cjs/service/api/base/ssclient.js.map +0 -1
- package/dist/cjs/service/api/index.js.map +0 -1
- package/dist/cjs/service/api/interfaces/aiosaber/index.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatleader/bsor.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatleader/index.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatleader/req.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatleader/score.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatleader/user.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatleader/ws.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatsaver/alert.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatsaver/bsmap.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatsaver/index.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatsaver/resp.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatsaver/user.js.map +0 -1
- package/dist/cjs/service/api/interfaces/beatsaver/ws.js.map +0 -1
- package/dist/cjs/service/api/interfaces/index.js.map +0 -1
- package/dist/cjs/service/api/interfaces/scoresaber/index.js.map +0 -1
- package/dist/cjs/service/api/interfaces/scoresaber/item.js.map +0 -1
- package/dist/cjs/service/api/interfaces/scoresaber/leaderboard.js.map +0 -1
- package/dist/cjs/service/api/interfaces/scoresaber/resp.js.map +0 -1
- package/dist/cjs/service/api/interfaces/scoresaber/user.js.map +0 -1
- package/dist/cjs/service/api/interfaces/scoresaber/ws.js.map +0 -1
- package/dist/cjs/service/api/sortScore.js.map +0 -1
- package/dist/cjs/service/index.js +0 -16
- package/dist/cjs/service/index.js.map +0 -1
- package/dist/cjs/service/preference.js.map +0 -1
- package/dist/cjs/service/render/index.js.map +0 -1
- package/dist/cjs/service/render/interfaces.js +0 -16
- package/dist/cjs/service/render/interfaces.js.map +0 -1
- package/dist/cjs/ws/beatleader.js.map +0 -1
- package/dist/cjs/ws/beatsaver.js.map +0 -1
- package/dist/cjs/ws/bl-filter.js +0 -1
- package/dist/cjs/ws/handler.js.map +0 -1
- package/dist/cjs/ws/index.js.map +0 -1
- package/dist/cjs/ws/scoresaber.js +0 -75
- package/dist/cjs/ws/scoresaber.js.map +0 -1
- package/dist/esm/components/utils/canvas.js +0 -2
- package/dist/esm/components/utils/canvas.js.map +0 -1
- package/dist/esm/infra/errors/index.js.map +0 -1
- package/dist/esm/infra/i18n/index.js.map +0 -1
- package/dist/esm/infra/i18n/parser.js.map +0 -1
- package/dist/esm/infra/index.js +0 -6
- package/dist/esm/infra/index.js.map +0 -1
- package/dist/esm/infra/s3/index.js.map +0 -1
- package/dist/esm/infra/support/cache.js.map +0 -1
- package/dist/esm/infra/support/fetch/error.js.map +0 -1
- package/dist/esm/infra/support/fetch/index.js +0 -33
- package/dist/esm/infra/support/fetch/index.js.map +0 -1
- package/dist/esm/infra/support/fetch/ofetch.js.map +0 -1
- package/dist/esm/infra/support/render/index.js.map +0 -1
- package/dist/esm/infra/support/render/puppeteer.js.map +0 -1
- package/dist/esm/interface/bot.js +0 -1
- package/dist/esm/interface/cmd/builder.js.map +0 -1
- package/dist/esm/schedules/index.js +0 -15
- package/dist/esm/schedules/index.js.map +0 -1
- package/dist/esm/schedules/interface.js +0 -1
- package/dist/esm/schedules/temp.js.map +0 -1
- package/dist/esm/service/api/base/aioclient.js.map +0 -1
- package/dist/esm/service/api/base/blclient.js.map +0 -1
- package/dist/esm/service/api/base/bsclient.js.map +0 -1
- package/dist/esm/service/api/base/index.js +0 -5
- package/dist/esm/service/api/base/index.js.map +0 -1
- package/dist/esm/service/api/base/ssclient.js.map +0 -1
- package/dist/esm/service/api/index.js.map +0 -1
- package/dist/esm/service/api/interfaces/beatleader/index.js +0 -6
- package/dist/esm/service/api/interfaces/beatleader/index.js.map +0 -1
- package/dist/esm/service/api/interfaces/beatsaver/index.js +0 -6
- package/dist/esm/service/api/interfaces/beatsaver/index.js.map +0 -1
- package/dist/esm/service/api/interfaces/scoresaber/index.js +0 -4
- package/dist/esm/service/api/interfaces/scoresaber/index.js.map +0 -1
- package/dist/esm/service/api/sortScore.js.map +0 -1
- package/dist/esm/service/index.js +0 -1
- package/dist/esm/service/index.js.map +0 -1
- package/dist/esm/service/preference.js.map +0 -1
- package/dist/esm/service/render/index.js.map +0 -1
- package/dist/esm/service/render/interfaces.js +0 -1
- package/dist/esm/service/render/interfaces.js.map +0 -1
- package/dist/esm/ws/beatleader.js.map +0 -1
- package/dist/esm/ws/beatsaver.js.map +0 -1
- package/dist/esm/ws/bl-filter.js +0 -1
- package/dist/esm/ws/bl-filter.js.map +0 -1
- package/dist/esm/ws/index.js +0 -5
- package/dist/esm/ws/index.js.map +0 -1
- package/dist/esm/ws/scoresaber.js +0 -53
- package/dist/esm/ws/scoresaber.js.map +0 -1
- package/dist/types/cmd/bind/bind-beatleader.d.ts +0 -34
- package/dist/types/cmd/bind/bind-beatsaver.d.ts +0 -34
- package/dist/types/cmd/bind/bind-id-beatleader.d.ts +0 -34
- package/dist/types/cmd/bind/bind-id-beatsaver.d.ts +0 -34
- package/dist/types/cmd/bind/bind-scoresaber.d.ts +0 -34
- package/dist/types/cmd/bind/index.d.ts +0 -41
- package/dist/types/cmd/bsmap/id-search.d.ts +0 -41
- package/dist/types/cmd/bsmap/key-search.d.ts +0 -41
- package/dist/types/cmd/bsmap/latest.d.ts +0 -41
- package/dist/types/cmd/config/index.d.ts +0 -2
- package/dist/types/cmd/deprecated/tmp.d.ts +0 -41
- package/dist/types/cmd/index.d.ts +0 -34
- package/dist/types/cmd/rank.d.ts +0 -41
- package/dist/types/cmd/score.d.ts +0 -41
- package/dist/types/cmd/subscribe/beatleader.d.ts +0 -34
- package/dist/types/cmd/subscribe/beatsaver.d.ts +0 -34
- package/dist/types/cmd/subscribe/id-beatleader-score.d.ts +0 -34
- package/dist/types/cmd/subscribe/id-beatsaver-mapper.d.ts +0 -34
- package/dist/types/cmd/subscribe/index.d.ts +0 -41
- package/dist/types/cmd/subscribe/subjoin.d.ts +0 -41
- package/dist/types/cmd/subscribe/subleave.d.ts +0 -41
- package/dist/types/cmd/subscribe/unsubscribe.d.ts +0 -41
- package/dist/types/components/components/RankDifficulty.d.ts +0 -10
- package/dist/types/components/components/base/avatar.d.ts +0 -10
- package/dist/types/components/components/bl-rank-score-item.d.ts +0 -21
- package/dist/types/components/components/bl-score-item.d.ts +0 -10
- package/dist/types/components/components/characteristic.d.ts +0 -9
- package/dist/types/components/components/flag.d.ts +0 -9
- package/dist/types/components/components/icons/BeatLeader.d.ts +0 -6
- package/dist/types/components/components/icons/RankIcon.d.ts +0 -8
- package/dist/types/components/components/icons/ScoreSaberIcon.d.ts +0 -6
- package/dist/types/components/components/progressbar.d.ts +0 -8
- package/dist/types/components/components/scoreItem.d.ts +0 -8
- package/dist/types/components/components/scoregraph.d.ts +0 -15
- package/dist/types/components/components/skill-graph.d.ts +0 -9
- package/dist/types/components/components/socre-badge.d.ts +0 -9
- package/dist/types/components/components/ss-rank-score-item.d.ts +0 -21
- package/dist/types/components/components/ss-score-item.d.ts +0 -8
- package/dist/types/components/index.d.ts +0 -5
- package/dist/types/components/pages/bl-player.d.ts +0 -11
- package/dist/types/components/pages/bl-score-with-rank.d.ts +0 -18
- package/dist/types/components/pages/bl-score.d.ts +0 -15
- package/dist/types/components/pages/bs-map.d.ts +0 -11
- package/dist/types/components/pages/index.d.ts +0 -14
- package/dist/types/components/pages/ss-player.d.ts +0 -13
- package/dist/types/components/utils/bl/beatleader.d.ts +0 -15
- package/dist/types/components/utils/bl/blheadset.d.ts +0 -275
- package/dist/types/components/utils/bl/bsorDecoder.d.ts +0 -189
- package/dist/types/components/utils/bl/bsorReplayAcc.d.ts +0 -38
- package/dist/types/components/utils/bl/getPart.d.ts +0 -9
- package/dist/types/components/utils/bl/stastic.d.ts +0 -3
- package/dist/types/components/utils/canvas.d.ts +0 -2
- package/dist/types/components/utils/format.d.ts +0 -8
- package/dist/types/components/utils/getMods.d.ts +0 -5
- package/dist/types/components/utils/index.d.ts +0 -6
- package/dist/types/components/utils/qrcode.d.ts +0 -3
- package/dist/types/components/utils/sleep.d.ts +0 -3
- package/dist/types/components/utils/tag-format.d.ts +0 -3
- package/dist/types/components/utils/tw-join.d.ts +0 -5
- package/dist/types/config.d.ts +0 -30
- package/dist/types/index-Dagy_c8G.d.ts +0 -74
- package/dist/types/infra/errors/index.d.ts +0 -69
- package/dist/types/infra/i18n/index.d.ts +0 -4
- package/dist/types/infra/i18n/parser.d.ts +0 -16
- package/dist/types/infra/index.d.ts +0 -6
- package/dist/types/infra/s3/index.d.ts +0 -20
- package/dist/types/infra/support/cache.d.ts +0 -6
- package/dist/types/infra/support/fetch/error.d.ts +0 -11
- package/dist/types/infra/support/fetch/index.d.ts +0 -7
- package/dist/types/infra/support/fetch/ofetch.d.ts +0 -24
- package/dist/types/infra/support/render/index.d.ts +0 -38
- package/dist/types/infra/support/render/puppeteer.d.ts +0 -43
- package/dist/types/interface/bot.d.ts +0 -22
- package/dist/types/interface/cmd/builder.d.ts +0 -53
- package/dist/types/interface/cmd/type.d.ts +0 -30
- package/dist/types/interface/db/index.d.ts +0 -45
- package/dist/types/interface/db/models.d.ts +0 -41
- package/dist/types/interface/index.d.ts +0 -30
- package/dist/types/interface/logger.d.ts +0 -8
- package/dist/types/schedules/index.d.ts +0 -40
- package/dist/types/schedules/interface.d.ts +0 -45
- package/dist/types/schedules/temp.d.ts +0 -35
- package/dist/types/service/api/base/aioclient.d.ts +0 -13
- package/dist/types/service/api/base/blclient.d.ts +0 -28
- package/dist/types/service/api/base/bsclient.d.ts +0 -29
- package/dist/types/service/api/base/index.d.ts +0 -19
- package/dist/types/service/api/base/ssclient.d.ts +0 -17
- package/dist/types/service/api/index.d.ts +0 -59
- package/dist/types/service/api/interfaces/aiosaber/index.d.ts +0 -9
- package/dist/types/service/api/interfaces/beatleader/bsor.d.ts +0 -113
- package/dist/types/service/api/interfaces/beatleader/index.d.ts +0 -5
- package/dist/types/service/api/interfaces/beatleader/req.d.ts +0 -22
- package/dist/types/service/api/interfaces/beatleader/score.d.ts +0 -164
- package/dist/types/service/api/interfaces/beatleader/user.d.ts +0 -173
- package/dist/types/service/api/interfaces/beatleader/ws.d.ts +0 -90
- package/dist/types/service/api/interfaces/beatsaver/alert.d.ts +0 -20
- package/dist/types/service/api/interfaces/beatsaver/bsmap.d.ts +0 -70
- package/dist/types/service/api/interfaces/beatsaver/index.d.ts +0 -13
- package/dist/types/service/api/interfaces/beatsaver/resp.d.ts +0 -11
- package/dist/types/service/api/interfaces/beatsaver/user.d.ts +0 -10
- package/dist/types/service/api/interfaces/beatsaver/ws.d.ts +0 -13
- package/dist/types/service/api/interfaces/index.d.ts +0 -14
- package/dist/types/service/api/interfaces/scoresaber/index.d.ts +0 -3
- package/dist/types/service/api/interfaces/scoresaber/item.d.ts +0 -67
- package/dist/types/service/api/interfaces/scoresaber/leaderboard.d.ts +0 -13
- package/dist/types/service/api/interfaces/scoresaber/resp.d.ts +0 -12
- package/dist/types/service/api/interfaces/scoresaber/user.d.ts +0 -35
- package/dist/types/service/api/interfaces/scoresaber/ws.d.ts +0 -80
- package/dist/types/service/api/sortScore.d.ts +0 -5
- package/dist/types/service/index.d.ts +0 -30
- package/dist/types/service/preference.d.ts +0 -38
- package/dist/types/service/render/index.d.ts +0 -43
- package/dist/types/service/render/interfaces.d.ts +0 -30
- package/dist/types/utils/index.d.ts +0 -5
- package/dist/types/ws/beatleader.d.ts +0 -47
- package/dist/types/ws/beatsaver.d.ts +0 -52
- package/dist/types/ws/bl-filter.d.ts +0 -2
- package/dist/types/ws/handler.d.ts +0 -8
- package/dist/types/ws/index.d.ts +0 -36
- package/dist/types/ws/scoresaber.d.ts +0 -47
- /package/dist/cjs/{infra/support → common}/cache.js +0 -0
- /package/dist/cjs/{infra/support → common}/fetch/error.js +0 -0
- /package/dist/cjs/{infra → common}/i18n/parser.js +0 -0
- /package/dist/cjs/{infra/support → common}/render/puppeteer.js +0 -0
- /package/dist/cjs/{interface → core}/cmd/type.js +0 -0
- /package/dist/cjs/{interface → core}/logger.js +0 -0
- /package/dist/cjs/{ws → events/ws}/handler.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/aiosaber/index.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/beatleader/bsor.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/beatleader/req.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/beatleader/score.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/beatleader/user.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/beatleader/ws.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/beatsaver/alert.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/beatsaver/bsmap.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/beatsaver/resp.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/beatsaver/user.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/beatsaver/ws.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/index.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/scoresaber/item.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/scoresaber/leaderboard.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/scoresaber/resp.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/scoresaber/user.js +0 -0
- /package/dist/cjs/{service → services}/api/interfaces/scoresaber/ws.js +0 -0
- /package/dist/cjs/{service → services}/api/sortScore.js +0 -0
- /package/dist/cjs/{service → services}/preference.js +0 -0
- /package/dist/esm/{infra/support → common}/cache.js +0 -0
- /package/dist/esm/{infra/support → common}/fetch/error.js +0 -0
- /package/dist/esm/{infra → common}/i18n/parser.js +0 -0
- /package/dist/esm/{infra/support → common}/render/puppeteer.js +0 -0
- /package/dist/esm/{interface → core}/cmd/type.js +0 -0
- /package/dist/esm/{interface → core}/cmd/type.js.map +0 -0
- /package/dist/{cjs/ws/bl-filter.js.map → esm/core/domain.js.map} +0 -0
- /package/dist/esm/{interface/bot.js.map → core/event.js.map} +0 -0
- /package/dist/esm/{interface → core}/logger.js +0 -0
- /package/dist/esm/{interface → core}/logger.js.map +0 -0
- /package/dist/esm/{schedules/interface.js.map → core/session.js.map} +0 -0
- /package/dist/esm/{ws → events/ws}/handler.js +0 -0
- /package/dist/esm/{ws → events/ws}/handler.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/aiosaber/index.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/aiosaber/index.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatleader/bsor.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatleader/bsor.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatleader/req.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatleader/req.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatleader/score.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatleader/score.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatleader/user.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatleader/user.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatleader/ws.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatleader/ws.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatsaver/alert.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatsaver/alert.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatsaver/bsmap.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatsaver/bsmap.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatsaver/resp.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatsaver/resp.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatsaver/user.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatsaver/user.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatsaver/ws.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/beatsaver/ws.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/index.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/index.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/scoresaber/item.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/scoresaber/item.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/scoresaber/leaderboard.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/scoresaber/leaderboard.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/scoresaber/resp.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/scoresaber/resp.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/scoresaber/user.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/scoresaber/user.js.map +0 -0
- /package/dist/esm/{service → services}/api/interfaces/scoresaber/ws.js +0 -0
- /package/dist/esm/{service → services}/api/interfaces/scoresaber/ws.js.map +0 -0
- /package/dist/esm/{service → services}/api/sortScore.js +0 -0
- /package/dist/esm/{service → services}/preference.js +0 -0
package/dist/esm/config.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
1
|
+
{"version":3,"sources":["../../src/config.ts"],"sourcesContent":["import {z} from 'zod/v4'\nimport {renderSchema} from \"@/common/render\";\nimport {s3ConfigSchema} from \"@/common/s3\";\n\nconst cronSchema = z.object({\n enabled: z.boolean().optional().default(false),\n cron: z.string().optional(),\n}).optional().default({ enabled: false })\n\nexport const configSchema = z.object({\n s3: s3ConfigSchema.default({ enabled: false }).optional(),\n render: renderSchema,\n beatsaver: z.object({\n host: z.string().default('https://api.beatsaver.com').optional(),\n wsURL: z.string().default('wss://ws.beatsaver.com/maps').optional(),\n oauthClientId: z.string().optional(),\n oauthClientSecret: z.string().optional(),\n }).default({\n host: 'https://api.beatsaver.com',\n wsURL: 'wss://ws.beatsaver.com/maps',\n }).optional(),\n beatleader: z.object({\n oauthClientId: z.string().optional(),\n oauthClientSecret: z.string().optional(),\n }).default({}).optional(),\n cron: z.object({\n temp: cronSchema,\n }).default({\n temp: {enabled: false},\n }).optional()\n})\n\nexport type Config = z.infer<typeof configSchema>\n"],"mappings":"AAAA,SAAQ,SAAQ;AAChB,SAAQ,oBAAmB;AAC3B,SAAQ,sBAAqB;AAE7B,MAAM,aAAa,EAAE,OAAO;AAAA,EAC1B,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC7C,MAAM,EAAE,OAAO,EAAE,SAAS;AAC5B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,MAAM,CAAC;AAEjC,MAAM,eAAe,EAAE,OAAO;AAAA,EACnC,IAAI,eAAe,QAAQ,EAAE,SAAS,MAAM,CAAC,EAAE,SAAS;AAAA,EACxD,QAAQ;AAAA,EACR,WAAW,EAAE,OAAO;AAAA,IAClB,MAAM,EAAE,OAAO,EAAE,QAAQ,2BAA2B,EAAE,SAAS;AAAA,IAC/D,OAAO,EAAE,OAAO,EAAE,QAAQ,6BAA6B,EAAE,SAAS;AAAA,IAClE,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,IACnC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACzC,CAAC,EAAE,QAAQ;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACT,CAAC,EAAE,SAAS;AAAA,EACZ,YAAY,EAAE,OAAO;AAAA,IACnB,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,IACnC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACzC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS;AAAA,EACxB,MAAM,EAAE,OAAO;AAAA,IACb,MAAM;AAAA,EACR,CAAC,EAAE,QAAQ;AAAA,IACT,MAAM,EAAC,SAAS,MAAK;AAAA,EACvB,CAAC,EAAE,SAAS;AACd,CAAC;","names":[]}
|
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
|
|
21
21
|
step((generator = generator.apply(__this, __arguments)).next());
|
22
22
|
});
|
23
23
|
};
|
24
|
-
import { BizError } from "
|
24
|
+
import { BizError } from "../error.js";
|
25
25
|
class CommandBuilder {
|
26
26
|
constructor() {
|
27
27
|
__publicField(this, "name");
|
@@ -29,9 +29,9 @@ class CommandBuilder {
|
|
29
29
|
__publicField(this, "options", []);
|
30
30
|
__publicField(this, "aliases", []);
|
31
31
|
}
|
32
|
-
static create(name) {
|
33
|
-
|
34
|
-
}
|
32
|
+
// static create<Service, Config, OPT extends {} = {}>(name: string) {
|
33
|
+
// return new CommandBuilder<Service, Config, OPT> ().setName(name)
|
34
|
+
// }
|
35
35
|
addOption(name, description) {
|
36
36
|
this.options.push({
|
37
37
|
name,
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/cmd/builder.ts"],"sourcesContent":["import type { CmdAlias, CmdContext, CmdExecutor, CmdOption, OptionType, Extend } from './type'\nimport { BizError } from '../error'\n\nexport class CommandBuilder<Service, Config, OPT extends {} = {}> {\n private name: string\n private description: string\n private options: CmdOption[] = []\n private aliases: CmdAlias[] = []\n\n constructor() {}\n // static create<Service, Config, OPT extends {} = {}>(name: string) {\n // return new CommandBuilder<Service, Config, OPT> ().setName(name)\n // }\n\n addOption<N extends string, D extends string>(name: N, description: D) {\n this.options.push({\n name: name,\n description: description,\n type: 'string',\n })\n return this as CommandBuilder<Service, Config, Extend<OPT, N, OptionType<D>>>\n }\n\n addAlias(alias: string, option?: object) {\n this.aliases.push({ alias, option })\n return this\n }\n\n setName<T extends string>(name: T) {\n this.name = name\n return this\n }\n setDescription(description: string) {\n this.description = description\n return this\n }\n\n setExecutor(executor: CmdExecutor<Service, Config, OPT>) {\n const that = this\n const errorHandler = (executor: CmdExecutor<Service, Config, OPT>) => {\n return async (c: CmdContext<Service, Config, OPT>) => {\n try {\n await executor(c)\n } catch (e: any) {\n if (e instanceof BizError) {\n await c.session.send(c.session.text(e.id, e.params))\n } else {\n c.logger.error(\n `unexpectError occur during cmd 「${that.name}」executing`,\n e\n )\n c.session.send(\n 'An unexpected error occurs, reporting it may help to fix it.'\n )\n }\n }\n }\n }\n\n return {\n name: this.name,\n description: this.description,\n aliases: this.aliases,\n options: this.options,\n callback: errorHandler(executor),\n children: [],\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,gBAAgB;AAElB,MAAM,eAAqD;AAAA,EAMhE,cAAc;AALd,wBAAQ;AACR,wBAAQ;AACR,wBAAQ,WAAuB,CAAC;AAChC,wBAAQ,WAAsB,CAAC;AAAA,EAEhB;AAAA;AAAA;AAAA;AAAA,EAKf,UAA8C,MAAS,aAAgB;AACrE,SAAK,QAAQ,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,OAAe,QAAiB;AACvC,SAAK,QAAQ,KAAK,EAAE,OAAO,OAAO,CAAC;AACnC,WAAO;AAAA,EACT;AAAA,EAEA,QAA0B,MAAS;AACjC,SAAK,OAAO;AACZ,WAAO;AAAA,EACT;AAAA,EACA,eAAe,aAAqB;AAClC,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,UAA6C;AACvD,UAAM,OAAO;AACb,UAAM,eAAe,CAACA,cAAgD;AACpE,aAAO,CAAO,MAAwC;AACpD,YAAI;AACF,gBAAMA,UAAS,CAAC;AAAA,QAClB,SAAS,GAAQ;AACf,cAAI,aAAa,UAAU;AACzB,kBAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC;AAAA,UACrD,OAAO;AACL,cAAE,OAAO;AAAA,cACP,wCAAmC,KAAK,IAAI;AAAA,cAC5C;AAAA,YACF;AACA,cAAE,QAAQ;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,UAAU,aAAa,QAAQ;AAAA,MAC/B,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AACF;","names":["executor"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
//# sourceMappingURL=domain.js.map
|
@@ -0,0 +1,16 @@
|
|
1
|
+
var __defProp = Object.defineProperty;
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
4
|
+
class BizError extends Error {
|
5
|
+
constructor() {
|
6
|
+
super(...arguments);
|
7
|
+
__publicField(this, "id");
|
8
|
+
__publicField(this, "code");
|
9
|
+
__publicField(this, "layer");
|
10
|
+
__publicField(this, "params");
|
11
|
+
}
|
12
|
+
}
|
13
|
+
export {
|
14
|
+
BizError
|
15
|
+
};
|
16
|
+
//# sourceMappingURL=error.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/core/error.ts"],"sourcesContent":["export class BizError extends Error {\n id: string\n code: string\n layer?: string\n params?: any\n}\n"],"mappings":";;;AAAO,MAAM,iBAAiB,MAAM;AAAA,EAA7B;AAAA;AACL;AACA;AACA;AACA;AAAA;AACF;","names":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
//# sourceMappingURL=event.js.map
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { CommandBuilder } from "./cmd/builder.js";
|
2
|
+
export * from "./domain.js";
|
3
|
+
export * from "./logger.js";
|
4
|
+
export * from "./error.js";
|
5
|
+
export * from "./session.js";
|
6
|
+
export * from "./event.js";
|
7
|
+
export {
|
8
|
+
CommandBuilder
|
9
|
+
};
|
10
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/core/index.ts"],"sourcesContent":["export { CommandBuilder } from './cmd/builder'\nexport * from './domain'\nexport * from './logger'\nexport * from './error'\nexport * from './session'\nexport * from './event'\n\nexport type { CmdContext } from \"./cmd/type\";\nexport type { Command } from \"./cmd/type\";\n"],"mappings":"AAAA,SAAS,sBAAsB;AAC/B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
//# sourceMappingURL=session.js.map
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { LBScoreMonitor } from "./temp.js";
|
2
|
+
const getScheduleTasks = (config) => {
|
3
|
+
var _a, _b, _c, _d, _e;
|
4
|
+
return [
|
5
|
+
{
|
6
|
+
name: "lb-rank-notifier",
|
7
|
+
handler: LBScoreMonitor,
|
8
|
+
cron: (_b = (_a = config.cron) == null ? void 0 : _a.temp) == null ? void 0 : _b.cron,
|
9
|
+
enabled: (_e = (_d = (_c = config.cron) == null ? void 0 : _c.temp) == null ? void 0 : _d.enabled) != null ? _e : false
|
10
|
+
}
|
11
|
+
];
|
12
|
+
};
|
13
|
+
export {
|
14
|
+
getScheduleTasks
|
15
|
+
};
|
16
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/events/schedules/index.ts"],"sourcesContent":["import { Config } from '@/config'\nimport { LBScoreMonitor } from './temp'\n\nexport const getScheduleTasks = (config: Config) => {\n return [\n {\n name: 'lb-rank-notifier',\n handler: LBScoreMonitor,\n cron: config.cron?.temp?.cron,\n enabled: config.cron?.temp?.enabled ?? false,\n },\n ]\n}\n"],"mappings":"AACA,SAAS,sBAAsB;AAExB,MAAM,mBAAmB,CAAC,WAAmB;AAHpD;AAIE,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAM,kBAAO,SAAP,mBAAa,SAAb,mBAAmB;AAAA,MACzB,UAAS,wBAAO,SAAP,mBAAa,SAAb,mBAAmB,YAAnB,YAA8B;AAAA,IACzC;AAAA,EACF;AACF;","names":[]}
|
@@ -24,11 +24,15 @@ const LBScoreMonitor = (c) => __async(null, null, function* () {
|
|
24
24
|
return;
|
25
25
|
}
|
26
26
|
const [hitbuf, scorebuf] = yield Promise.all([
|
27
|
-
c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt"
|
28
|
-
|
27
|
+
c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt", {
|
28
|
+
selector: "#render-result"
|
29
|
+
}),
|
30
|
+
c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/score", {
|
31
|
+
selector: "#render-result"
|
32
|
+
})
|
29
33
|
]);
|
30
34
|
for (const group of channels) {
|
31
|
-
const session = c.
|
35
|
+
const session = c.agentService.getAgentSessionByChannelInfo(group.channel);
|
32
36
|
if (!session) {
|
33
37
|
continue;
|
34
38
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/events/schedules/temp.ts"],"sourcesContent":["import { EventHandlerCtx } from \"@/core\";\nimport { Config } from \"@/config\";\nimport {Services} from \"@/interface\";\n\nexport const LBScoreMonitor = async (c: EventHandlerCtx<Services, Config>) => {\n const channels = await c.services.db.getSubscriptionsByType('lb-rank')\n if (channels.length <= 0) {\n return\n }\n const [hitbuf, scorebuf] = await Promise.all([\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/hitcnt', {\n selector: '#render-result',\n }),\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/score', {\n selector: '#render-result',\n }),\n ])\n for (const group of channels) {\n // 获取一个带有 Agent 的 Service\n const session = c.agentService.getAgentSessionByChannelInfo(group.channel)\n if (!session) {\n continue\n }\n await session.sendImgBuffer(hitbuf, 'image/png')\n await session.sendImgBuffer(scorebuf, 'image/png')\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAIO,MAAM,iBAAiB,CAAO,MAAyC;AAC5E,QAAM,WAAW,MAAM,EAAE,SAAS,GAAG,uBAAuB,SAAS;AACrE,MAAI,SAAS,UAAU,GAAG;AACxB;AAAA,EACF;AACA,QAAM,CAAC,QAAQ,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC3C,EAAE,SAAS,OAAO,UAAU,wCAAwC;AAAA,MAClE,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,EAAE,SAAS,OAAO,UAAU,uCAAuC;AAAA,MACjE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,aAAW,SAAS,UAAU;AAE5B,UAAM,UAAU,EAAE,aAAa,6BAA6B,MAAM,OAAO;AACzE,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,QAAQ,cAAc,QAAQ,WAAW;AAC/C,UAAM,QAAQ,cAAc,UAAU,WAAW;AAAA,EACnD;AACF;","names":[]}
|
@@ -22,16 +22,16 @@ var __async = (__this, __arguments, generator) => {
|
|
22
22
|
});
|
23
23
|
};
|
24
24
|
class BeatleaderWSHandler {
|
25
|
-
constructor(db, render, logger, config,
|
25
|
+
constructor(db, render, logger, config, agentService) {
|
26
26
|
__publicField(this, "logger");
|
27
27
|
__publicField(this, "render");
|
28
|
-
__publicField(this, "
|
28
|
+
__publicField(this, "agentService");
|
29
29
|
__publicField(this, "wsUrl", "wss://sockets.api.beatleader.xyz/scores");
|
30
30
|
__publicField(this, "db");
|
31
31
|
__publicField(this, "config");
|
32
32
|
this.logger = logger;
|
33
33
|
this.render = render;
|
34
|
-
this.
|
34
|
+
this.agentService = agentService;
|
35
35
|
this.config = config;
|
36
36
|
this.db = db;
|
37
37
|
}
|
@@ -47,17 +47,17 @@ class BeatleaderWSHandler {
|
|
47
47
|
const playerId = data.player.id;
|
48
48
|
const subscriptions = yield this.db.getAllSubscriptionByUIDAndPlatform(playerId, "beatleader");
|
49
49
|
const restSub = subscriptions.filter(
|
50
|
-
(it) => it.
|
50
|
+
(it) => it.subscription.type == "beatleader-score" && it.subscription.enabled == true
|
51
51
|
);
|
52
52
|
if (restSub.length === 0) return;
|
53
53
|
const img = yield this.render.renderScore(data.id.toString());
|
54
54
|
for (const item of restSub) {
|
55
|
-
const session = this.
|
55
|
+
const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
|
56
56
|
if (!session) {
|
57
57
|
continue;
|
58
58
|
}
|
59
59
|
yield session.send(
|
60
|
-
`\u606D\u559C <at id="${item.account.
|
60
|
+
`\u606D\u559C <at id="${item.account.userId}"/> \u521A\u521A\u5728\u8C31\u9762\u300C${data.leaderboard.song.name}\u300D\u4E2D\u6253\u51FA\u4E86 ${(data.accuracy * 100).toFixed(2)}% \u7684\u597D\u6210\u7EE9`
|
61
61
|
);
|
62
62
|
yield session.sendImgBuffer(img);
|
63
63
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/events/ws/beatleader.ts"],"sourcesContent":["import { WSHandler } from './handler'\nimport { AgentService, Logger } from '@/core'\nimport { Config } from '@/config'\nimport { DB } from '@/interface/db'\nimport {RenderService} from \"@/services\";\nimport { BeatLeaderWSEvent } from \"@/services/api/interfaces/beatleader\";\n\nexport class BeatleaderWSHandler<T> implements WSHandler {\n private readonly logger: Logger\n private render: RenderService\n private agentService: AgentService\n wsUrl: string = 'wss://sockets.api.beatleader.xyz/scores'\n private db: DB\n config: Config\n constructor(\n db: DB,\n render: RenderService,\n logger: Logger,\n config: Config,\n agentService: AgentService\n ) {\n this.logger = logger\n this.render = render\n this.agentService = agentService\n this.config = config\n this.db = db\n }\n\n onOpen() {\n this.logger.info('BeatleaderWS opened')\n }\n\n onClose() {\n this.logger.info('BeatleaderWS closed')\n }\n\n async onEvent(event: any) {\n const data = JSON.parse(event.toString()) as BeatLeaderWSEvent\n const playerId = data.player.id\n // const ok = BeatLeaderFilter(data, ...this.config.BLScoreFilters)\n // if (!ok) {\n // return\n // }\n // logger.info('Received beatleader message',data.id, data.player.id);\n // cache all playerId\n const subscriptions = await this.db.getAllSubscriptionByUIDAndPlatform(playerId, 'beatleader')\n // .filter(item=> {\n // const channelFilters = item.sub.data as BLScoreFilter[]\n // const memberFilters = item.member.subscribeData\n // return BeatLeaderFilter(data, ...channelFilters, ...memberFilters)\n // })\n const restSub = subscriptions.filter((it) =>\n it.subscription.type == 'beatleader-score' && it.subscription.enabled == true\n )\n // cacheService\n if (restSub.length === 0) return\n const img = await this.render.renderScore(data.id.toString())\n for (const item of restSub) {\n const session = this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `恭喜 <at id=\"${item.account.userId}\"/> 刚刚在谱面「${data.leaderboard.song.name}」中打出了 ${(data.accuracy * 100).toFixed(2)}% 的好成绩`\n )\n await session.sendImgBuffer(img)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,oBAA4C;AAAA,EAOvD,YACE,IACA,QACA,QACA,QACA,cACA;AAZF,wBAAiB;AACjB,wBAAQ;AACR,wBAAQ;AACR,iCAAgB;AAChB,wBAAQ;AACR;AAQE,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,SAAS;AACd,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,KAAK,qBAAqB;AAAA,EACxC;AAAA,EAEA,UAAU;AACR,SAAK,OAAO,KAAK,qBAAqB;AAAA,EACxC;AAAA,EAEM,QAAQ,OAAY;AAAA;AACxB,YAAM,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AACxC,YAAM,WAAW,KAAK,OAAO;AAO7B,YAAM,gBAAgB,MAAM,KAAK,GAAG,mCAAmC,UAAU,YAAY;AAM7F,YAAM,UAAU,cAAc;AAAA,QAAO,CAAC,OACpC,GAAG,aAAa,QAAQ,sBAAsB,GAAG,aAAa,WAAW;AAAA,MAC3E;AAEA,UAAI,QAAQ,WAAW,EAAG;AAC1B,YAAM,MAAM,MAAM,KAAK,OAAO,YAAY,KAAK,GAAG,SAAS,CAAC;AAC5D,iBAAW,QAAQ,SAAS;AAC1B,cAAM,UAAU,KAAK,aAAa,6BAA6B,KAAK,OAAO;AAC3E,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,wBAAc,KAAK,QAAQ,MAAM,2CAAa,KAAK,YAAY,KAAK,IAAI,mCAAU,KAAK,WAAW,KAAK,QAAQ,CAAC,CAAC;AAAA,QACnH;AACA,cAAM,QAAQ,cAAc,GAAG;AAAA,MACjC;AAAA,IACF;AAAA;AACF;","names":[]}
|
@@ -21,12 +21,12 @@ var __async = (__this, __arguments, generator) => {
|
|
21
21
|
step((generator = generator.apply(__this, __arguments)).next());
|
22
22
|
});
|
23
23
|
};
|
24
|
-
import { handleWSEventWithCache } from "
|
24
|
+
import { handleWSEventWithCache } from "../../utils/index.js";
|
25
25
|
class BeatSaverWSHandler {
|
26
|
-
constructor(db, render, logger, config,
|
26
|
+
constructor(db, render, logger, config, agentService) {
|
27
27
|
__publicField(this, "logger");
|
28
28
|
__publicField(this, "render");
|
29
|
-
__publicField(this, "
|
29
|
+
__publicField(this, "agentService");
|
30
30
|
__publicField(this, "wsUrl", "wss://ws.beatsaver.com/maps");
|
31
31
|
__publicField(this, "db");
|
32
32
|
__publicField(this, "config");
|
@@ -44,7 +44,7 @@ class BeatSaverWSHandler {
|
|
44
44
|
));
|
45
45
|
this.logger = logger;
|
46
46
|
this.render = render;
|
47
|
-
this.
|
47
|
+
this.agentService = agentService;
|
48
48
|
this.config = config;
|
49
49
|
this.db = db;
|
50
50
|
}
|
@@ -62,35 +62,35 @@ class BeatSaverWSHandler {
|
|
62
62
|
const bsmap = data.msg;
|
63
63
|
const userId = bsmap.uploader.id;
|
64
64
|
const subscriptions = yield this.db.getAllSubscriptionByUIDAndPlatform(
|
65
|
-
userId,
|
65
|
+
String(userId),
|
66
66
|
"beatsaver"
|
67
67
|
);
|
68
68
|
const restSub = subscriptions.filter(
|
69
|
-
(it) => it.
|
69
|
+
(it) => it.subscription.type == "beatsaver-map" && it.subscription.enabled == true
|
70
70
|
);
|
71
|
-
const gids = restSub.map((it) => it.
|
71
|
+
const gids = restSub.map((it) => it.channel.id);
|
72
72
|
const groupSubs = yield this.db.getIDSubscriptionByType("id-beatsaver-map");
|
73
73
|
const restGroupSubs = groupSubs.filter(
|
74
74
|
(it) => {
|
75
75
|
var _a, _b;
|
76
|
-
return !gids.includes(it.
|
76
|
+
return !gids.includes(it.channel.id) && ((_b = (_a = it.subscription.data) == null ? void 0 : _a.mapperId) == null ? void 0 : _b.toString()) === userId.toString();
|
77
77
|
}
|
78
78
|
);
|
79
79
|
if (restSub.length === 0 && restGroupSubs) return;
|
80
80
|
const image = this.render.renderMap(bsmap);
|
81
81
|
for (const item of restSub) {
|
82
|
-
const session = this.
|
82
|
+
const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
|
83
83
|
if (!session) {
|
84
84
|
continue;
|
85
85
|
}
|
86
86
|
yield session.send(
|
87
|
-
`\u672C\u7FA4\u8C31\u5E08 \u300C<at id="${item.account.
|
87
|
+
`\u672C\u7FA4\u8C31\u5E08 \u300C<at id="${item.account.userId}"/> (${bsmap.uploader.name})\u300D\u521A\u521A\u53D1\u5E03\u4E86\u65B0\u8C31\u9762\uFF0C\u300C${bsmap.name}\u300D`
|
88
88
|
);
|
89
89
|
yield session.sendImgBuffer(yield image);
|
90
90
|
yield session.sendAudioByUrl(bsmap.versions[0].previewURL);
|
91
91
|
}
|
92
92
|
for (const item of restGroupSubs) {
|
93
|
-
const session = this.
|
93
|
+
const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
|
94
94
|
if (!session) {
|
95
95
|
continue;
|
96
96
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/events/ws/beatsaver.ts"],"sourcesContent":["import { WSHandler } from './handler'\nimport {AgentService, EventHandlerCtx, Logger} from '@/core'\nimport { Config } from '@/config'\nimport { DB } from '@/interface/db'\nimport { handleWSEventWithCache } from '@/utils'\nimport {BeatSaverWSEvent, BSMap} from \"@/services/api/interfaces/beatsaver\";\nimport {RenderService} from \"@/services\";\nimport {Services} from \"@/interface\";\nexport class BeatSaverWSHandler<T> implements WSHandler {\n private readonly logger: Logger\n private render: RenderService\n private agentService: AgentService\n wsUrl: string = 'wss://ws.beatsaver.com/maps'\n private db: DB\n config: Config\n constructor(\n db: DB,\n render: RenderService,\n logger: Logger,\n config: Config,\n agentService: AgentService\n ) {\n this.logger = logger\n this.render = render\n this.agentService = agentService\n this.config = config\n this.db = db\n }\n\n onOpen() {\n this.logger.info('BeatsaverWS opened')\n }\n\n onClose() {\n this.logger.info('BeatsaverWS closed')\n }\n\n eventParser(event) {\n return JSON.parse(event.toString()) as BeatSaverWSEvent\n }\n\n eventFilter = (data: BeatSaverWSEvent) => {\n return (\n data.type === 'MAP_UPDATE' &&\n data.msg.versions.some((it) => it.state == 'Published') &&\n data.msg.declaredAi === 'None'\n )\n }\n eventIdSelector = (data: BeatSaverWSEvent) =>\n `ws.bs.${data.type === 'MAP_DELETE' ? data.msg : data.msg.id}.${data.type}`\n\n async BSWSHandler(data: BeatSaverWSEvent) {\n // this.logger.info('Beatsaver message received', data.type, data?.msg?.id)\n\n const bsmap = data.msg as BSMap\n const userId = bsmap.uploader.id\n const subscriptions = await this.db.getAllSubscriptionByUIDAndPlatform(\n String(userId),\n 'beatsaver'\n )\n\n const restSub = subscriptions.filter(\n (it) =>\n it.subscription.type == 'beatsaver-map' && it.subscription.enabled == true\n )\n const gids = restSub.map((it) => it.channel.id)\n const groupSubs = await this.db.getIDSubscriptionByType('id-beatsaver-map')\n const restGroupSubs = groupSubs.filter(\n (it) =>\n !gids.includes(it.channel.id) &&\n it.subscription.data?.mapperId?.toString() === userId.toString()\n )\n\n // cacheService\n if (restSub.length === 0 && restGroupSubs) return\n const image = this.render.renderMap(bsmap)\n for (const item of restSub) {\n const session = this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `本群谱师 「<at id=\"${item.account.userId}\"/> (${bsmap.uploader.name})」刚刚发布了新谱面,「${bsmap.name}」`\n )\n // text + mention element\n await session.sendImgBuffer(await image)\n await session.sendAudioByUrl(bsmap.versions[0].previewURL)\n }\n for (const item of restGroupSubs) {\n const session = this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `谱师「${bsmap.uploader.name}」刚刚发布了新谱面,「${bsmap.name}」`\n )\n // text + mention element\n await session.sendImgBuffer(await image)\n await session.sendAudioByUrl(bsmap.versions[0].previewURL)\n }\n }\n\n onEvent = handleWSEventWithCache(\n this,\n this.BSWSHandler,\n 1000 * 60 * 15,\n this.eventParser,\n this.eventFilter,\n this.eventIdSelector\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,8BAA8B;AAIhC,MAAM,mBAA2C;AAAA,EAOtD,YACE,IACA,QACA,QACA,QACA,cACA;AAZF,wBAAiB;AACjB,wBAAQ;AACR,wBAAQ;AACR,iCAAgB;AAChB,wBAAQ;AACR;AA2BA,uCAAc,CAAC,SAA2B;AACxC,aACE,KAAK,SAAS,gBACd,KAAK,IAAI,SAAS,KAAK,CAAC,OAAO,GAAG,SAAS,WAAW,KACtD,KAAK,IAAI,eAAe;AAAA,IAE5B;AACA,2CAAkB,CAAC,SACjB,SAAS,KAAK,SAAS,eAAe,KAAK,MAAM,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI;AAqD3E,mCAAU;AAAA,MACR;AAAA,MACA,KAAK;AAAA,MACL,MAAO,KAAK;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAvFE,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,SAAS;AACd,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,KAAK,oBAAoB;AAAA,EACvC;AAAA,EAEA,UAAU;AACR,SAAK,OAAO,KAAK,oBAAoB;AAAA,EACvC;AAAA,EAEA,YAAY,OAAO;AACjB,WAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACpC;AAAA,EAYM,YAAY,MAAwB;AAAA;AAGxC,YAAM,QAAQ,KAAK;AACnB,YAAM,SAAS,MAAM,SAAS;AAC9B,YAAM,gBAAgB,MAAM,KAAK,GAAG;AAAA,QAClC,OAAO,MAAM;AAAA,QACb;AAAA,MACF;AAEA,YAAM,UAAU,cAAc;AAAA,QAC5B,CAAC,OACC,GAAG,aAAa,QAAQ,mBAAmB,GAAG,aAAa,WAAW;AAAA,MAC1E;AACA,YAAM,OAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE;AAC9C,YAAM,YAAY,MAAM,KAAK,GAAG,wBAAwB,kBAAkB;AAC1E,YAAM,gBAAgB,UAAU;AAAA,QAC9B,CAAC,OAAI;AApEX;AAqEQ,kBAAC,KAAK,SAAS,GAAG,QAAQ,EAAE,OAC5B,cAAG,aAAa,SAAhB,mBAAsB,aAAtB,mBAAgC,gBAAe,OAAO,SAAS;AAAA;AAAA,MACnE;AAGA,UAAI,QAAQ,WAAW,KAAK,cAAe;AAC3C,YAAM,QAAQ,KAAK,OAAO,UAAU,KAAK;AACzC,iBAAW,QAAQ,SAAS;AAC1B,cAAM,UAAU,KAAK,aAAa,6BAA6B,KAAK,OAAO;AAC3E,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,0CAAiB,KAAK,QAAQ,MAAM,QAAQ,MAAM,SAAS,IAAI,sEAAe,MAAM,IAAI;AAAA,QAC1F;AAEA,cAAM,QAAQ,cAAc,MAAM,KAAK;AACvC,cAAM,QAAQ,eAAe,MAAM,SAAS,CAAC,EAAE,UAAU;AAAA,MAC3D;AACA,iBAAW,QAAQ,eAAe;AAChC,cAAM,UAAU,KAAK,aAAa,6BAA6B,KAAK,OAAO;AAC3E,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,qBAAM,MAAM,SAAS,IAAI,qEAAc,MAAM,IAAI;AAAA,QACnD;AAEA,cAAM,QAAQ,cAAc,MAAM,KAAK;AACvC,cAAM,QAAQ,eAAe,MAAM,SAAS,CAAC,EAAE,UAAU;AAAA,MAC3D;AAAA,IACF;AAAA;AAUF;","names":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/events/ws/index.ts"],"sourcesContent":["export * from './beatleader'\nexport * from './beatsaver'\nexport * from './handler'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
package/dist/esm/index.js
CHANGED
@@ -1,18 +1,23 @@
|
|
1
|
-
import { botCommands } from "./cmd";
|
2
|
-
import { getScheduleTasks } from "./schedules";
|
3
|
-
export * from "./interface";
|
4
|
-
export * from "./schedules";
|
5
|
-
export * from "./config";
|
6
|
-
export * from "./cmd";
|
7
|
-
export * from "./ws";
|
8
|
-
export * from "./utils";
|
9
|
-
export * from "./
|
10
|
-
export * from "./
|
1
|
+
import { botCommands } from "./cmd/index.js";
|
2
|
+
import { getScheduleTasks } from "./events/schedules/index.js";
|
3
|
+
export * from "./interface/index.js";
|
4
|
+
export * from "./events/schedules/index.js";
|
5
|
+
export * from "./config.js";
|
6
|
+
export * from "./cmd/index.js";
|
7
|
+
export * from "./events/ws/index.js";
|
8
|
+
export * from "./utils/index.js";
|
9
|
+
export * from "./services/index.js";
|
10
|
+
export * from "./common/s3/index.js";
|
11
|
+
export * from "./common/render/index.js";
|
12
|
+
export * from "./core/session.js";
|
13
|
+
export * from "./core/logger.js";
|
14
|
+
import { SessionAgent } from "./core/domain.js";
|
11
15
|
const getBot = (config) => ({
|
12
16
|
commands: botCommands(),
|
13
17
|
schedule: getScheduleTasks(config)
|
14
18
|
});
|
15
19
|
export {
|
20
|
+
SessionAgent,
|
16
21
|
getBot
|
17
22
|
};
|
18
23
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import {botCommands} from \"
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import {botCommands} from \"./cmd\";\nimport type {Config} from \"./config\";\nimport {getScheduleTasks} from \"./events/schedules\";\nexport * from './interface'\nexport * from './events/schedules'\nexport * from './config'\nexport * from './cmd'\nexport * from './events/ws'\nexport * from './utils'\nexport * from './services'\nexport * from '@/common/s3'\nexport * from '@/common/render'\nexport * from '@/core/session'\nexport * from '@/core/logger'\nexport { SessionAgent } from '@/core/domain'\n\nexport const getBot = (config: Config) => ({\n commands: botCommands(),\n schedule: getScheduleTasks(config),\n})\n\n"],"mappings":"AAAA,SAAQ,mBAAkB;AAE1B,SAAQ,wBAAuB;AAC/B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,oBAAoB;AAEtB,MAAM,SAAS,CAAC,YAAoB;AAAA,EACzC,UAAU,YAAY;AAAA,EACtB,UAAU,iBAAiB,MAAM;AACnC;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":[
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
@@ -1,18 +1,12 @@
|
|
1
|
-
|
2
|
-
export * from "./
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
})(Platform || {});
|
10
|
-
const parsePlatform = (p) => {
|
11
|
-
return p == "ss" ? "scoresaber" /* SS */ : "beatleader" /* BL */;
|
12
|
-
};
|
13
|
-
export * from "./cmd/type";
|
1
|
+
import { CommandBuilder as _CommandBuilder } from "../core/index.js";
|
2
|
+
export * from "./db/index.js";
|
3
|
+
class CommandBuilder extends _CommandBuilder {
|
4
|
+
// static create(name: string) {
|
5
|
+
// return _CommandBuilder.create<Services<any>, Config, {}>(name)
|
6
|
+
// }
|
7
|
+
}
|
8
|
+
export * from "../core/session.js";
|
14
9
|
export {
|
15
|
-
|
16
|
-
parsePlatform
|
10
|
+
CommandBuilder
|
17
11
|
};
|
18
12
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/interface/index.ts"],"sourcesContent":["
|
1
|
+
{"version":3,"sources":["../../../src/interface/index.ts"],"sourcesContent":["import {DB} from \"@/interface/db\";\nimport {APIService, I18nService, RenderService} from \"@/services\";\nimport {CommandBuilder as _CommandBuilder, CmdContext as _CmdContext, Command as _Command} from \"@/core\";\nimport {Config} from \"@/config\";\nimport {S3Service} from \"@/common/s3\";\nexport * from './db'\n\nexport type Services = {\n db: DB,\n api: APIService,\n render: RenderService,\n i18n: I18nService,\n s3: S3Service\n}\n\nexport class CommandBuilder<T, OPT = unknown> extends _CommandBuilder<Services, Config, OPT> {\n // static create(name: string) {\n // return _CommandBuilder.create<Services<any>, Config, {}>(name)\n // }\n}\n\nexport type CmdContext<O = unknown> = _CmdContext<Services, Config, O>\n\nexport type Command<O = unknown> = _Command<Services, Config, O>\nexport * from '@/core/session'\n"],"mappings":"AAEA,SAAQ,kBAAkB,uBAAsE;AAGhG,cAAc;AAUP,MAAM,uBAAyC,gBAAuC;AAAA;AAAA;AAAA;AAI7F;AAKA,cAAc;","names":[]}
|
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
|
|
21
21
|
step((generator = generator.apply(__this, __arguments)).next());
|
22
22
|
});
|
23
23
|
};
|
24
|
-
import { createFetch } from "../../../
|
24
|
+
import { createFetch } from "../../../common/fetch/index.js";
|
25
25
|
class AIOSaberClient {
|
26
26
|
constructor(logger) {
|
27
27
|
__publicField(this, "f");
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../src/services/api/base/aioclient.ts"],"sourcesContent":["import { createFetch, Fetch } from '@/common/fetch'\nimport { Logger } from '@/core'\nimport { AioOauthTokenResponse } from '../interfaces/aiosaber'\n\nexport class AIOSaberClient {\n f: Fetch\n constructor(logger: Logger) {\n this.f = createFetch(logger).baseUrl('https://abs.ktlab.io')\n }\n async getBSOAuthToken(key: string) {\n return this.f.get<AioOauthTokenResponse>(\n `/api/oauth/beatsaver/token/${key}`\n )\n }\n async getBLOAuthToken(key: string) {\n return this.f.get<AioOauthTokenResponse>(\n `/api/oauth/beatleader/token/${key}`\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,mBAA0B;AAI5B,MAAM,eAAe;AAAA,EAE1B,YAAY,QAAgB;AAD5B;AAEE,SAAK,IAAI,YAAY,MAAM,EAAE,QAAQ,sBAAsB;AAAA,EAC7D;AAAA,EACM,gBAAgB,KAAa;AAAA;AACjC,aAAO,KAAK,EAAE;AAAA,QACZ,8BAA8B,GAAG;AAAA,MACnC;AAAA,IACF;AAAA;AAAA,EACM,gBAAgB,KAAa;AAAA;AACjC,aAAO,KAAK,EAAE;AAAA,QACZ,+BAA+B,GAAG;AAAA,MACpC;AAAA,IACF;AAAA;AACF;","names":[]}
|
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
|
|
21
21
|
step((generator = generator.apply(__this, __arguments)).next());
|
22
22
|
});
|
23
23
|
};
|
24
|
-
import { createFetch } from "../../../
|
24
|
+
import { createFetch } from "../../../common/fetch/index.js";
|
25
25
|
class BeatLeaderClient {
|
26
26
|
constructor(opt) {
|
27
27
|
__publicField(this, "f");
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../src/services/api/base/blclient.ts"],"sourcesContent":["import { OAuthTokenInfoResponse, OAuthTokenResponse } from '../interfaces'\nimport { createFetch, Fetch } from '@/common/fetch'\nimport { Logger } from '@/core'\nimport {\n BeadLeaderScoresResponse,\n BeatLeaderPlayerScoreRequest,\n BeatLeaderUser,\n Leaderboard,\n Score,\n} from '../interfaces/beatleader'\n\ntype ClientOptions = {\n client_id?: string\n client_secret?: string\n logger?: Logger\n}\n\nexport class BeatLeaderClient {\n f: Fetch\n opt?: ClientOptions\n constructor(opt?: ClientOptions) {\n this.f = createFetch(opt?.logger).baseUrl('https://api.beatleader.xyz').extend({\n ignoreResponseError: false,\n })\n }\n async getPlayerScore(req: BeatLeaderPlayerScoreRequest) {\n const res = await this.f.get<Leaderboard>(\n `/score/${req.leaderboardContext}/${req.playerID}/${req.hash}/${req.diff}/${req.mode}`\n )\n return res\n }\n\n async getTokenInfo(accessToken: string) {\n return this.f.get<OAuthTokenInfoResponse>(`/oauth2/identity`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n })\n }\n\n async refreshOAuthToken(refreshToken: string) {\n return this.f.post<OAuthTokenResponse>(\n 'https://beatsaver.com/api/oauth2/token',\n {\n form: {\n client_id: this.opt.client_id,\n client_secret: this.opt.client_secret,\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n },\n }\n )\n }\n\n async getPlayerInfo(accountId: string) {\n return this.f.get<BeatLeaderUser>(`/player/${accountId}`)\n }\n\n async getPlayerScores(accountId: string) {\n return this.f.get<BeadLeaderScoresResponse>(\n `/player/${accountId}/scores?count=24&sortBy=pp`\n )\n }\n async getPlayerPinnedScores(accountId: string) {\n return this.f.get<Score[]>(`/player/${accountId}/pinnedScores`)\n }\n\n async getBeatScore(scoreId: string) {\n return this.f.get<Score>(`/score/${scoreId}`)\n }\n\n async getLeaderboard(leaderboardId: string, params?: Record<string, any>) {\n return this.f.get(`/leaderboard/${leaderboardId}`, { query: params })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,mBAA0B;AAgB5B,MAAM,iBAAiB;AAAA,EAG5B,YAAY,KAAqB;AAFjC;AACA;AAEE,SAAK,IAAI,YAAY,2BAAK,MAAM,EAAE,QAAQ,4BAA4B,EAAE,OAAO;AAAA,MAC7E,qBAAqB;AAAA,IACvB,CAAC;AAAA,EACH;AAAA,EACM,eAAe,KAAmC;AAAA;AACtD,YAAM,MAAM,MAAM,KAAK,EAAE;AAAA,QACvB,UAAU,IAAI,kBAAkB,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAAA,MACtF;AACA,aAAO;AAAA,IACT;AAAA;AAAA,EAEM,aAAa,aAAqB;AAAA;AACtC,aAAO,KAAK,EAAE,IAA4B,oBAAoB;AAAA,QAC5D,SAAS;AAAA,UACP,eAAe,UAAU,WAAW;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,EAEM,kBAAkB,cAAsB;AAAA;AAC5C,aAAO,KAAK,EAAE;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAM;AAAA,YACJ,WAAW,KAAK,IAAI;AAAA,YACpB,eAAe,KAAK,IAAI;AAAA,YACxB,YAAY;AAAA,YACZ,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAEM,cAAc,WAAmB;AAAA;AACrC,aAAO,KAAK,EAAE,IAAoB,WAAW,SAAS,EAAE;AAAA,IAC1D;AAAA;AAAA,EAEM,gBAAgB,WAAmB;AAAA;AACvC,aAAO,KAAK,EAAE;AAAA,QACZ,WAAW,SAAS;AAAA,MACtB;AAAA,IACF;AAAA;AAAA,EACM,sBAAsB,WAAmB;AAAA;AAC7C,aAAO,KAAK,EAAE,IAAa,WAAW,SAAS,eAAe;AAAA,IAChE;AAAA;AAAA,EAEM,aAAa,SAAiB;AAAA;AAClC,aAAO,KAAK,EAAE,IAAW,UAAU,OAAO,EAAE;AAAA,IAC9C;AAAA;AAAA,EAEM,eAAe,eAAuB,QAA8B;AAAA;AACxE,aAAO,KAAK,EAAE,IAAI,gBAAgB,aAAa,IAAI,EAAE,OAAO,OAAO,CAAC;AAAA,IACtE;AAAA;AACF;","names":[]}
|
@@ -35,8 +35,8 @@ var __async = (__this, __arguments, generator) => {
|
|
35
35
|
step((generator = generator.apply(__this, __arguments)).next());
|
36
36
|
});
|
37
37
|
};
|
38
|
-
import { createFetch } from "../../../
|
39
|
-
import { NotFoundError } from "../../../
|
38
|
+
import { createFetch } from "../../../common/fetch/index.js";
|
39
|
+
import { NotFoundError } from "../../../common/fetch/error.js";
|
40
40
|
class BeatSaverClient {
|
41
41
|
constructor(opt) {
|
42
42
|
__publicField(this, "f");
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../src/services/api/base/bsclient.ts"],"sourcesContent":["import { OAuthTokenInfoResponse, OAuthTokenResponse } from '../interfaces'\nimport { createFetch, Fetch } from '@/common/fetch'\nimport { Logger } from '@/core'\n\nimport {\n BSMap,\n BSMapLatestResponse,\n BSUserResponse,\n HashReqResponse,\n} from '../interfaces/beatsaver'\nimport {NotFoundError} from \"@/common/fetch/error\";\n\ntype ClientOptions = {\n logger?: Logger,\n host?: string,\n client_id?: string,\n client_secret?: string\n f?: Fetch\n}\n\nexport class BeatSaverClient {\n f: Fetch\n opt?: ClientOptions\n constructor(opt?: ClientOptions) {\n this.opt = opt\n this.f = opt.f || createFetch(opt.logger)\n .baseUrl(opt.host ?? 'https://api.beatsaver.com')\n .extend({\n ignoreResponseError: false,\n onResponseError: (context) => {\n if (\n context.response.status === 404 ||\n context.response.status === 400\n ) {\n throw new NotFoundError()\n }\n },\n })\n }\n async getBSMapperById(userId: string) {\n return this.f.get<BSUserResponse>(`/users/id/${userId}`)\n }\n\n async getLatestMaps(pageSize: number = 5) {\n return this.f\n .get<BSMapLatestResponse>(`/maps/latest`, {\n query: {\n sort: 'FIRST_PUBLISHED',\n pageSize,\n },\n })\n .then((res) => res.docs)\n }\n\n async searchMapByKeyword(\n key: string,\n params?: Record<string, boolean | number | string>\n ) {\n return this.f\n .get<BSMapLatestResponse>(`/search/text/0`, {\n query: {\n q: key,\n ...params,\n },\n })\n .then((res) => res.docs)\n }\n\n async searchMapById(id: string) {\n return this.f.get<BSMap>(`/maps/id/${id}`)\n }\n async getTokenInfo(ak: string) {\n return this.f.get<OAuthTokenInfoResponse>(`/oauth2/identity`, {\n headers: {\n Authorization: `Bearer ${ak}`,\n },\n })\n }\n\n async getMapsByHashes(hashes: string[]) {\n return this.f.get<HashReqResponse>(`/maps/hash/${hashes.join(',')}`)\n }\n\n async refreshOAuthToken(rk: string) {\n return this.f.post<OAuthTokenResponse>(\n 'https://beatsaver.com/api/oauth2/token',\n {\n form: {\n client_id: this.opt.client_id,\n client_secret: this.opt.client_secret,\n grant_type: 'refresh_token',\n refresh_token: rk,\n },\n }\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,mBAA0B;AASnC,SAAQ,qBAAoB;AAUrB,MAAM,gBAAgB;AAAA,EAG3B,YAAY,KAAqB;AAFjC;AACA;AAtBF;AAwBI,SAAK,MAAM;AACX,SAAK,IAAI,IAAI,KAAK,YAAY,IAAI,MAAM,EACrC,SAAQ,SAAI,SAAJ,YAAY,2BAA2B,EAC/C,OAAO;AAAA,MACN,qBAAqB;AAAA,MACrB,iBAAiB,CAAC,YAAY;AAC5B,YACE,QAAQ,SAAS,WAAW,OAC5B,QAAQ,SAAS,WAAW,KAC5B;AACA,gBAAM,IAAI,cAAc;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACL;AAAA,EACM,gBAAgB,QAAgB;AAAA;AACpC,aAAO,KAAK,EAAE,IAAoB,aAAa,MAAM,EAAE;AAAA,IACzD;AAAA;AAAA,EAEM,cAAc,WAAmB,GAAG;AAAA;AACxC,aAAO,KAAK,EACT,IAAyB,gBAAgB;AAAA,QACxC,OAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,QACF;AAAA,MACF,CAAC,EACA,KAAK,CAAC,QAAQ,IAAI,IAAI;AAAA,IAC3B;AAAA;AAAA,EAEM,mBACJ,KACA,QACA;AAAA;AACA,aAAO,KAAK,EACT,IAAyB,kBAAkB;AAAA,QAC1C,OAAO;AAAA,UACL,GAAG;AAAA,WACA;AAAA,MAEP,CAAC,EACA,KAAK,CAAC,QAAQ,IAAI,IAAI;AAAA,IAC3B;AAAA;AAAA,EAEM,cAAc,IAAY;AAAA;AAC9B,aAAO,KAAK,EAAE,IAAW,YAAY,EAAE,EAAE;AAAA,IAC3C;AAAA;AAAA,EACM,aAAa,IAAY;AAAA;AAC7B,aAAO,KAAK,EAAE,IAA4B,oBAAoB;AAAA,QAC5D,SAAS;AAAA,UACP,eAAe,UAAU,EAAE;AAAA,QAC7B;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,EAEM,gBAAgB,QAAkB;AAAA;AACtC,aAAO,KAAK,EAAE,IAAqB,cAAc,OAAO,KAAK,GAAG,CAAC,EAAE;AAAA,IACrE;AAAA;AAAA,EAEM,kBAAkB,IAAY;AAAA;AAClC,aAAO,KAAK,EAAE;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAM;AAAA,YACJ,WAAW,KAAK,IAAI;AAAA,YACpB,eAAe,KAAK,IAAI;AAAA,YACxB,YAAY;AAAA,YACZ,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AACF;","names":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../src/services/api/base/index.ts"],"sourcesContent":["export * from './ssclient'\nexport * from './blclient'\nexport * from './aioclient'\nexport * from './bsclient'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
@@ -21,8 +21,8 @@ var __async = (__this, __arguments, generator) => {
|
|
21
21
|
step((generator = generator.apply(__this, __arguments)).next());
|
22
22
|
});
|
23
23
|
};
|
24
|
-
import { createFetch } from "../../../
|
25
|
-
import { NotFoundError } from "../../../
|
24
|
+
import { createFetch } from "../../../common/fetch/index.js";
|
25
|
+
import { NotFoundError } from "../../../common/fetch/error.js";
|
26
26
|
class ScoreSaberClient {
|
27
27
|
constructor(logger) {
|
28
28
|
__publicField(this, "f");
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../src/services/api/base/ssclient.ts"],"sourcesContent":["import {\n ScoreSaberUser,\n ScoreSaberUserResponse,\n} from '../interfaces/scoresaber'\nimport { ScoresaberLeaderboardResp } from '../interfaces/scoresaber/leaderboard'\nimport { createFetch, Fetch } from '@/common/fetch'\nimport { Logger } from '@/core'\nimport {NotFoundError} from \"@/common/fetch/error\";\nexport class ScoreSaberClient {\n f: Fetch\n constructor(logger: Logger) {\n this.f = createFetch(logger).extend({\n baseURL: 'https://scoresaber.com',\n ignoreResponseError: false,\n onResponseError: (context) => {\n if (\n context.response.status === 500 ||\n context.response.status === 404\n ) {\n throw new NotFoundError()\n }\n },\n })\n }\n async getScoreUserById(userId: string) {\n return this.f.get<ScoreSaberUser>(`/api/player/${userId}/full`)\n }\n\n async getScoreItemsById(userId: string, page: number, pageSize: number = 8) {\n return this.f.get<ScoreSaberUserResponse>(`/api/player/${userId}/scores`, {\n query: {\n sort: 'top',\n page: page,\n limit: pageSize,\n },\n })\n }\n async getScoreItemsByMapId(\n mapId: string,\n diff: string,\n mode: string,\n page: number,\n pageSize: number = 8\n ): Promise<ScoresaberLeaderboardResp> {\n const id = convertToLeaderboardId(mapId, diff, mode)\n return this.f.get(`/api/leaderboard/by-id/${id}/scores`, {\n query: {\n page: page,\n limit: pageSize,\n },\n })\n }\n}\n\nconst convertToLeaderboardId = (mapid: string, diff: string, mode: string) => {\n return mapid\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAS,mBAA0B;AAEnC,SAAQ,qBAAoB;AACrB,MAAM,iBAAiB;AAAA,EAE5B,YAAY,QAAgB;AAD5B;AAEE,SAAK,IAAI,YAAY,MAAM,EAAE,OAAO;AAAA,MAClC,SAAS;AAAA,MACT,qBAAqB;AAAA,MACrB,iBAAiB,CAAC,YAAY;AAC5B,YACE,QAAQ,SAAS,WAAW,OAC5B,QAAQ,SAAS,WAAW,KAC5B;AACA,gBAAM,IAAI,cAAc;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACM,iBAAiB,QAAgB;AAAA;AACrC,aAAO,KAAK,EAAE,IAAoB,eAAe,MAAM,OAAO;AAAA,IAChE;AAAA;AAAA,EAEM,kBAAkB,QAAgB,MAAc,WAAmB,GAAG;AAAA;AAC1E,aAAO,KAAK,EAAE,IAA4B,eAAe,MAAM,WAAW;AAAA,QACxE,OAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,EACM,qBACJ,OACA,MACA,MACA,MACA,WAAmB,GACiB;AAAA;AACpC,YAAM,KAAK,uBAAuB,OAAO,MAAM,IAAI;AACnD,aAAO,KAAK,EAAE,IAAI,0BAA0B,EAAE,WAAW;AAAA,QACvD,OAAO;AAAA,UACL;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AACF;AAEA,MAAM,yBAAyB,CAAC,OAAe,MAAc,SAAiB;AAC5E,SAAO;AACT;","names":[]}
|
@@ -35,19 +35,27 @@ var __async = (__this, __arguments, generator) => {
|
|
35
35
|
step((generator = generator.apply(__this, __arguments)).next());
|
36
36
|
});
|
37
37
|
};
|
38
|
-
import { AIOSaberClient, BeatLeaderClient, BeatSaverClient, ScoreSaberClient } from "./base";
|
39
|
-
import { BLIDNotFoundError, MapIdNotFoundError, SSIDNotFoundError } from "
|
40
|
-
import {
|
41
|
-
import {
|
42
|
-
import { decode } from "../../components/utils/bl/bsorDecoder";
|
38
|
+
import { AIOSaberClient, BeatLeaderClient, BeatSaverClient, ScoreSaberClient } from "./base/index.js";
|
39
|
+
import { BLIDNotFoundError, MapIdNotFoundError, SSIDNotFoundError } from "../errors/index.js";
|
40
|
+
import { sortScore } from "./sortScore.js";
|
41
|
+
import { decode } from "../../utils/index.js";
|
43
42
|
class APIService {
|
44
43
|
constructor(cfg, logger) {
|
45
44
|
__publicField(this, "BeatLeader");
|
46
45
|
__publicField(this, "ScoreSaber");
|
47
46
|
__publicField(this, "BeatSaver");
|
48
47
|
__publicField(this, "AIOSaber");
|
49
|
-
this.BeatSaver = new BeatSaverClient({
|
50
|
-
|
48
|
+
this.BeatSaver = new BeatSaverClient({
|
49
|
+
logger,
|
50
|
+
host: cfg.beatsaver.host,
|
51
|
+
client_id: cfg.beatsaver.oauthClientId,
|
52
|
+
client_secret: cfg.beatsaver.oauthClientSecret
|
53
|
+
});
|
54
|
+
this.BeatLeader = new BeatLeaderClient({
|
55
|
+
logger,
|
56
|
+
client_id: cfg.beatleader.oauthClientId,
|
57
|
+
client_secret: cfg.beatleader.oauthClientSecret
|
58
|
+
});
|
51
59
|
this.ScoreSaber = new ScoreSaberClient(logger);
|
52
60
|
this.AIOSaber = new AIOSaberClient(logger);
|
53
61
|
}
|
@@ -100,7 +108,7 @@ class APIService {
|
|
100
108
|
));
|
101
109
|
const scores = res.filter((item) => item.status === "fulfilled").map((it) => it.value);
|
102
110
|
if (scores.length < 1) {
|
103
|
-
|
111
|
+
return null;
|
104
112
|
}
|
105
113
|
scores.sort(sortScore);
|
106
114
|
return scores[0];
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/services/api/index.ts"],"sourcesContent":["import {AIOSaberClient, BeatLeaderClient, BeatSaverClient, ScoreSaberClient} from \"./base\";\nimport {Config} from \"@/config\";\nimport { Logger } from \"@/core\";\nimport {BLIDNotFoundError, MapIdNotFoundError, SSIDNotFoundError} from \"../errors\";\nimport {BSMap, HashResponse} from \"./interfaces/beatsaver\";\nimport {ScoreSaberItem} from \"./interfaces/scoresaber\";\nimport {Leaderboard} from \"./interfaces/beatleader\";\nimport {sortScore} from \"./sortScore\";\nimport { decode } from \"@/utils\";\n\ntype MapDiffOption = {\n difficulty?: string\n mode?: string\n}\n\n\nexport class APIService {\n BeatLeader: BeatLeaderClient\n ScoreSaber: ScoreSaberClient\n BeatSaver: BeatSaverClient\n AIOSaber: AIOSaberClient\n constructor(cfg: Config, logger: Logger) {\n this.BeatSaver = new BeatSaverClient({\n logger,\n host: cfg.beatsaver.host,\n client_id: cfg.beatsaver.oauthClientId,\n client_secret: cfg.beatsaver.oauthClientSecret\n })\n this.BeatLeader = new BeatLeaderClient({\n logger,\n client_id: cfg.beatleader.oauthClientId,\n client_secret: cfg.beatleader.oauthClientSecret\n })\n this.ScoreSaber = new ScoreSaberClient(logger)\n this.AIOSaber = new AIOSaberClient(logger)\n }\n async getBLPlayerScoresWithUserInfo(accountId: string) {\n const [userInfo, playerScores, pinnedScores] = await Promise.all([\n this.BeatLeader.getPlayerInfo(accountId),\n this.BeatLeader.getPlayerScores(accountId),\n this.BeatLeader.getPlayerPinnedScores(accountId),\n ])\n if (!(userInfo && playerScores)) {\n throw new BLIDNotFoundError({ accountId })\n }\n const filteredScores = playerScores.data.filter(\n (item) => !pinnedScores.some((pinned) => pinned.id === item.id)\n )\n const scores = pinnedScores.concat(filteredScores).slice(0, 24)\n return {\n scores: scores,\n userInfo: userInfo,\n }\n }\n async getSSPlayerScoresWithUserInfo(accountId: string) {\n\n }\n async getScoreByPlayerIdAndMapId(\n playerId: string,\n mapId: string,\n option?: MapDiffOption\n ): Promise<Leaderboard | null> {\n const map = await this.BeatSaver.searchMapById(mapId)\n if (!map) {\n throw new MapIdNotFoundError()\n }\n const hash = map.versions[0].hash\n let reqs = map.versions[0].diffs.map((it) => ({\n diff: it.difficulty,\n mode: it.characteristic,\n hash: hash,\n playerID: playerId,\n leaderboardContext: 'general',\n }))\n if (option && option.difficulty) {\n reqs = reqs.filter((item) => item.diff == option.difficulty)\n }\n if (option && option.mode) {\n reqs = reqs.filter((item) => item.mode == option.mode)\n }\n const res = await Promise.allSettled(reqs.map(\n (it) => this.BeatLeader.getPlayerScore(it)))\n const scores = res\n .filter((item) => item.status === 'fulfilled')\n .map(<T>(it: PromiseFulfilledResult<T>) => it.value)\n if (scores.length < 1) {\n return null\n }\n scores.sort(sortScore)\n return scores[0]\n }\n\n async getAroundScoreAndRegionScoreByRankAndPage(\n leaderboardId: string,\n rank: number,\n regionCode: string\n ) {\n const page = Math.ceil(rank / 10)\n const rest = rank % 10\n let startIndex = 0\n if (rest > 7) {\n startIndex = 2\n }\n const [regionScore, aroundScore] = await Promise.all([\n this.BeatLeader.getLeaderboard(leaderboardId, {\n leaderboardContext: 'general',\n page: 1,\n sortBy: 'rank',\n order: 'desc',\n countries: regionCode,\n }),\n this.BeatLeader.getLeaderboard(leaderboardId, {\n leaderboardContext: 'general',\n page: page,\n sortBy: 'rank',\n order: 'desc',\n }),\n ])\n const difficulties = regionScore.song.difficulties\n return {\n difficulties: difficulties,\n aroundScores: aroundScore.scores.slice(startIndex, startIndex + 7),\n regionTopScores: regionScore.scores,\n }\n }\n async getScoreAndBSMapByScoreId(scoreId: string) {\n const res = await this.BeatLeader.getBeatScore(scoreId)\n const bsorLink = res.replay\n const bsorContent = await fetch(bsorLink)\n const bsor = await new Promise((resolve, reject) => {\n bsorContent.arrayBuffer().then((res) => decode(res, resolve))\n setTimeout(() => reject('timeout exceed'), 5000)\n })\n const statistic = await fetch(\n `https://cdn.scorestats.beatleader.xyz/${scoreId}.json`\n ).then((res) => res.json())\n const id = res.song.id.split('x')?.[0]\n const bsMap = await this.BeatSaver.searchMapById(id)\n return {\n score: res,\n bsMap: bsMap,\n statistic: statistic,\n bsor: bsor,\n }\n }\n async getSSPlayerRecentScoreWithUserInfo(uid: string) {\n const [userInfo, scores] = await Promise.all([\n this.ScoreSaber.getScoreUserById(uid),\n this.ScoreSaber.getScoreItemsById(uid, 1, 24)\n .then((res) => res?.playerScores),\n ])\n if (!scores || !userInfo) {\n throw new SSIDNotFoundError({ accountId: uid })\n }\n const hashes = scores.map((it) => it.leaderboard.songHash)\n\n let hashInfo = await this.BeatSaver.getMapsByHashes(hashes)\n if (hashInfo.id) {\n const map = hashInfo as BSMap\n hashInfo = {} as HashResponse\n hashInfo[map.versions[0].hash] = map\n }\n const res = scores.map(\n (it) =>\n ({\n mapId: (hashInfo as HashResponse)[\n it.leaderboard.songHash.toLowerCase()\n ]?.id,\n ...it,\n }) as ScoreSaberItem\n )\n return {\n scores: res,\n userInfo: userInfo,\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,gBAAgB,kBAAkB,iBAAiB,wBAAuB;AAGlF,SAAQ,mBAAmB,oBAAoB,yBAAwB;AAIvE,SAAQ,iBAAgB;AACxB,SAAS,cAAc;AAQhB,MAAM,WAAW;AAAA,EAKtB,YAAY,KAAa,QAAgB;AAJzC;AACA;AACA;AACA;AAEE,SAAK,YAAY,IAAI,gBAAgB;AAAA,MACnC;AAAA,MACA,MAAM,IAAI,UAAU;AAAA,MACpB,WAAW,IAAI,UAAU;AAAA,MACzB,eAAe,IAAI,UAAU;AAAA,IAC/B,CAAC;AACD,SAAK,aAAa,IAAI,iBAAiB;AAAA,MACrC;AAAA,MACA,WAAW,IAAI,WAAW;AAAA,MAC1B,eAAe,IAAI,WAAW;AAAA,IAChC,CAAC;AACD,SAAK,aAAa,IAAI,iBAAiB,MAAM;AAC7C,SAAK,WAAW,IAAI,eAAe,MAAM;AAAA,EAC3C;AAAA,EACM,8BAA8B,WAAmB;AAAA;AACrD,YAAM,CAAC,UAAU,cAAc,YAAY,IAAI,MAAM,QAAQ,IAAI;AAAA,QAC/D,KAAK,WAAW,cAAc,SAAS;AAAA,QACvC,KAAK,WAAW,gBAAgB,SAAS;AAAA,QACzC,KAAK,WAAW,sBAAsB,SAAS;AAAA,MACjD,CAAC;AACD,UAAI,EAAE,YAAY,eAAe;AAC/B,cAAM,IAAI,kBAAkB,EAAE,UAAU,CAAC;AAAA,MAC3C;AACA,YAAM,iBAAiB,aAAa,KAAK;AAAA,QACvC,CAAC,SAAS,CAAC,aAAa,KAAK,CAAC,WAAW,OAAO,OAAO,KAAK,EAAE;AAAA,MAChE;AACA,YAAM,SAAS,aAAa,OAAO,cAAc,EAAE,MAAM,GAAG,EAAE;AAC9D,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EACM,8BAA8B,WAAmB;AAAA;AAAA,IAEvD;AAAA;AAAA,EACM,2BACJ,UACA,OACA,QAC6B;AAAA;AAC7B,YAAM,MAAM,MAAM,KAAK,UAAU,cAAc,KAAK;AACpD,UAAI,CAAC,KAAK;AACR,cAAM,IAAI,mBAAmB;AAAA,MAC/B;AACA,YAAM,OAAO,IAAI,SAAS,CAAC,EAAE;AAC7B,UAAI,OAAO,IAAI,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,QAAQ;AAAA,QAC5C,MAAM,GAAG;AAAA,QACT,MAAM,GAAG;AAAA,QACT;AAAA,QACA,UAAU;AAAA,QACV,oBAAoB;AAAA,MACtB,EAAE;AACF,UAAI,UAAU,OAAO,YAAY;AAC/B,eAAO,KAAK,OAAO,CAAC,SAAS,KAAK,QAAQ,OAAO,UAAU;AAAA,MAC7D;AACA,UAAI,UAAU,OAAO,MAAM;AACzB,eAAO,KAAK,OAAO,CAAC,SAAS,KAAK,QAAQ,OAAO,IAAI;AAAA,MACvD;AACA,YAAM,MAAM,MAAM,QAAQ,WAAW,KAAK;AAAA,QACxC,CAAC,OAAO,KAAK,WAAW,eAAe,EAAE;AAAA,MAAC,CAAC;AAC7C,YAAM,SAAS,IACZ,OAAO,CAAC,SAAS,KAAK,WAAW,WAAW,EAC5C,IAAI,CAAI,OAAkC,GAAG,KAAK;AACrD,UAAI,OAAO,SAAS,GAAG;AACrB,eAAO;AAAA,MACT;AACA,aAAO,KAAK,SAAS;AACrB,aAAO,OAAO,CAAC;AAAA,IACjB;AAAA;AAAA,EAEM,0CACJ,eACA,MACA,YACA;AAAA;AACA,YAAM,OAAO,KAAK,KAAK,OAAO,EAAE;AAChC,YAAM,OAAO,OAAO;AACpB,UAAI,aAAa;AACjB,UAAI,OAAO,GAAG;AACZ,qBAAa;AAAA,MACf;AACA,YAAM,CAAC,aAAa,WAAW,IAAI,MAAM,QAAQ,IAAI;AAAA,QACnD,KAAK,WAAW,eAAe,eAAe;AAAA,UAC5C,oBAAoB;AAAA,UACpB,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,WAAW;AAAA,QACb,CAAC;AAAA,QACD,KAAK,WAAW,eAAe,eAAe;AAAA,UAC5C,oBAAoB;AAAA,UACpB;AAAA,UACA,QAAQ;AAAA,UACR,OAAO;AAAA,QACT,CAAC;AAAA,MACH,CAAC;AACD,YAAM,eAAe,YAAY,KAAK;AACtC,aAAO;AAAA,QACL;AAAA,QACA,cAAc,YAAY,OAAO,MAAM,YAAY,aAAa,CAAC;AAAA,QACjE,iBAAiB,YAAY;AAAA,MAC/B;AAAA,IACF;AAAA;AAAA,EACM,0BAA0B,SAAiB;AAAA;AA7HnD;AA8HI,YAAM,MAAM,MAAM,KAAK,WAAW,aAAa,OAAO;AACtD,YAAM,WAAW,IAAI;AACrB,YAAM,cAAc,MAAM,MAAM,QAAQ;AACxC,YAAM,OAAO,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AAClD,oBAAY,YAAY,EAAE,KAAK,CAACA,SAAQ,OAAOA,MAAK,OAAO,CAAC;AAC5D,mBAAW,MAAM,OAAO,gBAAgB,GAAG,GAAI;AAAA,MACjD,CAAC;AACD,YAAM,YAAY,MAAM;AAAA,QACtB,yCAAyC,OAAO;AAAA,MAClD,EAAE,KAAK,CAACA,SAAQA,KAAI,KAAK,CAAC;AAC1B,YAAM,MAAK,SAAI,KAAK,GAAG,MAAM,GAAG,MAArB,mBAAyB;AACpC,YAAM,QAAQ,MAAM,KAAK,UAAU,cAAc,EAAE;AACnD,aAAO;AAAA,QACL,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EACM,mCAAmC,KAAa;AAAA;AACpD,YAAM,CAAC,UAAU,MAAM,IAAI,MAAM,QAAQ,IAAI;AAAA,QAC3C,KAAK,WAAW,iBAAiB,GAAG;AAAA,QACpC,KAAK,WAAW,kBAAkB,KAAK,GAAG,EAAE,EACzC,KAAK,CAACA,SAAQA,QAAA,gBAAAA,KAAK,YAAY;AAAA,MACpC,CAAC;AACD,UAAI,CAAC,UAAU,CAAC,UAAU;AACxB,cAAM,IAAI,kBAAkB,EAAE,WAAW,IAAI,CAAC;AAAA,MAChD;AACA,YAAM,SAAS,OAAO,IAAI,CAAC,OAAO,GAAG,YAAY,QAAQ;AAEzD,UAAI,WAAW,MAAM,KAAK,UAAU,gBAAgB,MAAM;AAC1D,UAAI,SAAS,IAAI;AACf,cAAM,MAAM;AACZ,mBAAW,CAAC;AACZ,iBAAS,IAAI,SAAS,CAAC,EAAE,IAAI,IAAI;AAAA,MACnC;AACA,YAAM,MAAM,OAAO;AAAA,QACjB,CAAC,OAAI;AAnKX;AAoKS;AAAA,YACC,QAAQ,cACN,GAAG,YAAY,SAAS,YAAY,CACpC,MAFM,mBAEH;AAAA,aACF;AAAA;AAAA,MAET;AACA,aAAO;AAAA,QACL,QAAQ;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AACF;","names":["res"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/services/api/interfaces/beatleader/index.ts"],"sourcesContent":["export * from './bsor'\nexport * from './req'\nexport * from './score'\nexport * from './user'\nexport * from './ws'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/services/api/interfaces/beatsaver/index.ts"],"sourcesContent":["export * from './ws'\nexport * from './bsmap'\nexport * from './resp'\nexport * from './user'\nexport * from './alert'\n\nimport { BSUserResponse } from './user'\n\nexport type BSUserResp = BSUserResponse | BSErrorResponse\n\nexport interface BSErrorResponse {\n success?: boolean\n errors?: string\n}\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/services/api/interfaces/scoresaber/index.ts"],"sourcesContent":["export * from './item'\nexport * from './resp'\nexport * from './user'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/services/api/sortScore.ts"],"sourcesContent":["import { Leaderboard } from './interfaces/beatleader'\n\nconst difficulties = {\n Easy: 0,\n Normal: 1,\n Hard: 2,\n Expert: 3,\n ExpertPlus: 4,\n}\n\nconst modes = {\n Legacy: 0,\n Lawless: 1,\n Lightshow: 2,\n '360Degree': 3,\n '90Degree': 4,\n NoArrows: 5,\n OneSaber: 6,\n Standard: 7,\n}\n\nexport function sortScore(a: Leaderboard, b: Leaderboard) {\n let res = modes[b.difficulty.modeName] - modes[a.difficulty.modeName]\n if (res == 0) {\n res =\n difficulties[b.difficulty.difficultyName] -\n difficulties[a.difficulty.difficultyName]\n }\n return res\n}\n"],"mappings":"AAEA,MAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AACd;AAEA,MAAM,QAAQ;AAAA,EACZ,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,SAAS,UAAU,GAAgB,GAAgB;AACxD,MAAI,MAAM,MAAM,EAAE,WAAW,QAAQ,IAAI,MAAM,EAAE,WAAW,QAAQ;AACpE,MAAI,OAAO,GAAG;AACZ,UACE,aAAa,EAAE,WAAW,cAAc,IACxC,aAAa,EAAE,WAAW,cAAc;AAAA,EAC5C;AACA,SAAO;AACT;","names":[]}
|