beatsaber-bot-core 0.2.0-rc.13 → 0.2.0-rc.15
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 → bind-beatleader.cjs} +1 -1
- package/dist/cjs/cmd/bind/{bind-beatsaver.js → bind-beatsaver.cjs} +1 -1
- package/dist/cjs/cmd/bind/{bind-id-beatleader.js → bind-id-beatleader.cjs} +2 -2
- package/dist/cjs/cmd/bind/{bind-id-beatsaver.js → bind-id-beatsaver.cjs} +2 -2
- package/dist/cjs/cmd/bind/{bind-scoresaber.js → bind-scoresaber.cjs} +2 -2
- package/dist/cjs/cmd/bind/{index.js → index.cjs} +5 -5
- package/dist/cjs/cmd/bsmap/{id-search.js → id-search.cjs} +3 -3
- package/dist/cjs/cmd/bsmap/{key-search.js → key-search.cjs} +2 -2
- package/dist/cjs/cmd/bsmap/{latest.js → latest.cjs} +2 -2
- package/dist/cjs/cmd/config/index.cjs +1 -0
- package/dist/cjs/cmd/deprecated/{tmp.js → tmp.cjs} +2 -2
- package/dist/cjs/cmd/{index.js → index.cjs} +12 -12
- package/dist/cjs/cmd/index.cjs.map +1 -0
- package/dist/cjs/cmd/{rank.js → rank.cjs} +4 -4
- package/dist/cjs/cmd/{score.js → score.cjs} +6 -6
- package/dist/cjs/cmd/subscribe/{beatleader.js → beatleader.cjs} +2 -2
- package/dist/cjs/cmd/subscribe/{beatsaver.js → beatsaver.cjs} +2 -2
- package/dist/cjs/cmd/subscribe/{id-beatleader-score.js → id-beatleader-score.cjs} +2 -2
- package/dist/cjs/cmd/subscribe/{id-beatsaver-mapper.js → id-beatsaver-mapper.cjs} +2 -2
- package/dist/cjs/cmd/subscribe/{index.js → index.cjs} +6 -6
- package/dist/cjs/cmd/subscribe/{subjoin.js → subjoin.cjs} +3 -3
- package/dist/cjs/cmd/subscribe/{subleave.js → subleave.cjs} +2 -2
- package/dist/cjs/cmd/subscribe/{unsubscribe.js → unsubscribe.cjs} +3 -3
- package/dist/cjs/components/components/{RankDifficulty.js → RankDifficulty.cjs} +2 -2
- package/dist/cjs/components/components/base/{avatar.js → avatar.cjs} +1 -1
- package/dist/cjs/components/components/{bl-rank-score-item.js → bl-rank-score-item.cjs} +4 -4
- package/dist/cjs/components/components/{bl-score-item.js → bl-score-item.cjs} +2 -2
- package/dist/cjs/components/components/bl-score-item.cjs.map +1 -0
- package/dist/cjs/components/components/{characteristic.js → characteristic.cjs} +1 -1
- package/dist/cjs/components/components/{flag.js → flag.cjs} +2 -2
- package/dist/cjs/components/components/icons/{BeatLeader.js → BeatLeader.cjs} +1 -1
- package/dist/cjs/components/components/icons/{RankIcon.js → RankIcon.cjs} +3 -3
- package/dist/cjs/components/components/icons/{ScoreSaberIcon.js → ScoreSaberIcon.cjs} +1 -1
- package/dist/cjs/components/components/{progressbar.js → progressbar.cjs} +1 -1
- package/dist/cjs/components/components/{scoreItem.js → scoreItem.cjs} +2 -2
- package/dist/cjs/components/components/scoreItem.cjs.map +1 -0
- package/dist/cjs/components/components/{scoregraph.js → scoregraph.cjs} +3 -3
- package/dist/cjs/components/components/{skill-graph.js → skill-graph.cjs} +1 -1
- package/dist/cjs/components/components/{socre-badge.js → socre-badge.cjs} +1 -1
- package/dist/cjs/components/components/{ss-rank-score-item.js → ss-rank-score-item.cjs} +4 -4
- package/dist/cjs/components/components/{ss-score-item.js → ss-score-item.cjs} +2 -2
- package/dist/cjs/components/components/ss-score-item.cjs.map +1 -0
- package/dist/cjs/components/{index.js → index.cjs} +2 -2
- package/dist/cjs/components/pages/{bl-player.js → bl-player.cjs} +6 -6
- package/dist/cjs/components/pages/{bl-score-with-rank.js → bl-score-with-rank.cjs} +7 -7
- package/dist/cjs/components/pages/{bl-score.js → bl-score.cjs} +3 -3
- package/dist/cjs/components/pages/{bs-map.js → bs-map.cjs} +4 -4
- package/dist/cjs/components/pages/{index.js → index.cjs} +5 -5
- package/dist/cjs/components/pages/{ss-player.js → ss-player.cjs} +3 -3
- package/dist/cjs/components/utils/bl/{beatleader.js → beatleader.cjs} +1 -1
- package/dist/cjs/components/utils/bl/{blheadset.js → blheadset.cjs} +1 -1
- package/dist/cjs/components/utils/bl/{bsorDecoder.js → bsorDecoder.cjs} +1 -1
- package/dist/cjs/components/utils/bl/{bsorReplayAcc.js → bsorReplayAcc.cjs} +1 -1
- package/dist/cjs/components/utils/bl/{getPart.js → getPart.cjs} +1 -1
- package/dist/cjs/components/utils/bl/{stastic.js → stastic.cjs} +1 -1
- package/dist/cjs/components/utils/{canvas.js → canvas.cjs} +1 -1
- package/dist/cjs/components/utils/{format.js → format.cjs} +5 -5
- package/dist/cjs/components/utils/format.cjs.map +1 -0
- package/dist/cjs/components/utils/{getMods.js → getMods.cjs} +1 -1
- package/dist/cjs/components/utils/{index.js → index.cjs} +1 -1
- package/dist/cjs/components/utils/{qrcode.js → qrcode.cjs} +1 -1
- package/dist/cjs/components/utils/{sleep.js → sleep.cjs} +1 -1
- package/dist/cjs/components/utils/{tag-format.js → tag-format.cjs} +1 -1
- package/dist/cjs/components/utils/{tw-join.js → tw-join.cjs} +1 -1
- package/dist/cjs/config.cjs +55 -0
- package/dist/cjs/config.cjs.map +1 -0
- package/dist/cjs/{index.js → index.cjs} +1 -1
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/infra/errors/{index.js → index.cjs} +1 -1
- package/dist/cjs/infra/i18n/{default.js → default.cjs} +1 -1
- package/dist/cjs/infra/i18n/{index.js → index.cjs} +1 -1
- package/dist/cjs/infra/i18n/{parser.js → parser.cjs} +1 -1
- package/dist/cjs/infra/i18n/{util.js → util.cjs} +1 -1
- package/dist/cjs/infra/{index.js → index.cjs} +4 -4
- package/dist/cjs/infra/index.cjs.map +1 -0
- package/dist/cjs/infra/s3/{index.js → index.cjs} +35 -4
- package/dist/cjs/infra/s3/index.cjs.map +1 -0
- package/dist/cjs/infra/support/{cache.js → cache.cjs} +1 -1
- package/dist/cjs/infra/support/fetch/{error.js → error.cjs} +1 -1
- package/dist/cjs/infra/support/fetch/{index.js → index.cjs} +14 -5
- package/dist/cjs/infra/support/fetch/index.cjs.map +1 -0
- package/dist/cjs/infra/support/fetch/{ofetch.js → ofetch.cjs} +6 -13
- package/dist/cjs/infra/support/fetch/ofetch.cjs.map +1 -0
- package/dist/cjs/infra/support/render/{index.js → index.cjs} +49 -15
- package/dist/cjs/infra/support/render/index.cjs.map +1 -0
- package/dist/cjs/infra/support/render/{puppeteer.js → puppeteer.cjs} +1 -1
- package/dist/cjs/interface/{bot.js → bot.cjs} +1 -1
- package/dist/cjs/interface/cmd/{builder.js → builder.cjs} +2 -2
- package/dist/cjs/interface/cmd/{type.js → type.cjs} +1 -1
- package/dist/cjs/interface/db/{index.js → index.cjs} +1 -1
- package/dist/cjs/interface/db/{models.js → models.cjs} +1 -1
- package/dist/cjs/interface/{index.js → index.cjs} +1 -1
- package/dist/cjs/interface/{logger.js → logger.cjs} +1 -1
- package/dist/cjs/schedules/{index.js → index.cjs} +4 -3
- package/dist/cjs/schedules/index.cjs.map +1 -0
- package/dist/cjs/schedules/{interface.js → interface.cjs} +1 -1
- package/dist/cjs/schedules/{temp.js → temp.cjs} +1 -1
- package/dist/cjs/service/api/base/{aioclient.js → aioclient.cjs} +2 -2
- package/dist/cjs/service/api/base/{blclient.js → blclient.cjs} +2 -2
- package/dist/cjs/service/api/base/{bsclient.js → bsclient.cjs} +3 -3
- package/dist/cjs/service/api/base/{index.js → index.cjs} +1 -1
- package/dist/cjs/service/api/base/{ssclient.js → ssclient.cjs} +3 -3
- package/dist/cjs/service/api/{index.js → index.cjs} +15 -6
- package/dist/cjs/service/api/index.cjs.map +1 -0
- package/dist/cjs/service/api/interfaces/aiosaber/{index.js → index.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/beatleader/{bsor.js → bsor.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/beatleader/{index.js → index.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/beatleader/{req.js → req.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/beatleader/{score.js → score.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/beatleader/{user.js → user.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/{beatsaver/ws.js → beatleader/ws.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/beatsaver/{alert.js → alert.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/beatsaver/{bsmap.js → bsmap.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/beatsaver/{index.js → index.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/beatsaver/{resp.js → resp.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/beatsaver/{user.js → user.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/{scoresaber/ws.js → beatsaver/ws.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/{index.js → index.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/scoresaber/{index.js → index.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/scoresaber/{item.js → item.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/scoresaber/{leaderboard.js → leaderboard.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/scoresaber/{resp.js → resp.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/scoresaber/{user.js → user.cjs} +1 -1
- package/dist/cjs/service/api/interfaces/{beatleader/ws.js → scoresaber/ws.cjs} +1 -1
- package/dist/cjs/service/api/{sortScore.js → sortScore.cjs} +1 -1
- package/dist/cjs/service/{index.js → index.cjs} +1 -1
- package/dist/cjs/service/{preference.js → preference.cjs} +1 -1
- package/dist/cjs/service/render/{index.js → index.cjs} +22 -9
- package/dist/cjs/service/render/index.cjs.map +1 -0
- package/dist/cjs/service/render/{interfaces.js → interfaces.cjs} +1 -1
- package/dist/cjs/utils/{index.js → index.cjs} +1 -1
- package/dist/cjs/ws/{beatleader.js → beatleader.cjs} +1 -1
- package/dist/cjs/ws/{beatsaver.js → beatsaver.cjs} +2 -2
- package/dist/cjs/ws/bl-filter.cjs +1 -0
- package/dist/cjs/ws/{handler.js → handler.cjs} +1 -1
- package/dist/cjs/ws/{index.js → index.cjs} +1 -1
- package/dist/esm/cmd/bind/bind-id-beatleader.js +1 -1
- package/dist/esm/cmd/bind/bind-id-beatsaver.js +1 -1
- package/dist/esm/cmd/bind/bind-scoresaber.js +1 -1
- package/dist/esm/cmd/bind/index.js +5 -5
- package/dist/esm/cmd/bsmap/id-search.js +2 -2
- package/dist/esm/cmd/bsmap/key-search.js +1 -1
- package/dist/esm/cmd/bsmap/latest.js +1 -1
- package/dist/esm/cmd/deprecated/tmp.js +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 +3 -3
- package/dist/esm/cmd/score.js +5 -5
- package/dist/esm/cmd/subscribe/beatleader.js +1 -1
- package/dist/esm/cmd/subscribe/beatsaver.js +1 -1
- package/dist/esm/cmd/subscribe/id-beatleader-score.js +1 -1
- package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +1 -1
- package/dist/esm/cmd/subscribe/index.js +5 -5
- package/dist/esm/cmd/subscribe/subjoin.js +2 -2
- package/dist/esm/cmd/subscribe/subleave.js +1 -1
- package/dist/esm/cmd/subscribe/unsubscribe.js +2 -2
- package/dist/esm/components/components/RankDifficulty.js +1 -1
- package/dist/esm/components/components/bl-rank-score-item.js +2 -2
- package/dist/esm/components/components/bl-score-item.js +2 -2
- package/dist/esm/components/components/bl-score-item.js.map +1 -1
- package/dist/esm/components/components/icons/RankIcon.js +2 -2
- package/dist/esm/components/components/scoreItem.js +1 -1
- package/dist/esm/components/components/scoreItem.js.map +1 -1
- package/dist/esm/components/components/scoregraph.js +3 -3
- package/dist/esm/components/components/socre-badge.js +1 -1
- package/dist/esm/components/components/ss-rank-score-item.js +2 -2
- package/dist/esm/components/components/ss-score-item.js +2 -2
- package/dist/esm/components/components/ss-score-item.js.map +1 -1
- package/dist/esm/components/pages/bl-player.js +7 -7
- package/dist/esm/components/pages/bl-score-with-rank.js +6 -6
- package/dist/esm/components/pages/bl-score.js +3 -3
- package/dist/esm/components/pages/bs-map.js +5 -5
- package/dist/esm/components/pages/index.js +5 -5
- package/dist/esm/components/pages/ss-player.js +3 -3
- package/dist/esm/components/utils/bl/bsorReplayAcc.js +2 -2
- package/dist/esm/components/utils/format.js +3 -3
- package/dist/esm/components/utils/format.js.map +1 -1
- package/dist/esm/components/utils/index.js +2 -2
- package/dist/esm/config.js +31 -0
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/index.js +10 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/infra/i18n/index.js +2 -2
- package/dist/esm/infra/index.js +5 -5
- package/dist/esm/infra/index.js.map +1 -1
- package/dist/esm/infra/s3/index.js +31 -1
- package/dist/esm/infra/s3/index.js.map +1 -1
- package/dist/esm/infra/support/fetch/index.js +16 -7
- package/dist/esm/infra/support/fetch/index.js.map +1 -1
- package/dist/esm/infra/support/fetch/ofetch.js +4 -10
- package/dist/esm/infra/support/fetch/ofetch.js.map +1 -1
- package/dist/esm/infra/support/render/index.js +47 -13
- package/dist/esm/infra/support/render/index.js.map +1 -1
- package/dist/esm/interface/cmd/builder.js +1 -1
- package/dist/esm/interface/index.js +4 -4
- package/dist/esm/schedules/index.js +4 -3
- package/dist/esm/schedules/index.js.map +1 -1
- package/dist/esm/service/api/base/aioclient.js +1 -1
- package/dist/esm/service/api/base/blclient.js +1 -1
- package/dist/esm/service/api/base/bsclient.js +2 -2
- package/dist/esm/service/api/base/index.js +4 -4
- package/dist/esm/service/api/base/ssclient.js +2 -2
- package/dist/esm/service/api/index.js +16 -7
- package/dist/esm/service/api/index.js.map +1 -1
- package/dist/esm/service/api/interfaces/beatleader/index.js +5 -5
- package/dist/esm/service/api/interfaces/beatsaver/index.js +5 -5
- package/dist/esm/service/api/interfaces/scoresaber/index.js +3 -3
- package/dist/esm/service/index.js +2 -2
- package/dist/esm/service/render/index.js +22 -9
- package/dist/esm/service/render/index.js.map +1 -1
- package/dist/esm/ws/beatsaver.js +1 -1
- package/dist/esm/ws/index.js +3 -3
- package/dist/types/index.d.ts +205 -123
- package/package.json +27 -17
- package/dist/cjs/cmd/config/index.js +0 -1
- package/dist/cjs/cmd/index.js.map +0 -1
- package/dist/cjs/components/components/bl-score-item.js.map +0 -1
- package/dist/cjs/components/components/scoreItem.js.map +0 -1
- package/dist/cjs/components/components/ss-score-item.js.map +0 -1
- package/dist/cjs/components/utils/format.js.map +0 -1
- package/dist/cjs/config.js +0 -16
- package/dist/cjs/config.js.map +0 -1
- package/dist/cjs/index.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/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/schedules/index.js.map +0 -1
- package/dist/cjs/service/api/index.js.map +0 -1
- package/dist/cjs/service/render/index.js.map +0 -1
- package/dist/cjs/ws/bl-filter.js +0 -1
- /package/dist/cjs/cmd/bind/{bind-beatleader.js.map → bind-beatleader.cjs.map} +0 -0
- /package/dist/cjs/cmd/bind/{bind-beatsaver.js.map → bind-beatsaver.cjs.map} +0 -0
- /package/dist/cjs/cmd/bind/{bind-id-beatleader.js.map → bind-id-beatleader.cjs.map} +0 -0
- /package/dist/cjs/cmd/bind/{bind-id-beatsaver.js.map → bind-id-beatsaver.cjs.map} +0 -0
- /package/dist/cjs/cmd/bind/{bind-scoresaber.js.map → bind-scoresaber.cjs.map} +0 -0
- /package/dist/cjs/cmd/bind/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/cmd/bsmap/{id-search.js.map → id-search.cjs.map} +0 -0
- /package/dist/cjs/cmd/bsmap/{key-search.js.map → key-search.cjs.map} +0 -0
- /package/dist/cjs/cmd/bsmap/{latest.js.map → latest.cjs.map} +0 -0
- /package/dist/cjs/cmd/config/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/cmd/deprecated/{tmp.js.map → tmp.cjs.map} +0 -0
- /package/dist/cjs/cmd/{rank.js.map → rank.cjs.map} +0 -0
- /package/dist/cjs/cmd/{score.js.map → score.cjs.map} +0 -0
- /package/dist/cjs/cmd/subscribe/{beatleader.js.map → beatleader.cjs.map} +0 -0
- /package/dist/cjs/cmd/subscribe/{beatsaver.js.map → beatsaver.cjs.map} +0 -0
- /package/dist/cjs/cmd/subscribe/{id-beatleader-score.js.map → id-beatleader-score.cjs.map} +0 -0
- /package/dist/cjs/cmd/subscribe/{id-beatsaver-mapper.js.map → id-beatsaver-mapper.cjs.map} +0 -0
- /package/dist/cjs/cmd/subscribe/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/cmd/subscribe/{subjoin.js.map → subjoin.cjs.map} +0 -0
- /package/dist/cjs/cmd/subscribe/{subleave.js.map → subleave.cjs.map} +0 -0
- /package/dist/cjs/cmd/subscribe/{unsubscribe.js.map → unsubscribe.cjs.map} +0 -0
- /package/dist/cjs/components/components/{RankDifficulty.js.map → RankDifficulty.cjs.map} +0 -0
- /package/dist/cjs/components/components/base/{avatar.js.map → avatar.cjs.map} +0 -0
- /package/dist/cjs/components/components/{bl-rank-score-item.js.map → bl-rank-score-item.cjs.map} +0 -0
- /package/dist/cjs/components/components/{characteristic.js.map → characteristic.cjs.map} +0 -0
- /package/dist/cjs/components/components/{flag.js.map → flag.cjs.map} +0 -0
- /package/dist/cjs/components/components/icons/{BeatLeader.js.map → BeatLeader.cjs.map} +0 -0
- /package/dist/cjs/components/components/icons/{RankIcon.js.map → RankIcon.cjs.map} +0 -0
- /package/dist/cjs/components/components/icons/{ScoreSaberIcon.js.map → ScoreSaberIcon.cjs.map} +0 -0
- /package/dist/cjs/components/components/{progressbar.js.map → progressbar.cjs.map} +0 -0
- /package/dist/cjs/components/components/{scoregraph.js.map → scoregraph.cjs.map} +0 -0
- /package/dist/cjs/components/components/{skill-graph.js.map → skill-graph.cjs.map} +0 -0
- /package/dist/cjs/components/components/{socre-badge.js.map → socre-badge.cjs.map} +0 -0
- /package/dist/cjs/components/components/{ss-rank-score-item.js.map → ss-rank-score-item.cjs.map} +0 -0
- /package/dist/cjs/components/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/components/pages/{bl-player.js.map → bl-player.cjs.map} +0 -0
- /package/dist/cjs/components/pages/{bl-score-with-rank.js.map → bl-score-with-rank.cjs.map} +0 -0
- /package/dist/cjs/components/pages/{bl-score.js.map → bl-score.cjs.map} +0 -0
- /package/dist/cjs/components/pages/{bs-map.js.map → bs-map.cjs.map} +0 -0
- /package/dist/cjs/components/pages/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/components/pages/{ss-player.js.map → ss-player.cjs.map} +0 -0
- /package/dist/cjs/components/utils/bl/{beatleader.js.map → beatleader.cjs.map} +0 -0
- /package/dist/cjs/components/utils/bl/{blheadset.js.map → blheadset.cjs.map} +0 -0
- /package/dist/cjs/components/utils/bl/{bsorDecoder.js.map → bsorDecoder.cjs.map} +0 -0
- /package/dist/cjs/components/utils/bl/{bsorReplayAcc.js.map → bsorReplayAcc.cjs.map} +0 -0
- /package/dist/cjs/components/utils/bl/{getPart.js.map → getPart.cjs.map} +0 -0
- /package/dist/cjs/components/utils/bl/{stastic.js.map → stastic.cjs.map} +0 -0
- /package/dist/cjs/components/utils/{canvas.js.map → canvas.cjs.map} +0 -0
- /package/dist/cjs/components/utils/{getMods.js.map → getMods.cjs.map} +0 -0
- /package/dist/cjs/components/utils/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/components/utils/{qrcode.js.map → qrcode.cjs.map} +0 -0
- /package/dist/cjs/components/utils/{sleep.js.map → sleep.cjs.map} +0 -0
- /package/dist/cjs/components/utils/{tag-format.js.map → tag-format.cjs.map} +0 -0
- /package/dist/cjs/components/utils/{tw-join.js.map → tw-join.cjs.map} +0 -0
- /package/dist/cjs/infra/errors/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/infra/i18n/{default.js.map → default.cjs.map} +0 -0
- /package/dist/cjs/infra/i18n/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/infra/i18n/{parser.js.map → parser.cjs.map} +0 -0
- /package/dist/cjs/infra/i18n/{util.js.map → util.cjs.map} +0 -0
- /package/dist/cjs/infra/support/{cache.js.map → cache.cjs.map} +0 -0
- /package/dist/cjs/infra/support/fetch/{error.js.map → error.cjs.map} +0 -0
- /package/dist/cjs/infra/support/render/{puppeteer.js.map → puppeteer.cjs.map} +0 -0
- /package/dist/cjs/interface/{bot.js.map → bot.cjs.map} +0 -0
- /package/dist/cjs/interface/cmd/{builder.js.map → builder.cjs.map} +0 -0
- /package/dist/cjs/interface/cmd/{type.js.map → type.cjs.map} +0 -0
- /package/dist/cjs/interface/db/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/interface/db/{models.js.map → models.cjs.map} +0 -0
- /package/dist/cjs/interface/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/interface/{logger.js.map → logger.cjs.map} +0 -0
- /package/dist/cjs/schedules/{interface.js.map → interface.cjs.map} +0 -0
- /package/dist/cjs/schedules/{temp.js.map → temp.cjs.map} +0 -0
- /package/dist/cjs/service/api/base/{aioclient.js.map → aioclient.cjs.map} +0 -0
- /package/dist/cjs/service/api/base/{blclient.js.map → blclient.cjs.map} +0 -0
- /package/dist/cjs/service/api/base/{bsclient.js.map → bsclient.cjs.map} +0 -0
- /package/dist/cjs/service/api/base/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/service/api/base/{ssclient.js.map → ssclient.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/aiosaber/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatleader/{bsor.js.map → bsor.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatleader/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatleader/{req.js.map → req.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatleader/{score.js.map → score.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatleader/{user.js.map → user.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatleader/{ws.js.map → ws.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatsaver/{alert.js.map → alert.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatsaver/{bsmap.js.map → bsmap.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatsaver/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatsaver/{resp.js.map → resp.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatsaver/{user.js.map → user.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/beatsaver/{ws.js.map → ws.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/scoresaber/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/scoresaber/{item.js.map → item.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/scoresaber/{leaderboard.js.map → leaderboard.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/scoresaber/{resp.js.map → resp.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/scoresaber/{user.js.map → user.cjs.map} +0 -0
- /package/dist/cjs/service/api/interfaces/scoresaber/{ws.js.map → ws.cjs.map} +0 -0
- /package/dist/cjs/service/api/{sortScore.js.map → sortScore.cjs.map} +0 -0
- /package/dist/cjs/service/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/service/{preference.js.map → preference.cjs.map} +0 -0
- /package/dist/cjs/service/render/{interfaces.js.map → interfaces.cjs.map} +0 -0
- /package/dist/cjs/utils/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/ws/{beatleader.js.map → beatleader.cjs.map} +0 -0
- /package/dist/cjs/ws/{beatsaver.js.map → beatsaver.cjs.map} +0 -0
- /package/dist/cjs/ws/{bl-filter.js.map → bl-filter.cjs.map} +0 -0
- /package/dist/cjs/ws/{handler.js.map → handler.cjs.map} +0 -0
- /package/dist/cjs/ws/{index.js.map → index.cjs.map} +0 -0
package/package.json
CHANGED
@@ -1,43 +1,51 @@
|
|
1
1
|
{
|
2
2
|
"name": "beatsaber-bot-core",
|
3
3
|
"description": "Beatsaber bot",
|
4
|
-
"version": "0.2.0-rc.
|
4
|
+
"version": "0.2.0-rc.15",
|
5
5
|
"files": [
|
6
6
|
"dist"
|
7
7
|
],
|
8
8
|
"license": "MIT",
|
9
|
+
"type": "module",
|
9
10
|
"author": {
|
10
11
|
"name": "ktKongTong",
|
11
12
|
"email": "kt@ktlab.io"
|
12
13
|
},
|
13
14
|
"exports": {
|
14
15
|
".": {
|
15
|
-
"
|
16
|
-
"
|
16
|
+
"types": "./dist/types/index.d.ts",
|
17
|
+
"require": "./dist/cjs/index.cjs",
|
18
|
+
"import": "./dist/esm/index.js"
|
17
19
|
},
|
18
20
|
"./interface": {
|
19
|
-
"
|
20
|
-
"
|
21
|
+
"types": "./dist/types/index.d.ts",
|
22
|
+
"require": "./dist/cjs/interface/index.cjs",
|
23
|
+
"import": "./dist/esm/interface/index.js"
|
21
24
|
},
|
22
25
|
"./interface/*": {
|
23
|
-
"
|
24
|
-
"
|
26
|
+
"types": "./dist/types/index.d.ts",
|
27
|
+
"require": "./dist/cjs/interface/**/*.cjs",
|
28
|
+
"import": "./dist/esm/interface/**/*.js"
|
25
29
|
},
|
26
30
|
"./service": {
|
27
|
-
"
|
28
|
-
"
|
31
|
+
"types": "./dist/types/index.d.ts",
|
32
|
+
"require": "./dist/cjs/service/*.cjs",
|
33
|
+
"import": "./dist/esm/service/*.js"
|
29
34
|
},
|
30
35
|
"./service/*": {
|
31
|
-
"
|
32
|
-
"
|
36
|
+
"types": "./dist/types/index.d.ts",
|
37
|
+
"require": "./dist/cjs/service/*/index.cjs",
|
38
|
+
"import": "./dist/esm/service/*/index.js"
|
33
39
|
},
|
34
40
|
"./infra": {
|
35
|
-
"
|
36
|
-
"
|
41
|
+
"types": "./dist/types/index.d.ts",
|
42
|
+
"require": "./dist/cjs/infra/index.cjs",
|
43
|
+
"import": "./dist/esm/infra/index.js"
|
37
44
|
},
|
38
45
|
"./infra/*": {
|
39
|
-
"
|
40
|
-
"
|
46
|
+
"types": "./dist/types/index.d.ts",
|
47
|
+
"require": "./dist/cjs/infra/*/index.cjs",
|
48
|
+
"import": "./dist/esm/infra/*/index.js"
|
41
49
|
}
|
42
50
|
},
|
43
51
|
"keywords": [
|
@@ -60,11 +68,13 @@
|
|
60
68
|
"puppeteer-core": "^24.11.2",
|
61
69
|
"react": "^19",
|
62
70
|
"react-dom": "^19",
|
63
|
-
"@napi-rs/canvas": "^0.1.73"
|
71
|
+
"@napi-rs/canvas": "^0.1.73",
|
72
|
+
"zod": "^3.25.71"
|
64
73
|
},
|
65
74
|
"scripts": {
|
66
|
-
"fix-path-alias": "
|
75
|
+
"fix-path-alias": " tsc-alias --outDir dist/esm",
|
67
76
|
"copy-yml-resource": "node scripts/build.mjs",
|
77
|
+
"up": "tsup",
|
68
78
|
"build": "tsup && pnpm run copy-yml-resource && pnpm run fix-path-alias",
|
69
79
|
"pub": "pnpm run build && pnpm publish"
|
70
80
|
}
|
@@ -1 +0,0 @@
|
|
1
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/cmd/index.ts"],"sourcesContent":["\nimport IdSearch from '@/cmd/bsmap/id-search'\nimport KeySearch from '@/cmd/bsmap/key-search'\nimport Latest from '@/cmd/bsmap/latest'\nimport Rank from '@/cmd/rank'\nimport Score from '@/cmd/score'\nimport Subscribe from '@/cmd/subscribe'\nimport Subjoin from '@/cmd/subscribe/subjoin'\nimport Subleave from '@/cmd/subscribe/subleave'\nimport Unsubscribe from '@/cmd/subscribe/unsubscribe'\nimport Bind from '@/cmd/bind'\nimport Tmp from '@/cmd/deprecated/tmp'\nimport {Command} from \"@/interface\";\n\nfunction applyCommand<CHANNEL>(...fns: (() => Command<CHANNEL>)[]) {\n return fns.map((fn) => fn())\n}\n\nexport const botCommands = <CHANNEL>() =>\n applyCommand<CHANNEL>(\n IdSearch,\n KeySearch,\n Latest,\n Rank,\n Score,\n Bind,\n Subscribe,\n Subjoin,\n Subleave,\n Unsubscribe,\n Tmp,\n // Config\n )\n\n//transport\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAAqB;AACrB,wBAAsB;AACtB,oBAAmB;AACnB,kBAAiB;AACjB,mBAAkB;AAClB,uBAAsB;AACtB,qBAAoB;AACpB,sBAAqB;AACrB,yBAAwB;AACxB,kBAAiB;AACjB,iBAAgB;AAGhB,SAAS,gBAAyB,KAAiC;AACjE,SAAO,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC;AAC7B;AAEO,MAAM,cAAc,MACzB;AAAA,EACE,iBAAAA;AAAA,EACA,kBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,WAAAC;AAAA;AAEF;","names":["IdSearch","KeySearch","Latest","Rank","Score","Bind","Subscribe","Subjoin","Subleave","Unsubscribe","Tmp"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/components/bl-score-item.tsx"],"sourcesContent":["import { BarChart, Key, Pin, Star, Wrench } from 'lucide-react'\nimport { diffConv, formatRelativeTimeByDay } from '../utils'\nimport {Score} from \"@/service/api/interfaces/beatleader\";\n\nconst getModifiers = (modifiers: string) => {\n return modifiers ? modifiers.split(',') : []\n}\n\nexport default function BeatLeaderItem({\n item,\n}: {\n item: Score & {\n pinned?: boolean\n }\n}) {\n return (\n <div className=\"relative overflow-hidden\">\n <div\n className={'rounded-lg flex bg-black/[.4] space-x-2 backdrop-blur-md'}\n >\n <img\n loading={'eager'}\n src={item.leaderboard.song.coverImage}\n className={'rounded-md h-20 w-20'}\n alt={'score item cover'}\n />\n <div className={'flex flex-col space-y-1 py-0.5'}>\n <div\n className={\n 'font-semibold text-xs text-ellipsis overflow-hidden line-clamp-1 break-all'\n }\n >\n {item.leaderboard.song.name}\n </div>\n <div\n className={\n 'text-xs flex items-center space-x-2 *:flex *:items-center *:space-x-1 '\n }\n >\n <div>\n <span>\n <BarChart className={'w-3 h-3'} />\n </span>\n <span>\n {diffConv(item.leaderboard.difficulty.difficultyName)}\n </span>\n </div>\n <div>\n <span>\n <Star className={'w-3 h-3'} />\n </span>\n <span>\n {item.leaderboard.difficulty.stars?.toFixed(2) ?? 'none'}{' '}\n </span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>\n {item.leaderboard.song.id.toLowerCase().replaceAll('x', '')}\n </span>\n </div>\n </div>\n <div className={'flex space-x-2 text-xs items-center'}>\n <span>\n {(\n (item.baseScore / item.leaderboard.difficulty.maxScore) *\n 100\n ).toFixed(2)}\n %\n </span>\n <span className={'text-orange-200'}>{item.pp.toFixed(2)}PP</span>\n <span className={'text-xs opacity-70'}>\n {formatRelativeTimeByDay(item.timepost * 1000)}\n </span>\n </div>\n <div className={'flex items-center space-x-2'}>\n {getModifiers(item.modifiers).length > 0 && (\n <div className=\"text-xs flex flex-wrap space-x-2 items-center\">\n <Wrench className=\"h-3 w-3\" />\n {getModifiers(item.modifiers).map((modifier) => (\n <span key={modifier}>{modifier}</span>\n ))}\n </div>\n )}\n </div>\n </div>\n </div>\n\n <div className=\"absolute right-1 bottom-1 text-white flex text-xs space-x-1 items-center\">\n {item.fullCombo && (\n <span className=\"from-blue-300 to-red-300 bg-gradient-to-r bg-clip-text text-transparent\">\n FC\n </span>\n )}\n {item.pinned && <Pin className=\"rotate-45 h-3 w-3 my-auto\" />}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBQ;AApBR,0BAAiD;AACjD,mBAAkD;AAGlD,MAAM,eAAe,CAAC,cAAsB;AAC1C,SAAO,YAAY,UAAU,MAAM,GAAG,IAAI,CAAC;AAC7C;AAEe,SAAR,eAAgC;AAAA,EACrC;AACF,GAIG;AAdH;AAeE,SACE,6CAAC,SAAI,WAAU,6BACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,QAEX;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,KAAK,KAAK,YAAY,KAAK;AAAA,cAC3B,WAAW;AAAA,cACX,KAAK;AAAA;AAAA,UACP;AAAA,UACA,6CAAC,SAAI,WAAW,kCACd;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WACE;AAAA,gBAGD,eAAK,YAAY,KAAK;AAAA;AAAA,YACzB;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,WACE;AAAA,gBAGF;AAAA,+DAAC,SACC;AAAA,gEAAC,UACC,sDAAC,gCAAS,WAAW,WAAW,GAClC;AAAA,oBACA,4CAAC,UACE,qCAAS,KAAK,YAAY,WAAW,cAAc,GACtD;AAAA,qBACF;AAAA,kBACA,6CAAC,SACC;AAAA,gEAAC,UACC,sDAAC,4BAAK,WAAW,WAAW,GAC9B;AAAA,oBACA,6CAAC,UACE;AAAA,uCAAK,YAAY,WAAW,UAA5B,mBAAmC,QAAQ,OAA3C,YAAiD;AAAA,sBAAQ;AAAA,uBAC5D;AAAA,qBACF;AAAA,kBACA,6CAAC,SACC;AAAA,gEAAC,UACC,sDAAC,2BAAI,WAAW,WAAW,GAC7B;AAAA,oBACA,4CAAC,UACE,eAAK,YAAY,KAAK,GAAG,YAAY,EAAE,WAAW,KAAK,EAAE,GAC5D;AAAA,qBACF;AAAA;AAAA;AAAA,YACF;AAAA,YACA,6CAAC,SAAI,WAAW,uCACd;AAAA,2DAAC,UAEI;AAAA,sBAAK,YAAY,KAAK,YAAY,WAAW,WAC9C,KACA,QAAQ,CAAC;AAAA,gBAAE;AAAA,iBAEf;AAAA,cACA,6CAAC,UAAK,WAAW,mBAAoB;AAAA,qBAAK,GAAG,QAAQ,CAAC;AAAA,gBAAE;AAAA,iBAAE;AAAA,cAC1D,4CAAC,UAAK,WAAW,sBACd,oDAAwB,KAAK,WAAW,GAAI,GAC/C;AAAA,eACF;AAAA,YACA,4CAAC,SAAI,WAAW,+BACb,uBAAa,KAAK,SAAS,EAAE,SAAS,KACrC,6CAAC,SAAI,WAAU,iDACb;AAAA,0DAAC,8BAAO,WAAU,WAAU;AAAA,cAC3B,aAAa,KAAK,SAAS,EAAE,IAAI,CAAC,aACjC,4CAAC,UAAqB,sBAAX,QAAoB,CAChC;AAAA,eACH,GAEJ;AAAA,aACF;AAAA;AAAA;AAAA,IACF;AAAA,IAEA,6CAAC,SAAI,WAAU,4EACZ;AAAA,WAAK,aACJ,4CAAC,UAAK,WAAU,2EAA0E,gBAE1F;AAAA,MAED,KAAK,UAAU,4CAAC,2BAAI,WAAU,6BAA4B;AAAA,OAC7D;AAAA,KACF;AAEJ;","names":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/components/scoreItem.tsx"],"sourcesContent":["/** @jsxImportSource react */\nimport { BarChart, Key, Star, Wrench } from 'lucide-react'\nimport { ScoreSaberItem } from '@/service/api/interfaces/scoresaber'\n\nconst diffConv = (diff: string) => {\n if (diff.includes('ExpertPlus')) {\n return 'E+'\n } else if (diff.includes('Expert')) {\n return 'EX'\n } else if (diff.includes('Hard')) {\n return 'H'\n } else if (diff.includes('Normal')) {\n return 'N'\n }\n return 'E'\n}\nconst getModifiers = (modifiers: string) => {\n return modifiers ? modifiers.split(',') : []\n}\nexport default function ScoreItem({\n scoreItem,\n}: {\n scoreItem: ScoreSaberItem\n}) {\n return (\n <div className={'relative'}>\n <div\n className={\n 'rounded-lg flex bg-black/[.4] space-x-2 backdrop-blur-md overflow-hidden'\n }\n >\n <img\n loading={'eager'}\n src={scoreItem.leaderboard.coverImage}\n className={'rounded-md h-20 w-20'}\n />\n <div className={'flex flex-col space-y-1 py-0.5'}>\n <div\n className={\n 'font-semibold text-xs text-ellipsis overflow-hidden line-clamp-1 break-all'\n }\n >\n {scoreItem.leaderboard.songName}\n </div>\n <div\n className={\n 'text-xs flex items-center space-x-2 *:flex *:items-center *:space-x-1 '\n }\n >\n <div>\n <span>\n <BarChart className={'w-3 h-3'} />\n </span>\n <span>\n {diffConv(scoreItem.leaderboard.difficulty.difficultyRaw)}\n </span>\n </div>\n <div>\n <span>\n <Star className={'w-3 h-3'} />\n </span>\n <span>{scoreItem.leaderboard.stars} </span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>{scoreItem.mapId ?? 'unknown'}</span>\n </div>\n </div>\n <div className={'flex space-x-2 text-xs'}>\n <span>\n {(\n (scoreItem.score.baseScore / scoreItem.leaderboard.maxScore) *\n 100\n ).toFixed(2)}\n %\n </span>\n <span className={'text-orange-200'}>\n {scoreItem.score.pp.toFixed(1)}\n PP\n </span>\n </div>\n {getModifiers(scoreItem.score.modifiers).length > 0 && (\n <div className=\"text-xs flex flex-wrap space-x-2 items-center\">\n <Wrench className=\"h-3 w-3\" />\n {getModifiers(scoreItem.score.modifiers).map((modifier) => (\n <span key={modifier}>{modifier}</span>\n ))}\n </div>\n )}\n </div>\n </div>\n <div className=\"absolute right-1 bottom-1 text-white flex text-xs space-x-1 items-center\">\n {scoreItem.score.fullCombo && (\n <span className=\"from-blue-300 to-red-300 bg-gradient-to-r bg-clip-text text-transparent\">\n FC\n </span>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BQ;AA9BR,0BAA4C;AAG5C,MAAM,WAAW,CAAC,SAAiB;AACjC,MAAI,KAAK,SAAS,YAAY,GAAG;AAC/B,WAAO;AAAA,EACT,WAAW,KAAK,SAAS,QAAQ,GAAG;AAClC,WAAO;AAAA,EACT,WAAW,KAAK,SAAS,MAAM,GAAG;AAChC,WAAO;AAAA,EACT,WAAW,KAAK,SAAS,QAAQ,GAAG;AAClC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,MAAM,eAAe,CAAC,cAAsB;AAC1C,SAAO,YAAY,UAAU,MAAM,GAAG,IAAI,CAAC;AAC7C;AACe,SAAR,UAA2B;AAAA,EAChC;AACF,GAEG;AAvBH;AAwBE,SACE,6CAAC,SAAI,WAAW,YACd;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WACE;AAAA,QAGF;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,KAAK,UAAU,YAAY;AAAA,cAC3B,WAAW;AAAA;AAAA,UACb;AAAA,UACA,6CAAC,SAAI,WAAW,kCACd;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WACE;AAAA,gBAGD,oBAAU,YAAY;AAAA;AAAA,YACzB;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,WACE;AAAA,gBAGF;AAAA,+DAAC,SACC;AAAA,gEAAC,UACC,sDAAC,gCAAS,WAAW,WAAW,GAClC;AAAA,oBACA,4CAAC,UACE,mBAAS,UAAU,YAAY,WAAW,aAAa,GAC1D;AAAA,qBACF;AAAA,kBACA,6CAAC,SACC;AAAA,gEAAC,UACC,sDAAC,4BAAK,WAAW,WAAW,GAC9B;AAAA,oBACA,6CAAC,UAAM;AAAA,gCAAU,YAAY;AAAA,sBAAM;AAAA,uBAAC;AAAA,qBACtC;AAAA,kBACA,6CAAC,SACC;AAAA,gEAAC,UACC,sDAAC,2BAAI,WAAW,WAAW,GAC7B;AAAA,oBACA,4CAAC,UAAM,0BAAU,UAAV,YAAmB,WAAU;AAAA,qBACtC;AAAA;AAAA;AAAA,YACF;AAAA,YACA,6CAAC,SAAI,WAAW,0BACd;AAAA,2DAAC,UAEI;AAAA,2BAAU,MAAM,YAAY,UAAU,YAAY,WACnD,KACA,QAAQ,CAAC;AAAA,gBAAE;AAAA,iBAEf;AAAA,cACA,6CAAC,UAAK,WAAW,mBACd;AAAA,0BAAU,MAAM,GAAG,QAAQ,CAAC;AAAA,gBAAE;AAAA,iBAEjC;AAAA,eACF;AAAA,YACC,aAAa,UAAU,MAAM,SAAS,EAAE,SAAS,KAChD,6CAAC,SAAI,WAAU,iDACb;AAAA,0DAAC,8BAAO,WAAU,WAAU;AAAA,cAC3B,aAAa,UAAU,MAAM,SAAS,EAAE,IAAI,CAAC,aAC5C,4CAAC,UAAqB,sBAAX,QAAoB,CAChC;AAAA,eACH;AAAA,aAEJ;AAAA;AAAA;AAAA,IACF;AAAA,IACA,4CAAC,SAAI,WAAU,4EACZ,oBAAU,MAAM,aACf,4CAAC,UAAK,WAAU,2EAA0E,gBAE1F,GAEJ;AAAA,KACF;AAEJ;","names":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/components/ss-score-item.tsx"],"sourcesContent":["import { BarChart, Key, Star, Wrench } from 'lucide-react'\nimport { diffConv, formatRelativeTimeByDay } from '../utils'\nimport React from 'react'\nimport { ScoreSaberItem } from '@/service/api/interfaces/scoresaber'\n\nconst getModifiers = (modifiers: string) => {\n return modifiers ? modifiers.split(',') : []\n}\nexport default function SsScoreItem({\n scoreItem,\n}: {\n scoreItem: ScoreSaberItem\n}) {\n return (\n <div className={'relative'}>\n <div\n className={\n 'rounded-lg flex bg-black/[.4] space-x-2 backdrop-blur-md overflow-hidden'\n }\n >\n <img\n loading={'eager'}\n src={scoreItem.leaderboard.coverImage}\n className={'rounded-md h-20 w-20'}\n />\n <div className={'flex flex-col space-y-1 py-0.5'}>\n <div\n className={\n 'font-semibold text-xs text-ellipsis overflow-hidden line-clamp-1 break-all'\n }\n >\n {scoreItem.leaderboard.songName}\n </div>\n <div\n className={\n 'text-xs flex items-center space-x-2 *:flex *:items-center *:space-x-1 '\n }\n >\n <div>\n <span>\n <BarChart className={'w-3 h-3'} />\n </span>\n <span>\n {diffConv(scoreItem.leaderboard.difficulty.difficultyRaw)}\n </span>\n </div>\n <div>\n <span>\n <Star className={'w-3 h-3'} />\n </span>\n <span>{scoreItem.leaderboard.stars} </span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>{scoreItem.mapId ?? 'unknown'}</span>\n </div>\n </div>\n <div className={'flex space-x-2 text-xs'}>\n <span>\n {(\n (scoreItem.score.baseScore / scoreItem.leaderboard.maxScore) *\n 100\n ).toFixed(2)}\n %\n </span>\n <span className={'text-orange-200'}>\n {scoreItem.score.pp.toFixed(1)}\n PP\n </span>\n <span className={'opacity-70'}>\n {formatRelativeTimeByDay(scoreItem.score.timeSet)}\n </span>\n </div>\n {getModifiers(scoreItem.score.modifiers).length > 0 && (\n <div className=\"text-xs flex flex-wrap space-x-2 items-center\">\n <Wrench className=\"h-3 w-3\" />\n {getModifiers(scoreItem.score.modifiers).map((modifier) => (\n <span key={modifier}>{modifier}</span>\n ))}\n </div>\n )}\n </div>\n </div>\n <div className=\"absolute right-1 bottom-1 text-white flex text-xs space-x-1 items-center\">\n {scoreItem.score.fullCombo && (\n <span className=\"from-blue-300 to-red-300 bg-gradient-to-r bg-clip-text text-transparent\">\n FC\n </span>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBQ;AApBR,0BAA4C;AAC5C,mBAAkD;AAIlD,MAAM,eAAe,CAAC,cAAsB;AAC1C,SAAO,YAAY,UAAU,MAAM,GAAG,IAAI,CAAC;AAC7C;AACe,SAAR,YAA6B;AAAA,EAClC;AACF,GAEG;AAZH;AAaE,SACE,6CAAC,SAAI,WAAW,YACd;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WACE;AAAA,QAGF;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,KAAK,UAAU,YAAY;AAAA,cAC3B,WAAW;AAAA;AAAA,UACb;AAAA,UACA,6CAAC,SAAI,WAAW,kCACd;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WACE;AAAA,gBAGD,oBAAU,YAAY;AAAA;AAAA,YACzB;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,WACE;AAAA,gBAGF;AAAA,+DAAC,SACC;AAAA,gEAAC,UACC,sDAAC,gCAAS,WAAW,WAAW,GAClC;AAAA,oBACA,4CAAC,UACE,qCAAS,UAAU,YAAY,WAAW,aAAa,GAC1D;AAAA,qBACF;AAAA,kBACA,6CAAC,SACC;AAAA,gEAAC,UACC,sDAAC,4BAAK,WAAW,WAAW,GAC9B;AAAA,oBACA,6CAAC,UAAM;AAAA,gCAAU,YAAY;AAAA,sBAAM;AAAA,uBAAC;AAAA,qBACtC;AAAA,kBACA,6CAAC,SACC;AAAA,gEAAC,UACC,sDAAC,2BAAI,WAAW,WAAW,GAC7B;AAAA,oBACA,4CAAC,UAAM,0BAAU,UAAV,YAAmB,WAAU;AAAA,qBACtC;AAAA;AAAA;AAAA,YACF;AAAA,YACA,6CAAC,SAAI,WAAW,0BACd;AAAA,2DAAC,UAEI;AAAA,2BAAU,MAAM,YAAY,UAAU,YAAY,WACnD,KACA,QAAQ,CAAC;AAAA,gBAAE;AAAA,iBAEf;AAAA,cACA,6CAAC,UAAK,WAAW,mBACd;AAAA,0BAAU,MAAM,GAAG,QAAQ,CAAC;AAAA,gBAAE;AAAA,iBAEjC;AAAA,cACA,4CAAC,UAAK,WAAW,cACd,oDAAwB,UAAU,MAAM,OAAO,GAClD;AAAA,eACF;AAAA,YACC,aAAa,UAAU,MAAM,SAAS,EAAE,SAAS,KAChD,6CAAC,SAAI,WAAU,iDACb;AAAA,0DAAC,8BAAO,WAAU,WAAU;AAAA,cAC3B,aAAa,UAAU,MAAM,SAAS,EAAE,IAAI,CAAC,aAC5C,4CAAC,UAAqB,sBAAX,QAAoB,CAChC;AAAA,eACH;AAAA,aAEJ;AAAA;AAAA;AAAA,IACF;AAAA,IACA,4CAAC,SAAI,WAAU,4EACZ,oBAAU,MAAM,aACf,4CAAC,UAAK,WAAU,2EAA0E,gBAE1F,GAEJ;AAAA,KACF;AAEJ;","names":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/utils/format.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport duration from 'dayjs/plugin/duration'\nimport relativeTime from 'dayjs/plugin/relativeTime'\nimport zh from 'dayjs/locale/zh-cn'\ndayjs.extend(duration)\ndayjs.extend(relativeTime)\nexport const formatDuration = (duration: number) => {\n const d = dayjs.duration(duration, 'second')\n return d.format('m[m]s[s]')\n}\n\n// export const formatDuration = (duration: number) => {\n// return dayjs.duration(duration,'seconds').format('mm:ss')\n// }\n\nexport const formatTime = (time: string) => {\n return dayjs(time).locale(zh).fromNow()\n}\n\nexport function formatRelativeTimeByDay(time: string | number | Date) {\n let res = dayjs().diff(dayjs(time), 'd')\n let unit = 'd'\n if (res <= 0) {\n res = dayjs().diff(dayjs(time), 'h')\n unit = 'h'\n }\n if (res <= 0) {\n res = dayjs().diff(dayjs(time), 'm')\n unit = 'm'\n }\n return `${res}${unit}`\n}\n\nexport const formatNumber = (number: number) => {\n // 1.11w\n try {\n if (number > 10000) {\n return `${(number / 10000.0).toFixed(2)}w`\n }\n // 1.11k\n if (number > 1000) {\n return `${(number / 1000.0).toFixed(2)}k`\n }\n return number.toString()\n } catch (e) {\n return '0'\n }\n}\n\nexport function numberWithCommas(x: number) {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n}\nexport const formatDate = (time: Date | undefined, template?: string) => {\n if (!time) return undefined\n return dayjs(time).format(template ?? 'YYYY-MM-DD')\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,sBAAqB;AACrB,0BAAyB;AACzB,mBAAe;AACf,aAAAA,QAAM,OAAO,gBAAAC,OAAQ;AACrB,aAAAD,QAAM,OAAO,oBAAAE,OAAY;AAClB,MAAM,iBAAiB,CAACD,cAAqB;AAClD,QAAM,IAAI,aAAAD,QAAM,SAASC,WAAU,QAAQ;AAC3C,SAAO,EAAE,OAAO,UAAU;AAC5B;AAMO,MAAM,aAAa,CAAC,SAAiB;AAC1C,aAAO,aAAAD,SAAM,IAAI,EAAE,OAAO,aAAAG,OAAE,EAAE,QAAQ;AACxC;AAEO,SAAS,wBAAwB,MAA8B;AACpE,MAAI,UAAM,aAAAH,SAAM,EAAE,SAAK,aAAAA,SAAM,IAAI,GAAG,GAAG;AACvC,MAAI,OAAO;AACX,MAAI,OAAO,GAAG;AACZ,cAAM,aAAAA,SAAM,EAAE,SAAK,aAAAA,SAAM,IAAI,GAAG,GAAG;AACnC,WAAO;AAAA,EACT;AACA,MAAI,OAAO,GAAG;AACZ,cAAM,aAAAA,SAAM,EAAE,SAAK,aAAAA,SAAM,IAAI,GAAG,GAAG;AACnC,WAAO;AAAA,EACT;AACA,SAAO,GAAG,GAAG,GAAG,IAAI;AACtB;AAEO,MAAM,eAAe,CAAC,WAAmB;AAE9C,MAAI;AACF,QAAI,SAAS,KAAO;AAClB,aAAO,IAAI,SAAS,KAAS,QAAQ,CAAC,CAAC;AAAA,IACzC;AAEA,QAAI,SAAS,KAAM;AACjB,aAAO,IAAI,SAAS,KAAQ,QAAQ,CAAC,CAAC;AAAA,IACxC;AACA,WAAO,OAAO,SAAS;AAAA,EACzB,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEO,SAAS,iBAAiB,GAAW;AAC1C,SAAO,EAAE,SAAS,EAAE,QAAQ,yBAAyB,GAAG;AAC1D;AACO,MAAM,aAAa,CAAC,MAAwB,aAAsB;AACvE,MAAI,CAAC,KAAM,QAAO;AAClB,aAAO,aAAAA,SAAM,IAAI,EAAE,OAAO,8BAAY,YAAY;AACpD;","names":["dayjs","duration","relativeTime","zh"]}
|
package/dist/cjs/config.js
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
var __defProp = Object.defineProperty;
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
5
|
-
var __copyProps = (to, from, except, desc) => {
|
6
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
7
|
-
for (let key of __getOwnPropNames(from))
|
8
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
9
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
10
|
-
}
|
11
|
-
return to;
|
12
|
-
};
|
13
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
14
|
-
var config_exports = {};
|
15
|
-
module.exports = __toCommonJS(config_exports);
|
16
|
-
//# sourceMappingURL=config.js.map
|
package/dist/cjs/config.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/config.ts"],"sourcesContent":["import type { S3Config, RenderConfig } from \"@/infra\";\n\n\nexport interface Config {\n s3: {\n enabled: boolean\n } & S3Config\n render: RenderConfig\n minRawMatchMapIdLength: number\n\n beatSaverHost: string\n beatSaverWSURL: string\n bsOauthClientId: string\n bsOauthClientSecret: string\n\n blOauthClientId: string\n blOauthClientSecret: string\n bsNotifyMonitorCron: ScheduleTaskConfig\n tokenRefreshCron: ScheduleTaskConfig\n tempCron: ScheduleTaskConfig\n}\n\ninterface ScheduleTaskConfig {\n cron: string\n enabled: boolean\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
package/dist/cjs/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import {botCommands} from \"./cmd\";\nimport {getScheduleTasks} from \"./schedules\";\nimport {Config} from \"./config\";\n\nexport * from './interface'\nexport * from './schedules'\nexport * from './config'\nexport * from './cmd'\nexport * from './ws'\nexport * from './utils'\nexport * from './service'\nexport * from './infra'\n\nexport const getBot = <T>(config: Config) => ({\n commands: botCommands<T>(),\n schedule: getScheduleTasks(config),\n})\n\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAA0B;AAC1B,uBAA+B;AAG/B,0BAAc,wBAJd;AAKA,0BAAc,wBALd;AAMA,0BAAc,qBANd;AAOA,0BAAc,kBAPd;AAQA,0BAAc,iBARd;AASA,0BAAc,oBATd;AAUA,0BAAc,sBAVd;AAWA,0BAAc,oBAXd;AAaO,MAAM,SAAS,CAAI,YAAoB;AAAA,EAC5C,cAAU,wBAAe;AAAA,EACzB,cAAU,mCAAiB,MAAM;AACnC;","names":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/infra/index.ts"],"sourcesContent":["export * from './support/render'\nexport { I18nService } from './i18n'\nexport { S3Service, S3Config } from './s3'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAc,6BAAd;AACA,kBAA4B;AAC5B,gBAAoC;","names":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/infra/s3/index.ts"],"sourcesContent":["import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'\nimport crypto from 'crypto'\n\nexport interface S3Config {\n s3AccessKey: string\n s3SecretKey: string\n endpoint: string\n region: string | undefined\n bucketName: string\n keyPrefix: string\n baseURL: string\n}\n\nexport class S3Service {\n private s3Client: S3Client\n private readonly bucket: string\n private readonly keyPrefix: string = ''\n private readonly baseURL: string = ''\n constructor(config: S3Config) {\n const s3 = new S3Client({\n region: config.region ?? 'auto',\n endpoint: config.endpoint,\n credentials: {\n accessKeyId: config.s3AccessKey,\n secretAccessKey: config.s3SecretKey,\n },\n })\n this.bucket = config.bucketName\n this.keyPrefix = config.keyPrefix\n this.baseURL = config.baseURL\n this.s3Client = s3\n }\n async uploadImgWithUrl(url: string, mimeType?: string): Promise<string> {\n const res = await fetch(url).then((it) => it.arrayBuffer())\n const buf = Buffer.from(res)\n // @ts-ignore\n const md5 = crypto.createHash('md5').update(buf).digest('hex')\n const key = this.keyPrefix ? `${this.keyPrefix}-${md5}` : md5\n const params = {\n Bucket: this.bucket,\n Key: key,\n Body: buf,\n ContentType: mimeType ?? 'image/png',\n }\n const command = new PutObjectCommand(params)\n const data = await this.s3Client.send(command)\n return `${this.baseURL}${key}`\n }\n async uploadImg(buffer: Buffer, mimeType?: string): Promise<string> {\n // md5 digest\n // @ts-ignore\n const md5 = crypto.createHash('md5').update(buffer).digest('hex')\n const key = this.keyPrefix ? `${this.keyPrefix}-${md5}` : md5\n const params = {\n Bucket: this.bucket,\n Key: key,\n Body: buffer,\n ContentType: mimeType ?? 'image/png',\n }\n const command = new PutObjectCommand(params)\n const data = await this.s3Client.send(command)\n return `${this.baseURL}${key}`\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA2C;AAC3C,oBAAmB;AAYZ,MAAM,UAAU;AAAA,EAKrB,YAAY,QAAkB;AAJ9B,wBAAQ;AACR,wBAAiB;AACjB,wBAAiB,aAAoB;AACrC,wBAAiB,WAAkB;AAjBrC;AAmBI,UAAM,KAAK,IAAI,0BAAS;AAAA,MACtB,SAAQ,YAAO,WAAP,YAAiB;AAAA,MACzB,UAAU,OAAO;AAAA,MACjB,aAAa;AAAA,QACX,aAAa,OAAO;AAAA,QACpB,iBAAiB,OAAO;AAAA,MAC1B;AAAA,IACF,CAAC;AACD,SAAK,SAAS,OAAO;AACrB,SAAK,YAAY,OAAO;AACxB,SAAK,UAAU,OAAO;AACtB,SAAK,WAAW;AAAA,EAClB;AAAA,EACM,iBAAiB,KAAa,UAAoC;AAAA;AACtE,YAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;AAC1D,YAAM,MAAM,OAAO,KAAK,GAAG;AAE3B,YAAM,MAAM,cAAAA,QAAO,WAAW,KAAK,EAAE,OAAO,GAAG,EAAE,OAAO,KAAK;AAC7D,YAAM,MAAM,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK;AAC1D,YAAM,SAAS;AAAA,QACb,QAAQ,KAAK;AAAA,QACb,KAAK;AAAA,QACL,MAAM;AAAA,QACN,aAAa,8BAAY;AAAA,MAC3B;AACA,YAAM,UAAU,IAAI,kCAAiB,MAAM;AAC3C,YAAM,OAAO,MAAM,KAAK,SAAS,KAAK,OAAO;AAC7C,aAAO,GAAG,KAAK,OAAO,GAAG,GAAG;AAAA,IAC9B;AAAA;AAAA,EACM,UAAU,QAAgB,UAAoC;AAAA;AAGlE,YAAM,MAAM,cAAAA,QAAO,WAAW,KAAK,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK;AAChE,YAAM,MAAM,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK;AAC1D,YAAM,SAAS;AAAA,QACb,QAAQ,KAAK;AAAA,QACb,KAAK;AAAA,QACL,MAAM;AAAA,QACN,aAAa,8BAAY;AAAA,MAC3B;AACA,YAAM,UAAU,IAAI,kCAAiB,MAAM;AAC3C,YAAM,OAAO,MAAM,KAAK,SAAS,KAAK,OAAO;AAC7C,aAAO,GAAG,KAAK,OAAO,GAAG,GAAG;AAAA,IAC9B;AAAA;AACF;","names":["crypto"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/infra/support/fetch/index.ts"],"sourcesContent":["import { createFetch as c, Fetch } from './ofetch'\nimport { Logger } from '@/interface'\nimport { NotFoundError } from './error'\n\nconst rofetch = c({\n defaults: {\n retryStatusCodes: [400, 408, 409, 425, 429, 502, 503, 504],\n retry: 2,\n retryDelay: 400,\n },\n})\n\nconst ofetch = new Fetch(rofetch)\n\nexport const createFetch = (logger: Logger) => {\n return ofetch.extend({\n onRequest: (context) => {\n logger.debug(`[fetch -->] ${context.options.baseURL}${context.request}`)\n },\n onResponse: (context) => {\n logger.debug(`[fetch <--] ${context.request} ${context.response.status}`)\n },\n onResponseError: (context) => {\n if (context.response.status === 404) {\n throw new NotFoundError()\n }\n throw context.error\n },\n ignoreResponseError: false,\n })\n}\n\nexport { Fetch } from './ofetch'\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwC;AAExC,mBAA8B;AA8B9B,IAAAA,iBAAsB;AA5BtB,MAAM,cAAU,cAAAC,aAAE;AAAA,EAChB,UAAU;AAAA,IACR,kBAAkB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IACzD,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,CAAC;AAED,MAAM,SAAS,IAAI,oBAAM,OAAO;AAEzB,MAAM,cAAc,CAAC,WAAmB;AAC7C,SAAO,OAAO,OAAO;AAAA,IACnB,WAAW,CAAC,YAAY;AACtB,aAAO,MAAM,eAAe,QAAQ,QAAQ,OAAO,GAAG,QAAQ,OAAO,EAAE;AAAA,IACzE;AAAA,IACA,YAAY,CAAC,YAAY;AACvB,aAAO,MAAM,eAAe,QAAQ,OAAO,IAAI,QAAQ,SAAS,MAAM,EAAE;AAAA,IAC1E;AAAA,IACA,iBAAiB,CAAC,YAAY;AAC5B,UAAI,QAAQ,SAAS,WAAW,KAAK;AACnC,cAAM,IAAI,2BAAc;AAAA,MAC1B;AACA,YAAM,QAAQ;AAAA,IAChB;AAAA,IACA,qBAAqB;AAAA,EACvB,CAAC;AACH;","names":["import_ofetch","c"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/infra/support/fetch/ofetch.ts"],"sourcesContent":["import { $Fetch, createFetch, FetchOptions, ResponseType } from 'ofetch'\nimport { NotFoundError } from './error'\n\nexport const rofetch = createFetch({\n defaults: {\n retryStatusCodes: [400, 408, 409, 425, 429, 500, 502, 503, 504],\n retry: 3,\n retryDelay: 800,\n },\n}).create({\n onResponseError({ request, response, options }) {\n if (response.status === 404) {\n throw new NotFoundError()\n }\n },\n onRequestError({ request, error }) {},\n})\n\nexport type ExtendFetchOptions<R extends ResponseType = ResponseType, T = any> = {\n form?: Record<string, any>\n} & FetchOptions<R, T>\n\nexport class Fetch {\n private options?: FetchOptions\n private ofetchInstance: $Fetch\n constructor(fetchInstance?: $Fetch, options?: FetchOptions) {\n this.options = options\n this.ofetchInstance = fetchInstance ?? rofetch\n }\n async fetch<T, R extends ResponseType>(request: string, options?: ExtendFetchOptions<R, T>) {\n let opt = {\n ...options,\n ...this.options\n } as ExtendFetchOptions<R, T>\n if(opt.form) {\n const form = new FormData()\n let f = opt.form\n Object.entries(form).forEach(([key, value]) => form.append(key, value))\n opt = {\n ...opt,\n headers: {\n ...opt.headers,\n 'Content-Type': 'multipart/form-data'\n },\n body: f\n }\n }\n\n const res = await this.ofetchInstance<T, R>(request, opt)\n return res\n }\n get<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch<T, R>(request, { ...options, method: 'GET' })\n }\n post<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch<T, R>(request, { ...options, method: 'POST' })\n }\n put<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch(request, { ...options, method: 'PUT' })\n }\n patch<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch(request, { ...options, method: 'PATCH' })\n }\n delete<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch(request, { ...options, method: 'DELETE' })\n }\n head(request: string, options?: FetchOptions) {\n return this.fetch(request, { ...options, method: 'HEAD' })\n }\n\n extend(options: FetchOptions) {\n return new Fetch(this.ofetchInstance, { ...this.options, ...options })\n }\n baseUrl(url: string) {\n return this.extend({ baseURL: url })\n }\n}\n\nexport { createFetch } from 'ofetch'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAgE;AAChE,mBAA8B;AA4F9B,IAAAA,iBAA4B;AA1FrB,MAAM,cAAU,2BAAY;AAAA,EACjC,UAAU;AAAA,IACR,kBAAkB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IAC9D,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,CAAC,EAAE,OAAO;AAAA,EACR,gBAAgB,EAAE,SAAS,UAAU,QAAQ,GAAG;AAC9C,QAAI,SAAS,WAAW,KAAK;AAC3B,YAAM,IAAI,2BAAc;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,eAAe,EAAE,SAAS,MAAM,GAAG;AAAA,EAAC;AACtC,CAAC;AAMM,MAAM,MAAM;AAAA,EAGjB,YAAY,eAAwB,SAAwB;AAF5D,wBAAQ;AACR,wBAAQ;AAEN,SAAK,UAAU;AACf,SAAK,iBAAiB,wCAAiB;AAAA,EACzC;AAAA,EACO,MAAiC,SAAiB,SAAoC;AAAA;AAC3F,UAAI,MAAM,kCACL,UACA,KAAK;AAEV,UAAG,IAAI,MAAM;AACX,cAAM,OAAO,IAAI,SAAS;AAC1B,YAAI,IAAI,IAAI;AACZ,eAAO,QAAQ,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,CAAC;AACtE,cAAM,iCACD,MADC;AAAA,UAEJ,SAAS,iCACJ,IAAI,UADA;AAAA,YAEP,gBAAgB;AAAA,UAClB;AAAA,UACA,MAAM;AAAA,QACR;AAAA,MACF;AAEA,YAAM,MAAM,MAAM,KAAK,eAAqB,SAAS,GAAG;AACxD,aAAO;AAAA,IACT;AAAA;AAAA,EACA,IACE,SACA,SACA;AACA,WAAO,KAAK,MAAY,SAAS,iCAAK,UAAL,EAAc,QAAQ,MAAM,EAAC;AAAA,EAChE;AAAA,EACA,KACE,SACA,SACA;AACA,WAAO,KAAK,MAAY,SAAS,iCAAK,UAAL,EAAc,QAAQ,OAAO,EAAC;AAAA,EACjE;AAAA,EACA,IACE,SACA,SACA;AACA,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,MAAM,EAAC;AAAA,EAC1D;AAAA,EACA,MACE,SACA,SACA;AACA,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,QAAQ,EAAC;AAAA,EAC5D;AAAA,EACA,OACE,SACA,SACA;AACA,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,SAAS,EAAC;AAAA,EAC7D;AAAA,EACA,KAAK,SAAiB,SAAwB;AAC5C,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,OAAO,EAAC;AAAA,EAC3D;AAAA,EAEA,OAAO,SAAuB;AAC5B,WAAO,IAAI,MAAM,KAAK,gBAAgB,kCAAK,KAAK,UAAY,QAAS;AAAA,EACvE;AAAA,EACA,QAAQ,KAAa;AACnB,WAAO,KAAK,OAAO,EAAE,SAAS,IAAI,CAAC;AAAA,EACrC;AACF;","names":["import_ofetch"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/infra/support/render/index.ts"],"sourcesContent":["import {html2imgBuffer, RenderOptions, url2imgBuffer} from \"./puppeteer\";\nimport {Browser, Puppeteer} from \"puppeteer-core\";\nimport {Fetch} from \"@/infra/support/fetch\";\nexport {RenderOptions as PuppeteerOptions}\nexport interface ImageRender {\n html2img: (html: string, opt: RenderOptions) => Promise<Buffer>\n url2img: (url: string, opt: RenderOptions) => Promise<Buffer>\n}\n\nexport type RenderConfig = {\n mode: 'cf' | 'puppeteer' | 'custom'\n puppeteerURL?: string\n defaultWaitTimeout?: number\n waitTimeout?: number\n cfAccountId?: string,\n cfAPIKey?: string,\n}\n\nexport class CFBrowserRendering implements ImageRender {\n f: Fetch\n constructor(accountId: string, cfAPIKey: string) {\n this.f = new Fetch()\n .baseUrl(`https://api.cloudflare.com/client/v4/accounts/${accountId}`)\n .extend({\n headers: {\n Authorization: `Bearer ${cfAPIKey}`\n },\n })\n }\n private post(body) {\n return this.f.post('/browser-rendering/screenshot', {\n responseType: 'arrayBuffer',\n body: {\n \"screenshotOptions\": {\n quality: 90\n },\n ...body,\n \"viewport\": {\n \"width\": 3840,\n \"height\": 2160,\n \"deviceScaleFactor\": 2,\n },\n \"gotoOptions\": {\n \"waitUntil\": \"networkidle0\",\n \"timeout\": 30000\n },\n }\n })\n }\n\n\n\n async html2img (html: string, opt: RenderOptions) {\n const buf = await this.post({html: html, ...opt})\n return Buffer.from(buf)\n }\n async url2img (url: string, opt: RenderOptions) {\n const buf = await this.post({url: url, ...opt})\n return Buffer.from(buf)\n }\n}\n\nexport class PuppeteerRendering implements ImageRender {\n constructor(private browserGetter: () => Promise<Browser>) {\n }\n async html2img (html: string, opt: RenderOptions) {\n return html2imgBuffer(this.browserGetter, html, opt)\n }\n async url2img (html: string, opt: RenderOptions) {\n return url2imgBuffer(this.browserGetter, html, opt)\n }\n}\n\n\nexport const RemoteBrowserGetter = (addr: string) => {\n const p = new Puppeteer()\n let opt = {}\n if(addr.startsWith('ws')) {\n opt = { browserWSEndpoint: addr }\n }else if(addr.startsWith('http')) {\n opt = { browserURL: addr }\n }\n return () => p.connect(opt)\n}\n\n\n\nexport const getImageRender = (cfg: RenderConfig & {render?: ImageRender,browserGetter?: () => Promise<Browser>}) => {\n if(cfg.mode === 'cf') {\n return new CFBrowserRendering(cfg.cfAccountId, cfg.cfAPIKey)\n }\n if(cfg.mode === 'custom') {\n if(!cfg.render) throw new Error(\"please provide custom img render\")\n return cfg.render\n }\n if(cfg.puppeteerURL) {\n return new PuppeteerRendering(RemoteBrowserGetter(cfg.puppeteerURL))\n }\n if(cfg.browserGetter) {\n return new PuppeteerRendering(cfg.browserGetter)\n }\n}\n\nexport type CreateImageRenderOption = Parameters<typeof getImageRender>[0]\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA2D;AAC3D,4BAAiC;AACjC,mBAAoB;AAgBb,MAAM,mBAA0C;AAAA,EAErD,YAAY,WAAmB,UAAkB;AADjD;AAEE,SAAK,IAAI,IAAI,mBAAM,EAChB,QAAQ,iDAAiD,SAAS,EAAE,EACpE,OAAO;AAAA,MACN,SAAS;AAAA,QACP,eAAe,UAAU,QAAQ;AAAA,MACnC;AAAA,IACF,CAAC;AAAA,EACL;AAAA,EACQ,KAAK,MAAM;AACjB,WAAO,KAAK,EAAE,KAAK,iCAAiC;AAAA,MAClD,cAAc;AAAA,MACd,MAAM;AAAA,QACJ,qBAAqB;AAAA,UACnB,SAAS;AAAA,QACX;AAAA,SACG,OAJC;AAAA,QAKJ,YAAY;AAAA,UACV,SAAS;AAAA,UACT,UAAU;AAAA,UACV,qBAAqB;AAAA,QACvB;AAAA,QACA,eAAe;AAAA,UACb,aAAa;AAAA,UACb,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAIM,SAAU,MAAc,KAAoB;AAAA;AAChD,YAAM,MAAM,MAAM,KAAK,KAAK,iBAAC,QAAe,IAAI;AAChD,aAAO,OAAO,KAAK,GAAG;AAAA,IACxB;AAAA;AAAA,EACM,QAAS,KAAa,KAAoB;AAAA;AAC9C,YAAM,MAAM,MAAM,KAAK,KAAK,iBAAC,OAAa,IAAI;AAC9C,aAAO,OAAO,KAAK,GAAG;AAAA,IACxB;AAAA;AACF;AAEO,MAAM,mBAA0C;AAAA,EACrD,YAAoB,eAAuC;AAAvC;AAAA,EACpB;AAAA,EACM,SAAU,MAAc,KAAoB;AAAA;AAChD,iBAAO,iCAAe,KAAK,eAAe,MAAM,GAAG;AAAA,IACrD;AAAA;AAAA,EACM,QAAS,MAAc,KAAoB;AAAA;AAC/C,iBAAO,gCAAc,KAAK,eAAe,MAAM,GAAG;AAAA,IACpD;AAAA;AACF;AAGO,MAAM,sBAAsB,CAAC,SAAiB;AACnD,QAAM,IAAI,IAAI,gCAAU;AACxB,MAAI,MAAM,CAAC;AACX,MAAG,KAAK,WAAW,IAAI,GAAG;AACxB,UAAM,EAAE,mBAAmB,KAAK;AAAA,EAClC,WAAS,KAAK,WAAW,MAAM,GAAG;AAChC,UAAM,EAAE,YAAY,KAAK;AAAA,EAC3B;AACA,SAAO,MAAM,EAAE,QAAQ,GAAG;AAC5B;AAIO,MAAM,iBAAiB,CAAC,QAAsF;AACnH,MAAG,IAAI,SAAS,MAAM;AACpB,WAAO,IAAI,mBAAmB,IAAI,aAAa,IAAI,QAAQ;AAAA,EAC7D;AACA,MAAG,IAAI,SAAS,UAAU;AACxB,QAAG,CAAC,IAAI,OAAQ,OAAM,IAAI,MAAM,kCAAkC;AAClE,WAAQ,IAAI;AAAA,EACd;AACA,MAAG,IAAI,cAAc;AACnB,WAAO,IAAI,mBAAmB,oBAAoB,IAAI,YAAY,CAAC;AAAA,EACrE;AACA,MAAG,IAAI,eAAe;AACpB,WAAO,IAAI,mBAAmB,IAAI,aAAa;AAAA,EACjD;AACF;","names":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/schedules/index.ts"],"sourcesContent":["import { Config } from '@/config'\nimport { LBScoreMonitor } from './temp'\n\n\nexport const getScheduleTasks = (config: Config) => {\n return [\n {\n name: 'lb-rank-notifier',\n handler: LBScoreMonitor,\n cron: config.tempCron.cron,\n enabled: config.tempCron.enabled,\n },\n ]\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAA+B;AAGxB,MAAM,mBAAmB,CAAC,WAAmB;AAClD,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAM,OAAO,SAAS;AAAA,MACtB,SAAS,OAAO,SAAS;AAAA,IAC3B;AAAA,EACF;AACF;","names":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/service/api/index.ts"],"sourcesContent":["import {AIOSaberClient, BeatLeaderClient, BeatSaverClient, ScoreSaberClient} from \"./base\";\nimport {Config} from \"@/config\";\nimport {Logger} from \"@/interface\";\nimport {BLIDNotFoundError, MapIdNotFoundError, SSIDNotFoundError} from \"@/infra/errors\";\nimport {BSMap, HashResponse} from \"./interfaces/beatsaver\";\nimport {ScoreSaberItem} from \"./interfaces/scoresaber\";\nimport {Leaderboard} from \"./interfaces/beatleader\";\nimport {NotFoundError} from \"@/infra/support/fetch/error\";\nimport {sortScore} from \"./sortScore\";\nimport {decode} from \"@/components/utils/bl/bsorDecoder\";\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({logger})\n this.BeatLeader = new BeatLeaderClient({logger})\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> {\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 throw new NotFoundError()\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":"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","names":["res"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/service/render/index.ts"],"sourcesContent":["import {IRenderService, RenderOption} from './interfaces'\nimport { getHtml } from '@/components'\nimport { PuppeteerError, TimeoutError } from 'puppeteer-core'\nimport { Platform } from '@/interface'\nimport {getBLPlayerComp, getBLRankScoreComp, getBSMapComp, getSSPlayerComp} from '@/components/pages'\nimport {preferenceKey} from \"../preference\";\nimport {ImageRenderError, RequestError} from \"@/infra/errors\";\nimport createQrcode from \"@/components/utils/qrcode\";\nimport {APIService} from \"../api\";\nimport {BSMap} from \"../api/interfaces/beatsaver\";\nimport {CreateImageRenderOption, getImageRender, ImageRender} from \"@/infra/support/render\";\n\n\nconst getPreferenceKey = (platform: string) => {\n return platform == Platform.SS\n ? preferenceKey.ssProfileRenderImg.key\n : preferenceKey.blProfileRenderImg.key\n}\n\nexport class RenderService implements IRenderService {\n constructor(\n private api: APIService,\n private imageRender: ImageRender\n ) {}\n\n static create(imgRenderConfig: CreateImageRenderOption, api: APIService) {\n return new RenderService(api, getImageRender(imgRenderConfig))\n }\n\n async renderRank(\n accountId: string,\n platform: Platform,\n renderOpts?: RenderOption\n ) {\n try {\n let bg = (await renderOpts?.userPreference?.get<string>(getPreferenceKey(platform)))\n bg = bg || 'https://www.loliapi.com/acg/pc/'\n let html: string\n if (platform == Platform.BL) {\n const { scores, userInfo } = await this.api.getBLPlayerScoresWithUserInfo(accountId)\n html = getHtml(getBLPlayerComp(scores, userInfo, bg))\n } else {\n const { scores, userInfo } = await this.api.getSSPlayerRecentScoreWithUserInfo(accountId)\n html = getHtml(getSSPlayerComp(scores, userInfo, bg))\n }\n return this.imageRender.html2img(html, {selector: '#render-result', ...renderOpts})\n }catch (e) {\n if (e instanceof TimeoutError || e instanceof PuppeteerError) {\n throw new ImageRenderError()\n }\n throw e\n }\n }\n\n async renderScore(\n scoreId: string,\n renderOpts?: RenderOption\n ) {\n const bg = (await renderOpts?.userPreference?.get<string>(preferenceKey.blScoreImg.key))\n ?? 'https://www.loliapi.com/acg/pc/'\n try {\n const { score, statistic, bsor, bsMap } =\n await this.api.getScoreAndBSMapByScoreId(scoreId)\n\n const { aroundScores, regionTopScores, difficulties } =\n await this.api.getAroundScoreAndRegionScoreByRankAndPage(\n score.leaderboardId,\n score.rank,\n score.player.country\n )\n return this.imageRender.html2img(\n getHtml(getBLRankScoreComp(score, aroundScores, regionTopScores, difficulties, bsMap, statistic, bsor, bg)),\n {selector: '#render-result', ...renderOpts}\n )\n }catch (e) {\n if (e instanceof RequestError) {\n throw e\n }\n throw new ImageRenderError()\n }\n }\n\n async renderMapById(\n mapId: string,\n renderOption: RenderOption\n ) {\n const map = await this.api.BeatSaver.searchMapById(mapId)\n return this.renderMap(map, renderOption)\n }\n\n async renderMap(\n bsMap: BSMap,\n renderOption?: RenderOption\n ) {\n const previewQrUrl = await createQrcode(`https://allpoland.github.io/ArcViewer/?id=${bsMap.id}`)\n const bsMapQrUrl = await createQrcode(`https://beatsaver.com/maps/${bsMap.id}`)\n return this.imageRender.html2img(\n getHtml(getBSMapComp(bsMap, bsMapQrUrl, previewQrUrl)), {selector: '#render-result', ...renderOption}\n )\n }\n\n async renderUrl(url: string, renderOption?: RenderOption) {\n renderOption.onRenderStart?.()\n try {\n return this.imageRender.url2img(url, renderOption)\n }catch (e) {\n renderOption?.onRenderError?.(e)\n }\n }\n}\n"],"mappings":"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","names":["createQrcode"]}
|
package/dist/cjs/ws/bl-filter.js
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
//# sourceMappingURL=bl-filter.js.map
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
/package/dist/cjs/components/components/{bl-rank-score-item.js.map → bl-rank-score-item.cjs.map}
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
/package/dist/cjs/components/components/icons/{ScoreSaberIcon.js.map → ScoreSaberIcon.cjs.map}
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
/package/dist/cjs/components/components/{ss-rank-score-item.js.map → ss-rank-score-item.cjs.map}
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
/package/dist/cjs/service/api/interfaces/scoresaber/{leaderboard.js.map → leaderboard.cjs.map}
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|