beatsaber-bot-core 0.2.0-rc.9 → 0.3.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/subscribe/index.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/subscribe/index.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\nimport { beatleader } from './beatleader'\nimport { beatsaver } from './beatsaver'\nimport { NoneSubscriptionExistError } from '@/services/errors'\nimport { idBeatsaverMapper } from './id-beatsaver-mapper'\n\nexport default () =>\n new CommandBuilder()\n .setName('subscribe')\n .addAlias('bbsub')\n .addAlias('/subbl', { options: { type: 'beatleader' } })\n .addAlias('/subbs', { options: { type: 'beatsaver' } })\n .addAlias('blsub', { options: { type: 'beatleader' } })\n .addAlias('bssub', { options: { type: 'beatsaver' } })\n .addAlias('subbl', { options: { type: 'beatleader' } })\n .addAlias('subbs', { options: { type: 'beatsaver' } })\n .addAlias('subbl', { options: { type: 'beatleader' } })\n .addAlias('submapper', { options: { type: 'bsmapper' } })\n .addOption('type', 'type:string')\n .setDescription('clear an auth account relate info')\n .setExecutor(async (c) => {\n // check admin permission\n // if (options.type === 'beatsaver-alert') {\n // return alert(c)\n // }\n\n if (c.options.type === 'beatsaver') {\n if (c.input) return idBeatsaverMapper(c)\n return beatsaver(c)\n }\n\n if (c.options.type === 'beatleader') {\n return beatleader(c)\n }\n\n // return subscription info\n const rows = await c.services.db.getSubscriptionInfoByUGID(\n c.session.channel.id,\n c.session.user.id\n )\n\n if (rows.length < 1) {\n throw new NoneSubscriptionExistError()\n }\n let text = c.session.text('commands.bsbot.subscribe.info.header') + '\\n'\n for (const row of rows) {\n if (row.subscribe.type.startsWith('group')) {\n text += c.session.text(\n 'commands.bsbot.subscribe.info.group-body-item',\n {\n type:\n row.subscribe.type +\n `(${row.subscribe.data?.mapperName} ${row.subscribe.data?.mapperId})`,\n }\n )\n } else {\n text += c.session.text('commands.bsbot.subscribe.info.body-item', {\n type: row.subscribe.type,\n cnt: row.memberCount,\n enable: row.subscribe.enable,\n })\n if (row.me) {\n text += c.session.text(\n 'commands.bsbot.subscribe.info.body-item-include-you'\n )\n }\n }\n\n text += '\\n\\n'\n }\n await c.session.sendQuote(text)\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,sBAAqB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B,SAAS,kCAAkC;AAC3C,SAAS,yBAAyB;AAElC,IAAO,oBAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,WAAW,EACnB,SAAS,OAAO,EAChB,SAAS,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACtD,SAAS,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACrD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACrD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACpD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACrD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACpD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACrD,SAAS,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,EAAE,CAAC,EACvD,UAAU,QAAQ,aAAa,EAC/B,eAAe,mCAAmC,EAClD,YAAY,CAAO,MAAM;AApB9B;AA0BM,MAAI,EAAE,QAAQ,SAAS,aAAa;AAClC,QAAI,EAAE,MAAO,QAAO,kBAAkB,CAAC;AACvC,WAAO,UAAU,CAAC;AAAA,EACpB;AAEA,MAAI,EAAE,QAAQ,SAAS,cAAc;AACnC,WAAO,WAAW,CAAC;AAAA,EACrB;AAGA,QAAM,OAAO,MAAM,EAAE,SAAS,GAAG;AAAA,IAC/B,EAAE,QAAQ,QAAQ;AAAA,IAClB,EAAE,QAAQ,KAAK;AAAA,EACjB;AAEA,MAAI,KAAK,SAAS,GAAG;AACnB,UAAM,IAAI,2BAA2B;AAAA,EACvC;AACA,MAAI,OAAO,EAAE,QAAQ,KAAK,sCAAsC,IAAI;AACpE,aAAW,OAAO,MAAM;AACtB,QAAI,IAAI,UAAU,KAAK,WAAW,OAAO,GAAG;AAC1C,cAAQ,EAAE,QAAQ;AAAA,QAChB;AAAA,QACA;AAAA,UACE,MACE,IAAI,UAAU,OACd,KAAI,SAAI,UAAU,SAAd,mBAAoB,UAAU,KAAI,SAAI,UAAU,SAAd,mBAAoB,QAAQ;AAAA,QACtE;AAAA,MACF;AAAA,IACF,OAAO;AACL,cAAQ,EAAE,QAAQ,KAAK,2CAA2C;AAAA,QAChE,MAAM,IAAI,UAAU;AAAA,QACpB,KAAK,IAAI;AAAA,QACT,QAAQ,IAAI,UAAU;AAAA,MACxB,CAAC;AACD,UAAI,IAAI,IAAI;AACV,gBAAQ,EAAE,QAAQ;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,YAAQ;AAAA,EACV;AACA,QAAM,EAAE,QAAQ,UAAU,IAAI;AAChC,EAAC;","names":[]}
|
@@ -18,11 +18,11 @@ var __async = (__this, __arguments, generator) => {
|
|
18
18
|
step((generator = generator.apply(__this, __arguments)).next());
|
19
19
|
});
|
20
20
|
};
|
21
|
-
import { CommandBuilder } from "../../interface/
|
22
|
-
import { SubscriptionNotExistError } from "../../
|
21
|
+
import { CommandBuilder } from "../../interface/index.js";
|
22
|
+
import { SubscriptionNotExistError } from "../../services/errors/index.js";
|
23
23
|
var subjoin_default = () => new CommandBuilder().setName("subjoin").addAlias("bbjoin").addAlias("/joinbl", { options: { type: "beatleader" } }).addAlias("/joinbs", { options: { type: "beatsaver" } }).addAlias("bljoin", { options: { type: "beatleader" } }).addAlias("bsjoin", { options: { type: "beatsaver" } }).addOption("type", "type:string").setDescription("").setExecutor((c) => __async(null, null, function* () {
|
24
24
|
const { blSub, bsMapSub } = yield c.services.db.getSubscriptionsByGID(
|
25
|
-
c.session.
|
25
|
+
c.session.channel.id
|
26
26
|
);
|
27
27
|
if (c.options.type === "beatleader") {
|
28
28
|
if (!blSub) {
|
@@ -30,7 +30,7 @@ var subjoin_default = () => new CommandBuilder().setName("subjoin").addAlias("bb
|
|
30
30
|
}
|
31
31
|
const data = {
|
32
32
|
subscribeId: blSub.id,
|
33
|
-
memberUid: c.session.
|
33
|
+
memberUid: c.session.user.id,
|
34
34
|
joinedAt: /* @__PURE__ */ new Date()
|
35
35
|
};
|
36
36
|
yield c.services.db.addSubscribeMember(data);
|
@@ -43,7 +43,7 @@ var subjoin_default = () => new CommandBuilder().setName("subjoin").addAlias("bb
|
|
43
43
|
}
|
44
44
|
const data = {
|
45
45
|
subscribeId: bsMapSub.id,
|
46
|
-
memberUid: c.session.
|
46
|
+
memberUid: c.session.user.id,
|
47
47
|
joinedAt: /* @__PURE__ */ new Date()
|
48
48
|
};
|
49
49
|
yield c.services.db.addSubscribeMember(data);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/subscribe/subjoin.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/subscribe/subjoin.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\nimport { SubscriptionNotExistError } from '@/services/errors'\nexport default () =>\n new CommandBuilder()\n .setName('subjoin')\n .addAlias('bbjoin')\n .addAlias('/joinbl', { options: { type: 'beatleader' } })\n .addAlias('/joinbs', { options: { type: 'beatsaver' } })\n .addAlias('bljoin', { options: { type: 'beatleader' } })\n .addAlias('bsjoin', { options: { type: 'beatsaver' } })\n .addOption('type', 'type:string')\n .setDescription('')\n .setExecutor(async (c) => {\n const { blSub, bsMapSub } = await c.services.db.getSubscriptionsByGID(\n c.session.channel.id\n )\n if (c.options.type === 'beatleader') {\n if (!blSub) {\n // create blSub?\n throw new SubscriptionNotExistError('beatleader-score')\n }\n const data = {\n subscribeId: blSub.id,\n memberUid: c.session.user.id,\n joinedAt: new Date(),\n }\n await c.services.db.addSubscribeMember(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.join.success.beatleader')\n )\n } else if (c.options.type === 'beatsaver') {\n if (!bsMapSub) {\n throw new SubscriptionNotExistError('beatsaver-map')\n }\n const data = {\n subscribeId: bsMapSub.id,\n memberUid: c.session.user.id,\n joinedAt: new Date(),\n }\n await c.services.db.addSubscribeMember(data)\n c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.join.success.beatsaver')\n )\n }\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,sBAAqB;AAC7B,SAAS,iCAAiC;AAC1C,IAAO,kBAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,SAAS,EACjB,SAAS,QAAQ,EACjB,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACvD,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACtD,SAAS,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACtD,SAAS,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACrD,UAAU,QAAQ,aAAa,EAC/B,eAAe,EAAE,EACjB,YAAY,CAAO,MAAM;AACxB,QAAM,EAAE,OAAO,SAAS,IAAI,MAAM,EAAE,SAAS,GAAG;AAAA,IAC9C,EAAE,QAAQ,QAAQ;AAAA,EACpB;AACA,MAAI,EAAE,QAAQ,SAAS,cAAc;AACnC,QAAI,CAAC,OAAO;AAEV,YAAM,IAAI,0BAA0B,kBAAkB;AAAA,IACxD;AACA,UAAM,OAAO;AAAA,MACX,aAAa,MAAM;AAAA,MACnB,WAAW,EAAE,QAAQ,KAAK;AAAA,MAC1B,UAAU,oBAAI,KAAK;AAAA,IACrB;AACA,UAAM,EAAE,SAAS,GAAG,mBAAmB,IAAI;AAC3C,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,kDAAkD;AAAA,IACnE;AAAA,EACF,WAAW,EAAE,QAAQ,SAAS,aAAa;AACzC,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,0BAA0B,eAAe;AAAA,IACrD;AACA,UAAM,OAAO;AAAA,MACX,aAAa,SAAS;AAAA,MACtB,WAAW,EAAE,QAAQ,KAAK;AAAA,MAC1B,UAAU,oBAAI,KAAK;AAAA,IACrB;AACA,UAAM,EAAE,SAAS,GAAG,mBAAmB,IAAI;AAC3C,MAAE,QAAQ;AAAA,MACR,EAAE,QAAQ,KAAK,iDAAiD;AAAA,IAClE;AAAA,EACF;AACF,EAAC;","names":[]}
|
@@ -18,11 +18,11 @@ var __async = (__this, __arguments, generator) => {
|
|
18
18
|
step((generator = generator.apply(__this, __arguments)).next());
|
19
19
|
});
|
20
20
|
};
|
21
|
-
import { CommandBuilder } from "../../interface/
|
21
|
+
import { CommandBuilder } from "../../interface/index.js";
|
22
22
|
var subleave_default = () => new CommandBuilder().setName("subleave").addAlias("bbleave").addAlias("/leavebl", { options: { type: "beatleader" } }).addAlias("/leavebs", { options: { type: "beatsaver" } }).addAlias("leavebl", { options: { type: "beatleader" } }).addAlias("leavebs", { options: { type: "beatsaver" } }).addOption("type", "type:string").setDescription("").setExecutor((c) => __async(null, null, function* () {
|
23
23
|
const subs = yield c.services.db.getSubscriptionInfoByUGID(
|
24
|
-
c.session.
|
25
|
-
c.session.
|
24
|
+
c.session.channel.id,
|
25
|
+
c.session.user.id
|
26
26
|
);
|
27
27
|
if (c.options.type === "beatleader") {
|
28
28
|
const blSub = subs.find((it) => it.subscribe.type == "beatleader-score");
|
@@ -35,7 +35,7 @@ var subleave_default = () => new CommandBuilder().setName("subleave").addAlias("
|
|
35
35
|
}
|
36
36
|
yield c.services.db.removeFromSubGroupBySubAndUid(
|
37
37
|
blSub.subscribe.id,
|
38
|
-
c.session.
|
38
|
+
c.session.user.id
|
39
39
|
);
|
40
40
|
yield c.session.sendQuote(
|
41
41
|
c.session.text("commands.bsbot.subscribe.leave.success.beatleader")
|
@@ -50,7 +50,7 @@ var subleave_default = () => new CommandBuilder().setName("subleave").addAlias("
|
|
50
50
|
}
|
51
51
|
yield c.services.db.removeFromSubGroupBySubAndUid(
|
52
52
|
bsSub.subscribe.id,
|
53
|
-
c.session.
|
53
|
+
c.session.user.id
|
54
54
|
);
|
55
55
|
yield c.session.sendQuote(
|
56
56
|
c.session.text("commands.bsbot.subscribe.leave.success.beatsaver")
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/subscribe/subleave.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/subscribe/subleave.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\n\nexport default () =>\n new CommandBuilder()\n .setName('subleave')\n .addAlias('bbleave')\n .addAlias('/leavebl', { options: { type: 'beatleader' } })\n .addAlias('/leavebs', { options: { type: 'beatsaver' } })\n .addAlias('leavebl', { options: { type: 'beatleader' } })\n .addAlias('leavebs', { options: { type: 'beatsaver' } })\n .addOption('type', 'type:string')\n .setDescription('')\n .setExecutor(async (c) => {\n // getUserJoinedGroupMember\n const subs = await c.services.db.getSubscriptionInfoByUGID(\n c.session.channel.id,\n c.session.user.id\n )\n if (c.options.type === 'beatleader') {\n const blSub = subs.find((it) => it.subscribe.type == 'beatleader-score')\n if (!blSub?.me) {\n return c.session.sendQuote(\n c.session.text(\n 'commands.bsbot.subscribe.leave.not-exist.beatleader'\n )\n )\n }\n await c.services.db.removeFromSubGroupBySubAndUid(\n blSub.subscribe.id,\n c.session.user.id\n )\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.leave.success.beatleader')\n )\n } else if (c.options.type === 'beatsaver') {\n const bsSub = subs.find((it) => it.subscribe.type == 'beatsaver-map')\n if (!bsSub?.me) {\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.leave.not-exist.beatsaver')\n )\n return\n }\n\n await c.services.db.removeFromSubGroupBySubAndUid(\n bsSub.subscribe.id,\n c.session.user.id\n )\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.leave.success.beatsaver')\n )\n }\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,sBAAqB;AAE7B,IAAO,mBAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,UAAU,EAClB,SAAS,SAAS,EAClB,SAAS,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACxD,SAAS,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACvD,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACvD,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACtD,UAAU,QAAQ,aAAa,EAC/B,eAAe,EAAE,EACjB,YAAY,CAAO,MAAM;AAExB,QAAM,OAAO,MAAM,EAAE,SAAS,GAAG;AAAA,IAC/B,EAAE,QAAQ,QAAQ;AAAA,IAClB,EAAE,QAAQ,KAAK;AAAA,EACjB;AACA,MAAI,EAAE,QAAQ,SAAS,cAAc;AACnC,UAAM,QAAQ,KAAK,KAAK,CAAC,OAAO,GAAG,UAAU,QAAQ,kBAAkB;AACvE,QAAI,EAAC,+BAAO,KAAI;AACd,aAAO,EAAE,QAAQ;AAAA,QACf,EAAE,QAAQ;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,UAAM,EAAE,SAAS,GAAG;AAAA,MAClB,MAAM,UAAU;AAAA,MAChB,EAAE,QAAQ,KAAK;AAAA,IACjB;AACA,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,mDAAmD;AAAA,IACpE;AAAA,EACF,WAAW,EAAE,QAAQ,SAAS,aAAa;AACzC,UAAM,QAAQ,KAAK,KAAK,CAAC,OAAO,GAAG,UAAU,QAAQ,eAAe;AACpE,QAAI,EAAC,+BAAO,KAAI;AACd,YAAM,EAAE,QAAQ;AAAA,QACd,EAAE,QAAQ,KAAK,oDAAoD;AAAA,MACrE;AACA;AAAA,IACF;AAEA,UAAM,EAAE,SAAS,GAAG;AAAA,MAClB,MAAM,UAAU;AAAA,MAChB,EAAE,QAAQ,KAAK;AAAA,IACjB;AACA,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,kDAAkD;AAAA,IACnE;AAAA,EACF;AACF,EAAC;","names":[]}
|
@@ -37,14 +37,14 @@ var __async = (__this, __arguments, generator) => {
|
|
37
37
|
step((generator = generator.apply(__this, __arguments)).next());
|
38
38
|
});
|
39
39
|
};
|
40
|
-
import { CommandBuilder } from "../../interface/cmd/builder";
|
41
40
|
import {
|
42
41
|
BSMapperSubscriptionNotExistError,
|
43
42
|
SubscriptionNotExistError
|
44
|
-
} from "../../
|
43
|
+
} from "../../services/errors/index.js";
|
44
|
+
import { CommandBuilder } from "../../interface/index.js";
|
45
45
|
var unsubscribe_default = () => new CommandBuilder().setName("unsubscribe").addAlias("bbunsub").addAlias("/unsubbl", { options: { type: "beatleader" } }).addAlias("/unsubbs", { options: { type: "beatsaver" } }).addAlias("unsubbl", { options: { type: "beatleader" } }).addAlias("unsubbs", { options: { type: "beatsaver" } }).addOption("type", "type:string").setDescription("").setExecutor((c) => __async(null, null, function* () {
|
46
46
|
const { blSub, bsMapSub, bsAlertSub } = yield c.services.db.getSubscriptionsByGID(
|
47
|
-
c.session.
|
47
|
+
c.session.channel.id
|
48
48
|
);
|
49
49
|
if (c.options.type === "beatleader") {
|
50
50
|
if (!blSub) {
|
@@ -85,8 +85,8 @@ const unsubIDBSMapper = (c) => __async(null, null, function* () {
|
|
85
85
|
var _a;
|
86
86
|
const input = c.input;
|
87
87
|
if (input) {
|
88
|
-
const res = yield c.services.db.
|
89
|
-
c.session.
|
88
|
+
const res = yield c.services.db.getIDSubscriptionByChannelIDAndType(
|
89
|
+
c.session.channel.id,
|
90
90
|
"id-beatsaver-map"
|
91
91
|
);
|
92
92
|
const it = res.find((it2) => {
|
@@ -109,8 +109,8 @@ const unsubIDBLScore = (c) => __async(null, null, function* () {
|
|
109
109
|
var _a;
|
110
110
|
const input = c.input;
|
111
111
|
if (input) {
|
112
|
-
const res = yield c.services.db.
|
113
|
-
c.session.
|
112
|
+
const res = yield c.services.db.getIDSubscriptionByChannelIDAndType(
|
113
|
+
c.session.channel.id,
|
114
114
|
"id-beatleader-score"
|
115
115
|
);
|
116
116
|
const it = res.find((it2) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/subscribe/unsubscribe.ts"],"sourcesContent":["
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/subscribe/unsubscribe.ts"],"sourcesContent":["\nimport {\n BSMapperSubscriptionNotExistError,\n SubscriptionNotExistError,\n} from '@/services/errors'\nimport {CmdContext, CommandBuilder} from \"@/interface\";\n\nexport default () =>\n new CommandBuilder()\n .setName('unsubscribe')\n .addAlias('bbunsub')\n .addAlias('/unsubbl', { options: { type: 'beatleader' } })\n .addAlias('/unsubbs', { options: { type: 'beatsaver' } })\n .addAlias('unsubbl', { options: { type: 'beatleader' } })\n .addAlias('unsubbs', { options: { type: 'beatsaver' } })\n .addOption('type', 'type:string')\n .setDescription('')\n .setExecutor(async (c) => {\n const { blSub, bsMapSub, bsAlertSub } = await c.services.db.getSubscriptionsByGID(\n c.session.channel.id\n )\n if (c.options.type === 'beatleader') {\n if (!blSub) {\n throw new SubscriptionNotExistError('beatleader-score')\n }\n const data = { ...blSub, enable: false }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.unsubscribe.success.beatleader')\n )\n }\n\n if (c.options.type === 'beatsaver') {\n if (c.input) {\n await unsubIDBSMapper(c)\n return\n }\n\n if (!bsMapSub) {\n throw new SubscriptionNotExistError('beatsaver-map')\n }\n const data = { ...bsMapSub, enable: false }\n await c.services.db.upsertSubscription(data)\n c.session.sendQuote(\n c.session.text('commands.bsbot.unsubscribe.success.beatsaver')\n )\n }\n\n if (c.options.type === 'alert') {\n if (!bsAlertSub) {\n throw new SubscriptionNotExistError('beatsaver-alert')\n }\n const data = { ...bsAlertSub, enable: false }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.unsubscribe.success.alert')\n )\n }\n })\n\nconst unsubIDBSMapper = async (c: CmdContext) => {\n const input = c.input\n if (input) {\n const res = await c.services.db.getIDSubscriptionByChannelIDAndType(\n c.session.channel.id,\n 'id-beatsaver-map'\n )\n const it = res.find((it) => it.data?.mapperId?.toString() === input)\n if (!it) {\n throw new BSMapperSubscriptionNotExistError({ id: input })\n }\n\n await c.services.db.removeIDSubscriptionByID(it.id)\n c.session.sendQuote(\n c.session.text('commands.bsbot.unsubscribe.success.beatsaver-mapper', {\n name: it?.data?.mapperName,\n })\n )\n return\n }\n}\n\nconst unsubIDBLScore = async (c: CmdContext) => {\n const input = c.input\n if (input) {\n const res = await c.services.db.getIDSubscriptionByChannelIDAndType(\n c.session.channel.id,\n 'id-beatleader-score'\n )\n const it = res.find((it) => it.data?.playerId?.toString() === input)\n if (!it) {\n throw new SubscriptionNotExistError(`id-beatleader-score(${input})`)\n }\n await c.services.db.removeIDSubscriptionByID(it.id)\n c.session.sendQuote(\n c.session.text('commands.bsbot.unsubscribe.success.beatleader-score', {\n name: it?.data?.playerId,\n })\n )\n return\n }\n}\n"],"mappings":"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","names":["it","_a"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/common/cache.ts"],"sourcesContent":["import { LRUCache } from 'lru-cache'\n\nconst options = {\n max: 500,\n maxSize: 5000,\n ttl: 1000 * 60 * 5,\n allowStale: false,\n updateAgeOnGet: true,\n updateAgeOnHas: true,\n}\n\nexport const cache = new LRUCache(options)\n\nexport const createCache = <K extends {}, V extends {}, FC = unknown>(opt) =>\n new LRUCache<K, V, FC>(opt)\n"],"mappings":"AAAA,SAAS,gBAAgB;AAEzB,MAAM,UAAU;AAAA,EACd,KAAK;AAAA,EACL,SAAS;AAAA,EACT,KAAK,MAAO,KAAK;AAAA,EACjB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,gBAAgB;AAClB;AAEO,MAAM,QAAQ,IAAI,SAAS,OAAO;AAElC,MAAM,cAAc,CAA2C,QACpE,IAAI,SAAmB,GAAG;","names":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/common/fetch/error.ts"],"sourcesContent":["export class RequestError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'RequestError'\n }\n}\n\nexport class NotFoundError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'NotFoundError'\n }\n}\n\nexport class RateLimitError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'RateLimitError'\n }\n}\n"],"mappings":"AAAO,MAAM,qBAAqB,MAAM;AAAA,EACtC,YAAY,SAAkB;AAC5B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;AAEO,MAAM,sBAAsB,MAAM;AAAA,EACvC,YAAY,SAAkB;AAC5B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;AAEO,MAAM,uBAAuB,MAAM;AAAA,EACxC,YAAY,SAAkB;AAC5B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;","names":[]}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { Fetch } from "./ofetch.js";
|
2
|
+
import { NotFoundError } from "./error.js";
|
3
|
+
const ofetch = new Fetch();
|
4
|
+
const createFetch = (logger) => {
|
5
|
+
return ofetch.extend({
|
6
|
+
onRequest: (context) => {
|
7
|
+
logger.debug(`[fetch -->] ${context.options.baseURL}${context.request}`);
|
8
|
+
logger.debug(`[fetch -->] ${JSON.stringify(context.options, null, 2)}`);
|
9
|
+
},
|
10
|
+
onResponse: (context) => {
|
11
|
+
logger.debug(`[fetch <--] ${context.request} ${context.response.status}`);
|
12
|
+
switch (context.options.responseType) {
|
13
|
+
case "text":
|
14
|
+
logger.debug(`[fetch <--] ${context.response._data}`);
|
15
|
+
break;
|
16
|
+
case "json":
|
17
|
+
logger.debug(`[fetch -->] ${JSON.stringify(context.response._data, null, 2)}`);
|
18
|
+
break;
|
19
|
+
}
|
20
|
+
},
|
21
|
+
onResponseError({ request, response, options, error }) {
|
22
|
+
logger.debug(`response error ${response.statusText}`, error);
|
23
|
+
if (response.status === 404) {
|
24
|
+
throw new NotFoundError();
|
25
|
+
}
|
26
|
+
},
|
27
|
+
ignoreResponseError: false
|
28
|
+
});
|
29
|
+
};
|
30
|
+
import { Fetch as Fetch2 } from "./ofetch.js";
|
31
|
+
export {
|
32
|
+
Fetch2 as Fetch,
|
33
|
+
createFetch
|
34
|
+
};
|
35
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/common/fetch/index.ts"],"sourcesContent":["import { Fetch } from './ofetch'\nimport { Logger } from '@/core'\nimport { NotFoundError } from './error'\n\nconst ofetch = new Fetch()\n\nexport const createFetch = (logger: Logger) => {\n return ofetch.extend({\n onRequest: (context) => {\n logger.debug(`[fetch -->] ${context.options.baseURL}${context.request}`)\n logger.debug(`[fetch -->] ${JSON.stringify(context.options, null, 2)}`)\n },\n onResponse: (context) => {\n logger.debug(`[fetch <--] ${context.request} ${context.response.status}`)\n switch (context.options.responseType) {\n case 'text':\n logger.debug(`[fetch <--] ${context.response._data}`)\n break\n case \"json\":\n logger.debug(`[fetch -->] ${JSON.stringify(context.response._data, null, 2)}`)\n break\n }\n },\n onResponseError({ request, response, options, error }) {\n logger.debug(`response error ${response.statusText}`, error)\n if (response.status === 404) {\n throw new NotFoundError()\n }\n },\n ignoreResponseError: false,\n })\n}\n\nexport { Fetch } from './ofetch'\n"],"mappings":"AAAA,SAAS,aAAa;AAEtB,SAAS,qBAAqB;AAE9B,MAAM,SAAS,IAAI,MAAM;AAElB,MAAM,cAAc,CAAC,WAAmB;AAC7C,SAAO,OAAO,OAAO;AAAA,IACnB,WAAW,CAAC,YAAY;AACtB,aAAO,MAAM,eAAe,QAAQ,QAAQ,OAAO,GAAG,QAAQ,OAAO,EAAE;AACvE,aAAO,MAAM,eAAe,KAAK,UAAU,QAAQ,SAAS,MAAM,CAAC,CAAC,EAAE;AAAA,IACxE;AAAA,IACA,YAAY,CAAC,YAAY;AACvB,aAAO,MAAM,eAAe,QAAQ,OAAO,IAAI,QAAQ,SAAS,MAAM,EAAE;AACxE,cAAQ,QAAQ,QAAQ,cAAc;AAAA,QACpC,KAAK;AACH,iBAAO,MAAM,eAAe,QAAQ,SAAS,KAAK,EAAE;AACpD;AAAA,QACF,KAAK;AACH,iBAAO,MAAM,eAAe,KAAK,UAAU,QAAQ,SAAS,OAAO,MAAM,CAAC,CAAC,EAAE;AAC7E;AAAA,MACJ;AAAA,IACF;AAAA,IACA,gBAAgB,EAAE,SAAS,UAAU,SAAS,MAAM,GAAG;AACrD,aAAO,MAAM,kBAAkB,SAAS,UAAU,IAAI,KAAK;AAC3D,UAAI,SAAS,WAAW,KAAK;AAC3B,cAAM,IAAI,cAAc;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,EACvB,CAAC;AACH;AAEA,SAAS,SAAAA,cAAa;","names":["Fetch"]}
|
@@ -39,19 +39,13 @@ var __async = (__this, __arguments, generator) => {
|
|
39
39
|
});
|
40
40
|
};
|
41
41
|
import { createFetch } from "ofetch";
|
42
|
-
import { NotFoundError } from "./error";
|
43
42
|
const rofetch = createFetch({
|
44
43
|
defaults: {
|
45
|
-
retryStatusCodes: [
|
46
|
-
retry:
|
44
|
+
retryStatusCodes: [408, 409, 425, 429, 500, 502, 503, 504],
|
45
|
+
retry: 2,
|
47
46
|
retryDelay: 800
|
48
47
|
}
|
49
48
|
}).create({
|
50
|
-
onResponseError({ request, response, options }) {
|
51
|
-
if (response.status === 404) {
|
52
|
-
throw new NotFoundError();
|
53
|
-
}
|
54
|
-
},
|
55
49
|
onRequestError({ request, error }) {
|
56
50
|
}
|
57
51
|
});
|
@@ -76,6 +70,7 @@ class Fetch {
|
|
76
70
|
body: f
|
77
71
|
});
|
78
72
|
}
|
73
|
+
console.debug();
|
79
74
|
const res = yield this.ofetchInstance(request, opt);
|
80
75
|
return res;
|
81
76
|
});
|
@@ -108,7 +103,6 @@ class Fetch {
|
|
108
103
|
import { createFetch as createFetch2 } from "ofetch";
|
109
104
|
export {
|
110
105
|
Fetch,
|
111
|
-
createFetch2 as createFetch
|
112
|
-
rofetch
|
106
|
+
createFetch2 as createFetch
|
113
107
|
};
|
114
108
|
//# sourceMappingURL=ofetch.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/common/fetch/ofetch.ts"],"sourcesContent":["import { $Fetch, createFetch, FetchOptions, ResponseType } from 'ofetch'\n\n\nconst rofetch = createFetch({\n defaults: {\n retryStatusCodes: [408, 409, 425, 429, 500, 502, 503, 504],\n retry: 2,\n retryDelay: 800,\n },\n}).create({\n\n onRequestError({ request, error }) {\n\n },\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 console.debug()\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,SAAiB,mBAA+C;AAGhE,MAAM,UAAU,YAAY;AAAA,EAC1B,UAAU;AAAA,IACR,kBAAkB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IACzD,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,CAAC,EAAE,OAAO;AAAA,EAER,eAAe,EAAE,SAAS,MAAM,GAAG;AAAA,EAEnC;AACF,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;AACA,cAAQ,MAAM;AACd,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;AAEA,SAAS,eAAAA,oBAAmB;","names":["createFetch"]}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { interpolate } from "./parser.js";
|
2
|
+
import { interpolateString } from "./util.js";
|
3
|
+
const defaultLang = "en-US";
|
4
|
+
const createTranslator = (translateObject) => {
|
5
|
+
return (path, params = {}, lang = defaultLang) => _translate(translateObject, path, params, lang);
|
6
|
+
};
|
7
|
+
const _translate = (translateObject, path, params = {}, lang = defaultLang) => {
|
8
|
+
const keys = path.split(".");
|
9
|
+
let result = translateObject[lang];
|
10
|
+
if (!result) {
|
11
|
+
return null;
|
12
|
+
}
|
13
|
+
for (const key of keys) {
|
14
|
+
if (result[key] !== void 0) {
|
15
|
+
result = result[key];
|
16
|
+
} else {
|
17
|
+
return null;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
try {
|
21
|
+
if (typeof result === "string") {
|
22
|
+
return interpolate(result, params);
|
23
|
+
}
|
24
|
+
} catch (e) {
|
25
|
+
return interpolateString(result, params);
|
26
|
+
}
|
27
|
+
return null;
|
28
|
+
};
|
29
|
+
export {
|
30
|
+
createTranslator
|
31
|
+
};
|
32
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/common/i18n/index.ts"],"sourcesContent":["import {interpolate} from \"./parser\";\nimport {interpolateString} from \"./util\";\n\nconst defaultLang = \"en-US\";\n\nexport const createTranslator = (translateObject: object) => {\n return (path: string, params = {}, lang = defaultLang) => _translate(translateObject, path, params, lang)\n}\nconst _translate = (\n translateObject: object,\n path: string,\n params = {},\n lang = defaultLang\n) => {\n const keys = path.split('.')\n let result = translateObject[lang]\n if(!result) {\n return null\n }\n for (const key of keys) {\n if (result[key] !== undefined) {\n result = result[key]\n } else {\n return null\n }\n }\n try {\n if (typeof result === 'string') {\n return interpolate(result, params)\n }\n } catch (e) {\n return interpolateString(result, params)\n }\n return null\n}\n"],"mappings":"AAAA,SAAQ,mBAAkB;AAC1B,SAAQ,yBAAwB;AAEhC,MAAM,cAAc;AAEb,MAAM,mBAAmB,CAAC,oBAA4B;AAC3D,SAAO,CAAC,MAAc,SAAS,CAAC,GAAG,OAAO,gBAAgB,WAAW,iBAAiB,MAAM,QAAQ,IAAI;AAC1G;AACA,MAAM,aAAa,CACjB,iBACA,MACA,SAAS,CAAC,GACV,OAAO,gBACJ;AACH,QAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,MAAI,SAAS,gBAAgB,IAAI;AACjC,MAAG,CAAC,QAAQ;AACV,WAAO;AAAA,EACT;AACA,aAAW,OAAO,MAAM;AACtB,QAAI,OAAO,GAAG,MAAM,QAAW;AAC7B,eAAS,OAAO,GAAG;AAAA,IACrB,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI;AACF,QAAI,OAAO,WAAW,UAAU;AAC9B,aAAO,YAAY,QAAQ,MAAM;AAAA,IACnC;AAAA,EACF,SAAS,GAAG;AACV,WAAO,kBAAkB,QAAQ,MAAM;AAAA,EACzC;AACA,SAAO;AACT;","names":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/common/i18n/parser.ts"],"sourcesContent":["enum TokenType {\n TEXT,\n OPEN_BRACE,\n CLOSE_BRACE,\n IDENTIFIER,\n QUESTION,\n COLON,\n STRING,\n}\n\ninterface Token {\n type: TokenType\n value: string\n}\n\nexport class Parser {\n private tokens: Token[] = []\n private current = 0\n\n constructor(\n private template: string,\n private data: any\n ) {\n this.tokenize()\n }\n\n private tokenize(): void {\n let current = 0\n while (current < this.template.length) {\n let char = this.template[current]\n if (char === '\\\\' && current + 1 < this.template.length) {\n // 处理转义字符\n const nextChar = this.template[current + 1]\n if (\n nextChar === '{' ||\n nextChar === '}' ||\n nextChar === '?' ||\n nextChar === ':' ||\n nextChar === \"'\" ||\n nextChar === '\\\\'\n ) {\n this.tokens.push({ type: TokenType.TEXT, value: nextChar })\n current += 2\n continue\n }\n }\n if (char === '{' && this.template[current + 1] === '{') {\n this.tokens.push({ type: TokenType.OPEN_BRACE, value: '{{' })\n current += 2\n continue\n }\n\n if (char === '}' && this.template[current + 1] === '}') {\n this.tokens.push({ type: TokenType.CLOSE_BRACE, value: '}}' })\n current += 2\n continue\n }\n\n if (char === '?') {\n this.tokens.push({ type: TokenType.QUESTION, value: '?' })\n current++\n continue\n }\n\n if (char === ':') {\n this.tokens.push({ type: TokenType.COLON, value: ':' })\n current++\n continue\n }\n\n if (char === \"'\") {\n let value = ''\n char = this.template[++current]\n while (char !== \"'\" && current < this.template.length) {\n if (char === '\\\\' && current + 1 < this.template.length) {\n char = this.template[++current]\n }\n value += char\n char = this.template[++current]\n }\n if (char === \"'\") current++\n this.tokens.push({ type: TokenType.STRING, value })\n continue\n }\n\n if (/[a-zA-Z0-9_]/.test(char)) {\n let value = ''\n while (/[a-zA-Z0-9_]/.test(char)) {\n value += char\n char = this.template[++current]\n }\n this.tokens.push({ type: TokenType.IDENTIFIER, value })\n continue\n }\n\n if (/\\s/.test(char)) {\n current++\n continue\n }\n\n let value = ''\n while (\n current < this.template.length &&\n char !== '{' &&\n char !== '}' &&\n char !== '?' &&\n char !== ':' &&\n char !== \"'\"\n // &&\n // !/[a-zA-Z0-9_]/.test(char)\n ) {\n if (char === '\\\\' && current + 1 < this.template.length) {\n value += this.template[++current]\n } else {\n value += char\n }\n char = this.template[++current]\n }\n if (value) {\n this.tokens.push({ type: TokenType.TEXT, value })\n }\n }\n }\n\n private match(...types: TokenType[]): boolean {\n if (this.current >= this.tokens.length) return false\n return types.includes(this.tokens[this.current].type)\n }\n\n private consume(type: TokenType): Token {\n if (this.match(type)) {\n return this.tokens[this.current++]\n }\n throw new Error(\n `Expected token type ${type}, but got ${this.tokens[this.current].type}`\n )\n }\n\n private parseExpression(): string {\n if (this.match(TokenType.OPEN_BRACE)) {\n this.consume(TokenType.OPEN_BRACE)\n const result = this.parseInterpolation()\n this.consume(TokenType.CLOSE_BRACE)\n return result\n }\n if (this.match(TokenType.STRING)) {\n const tmp = this.consume(TokenType.STRING).value\n return interpolate(tmp, this.data)\n }\n return this.consume(TokenType.TEXT).value\n }\n\n private parseInterpolation(): string {\n const identifier = this.consume(TokenType.IDENTIFIER).value\n if (this.match(TokenType.QUESTION)) {\n this.consume(TokenType.QUESTION)\n const truePart = this.parseExpression()\n this.consume(TokenType.COLON)\n const falsePart = this.parseExpression()\n return this.data[identifier] ? truePart : falsePart\n }\n return this.data[identifier]?.toString() || ''\n }\n\n parse(): string {\n // console.log(this.current, this.tokens)\n let result = ''\n while (this.current < this.tokens.length) {\n result += this.parseExpression()\n }\n return result\n }\n}\n\nexport function interpolate(template: string, data): string {\n const parser = new Parser(template, data)\n return parser.parse()\n}\n"],"mappings":"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","names":["TokenType","value"]}
|
@@ -1,32 +1,3 @@
|
|
1
|
-
var __async = (__this, __arguments, generator) => {
|
2
|
-
return new Promise((resolve, reject) => {
|
3
|
-
var fulfilled = (value) => {
|
4
|
-
try {
|
5
|
-
step(generator.next(value));
|
6
|
-
} catch (e) {
|
7
|
-
reject(e);
|
8
|
-
}
|
9
|
-
};
|
10
|
-
var rejected = (value) => {
|
11
|
-
try {
|
12
|
-
step(generator.throw(value));
|
13
|
-
} catch (e) {
|
14
|
-
reject(e);
|
15
|
-
}
|
16
|
-
};
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
19
|
-
});
|
20
|
-
};
|
21
|
-
import { interpolate } from "./parser";
|
22
|
-
const i18nObj = {};
|
23
|
-
init().then((_) => console.log("i18n loaded")).catch((err) => console.error(err));
|
24
|
-
function init() {
|
25
|
-
return __async(this, null, function* () {
|
26
|
-
const zh = yield import("./zh-cn.json");
|
27
|
-
i18nObj["zh-cn"] = zh;
|
28
|
-
});
|
29
|
-
}
|
30
1
|
function isObject(item) {
|
31
2
|
return item && typeof item === "object" && !Array.isArray(item);
|
32
3
|
}
|
@@ -45,30 +16,6 @@ function merge(target, ...sources) {
|
|
45
16
|
}
|
46
17
|
return merge(target, ...sources);
|
47
18
|
}
|
48
|
-
function loadI18nConfig(lang, obj) {
|
49
|
-
const raw = i18nObj[lang];
|
50
|
-
i18nObj[lang] = merge(raw, obj);
|
51
|
-
console.log(`overwrite i18n ${lang} `);
|
52
|
-
}
|
53
|
-
function tran(path, params = {}, lang = "zh-cn") {
|
54
|
-
const keys = path.split(".");
|
55
|
-
let result = i18nObj[lang];
|
56
|
-
for (const key of keys) {
|
57
|
-
if (result[key] !== void 0) {
|
58
|
-
result = result[key];
|
59
|
-
} else {
|
60
|
-
return null;
|
61
|
-
}
|
62
|
-
}
|
63
|
-
try {
|
64
|
-
if (typeof result === "string") {
|
65
|
-
return interpolate(result, params);
|
66
|
-
}
|
67
|
-
} catch (e) {
|
68
|
-
return interpolateString(result, params);
|
69
|
-
}
|
70
|
-
return null;
|
71
|
-
}
|
72
19
|
function interpolateString(str, context) {
|
73
20
|
const regex = /\{\{(.*?)\?\s*'(.*?)'\s*:\s*'(.*?)'\s*\}\}/;
|
74
21
|
let match;
|
@@ -97,7 +44,8 @@ function safeEval(expr, context) {
|
|
97
44
|
}
|
98
45
|
}
|
99
46
|
export {
|
100
|
-
|
101
|
-
|
47
|
+
interpolateString,
|
48
|
+
isObject,
|
49
|
+
merge
|
102
50
|
};
|
103
|
-
//# sourceMappingURL=
|
51
|
+
//# sourceMappingURL=util.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/common/i18n/util.ts"],"sourcesContent":["\nexport function isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item)\n}\n\nexport function merge(target, ...sources) {\n if (!sources.length) return target\n const source = sources.shift()\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} })\n merge(target[key], source[key])\n } else {\n Object.assign(target, { [key]: source[key] })\n }\n }\n }\n return merge(target, ...sources)\n}\n\n\nexport function interpolateString(str, context) {\n // 正则表达式匹配三元表达式\n const regex = /\\{\\{(.*?)\\?\\s*'(.*?)'\\s*:\\s*'(.*?)'\\s*\\}\\}/\n let match\n\n // 递归解析\n while ((match = regex.exec(str)) !== null) {\n const [fullMatch, condition, trueValue, falseValue] = match\n\n // 递归解析 trueValue 和 falseValue 以处理嵌套情况\n const resolvedTrueValue = interpolateString(trueValue, context)\n const resolvedFalseValue = interpolateString(falseValue, context)\n\n // 计算条件表达式\n let result = safeEval(condition, context)\n if (typeof result === 'string') {\n result = false\n }\n const replacement = result ? resolvedTrueValue : resolvedFalseValue\n\n // 替换匹配到的三元表达式\n str = str.replace(fullMatch, replacement)\n }\n\n // 替换变量插值\n const variableRegex = /\\{\\{(.*?)\\}\\}/g\n str = str.replace(variableRegex, (match, expr) => safeEval(expr, context))\n\n return str\n}\nfunction safeEval(expr, context) {\n try {\n const fn = new Function(...Object.keys(context), `return ${expr}`)\n return fn(...Object.values(context))\n } catch (e) {\n console.error(expr, context, e)\n return expr\n }\n}\n\n"],"mappings":"AACO,SAAS,SAAS,MAAM;AAC7B,SAAO,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI;AAChE;AAEO,SAAS,MAAM,WAAW,SAAS;AACxC,MAAI,CAAC,QAAQ,OAAQ,QAAO;AAC5B,QAAM,SAAS,QAAQ,MAAM;AAC7B,MAAI,SAAS,MAAM,KAAK,SAAS,MAAM,GAAG;AACxC,eAAW,OAAO,QAAQ;AACxB,UAAI,SAAS,OAAO,GAAG,CAAC,GAAG;AACzB,YAAI,CAAC,OAAO,GAAG,EAAG,QAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;AACrD,cAAM,OAAO,GAAG,GAAG,OAAO,GAAG,CAAC;AAAA,MAChC,OAAO;AACL,eAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AACA,SAAO,MAAM,QAAQ,GAAG,OAAO;AACjC;AAGO,SAAS,kBAAkB,KAAK,SAAS;AAE9C,QAAM,QAAQ;AACd,MAAI;AAGJ,UAAQ,QAAQ,MAAM,KAAK,GAAG,OAAO,MAAM;AACzC,UAAM,CAAC,WAAW,WAAW,WAAW,UAAU,IAAI;AAGtD,UAAM,oBAAoB,kBAAkB,WAAW,OAAO;AAC9D,UAAM,qBAAqB,kBAAkB,YAAY,OAAO;AAGhE,QAAI,SAAS,SAAS,WAAW,OAAO;AACxC,QAAI,OAAO,WAAW,UAAU;AAC9B,eAAS;AAAA,IACX;AACA,UAAM,cAAc,SAAS,oBAAoB;AAGjD,UAAM,IAAI,QAAQ,WAAW,WAAW;AAAA,EAC1C;AAGA,QAAM,gBAAgB;AACtB,QAAM,IAAI,QAAQ,eAAe,CAACA,QAAO,SAAS,SAAS,MAAM,OAAO,CAAC;AAEzE,SAAO;AACT;AACA,SAAS,SAAS,MAAM,SAAS;AAC/B,MAAI;AACF,UAAM,KAAK,IAAI,SAAS,GAAG,OAAO,KAAK,OAAO,GAAG,UAAU,IAAI,EAAE;AACjE,WAAO,GAAG,GAAG,OAAO,OAAO,OAAO,CAAC;AAAA,EACrC,SAAS,GAAG;AACV,YAAQ,MAAM,MAAM,SAAS,CAAC;AAC9B,WAAO;AAAA,EACT;AACF;","names":["match"]}
|
@@ -17,6 +17,18 @@ var __spreadValues = (a, b) => {
|
|
17
17
|
return a;
|
18
18
|
};
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
20
|
+
var __objRest = (source, exclude) => {
|
21
|
+
var target = {};
|
22
|
+
for (var prop in source)
|
23
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
24
|
+
target[prop] = source[prop];
|
25
|
+
if (source != null && __getOwnPropSymbols)
|
26
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
27
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
28
|
+
target[prop] = source[prop];
|
29
|
+
}
|
30
|
+
return target;
|
31
|
+
};
|
20
32
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
21
33
|
var __async = (__this, __arguments, generator) => {
|
22
34
|
return new Promise((resolve, reject) => {
|
@@ -38,15 +50,31 @@ var __async = (__this, __arguments, generator) => {
|
|
38
50
|
step((generator = generator.apply(__this, __arguments)).next());
|
39
51
|
});
|
40
52
|
};
|
41
|
-
import { html2imgBuffer,
|
53
|
+
import { html2imgBuffer, url2imgBuffer } from "./puppeteer.js";
|
42
54
|
import { Puppeteer } from "puppeteer-core";
|
43
|
-
import {
|
55
|
+
import { createFetch } from "../fetch/index.js";
|
56
|
+
import { z } from "zod/v4";
|
57
|
+
const common = z.object({
|
58
|
+
defaultWaitTimeout: z.number().optional(),
|
59
|
+
waitTimeout: z.number().optional()
|
60
|
+
});
|
61
|
+
const cfConfig = z.object({
|
62
|
+
cfAccountId: z.string().min(1, "Cloudflare account id is required"),
|
63
|
+
cfAPIKey: z.string().min(1, "Cloudflare API key is required")
|
64
|
+
});
|
65
|
+
const puppeteerConfig = z.object({
|
66
|
+
puppeteerURL: z.string().describe("remote puppeteer url, eg: wss://browserless/xxx, https://browserless/xxx").optional()
|
67
|
+
});
|
68
|
+
const strictRenderConfig = z.discriminatedUnion("mode", [
|
69
|
+
z.object(__spreadValues(__spreadValues({ mode: z.literal("cf") }, cfConfig.shape), common.shape)),
|
70
|
+
z.object(__spreadValues(__spreadValues({ mode: z.literal("puppeteer") }, puppeteerConfig.shape), common.shape)),
|
71
|
+
z.object(__spreadValues({ mode: z.literal("custom") }, common.shape))
|
72
|
+
]);
|
73
|
+
const renderSchema = strictRenderConfig.and(z.object(__spreadValues(__spreadValues(__spreadValues({}, cfConfig.shape), puppeteerConfig.shape), common.shape)).partial());
|
44
74
|
class CFBrowserRendering {
|
45
|
-
constructor(accountId, cfAPIKey) {
|
46
|
-
this.accountId = accountId;
|
47
|
-
this.cfAPIKey = cfAPIKey;
|
75
|
+
constructor(accountId, cfAPIKey, logger) {
|
48
76
|
__publicField(this, "f");
|
49
|
-
this.f =
|
77
|
+
this.f = createFetch(logger).baseUrl(`https://api.cloudflare.com/client/v4/accounts/${accountId}`).extend({
|
50
78
|
headers: {
|
51
79
|
Authorization: `Bearer ${cfAPIKey}`
|
52
80
|
}
|
@@ -55,7 +83,12 @@ class CFBrowserRendering {
|
|
55
83
|
post(body) {
|
56
84
|
return this.f.post("/browser-rendering/screenshot", {
|
57
85
|
responseType: "arrayBuffer",
|
58
|
-
body: __spreadProps(__spreadValues({
|
86
|
+
body: __spreadProps(__spreadValues({
|
87
|
+
"screenshotOptions": {
|
88
|
+
quality: 90,
|
89
|
+
type: "webp"
|
90
|
+
}
|
91
|
+
}, body), {
|
59
92
|
"viewport": {
|
60
93
|
"width": 3840,
|
61
94
|
"height": 2160,
|
@@ -106,22 +139,29 @@ const RemoteBrowserGetter = (addr) => {
|
|
106
139
|
}
|
107
140
|
return () => p.connect(opt);
|
108
141
|
};
|
109
|
-
const getImageRender = (
|
142
|
+
const getImageRender = (config) => {
|
143
|
+
const _a = config, { logger, render, browserGetter } = _a, _cfg = __objRest(_a, ["logger", "render", "browserGetter"]);
|
144
|
+
const cfg = strictRenderConfig.parse(_cfg);
|
110
145
|
if (cfg.mode === "cf") {
|
111
|
-
return new CFBrowserRendering(cfg.cfAccountId, cfg.cfAPIKey);
|
146
|
+
return new CFBrowserRendering(cfg.cfAccountId, cfg.cfAPIKey, logger);
|
147
|
+
}
|
148
|
+
if (cfg.mode === "custom") {
|
149
|
+
if (!render) throw new Error("please provide custom img render");
|
150
|
+
return render;
|
112
151
|
}
|
113
152
|
if (cfg.puppeteerURL) {
|
114
153
|
return new PuppeteerRendering(RemoteBrowserGetter(cfg.puppeteerURL));
|
115
154
|
}
|
116
|
-
if (
|
117
|
-
return new PuppeteerRendering(
|
155
|
+
if (browserGetter) {
|
156
|
+
return new PuppeteerRendering(browserGetter);
|
118
157
|
}
|
158
|
+
return null;
|
119
159
|
};
|
120
160
|
export {
|
121
161
|
CFBrowserRendering,
|
122
|
-
RenderOptions as PuppeteerOptions,
|
123
162
|
PuppeteerRendering,
|
124
163
|
RemoteBrowserGetter,
|
125
|
-
getImageRender
|
164
|
+
getImageRender,
|
165
|
+
renderSchema
|
126
166
|
};
|
127
167
|
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/common/render/index.ts"],"sourcesContent":["import {html2imgBuffer, type RenderOptions, url2imgBuffer} from \"./puppeteer\";\nimport {Browser, Puppeteer} from \"puppeteer-core\";\nimport {Fetch, createFetch} from \"../fetch\";\nimport { Logger } from \"@/core\";\nimport {z} from \"zod/v4\";\nexport type { RenderOptions as PuppeteerOptions }\n\nexport interface ImageRender {\n html2img: (html: string, opt: RenderOptions) => Promise<Buffer>\n url2img: (url: string, opt: RenderOptions) => Promise<Buffer>\n}\n\nconst common = z.object({\n defaultWaitTimeout: z.number().optional(),\n waitTimeout: z.number().optional(),\n})\n\nconst cfConfig = z.object({\n cfAccountId: z.string().min(1, \"Cloudflare account id is required\"),\n cfAPIKey: z.string().min(1, \"Cloudflare API key is required\"),\n})\n\nconst puppeteerConfig = z.object({\n puppeteerURL: z.string().describe(\"remote puppeteer url, eg: wss://browserless/xxx, https://browserless/xxx\").optional(),\n})\n\nconst strictRenderConfig = z.discriminatedUnion('mode', [\n z.object({ mode: z.literal('cf'), ...cfConfig.shape, ...common.shape }),\n z.object({ mode: z.literal('puppeteer'), ...puppeteerConfig.shape, ...common.shape }),\n z.object({ mode: z.literal('custom'), ...common.shape }),\n])\n\nexport const renderSchema = strictRenderConfig\n .and(z.object({\n ...cfConfig.shape,\n ...puppeteerConfig.shape,\n ...common.shape\n }).partial())\n\nexport type RenderConfig = z.infer<typeof renderSchema>\n\ntype StrictRenderConfig = z.infer<typeof strictRenderConfig>\n\n\n\n\nexport class CFBrowserRendering implements ImageRender {\n f: Fetch\n constructor(accountId: string, cfAPIKey: string, logger: Logger) {\n this.f = createFetch(logger)\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 type: 'webp'\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\ntype ImageRenderCreateOptions = StrictRenderConfig & {\n logger: Logger,\n render?: ImageRender,\n browserGetter?: () => Promise<Browser>\n}\n\n\nexport const getImageRender = (config: ImageRenderCreateOptions) => {\n const { logger, render, browserGetter, ..._cfg} = config\n const cfg = strictRenderConfig.parse(_cfg)\n if(cfg.mode === 'cf') {\n return new CFBrowserRendering(cfg.cfAccountId, cfg.cfAPIKey, logger)\n }\n if(cfg.mode === 'custom') {\n if(!render) throw new Error(\"please provide custom img render\")\n return render\n }\n if(cfg.puppeteerURL) {\n return new PuppeteerRendering(RemoteBrowserGetter(cfg.puppeteerURL))\n }\n if(browserGetter) {\n return new PuppeteerRendering(browserGetter)\n }\n return null\n}\n\nexport type CreateImageRenderOption = Parameters<typeof getImageRender>[0]\n"],"mappings":"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","names":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/common/render/puppeteer.ts"],"sourcesContent":["import type {Browser, Page, ScreenshotOptions, Viewport} from 'puppeteer-core';\n\n/**\n * Extends Puppeteer's ScreenshotOptions to include an optional viewport setting\n * and a selector for element-specific screenshots.\n */\nexport interface RenderOptions extends ScreenshotOptions {\n /**\n * Sets the viewport of the page.\n */\n viewport?: Viewport;\n /**\n * A CSS selector for an element to screenshot. If provided, the output\n * will be a screenshot of just this element.\n */\n selector?: string;\n /**\n * The maximum time in milliseconds to wait for the selector to appear.\n * If the element is not found within this time, an error will be thrown.\n * Defaults to Puppeteer's default (usually 30000ms).\n */\n timeout?: number;\n}\n\n/**\n * Core rendering function that handles the common logic for taking a screenshot.\n * It's designed to be called by the public-facing wrapper functions.\n * @private\n */\nasync function _renderPageToBuffer(\n browser: Browser | (() => Promise<Browser>),\n options: RenderOptions | undefined,\n loadContent: (page: Page) => Promise<any>,\n defaultScreenshotOptions: ScreenshotOptions,\n defaultViewport: Viewport,\n errorContext?: string,\n): Promise<Buffer> {\n let page: Page | undefined;\n try {\n let b : Browser\n if(typeof browser === \"function\") {\n b = await browser()\n }\n page = await b.newPage();\n\n const viewport = options?.viewport ?? defaultViewport;\n await page.setViewport(viewport);\n\n // The content loading strategy is passed in as a callback.\n await loadContent(page);\n\n const {viewport: _, selector, timeout, ...screenshotOptions} = options || {};\n\n if (selector) {\n const element = await page.waitForSelector(selector, {timeout});\n if (!element) {\n const timeoutMsg = `within the ${timeout || 'default'}ms timeout.`;\n const contextMsg = errorContext ? ` on ${errorContext}` : '';\n throw new Error(`Could not find element with selector: \"${selector}\"${contextMsg} ${timeoutMsg}`);\n }\n return Buffer.from(await element.screenshot(screenshotOptions));\n }\n\n return Buffer.from(await page.screenshot({\n ...defaultScreenshotOptions,\n ...screenshotOptions,\n }))\n } finally {\n if (page) {\n await page.close();\n }\n }\n}\n\n/**\n * Renders an HTML string into an image buffer using a provided Puppeteer browser instance.\n *\n * @param browser The active Puppeteer Browser instance.\n * @param html The HTML content to render.\n * @param options Configuration for the rendering process.\n * @returns A Promise that resolves to a Buffer containing the screenshot image.\n */\nexport async function html2imgBuffer(\n browser: Browser | (() => Promise<Browser>),\n html: string,\n options?: RenderOptions,\n): Promise<Buffer> {\n return _renderPageToBuffer(\n browser,\n options,\n (page) => page.setContent(html, {waitUntil: 'networkidle0'}),\n {fullPage: true},\n {width: 3840, height: 2160, deviceScaleFactor: 2},\n );\n}\n\n/**\n * Captures a screenshot of a given URL and returns it as an image buffer.\n *\n * @param browser The active Puppeteer Browser instance.\n * @param url The URL of the webpage to capture.\n * @param options Configuration for the rendering process.\n * @returns A Promise that resolves to a Buffer containing the screenshot image.\n */\nexport async function url2imgBuffer(\n browser: Browser | (() => Promise<Browser>),\n url: string,\n options?: RenderOptions,\n): Promise<Buffer> {\n return _renderPageToBuffer(\n browser,\n options,\n (page) => page.goto(url, {waitUntil: 'networkidle0'}),\n {fullPage: false},\n {width: 3840, height: 2160, deviceScaleFactor: 2},\n `page: ${url}`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAe,oBACb,SACA,SACA,aACA,0BACA,iBACA,cACiB;AAAA;AApCnB;AAqCE,QAAI;AACJ,QAAI;AACF,UAAI;AACJ,UAAG,OAAO,YAAY,YAAY;AAChC,YAAI,MAAM,QAAQ;AAAA,MACpB;AACA,aAAO,MAAM,EAAE,QAAQ;AAEvB,YAAM,YAAW,wCAAS,aAAT,YAAqB;AACtC,YAAM,KAAK,YAAY,QAAQ;AAG/B,YAAM,YAAY,IAAI;AAEtB,YAA+D,gBAAW,CAAC,GAApE,YAAU,GAAG,UAAU,QAnDlC,IAmDmE,IAArB,8BAAqB,IAArB,CAAnC,YAAa,YAAU;AAE9B,UAAI,UAAU;AACZ,cAAM,UAAU,MAAM,KAAK,gBAAgB,UAAU,EAAC,QAAO,CAAC;AAC9D,YAAI,CAAC,SAAS;AACZ,gBAAM,aAAa,cAAc,WAAW,SAAS;AACrD,gBAAM,aAAa,eAAe,OAAO,YAAY,KAAK;AAC1D,gBAAM,IAAI,MAAM,0CAA0C,QAAQ,IAAI,UAAU,IAAI,UAAU,EAAE;AAAA,QAClG;AACA,eAAO,OAAO,KAAK,MAAM,QAAQ,WAAW,iBAAiB,CAAC;AAAA,MAChE;AAEA,aAAO,OAAO,KAAK,MAAM,KAAK,WAAW,kCACpC,2BACA,kBACJ,CAAC;AAAA,IACJ,UAAE;AACA,UAAI,MAAM;AACR,cAAM,KAAK,MAAM;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA;AAUA,SAAsB,eACpB,SACA,MACA,SACiB;AAAA;AACjB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,CAAC,SAAS,KAAK,WAAW,MAAM,EAAC,WAAW,eAAc,CAAC;AAAA,MAC3D,EAAC,UAAU,KAAI;AAAA,MACf,EAAC,OAAO,MAAM,QAAQ,MAAM,mBAAmB,EAAC;AAAA,IAClD;AAAA,EACF;AAAA;AAUA,SAAsB,cACpB,SACA,KACA,SACiB;AAAA;AACjB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,CAAC,SAAS,KAAK,KAAK,KAAK,EAAC,WAAW,eAAc,CAAC;AAAA,MACpD,EAAC,UAAU,MAAK;AAAA,MAChB,EAAC,OAAO,MAAM,QAAQ,MAAM,mBAAmB,EAAC;AAAA,MAChD,SAAS,GAAG;AAAA,IACd;AAAA,EACF;AAAA;","names":[]}
|