beatsaber-bot-core 0.2.0-rc.16 → 0.2.0-rc.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/cjs/schedules/temp.js +6 -2
  2. package/dist/cjs/schedules/temp.js.map +1 -1
  3. package/dist/cjs/service/render/index.js +1 -1
  4. package/dist/cjs/service/render/index.js.map +1 -1
  5. package/dist/esm/cmd/bind/bind-id-beatleader.js +1 -1
  6. package/dist/esm/cmd/bind/bind-id-beatsaver.js +1 -1
  7. package/dist/esm/cmd/bind/bind-scoresaber.js +1 -1
  8. package/dist/esm/cmd/bind/index.js +5 -5
  9. package/dist/esm/cmd/bsmap/id-search.js +2 -2
  10. package/dist/esm/cmd/bsmap/key-search.js +1 -1
  11. package/dist/esm/cmd/bsmap/latest.js +1 -1
  12. package/dist/esm/cmd/deprecated/tmp.js +1 -1
  13. package/dist/esm/cmd/index.js +11 -11
  14. package/dist/esm/cmd/rank.js +3 -3
  15. package/dist/esm/cmd/score.js +5 -5
  16. package/dist/esm/cmd/subscribe/beatleader.js +1 -1
  17. package/dist/esm/cmd/subscribe/beatsaver.js +1 -1
  18. package/dist/esm/cmd/subscribe/id-beatleader-score.js +1 -1
  19. package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +1 -1
  20. package/dist/esm/cmd/subscribe/index.js +5 -5
  21. package/dist/esm/cmd/subscribe/subjoin.js +2 -2
  22. package/dist/esm/cmd/subscribe/subleave.js +1 -1
  23. package/dist/esm/cmd/subscribe/unsubscribe.js +2 -2
  24. package/dist/esm/components/components/RankDifficulty.js +1 -1
  25. package/dist/esm/components/components/bl-rank-score-item.js +2 -2
  26. package/dist/esm/components/components/bl-score-item.js +1 -1
  27. package/dist/esm/components/components/icons/RankIcon.js +2 -2
  28. package/dist/esm/components/components/scoregraph.js +3 -3
  29. package/dist/esm/components/components/socre-badge.js +1 -1
  30. package/dist/esm/components/components/ss-rank-score-item.js +2 -2
  31. package/dist/esm/components/components/ss-score-item.js +1 -1
  32. package/dist/esm/components/pages/bl-player.js +7 -7
  33. package/dist/esm/components/pages/bl-score-with-rank.js +6 -6
  34. package/dist/esm/components/pages/bl-score.js +3 -3
  35. package/dist/esm/components/pages/bs-map.js +5 -5
  36. package/dist/esm/components/pages/index.js +5 -5
  37. package/dist/esm/components/pages/ss-player.js +3 -3
  38. package/dist/esm/components/utils/bl/bsorReplayAcc.js +2 -2
  39. package/dist/esm/components/utils/index.js +2 -2
  40. package/dist/esm/config.js +1 -1
  41. package/dist/esm/index.js +10 -10
  42. package/dist/esm/infra/i18n/index.js +2 -2
  43. package/dist/esm/infra/index.js +3 -3
  44. package/dist/esm/infra/support/fetch/index.js +3 -3
  45. package/dist/esm/infra/support/render/index.js +2 -2
  46. package/dist/esm/interface/cmd/builder.js +1 -1
  47. package/dist/esm/interface/index.js +4 -4
  48. package/dist/esm/schedules/index.js +1 -1
  49. package/dist/esm/schedules/temp.js +6 -2
  50. package/dist/esm/schedules/temp.js.map +1 -1
  51. package/dist/esm/service/api/base/aioclient.js +1 -1
  52. package/dist/esm/service/api/base/blclient.js +1 -1
  53. package/dist/esm/service/api/base/bsclient.js +2 -2
  54. package/dist/esm/service/api/base/index.js +4 -4
  55. package/dist/esm/service/api/base/ssclient.js +2 -2
  56. package/dist/esm/service/api/index.js +5 -5
  57. package/dist/esm/service/api/interfaces/beatleader/index.js +5 -5
  58. package/dist/esm/service/api/interfaces/beatsaver/index.js +5 -5
  59. package/dist/esm/service/api/interfaces/scoresaber/index.js +3 -3
  60. package/dist/esm/service/index.js +2 -2
  61. package/dist/esm/service/render/index.js +8 -8
  62. package/dist/esm/service/render/index.js.map +1 -1
  63. package/dist/esm/ws/beatsaver.js +1 -1
  64. package/dist/esm/ws/index.js +3 -3
  65. package/package.json +2 -2
@@ -46,8 +46,12 @@ const LBScoreMonitor = (c) => __async(null, null, function* () {
46
46
  return;
47
47
  }
48
48
  const [hitbuf, scorebuf] = yield Promise.all([
49
- c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt"),
50
- c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/score")
49
+ c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt", {
50
+ selector: "#render-result"
51
+ }),
52
+ c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/score", {
53
+ selector: "#render-result"
54
+ })
51
55
  ]);
52
56
  for (const group of channels) {
53
57
  const session = c.botService.getSessionByChannelInfo(group.groupChannel);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/schedules/temp.ts"],"sourcesContent":["import { ScheduleTaskCtx } from './interface'\n\nexport const LBScoreMonitor = async <T>(c: ScheduleTaskCtx<T>) => {\n const channels = await c.services.db.getSubscriptionsByType('lb-rank')\n if (channels.length <= 0) {\n return\n }\n const [hitbuf, scorebuf] = await Promise.all([\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/hitcnt'),\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/score'),\n ])\n for (const group of channels) {\n const session = c.botService.getSessionByChannelInfo(group.groupChannel)\n if (!session) {\n continue\n }\n await session.sendImgBuffer(hitbuf, 'image/png')\n await session.sendImgBuffer(scorebuf, 'image/png')\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,iBAAiB,CAAU,MAA0B;AAChE,QAAM,WAAW,MAAM,EAAE,SAAS,GAAG,uBAAuB,SAAS;AACrE,MAAI,SAAS,UAAU,GAAG;AACxB;AAAA,EACF;AACA,QAAM,CAAC,QAAQ,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC3C,EAAE,SAAS,OAAO,UAAU,sCAAsC;AAAA,IAClE,EAAE,SAAS,OAAO,UAAU,qCAAqC;AAAA,EACnE,CAAC;AACD,aAAW,SAAS,UAAU;AAC5B,UAAM,UAAU,EAAE,WAAW,wBAAwB,MAAM,YAAY;AACvE,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,QAAQ,cAAc,QAAQ,WAAW;AAC/C,UAAM,QAAQ,cAAc,UAAU,WAAW;AAAA,EACnD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/schedules/temp.ts"],"sourcesContent":["import { ScheduleTaskCtx } from './interface'\n\nexport const LBScoreMonitor = async <T>(c: ScheduleTaskCtx<T>) => {\n const channels = await c.services.db.getSubscriptionsByType('lb-rank')\n if (channels.length <= 0) {\n return\n }\n const [hitbuf, scorebuf] = await Promise.all([\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/hitcnt', {\n selector: '#render-result',\n }),\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/score', {\n selector: '#render-result',\n }),\n ])\n for (const group of channels) {\n const session = c.botService.getSessionByChannelInfo(group.groupChannel)\n if (!session) {\n continue\n }\n await session.sendImgBuffer(hitbuf, 'image/png')\n await session.sendImgBuffer(scorebuf, 'image/png')\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,iBAAiB,CAAU,MAA0B;AAChE,QAAM,WAAW,MAAM,EAAE,SAAS,GAAG,uBAAuB,SAAS;AACrE,MAAI,SAAS,UAAU,GAAG;AACxB;AAAA,EACF;AACA,QAAM,CAAC,QAAQ,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC3C,EAAE,SAAS,OAAO,UAAU,wCAAwC;AAAA,MAClE,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,EAAE,SAAS,OAAO,UAAU,uCAAuC;AAAA,MACjE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,aAAW,SAAS,UAAU;AAC5B,UAAM,UAAU,EAAE,WAAW,wBAAwB,MAAM,YAAY;AACvE,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,QAAQ,cAAc,QAAQ,WAAW;AAC/C,UAAM,QAAQ,cAAc,UAAU,WAAW;AAAA,EACnD;AACF;","names":[]}
@@ -161,7 +161,7 @@ class RenderService {
161
161
  renderUrl(url, renderOption) {
162
162
  return __async(this, null, function* () {
163
163
  var _a, _b;
164
- (_a = renderOption.onRenderStart) == null ? void 0 : _a.call(renderOption);
164
+ (_a = renderOption == null ? void 0 : renderOption.onRenderStart) == null ? void 0 : _a.call(renderOption);
165
165
  try {
166
166
  return this.imageRender.url2img(url, renderOption);
167
167
  } catch (e) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/service/render/index.ts"],"sourcesContent":["import {IRenderService, RenderOption} from './interfaces'\nimport { getHtml } from '@/components'\nimport { PuppeteerError, TimeoutError } from 'puppeteer-core'\nimport { Platform } from '@/interface'\nimport {getBLPlayerComp, getBLRankScoreComp, getBSMapComp, getSSPlayerComp} from '@/components/pages'\nimport {preferenceKey} from \"../preference\";\nimport {ImageRenderError, RequestError} from \"@/infra/errors\";\nimport createQrcode from \"@/components/utils/qrcode\";\nimport {APIService} from \"../api\";\nimport {BSMap} from \"../api/interfaces/beatsaver\";\nimport {CreateImageRenderOption, getImageRender, ImageRender} from \"@/infra/support/render\";\n\n\nconst getPreferenceKey = (platform: string) => {\n return platform == Platform.SS\n ? preferenceKey.ssProfileRenderImg.key\n : preferenceKey.blProfileRenderImg.key\n}\n\nexport class RenderService implements IRenderService {\n private constructor(\n private api: APIService,\n private imageRender: ImageRender\n ) {}\n\n static create(imgRenderConfig: CreateImageRenderOption & { api: APIService }) {\n const { api, ...config} = imgRenderConfig\n return new RenderService(api, getImageRender(config))\n }\n\n async renderRank(\n accountId: string,\n platform: Platform,\n renderOpts?: RenderOption\n ) {\n try {\n let bg = (await renderOpts?.userPreference?.get<string>(getPreferenceKey(platform)))\n bg = bg || 'https://www.loliapi.com/acg/pc/'\n let html: string\n if (platform == Platform.BL) {\n const { scores, userInfo } = await this.api.getBLPlayerScoresWithUserInfo(accountId)\n html = getHtml(getBLPlayerComp(scores, userInfo, bg))\n } else {\n const { scores, userInfo } = await this.api.getSSPlayerRecentScoreWithUserInfo(accountId)\n html = getHtml(getSSPlayerComp(scores, userInfo, bg))\n }\n return this.imageRender.html2img(html, {selector: '#render-result', ...renderOpts})\n }catch (e) {\n if (e instanceof TimeoutError || e instanceof PuppeteerError) {\n throw new ImageRenderError()\n }\n throw e\n }\n }\n\n async renderScore(\n scoreId: string,\n renderOpts?: RenderOption\n ) {\n const bg = (await renderOpts?.userPreference?.get<string>(preferenceKey.blScoreImg.key))\n ?? 'https://www.loliapi.com/acg/pc/'\n try {\n const { score, statistic, bsor, bsMap } =\n await this.api.getScoreAndBSMapByScoreId(scoreId)\n\n const { aroundScores, regionTopScores, difficulties } =\n await this.api.getAroundScoreAndRegionScoreByRankAndPage(\n score.leaderboardId,\n score.rank,\n score.player.country\n )\n return this.imageRender.html2img(\n getHtml(getBLRankScoreComp(score, aroundScores, regionTopScores, difficulties, bsMap, statistic, bsor, bg)),\n {selector: '#render-result', ...renderOpts}\n )\n }catch (e) {\n if (e instanceof RequestError) {\n throw e\n }\n throw new ImageRenderError()\n }\n }\n\n async renderMapById(\n mapId: string,\n renderOption: RenderOption\n ) {\n const map = await this.api.BeatSaver.searchMapById(mapId)\n return this.renderMap(map, renderOption)\n }\n\n async renderMap(\n bsMap: BSMap,\n renderOption?: RenderOption\n ) {\n const previewQrUrl = await createQrcode(`https://allpoland.github.io/ArcViewer/?id=${bsMap.id}`)\n const bsMapQrUrl = await createQrcode(`https://beatsaver.com/maps/${bsMap.id}`)\n return this.imageRender.html2img(\n getHtml(getBSMapComp(bsMap, bsMapQrUrl, previewQrUrl)), {selector: '#render-result', ...renderOption}\n )\n }\n\n async renderUrl(url: string, renderOption?: RenderOption) {\n renderOption.onRenderStart?.()\n try {\n return this.imageRender.url2img(url, renderOption)\n }catch (e) {\n renderOption?.onRenderError?.(e)\n }\n }\n}\n"],"mappings":"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","names":["createQrcode"]}
1
+ {"version":3,"sources":["../../../../src/service/render/index.ts"],"sourcesContent":["import {IRenderService, RenderOption} from './interfaces'\nimport { getHtml } from '@/components'\nimport { PuppeteerError, TimeoutError } from 'puppeteer-core'\nimport { Platform } from '@/interface'\nimport {getBLPlayerComp, getBLRankScoreComp, getBSMapComp, getSSPlayerComp} from '@/components/pages'\nimport {preferenceKey} from \"../preference\";\nimport {ImageRenderError, RequestError} from \"@/infra/errors\";\nimport createQrcode from \"@/components/utils/qrcode\";\nimport {APIService} from \"../api\";\nimport {BSMap} from \"../api/interfaces/beatsaver\";\nimport {CreateImageRenderOption, getImageRender, ImageRender} from \"@/infra/support/render\";\n\n\nconst getPreferenceKey = (platform: string) => {\n return platform == Platform.SS\n ? preferenceKey.ssProfileRenderImg.key\n : preferenceKey.blProfileRenderImg.key\n}\n\nexport class RenderService implements IRenderService {\n private constructor(\n private api: APIService,\n private imageRender: ImageRender\n ) {}\n\n static create(imgRenderConfig: CreateImageRenderOption & { api: APIService }) {\n const { api, ...config} = imgRenderConfig\n return new RenderService(api, getImageRender(config))\n }\n\n async renderRank(\n accountId: string,\n platform: Platform,\n renderOpts?: RenderOption\n ) {\n try {\n let bg = (await renderOpts?.userPreference?.get<string>(getPreferenceKey(platform)))\n bg = bg || 'https://www.loliapi.com/acg/pc/'\n let html: string\n if (platform == Platform.BL) {\n const { scores, userInfo } = await this.api.getBLPlayerScoresWithUserInfo(accountId)\n html = getHtml(getBLPlayerComp(scores, userInfo, bg))\n } else {\n const { scores, userInfo } = await this.api.getSSPlayerRecentScoreWithUserInfo(accountId)\n html = getHtml(getSSPlayerComp(scores, userInfo, bg))\n }\n return this.imageRender.html2img(html, {selector: '#render-result', ...renderOpts})\n }catch (e) {\n if (e instanceof TimeoutError || e instanceof PuppeteerError) {\n throw new ImageRenderError()\n }\n throw e\n }\n }\n\n async renderScore(\n scoreId: string,\n renderOpts?: RenderOption\n ) {\n const bg = (await renderOpts?.userPreference?.get<string>(preferenceKey.blScoreImg.key))\n ?? 'https://www.loliapi.com/acg/pc/'\n try {\n const { score, statistic, bsor, bsMap } =\n await this.api.getScoreAndBSMapByScoreId(scoreId)\n\n const { aroundScores, regionTopScores, difficulties } =\n await this.api.getAroundScoreAndRegionScoreByRankAndPage(\n score.leaderboardId,\n score.rank,\n score.player.country\n )\n return this.imageRender.html2img(\n getHtml(getBLRankScoreComp(score, aroundScores, regionTopScores, difficulties, bsMap, statistic, bsor, bg)),\n {selector: '#render-result', ...renderOpts}\n )\n }catch (e) {\n if (e instanceof RequestError) {\n throw e\n }\n throw new ImageRenderError()\n }\n }\n\n async renderMapById(\n mapId: string,\n renderOption: RenderOption\n ) {\n const map = await this.api.BeatSaver.searchMapById(mapId)\n return this.renderMap(map, renderOption)\n }\n\n async renderMap(\n bsMap: BSMap,\n renderOption?: RenderOption\n ) {\n const previewQrUrl = await createQrcode(`https://allpoland.github.io/ArcViewer/?id=${bsMap.id}`)\n const bsMapQrUrl = await createQrcode(`https://beatsaver.com/maps/${bsMap.id}`)\n return this.imageRender.html2img(\n getHtml(getBSMapComp(bsMap, bsMapQrUrl, previewQrUrl)), {selector: '#render-result', ...renderOption}\n )\n }\n\n async renderUrl(url: string, renderOption?: RenderOption) {\n renderOption?.onRenderStart?.()\n try {\n return this.imageRender.url2img(url, renderOption)\n }catch (e) {\n renderOption?.onRenderError?.(e)\n }\n }\n}\n"],"mappings":"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","names":["createQrcode"]}
@@ -22,7 +22,7 @@ import {
22
22
  BLIDNotFoundError,
23
23
  SessionPromotionCancelError,
24
24
  SessionPromotionTimeoutError
25
- } from "@/infra/errors";
25
+ } from "../../infra/errors/index.js";
26
26
  const handleBeatLeaderIDBind = (c) => __async(null, null, function* () {
27
27
  const player = yield c.services.api.BeatLeader.getPlayerInfo(c.input);
28
28
  if (!player) {
@@ -22,7 +22,7 @@ import {
22
22
  BSIDNotFoundError,
23
23
  SessionPromotionCancelError,
24
24
  SessionPromotionTimeoutError
25
- } from "@/infra/errors";
25
+ } from "../../infra/errors/index.js";
26
26
  const handleBeatSaverIDBind = (c) => __async(null, null, function* () {
27
27
  const mapper = yield c.services.api.BeatSaver.getBSMapperById(c.input);
28
28
  if (!mapper) {
@@ -22,7 +22,7 @@ import {
22
22
  SessionPromotionCancelError,
23
23
  SessionPromotionTimeoutError,
24
24
  SSIDNotFoundError
25
- } from "@/infra/errors";
25
+ } from "../../infra/errors/index.js";
26
26
  const handleScoreSaberBind = (c) => __async(null, null, function* () {
27
27
  const scoreSaberUser = yield c.services.api.ScoreSaber.getScoreUserById(c.input);
28
28
  if (!scoreSaberUser) {
@@ -18,11 +18,11 @@ var __async = (__this, __arguments, generator) => {
18
18
  step((generator = generator.apply(__this, __arguments)).next());
19
19
  });
20
20
  };
21
- import { handleScoreSaberBind } from "./bind-scoresaber";
22
- import { Platform } from "@/interface";
23
- import { handleBeatLeaderIDBind } from "@/cmd/bind/bind-id-beatleader";
24
- import { handleBeatSaverIDBind } from "@/cmd/bind/bind-id-beatsaver";
25
- import { CommandBuilder } from "@/interface/cmd/builder";
21
+ import { handleScoreSaberBind } from "./bind-scoresaber.js";
22
+ import { Platform } from "../../interface/index.js";
23
+ import { handleBeatLeaderIDBind } from "../../cmd/bind/bind-id-beatleader.js";
24
+ import { handleBeatSaverIDBind } from "../../cmd/bind/bind-id-beatsaver.js";
25
+ import { CommandBuilder } from "../../interface/cmd/builder.js";
26
26
  var bind_default = () => new CommandBuilder().setName("bind").addOption("p", "platform:string").addAlias("bbbind").addAlias("bindbs", { options: { p: "bs" } }).addAlias("bindbl", { options: { p: "bl" } }).addAlias("bindss", { options: { p: "ss" } }).addAlias("bbbindbs", { options: { p: "bs" } }).addAlias("bbbindbl", { options: { p: "bl" } }).addAlias("bbbindss", { options: { p: "ss" } }).addAlias("ssbind", { options: { p: "ss" } }).addAlias("blbind", { options: { p: "bl" } }).addAlias("bsbind", { options: { p: "bs" } }).setDescription("clear an auth account relate info").setExecutor((c) => __async(null, null, function* () {
27
27
  if (!c.options.p) {
28
28
  c.options.p = "ss";
@@ -18,8 +18,8 @@ var __async = (__this, __arguments, generator) => {
18
18
  step((generator = generator.apply(__this, __arguments)).next());
19
19
  });
20
20
  };
21
- import { InvalidMapIdError, MapIdNotFoundError } from "@/infra/errors";
22
- import { CommandBuilder } from "@/interface/cmd/builder";
21
+ import { InvalidMapIdError, MapIdNotFoundError } from "../../infra/errors/index.js";
22
+ import { CommandBuilder } from "../../interface/cmd/builder.js";
23
23
  const mapIdReg = /^[a-fA-F0-9]{1,6}$/;
24
24
  var id_search_default = () => new CommandBuilder().setName("id").addAlias("/id").addAlias("bbid").addAlias("/bbid").addAlias("!bsr").setDescription("clear an auth account relate info").setExecutor((c) => __async(null, null, function* () {
25
25
  if (!c.input || c.input && c.input.length < 1) {
@@ -18,7 +18,7 @@ var __async = (__this, __arguments, generator) => {
18
18
  step((generator = generator.apply(__this, __arguments)).next());
19
19
  });
20
20
  };
21
- import { CommandBuilder } from "@/interface/cmd/builder";
21
+ import { CommandBuilder } from "../../interface/cmd/builder.js";
22
22
  var key_search_default = () => new CommandBuilder().setName("search").addAlias("bbsou").addAlias("bbsearch").addAlias("bbmap").setDescription("search beatmap by keyword").setExecutor((c) => __async(null, null, function* () {
23
23
  let key = c.input;
24
24
  if (key.length > 15) {
@@ -18,7 +18,7 @@ var __async = (__this, __arguments, generator) => {
18
18
  step((generator = generator.apply(__this, __arguments)).next());
19
19
  });
20
20
  };
21
- import { CommandBuilder } from "@/interface/cmd/builder";
21
+ import { CommandBuilder } from "../../interface/cmd/builder.js";
22
22
  var latest_default = () => new CommandBuilder().setName("latest").addAlias("bbnew").addAlias("blnew").addAlias("ssnew").addAlias("bsnew").addAlias("/blnew").addAlias("/ssnew").addAlias("/bsnew").setDescription("get latest 3 beatmap").setExecutor((c) => __async(null, null, function* () {
23
23
  const res = yield c.services.api.BeatSaver.getLatestMaps(3);
24
24
  const text = c.session.text("commands.bsbot.latest.info");
@@ -18,7 +18,7 @@ var __async = (__this, __arguments, generator) => {
18
18
  step((generator = generator.apply(__this, __arguments)).next());
19
19
  });
20
20
  };
21
- import { CommandBuilder } from "@/interface/cmd/builder";
21
+ import { CommandBuilder } from "../../interface/cmd/builder.js";
22
22
  var tmp_default = () => new CommandBuilder().setName("lb").addAlias("/lb").addAlias("bblb").addAlias("\u4E50\u56E2\u65B0\u8D5B\u5B63").addAlias("\u4E50\u56E2\u699C\u5355").setExecutor((c) => __async(null, null, function* () {
23
23
  const [hit, score] = yield Promise.all([
24
24
  c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt", {
@@ -1,14 +1,14 @@
1
- import IdSearch from "./bsmap/id-search";
2
- import KeySearch from "./bsmap/key-search";
3
- import Latest from "./bsmap/latest";
4
- import Rank from "./rank";
5
- import Score from "./score";
6
- import Subscribe from "./subscribe";
7
- import Subjoin from "./subscribe/subjoin";
8
- import Subleave from "./subscribe/subleave";
9
- import Unsubscribe from "./subscribe/unsubscribe";
10
- import Bind from "./bind";
11
- import Tmp from "./deprecated/tmp";
1
+ import IdSearch from "./bsmap/id-search.js";
2
+ import KeySearch from "./bsmap/key-search.js";
3
+ import Latest from "./bsmap/latest.js";
4
+ import Rank from "./rank.js";
5
+ import Score from "./score.js";
6
+ import Subscribe from "./subscribe/index.js";
7
+ import Subjoin from "./subscribe/subjoin.js";
8
+ import Subleave from "./subscribe/subleave.js";
9
+ import Unsubscribe from "./subscribe/unsubscribe.js";
10
+ import Bind from "./bind/index.js";
11
+ import Tmp from "./deprecated/tmp.js";
12
12
  function applyCommand(...fns) {
13
13
  return fns.map((fn) => fn());
14
14
  }
@@ -18,9 +18,9 @@ var __async = (__this, __arguments, generator) => {
18
18
  step((generator = generator.apply(__this, __arguments)).next());
19
19
  });
20
20
  };
21
- import { CommandBuilder } from "@/interface/cmd/builder";
22
- import { parsePlatform, Platform } from "@/interface";
23
- import { UnknownUserIDError } from "@/infra/errors";
21
+ import { CommandBuilder } from "../interface/cmd/builder.js";
22
+ import { parsePlatform, Platform } from "../interface/index.js";
23
+ import { UnknownUserIDError } from "../infra/errors/index.js";
24
24
  var rank_default = () => CommandBuilder.create("rank").addOption("p", "platform:string").setDescription("clear an auth account relate info").setExecutor((c) => __async(null, null, function* () {
25
25
  let uid = c.session.u.id;
26
26
  if (c.session.mentions && c.session.mentions.length > 0) {
@@ -18,14 +18,14 @@ var __async = (__this, __arguments, generator) => {
18
18
  step((generator = generator.apply(__this, __arguments)).next());
19
19
  });
20
20
  };
21
- import { CommandBuilder } from "@/interface/cmd/builder";
22
- import { Platform } from "@/interface";
23
- import { convertDiff } from "@/utils";
21
+ import { CommandBuilder } from "../interface/cmd/builder.js";
22
+ import { Platform } from "../interface/index.js";
23
+ import { convertDiff } from "../utils/index.js";
24
24
  import {
25
25
  AccountBindingNotFoundError,
26
26
  ScoreNotFoundError
27
- } from "@/infra/errors";
28
- import { NotFoundError } from "@/infra/support/fetch/error";
27
+ } from "../infra/errors/index.js";
28
+ import { NotFoundError } from "../infra/support/fetch/error.js";
29
29
  var score_default = () => new CommandBuilder().setName("score").addOption("d", "difficulty:string").addOption("m", "mode:string").addAlias("bbscore").addAlias("/score").setExecutor((c) => __async(null, null, function* () {
30
30
  var _a;
31
31
  let uid = c.session.u.id;
@@ -37,7 +37,7 @@ var __async = (__this, __arguments, generator) => {
37
37
  step((generator = generator.apply(__this, __arguments)).next());
38
38
  });
39
39
  };
40
- import { SubscriptionExistError } from "@/infra/errors";
40
+ import { SubscriptionExistError } from "../../infra/errors/index.js";
41
41
  const beatleader = (c) => __async(null, null, function* () {
42
42
  const { blSub } = yield c.services.db.getSubscriptionsByGID(c.session.g.id);
43
43
  if (blSub) {
@@ -37,7 +37,7 @@ var __async = (__this, __arguments, generator) => {
37
37
  step((generator = generator.apply(__this, __arguments)).next());
38
38
  });
39
39
  };
40
- import { SubscriptionExistError } from "@/infra/errors";
40
+ import { SubscriptionExistError } from "../../infra/errors/index.js";
41
41
  const beatsaver = (c) => __async(null, null, function* () {
42
42
  const { bsMapSub } = yield c.services.db.getSubscriptionsByGID(c.session.g.id);
43
43
  if (bsMapSub) {
@@ -37,7 +37,7 @@ var __async = (__this, __arguments, generator) => {
37
37
  step((generator = generator.apply(__this, __arguments)).next());
38
38
  });
39
39
  };
40
- import { BLIDNotFoundError, SubscriptionExistError } from "@/infra/errors";
40
+ import { BLIDNotFoundError, SubscriptionExistError } from "../../infra/errors/index.js";
41
41
  const idBeatleaderScore = (c) => __async(null, null, function* () {
42
42
  if (!c.input) {
43
43
  return;
@@ -37,7 +37,7 @@ var __async = (__this, __arguments, generator) => {
37
37
  step((generator = generator.apply(__this, __arguments)).next());
38
38
  });
39
39
  };
40
- import { BSIDNotFoundError, SubscriptionExistError } from "@/infra/errors";
40
+ import { BSIDNotFoundError, SubscriptionExistError } from "../../infra/errors/index.js";
41
41
  const idBeatsaverMapper = (c) => __async(null, null, function* () {
42
42
  if (!c.input) {
43
43
  return;
@@ -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/cmd/builder";
22
- import { beatleader } from "@/cmd/subscribe/beatleader";
23
- import { beatsaver } from "@/cmd/subscribe/beatsaver";
24
- import { NoneSubscriptionExistError } from "@/infra/errors";
25
- import { idBeatsaverMapper } from "@/cmd/subscribe/id-beatsaver-mapper";
21
+ import { CommandBuilder } from "../../interface/cmd/builder.js";
22
+ import { beatleader } from "../../cmd/subscribe/beatleader.js";
23
+ import { beatsaver } from "../../cmd/subscribe/beatsaver.js";
24
+ import { NoneSubscriptionExistError } from "../../infra/errors/index.js";
25
+ import { idBeatsaverMapper } from "../../cmd/subscribe/id-beatsaver-mapper.js";
26
26
  var subscribe_default = () => new CommandBuilder().setName("subscribe").addAlias("bbsub").addAlias("/subbl", { options: { type: "beatleader" } }).addAlias("/subbs", { options: { type: "beatsaver" } }).addAlias("blsub", { options: { type: "beatleader" } }).addAlias("bssub", { options: { type: "beatsaver" } }).addAlias("subbl", { options: { type: "beatleader" } }).addAlias("subbs", { options: { type: "beatsaver" } }).addAlias("subbl", { options: { type: "beatleader" } }).addAlias("submapper", { options: { type: "bsmapper" } }).addOption("type", "type:string").setDescription("clear an auth account relate info").setExecutor((c) => __async(null, null, function* () {
27
27
  var _a, _b;
28
28
  if (c.options.type === "beatsaver") {
@@ -18,8 +18,8 @@ var __async = (__this, __arguments, generator) => {
18
18
  step((generator = generator.apply(__this, __arguments)).next());
19
19
  });
20
20
  };
21
- import { CommandBuilder } from "@/interface/cmd/builder";
22
- import { SubscriptionNotExistError } from "@/infra/errors";
21
+ import { CommandBuilder } from "../../interface/cmd/builder.js";
22
+ import { SubscriptionNotExistError } from "../../infra/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
25
  c.session.g.id
@@ -18,7 +18,7 @@ var __async = (__this, __arguments, generator) => {
18
18
  step((generator = generator.apply(__this, __arguments)).next());
19
19
  });
20
20
  };
21
- import { CommandBuilder } from "@/interface/cmd/builder";
21
+ import { CommandBuilder } from "../../interface/cmd/builder.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
24
  c.session.g.id,
@@ -37,11 +37,11 @@ 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";
40
+ import { CommandBuilder } from "../../interface/cmd/builder.js";
41
41
  import {
42
42
  BSMapperSubscriptionNotExistError,
43
43
  SubscriptionNotExistError
44
- } from "@/infra/errors";
44
+ } from "../../infra/errors/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
47
  c.session.g.id
@@ -19,7 +19,7 @@ var __spreadValues = (a, b) => {
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  import { jsx, jsxs } from "react/jsx-runtime";
21
21
  import { BarChart } from "lucide-react";
22
- import { diffConv } from "@/components/utils";
22
+ import { diffConv } from "../../components/utils/index.js";
23
23
  function RankDifficulty({
24
24
  difficulty,
25
25
  star,
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import dayjs from "dayjs";
3
- import Flags, { EarchIcon } from "@/components/components/flag";
4
- import { formatDate, numberWithCommas } from "@/components/utils";
3
+ import Flags, { EarchIcon } from "../../components/components/flag.js";
4
+ import { formatDate, numberWithCommas } from "../../components/utils/index.js";
5
5
  function BlRankScoreItem(props) {
6
6
  return /* @__PURE__ */ jsx(
7
7
  "div",
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { BarChart, Key, Pin, Star, Wrench } from "lucide-react";
3
- import { diffConv, formatRelativeTimeByDay } from "../utils";
3
+ import { diffConv, formatRelativeTimeByDay } from "../utils/index.js";
4
4
  const getModifiers = (modifiers) => {
5
5
  return modifiers ? modifiers.split(",") : [];
6
6
  };
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import BeatLeaderIcon from "./BeatLeader";
3
- import ScoreSaberIcon from "./ScoreSaberIcon";
2
+ import BeatLeaderIcon from "./BeatLeader.js";
3
+ import ScoreSaberIcon from "./ScoreSaberIcon.js";
4
4
  function RankIcon({
5
5
  blrank,
6
6
  ssrank
@@ -1,10 +1,10 @@
1
1
  import { Fragment, jsx } from "react/jsx-runtime";
2
- import { processAccGraphs, processUnderswings } from "../utils/bl/bsorReplayAcc";
2
+ import { processAccGraphs, processUnderswings } from "../utils/bl/bsorReplayAcc.js";
3
3
  import {
4
4
  createDistanceWeightFunction,
5
5
  createMinMaxCounter
6
- } from "../utils/bl/beatleader";
7
- import getStatistic from "../utils/bl/stastic";
6
+ } from "../utils/bl/beatleader.js";
7
+ import getStatistic from "../utils/bl/stastic.js";
8
8
  import Chart from "chart.js/auto";
9
9
  import { createCanvas } from "@napi-rs/canvas";
10
10
  function formatNumber(num, digits = 2, addSign = false, notANumber = null) {
@@ -1,5 +1,5 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { twJoin } from "../utils/tw-join";
2
+ import { twJoin } from "../utils/tw-join.js";
3
3
  function ScoreBadge({
4
4
  name,
5
5
  count,
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import dayjs from "dayjs";
3
- import Flags, { EarchIcon } from "@/components/components/flag";
4
- import { formatDate, numberWithCommas } from "@/components/utils";
3
+ import Flags, { EarchIcon } from "../../components/components/flag.js";
4
+ import { formatDate, numberWithCommas } from "../../components/utils/index.js";
5
5
  function SSRankScoreItem(props) {
6
6
  return /* @__PURE__ */ jsx(
7
7
  "div",
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { BarChart, Key, Star, Wrench } from "lucide-react";
3
- import { diffConv, formatRelativeTimeByDay } from "../utils";
3
+ import { diffConv, formatRelativeTimeByDay } from "../utils/index.js";
4
4
  const getModifiers = (modifiers) => {
5
5
  return modifiers ? modifiers.split(",") : [];
6
6
  };
@@ -18,13 +18,13 @@ var __spreadValues = (a, b) => {
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
21
- import getPart from "../utils/bl/getPart";
22
- import ScoreBadge from "../components/socre-badge";
23
- import SkillGraph from "../components/skill-graph";
24
- import BeatLeaderItem from "../components/bl-score-item";
25
- import Flags, { EarchIcon } from "../components/flag";
26
- import { twJoin } from "../utils/tw-join";
27
- import { getHeadsetForHMD } from "../utils/bl/blheadset";
21
+ import getPart from "../utils/bl/getPart.js";
22
+ import ScoreBadge from "../components/socre-badge.js";
23
+ import SkillGraph from "../components/skill-graph.js";
24
+ import BeatLeaderItem from "../components/bl-score-item.js";
25
+ import Flags, { EarchIcon } from "../components/flag.js";
26
+ import { twJoin } from "../utils/tw-join.js";
27
+ import { getHeadsetForHMD } from "../utils/bl/blheadset.js";
28
28
  function BLPlayerPage({
29
29
  beatleaderItems: items,
30
30
  user,
@@ -27,15 +27,15 @@ import {
27
27
  Calendar,
28
28
  HeartPulse
29
29
  } from "lucide-react";
30
- import ScoreGraph from "../components/scoregraph";
30
+ import ScoreGraph from "../components/scoregraph.js";
31
31
  import {
32
32
  BlRankScoreItem,
33
33
  ScoreItemSkeleton
34
- } from "@/components/components/bl-rank-score-item";
35
- import { RankDifficulty } from "@/components/components/RankDifficulty";
36
- import { Avatar } from "@/components/components/base/avatar";
37
- import { formatDuration, formatTime } from "@/components/utils";
38
- import Progressbar from "@/components/components/progressbar";
34
+ } from "../../components/components/bl-rank-score-item.js";
35
+ import { RankDifficulty } from "../../components/components/RankDifficulty.js";
36
+ import { Avatar } from "../../components/components/base/avatar.js";
37
+ import { formatDuration, formatTime } from "../../components/utils/index.js";
38
+ import Progressbar from "../../components/components/progressbar.js";
39
39
  function BLRankScore({
40
40
  score,
41
41
  aroundScores,
@@ -9,9 +9,9 @@ import {
9
9
  ThumbsDown,
10
10
  Calendar
11
11
  } from "lucide-react";
12
- import { diffConv, formatDuration, formatTime } from "../utils";
13
- import Progressbar from "../components/progressbar";
14
- import ScoreGraph from "../components/scoregraph";
12
+ import { diffConv, formatDuration, formatTime } from "../utils/index.js";
13
+ import Progressbar from "../components/progressbar.js";
14
+ import ScoreGraph from "../components/scoregraph.js";
15
15
  function BLScore({
16
16
  score,
17
17
  bsMap,
@@ -1,5 +1,5 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import RankIcon from "../components/icons/RankIcon";
2
+ import RankIcon from "../components/icons/RankIcon.js";
3
3
  import {
4
4
  Calendar,
5
5
  Clock,
@@ -11,10 +11,10 @@ import {
11
11
  ThumbsUp
12
12
  } from "lucide-react";
13
13
  import dayjs from "dayjs";
14
- import { diffConv, formatNumber, formatTime, getTag } from "../utils";
15
- import { getMods } from "../utils/getMods";
16
- import Progressbar from "../components/progressbar";
17
- import { CharacteristicIcon } from "../components/characteristic";
14
+ import { diffConv, formatNumber, formatTime, getTag } from "../utils/index.js";
15
+ import { getMods } from "../utils/getMods.js";
16
+ import Progressbar from "../components/progressbar.js";
17
+ import { CharacteristicIcon } from "../components/characteristic.js";
18
18
  function BSMapShare({
19
19
  bsMap,
20
20
  bsMapQrUrl,
@@ -1,9 +1,9 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import BSMapShare from "./bs-map";
3
- import SSPlayerPage from "./ss-player";
4
- import BLPlayerPage from "./bl-player";
5
- import { BLScore } from "./bl-score";
6
- import BLRankScore from "@/components/pages/bl-score-with-rank";
2
+ import BSMapShare from "./bs-map.js";
3
+ import SSPlayerPage from "./ss-player.js";
4
+ import BLPlayerPage from "./bl-player.js";
5
+ import { BLScore } from "./bl-score.js";
6
+ import BLRankScore from "../../components/pages/bl-score-with-rank.js";
7
7
  const getBSMapComp = (bsMap, bsMapQrUrl, previewQrUrl) => {
8
8
  return /* @__PURE__ */ jsx(
9
9
  BSMapShare,
@@ -1,7 +1,7 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import Flags, { EarchIcon } from "../components/flag";
3
- import { twJoin } from "../utils/tw-join";
4
- import ScoreItem from "../components/ss-score-item";
2
+ import Flags, { EarchIcon } from "../components/flag.js";
3
+ import { twJoin } from "../utils/tw-join.js";
4
+ import ScoreItem from "../components/ss-score-item.js";
5
5
  function SSPlayerPage({
6
6
  leaderItems,
7
7
  scoreUser,
@@ -29,8 +29,8 @@ var __objRest = (source, exclude) => {
29
29
  }
30
30
  return target;
31
31
  };
32
- import { NoteEventType } from "./bsorDecoder";
33
- import { createDistanceWeightFunction } from "./beatleader";
32
+ import { NoteEventType } from "./bsorDecoder.js";
33
+ import { createDistanceWeightFunction } from "./beatleader.js";
34
34
  const NoteScoringType = {
35
35
  Ignore: -1,
36
36
  NoScore: 0,
@@ -1,5 +1,5 @@
1
- export * from "./format";
2
- export * from "./tag-format";
1
+ export * from "./format.js";
2
+ export * from "./tag-format.js";
3
3
  const diffConv = (diff) => {
4
4
  if (diff.includes("ExpertPlus")) {
5
5
  return "EX+";
@@ -1,4 +1,4 @@
1
- import { renderSchema, s3ConfigSchema } from "@/infra";
1
+ import { renderSchema, s3ConfigSchema } from "./infra/index.js";
2
2
  import { z } from "zod/v4";
3
3
  const cronSchema = z.object({
4
4
  enabled: z.boolean().optional().default(false),
package/dist/esm/index.js CHANGED
@@ -1,13 +1,13 @@
1
- import { botCommands } from "./cmd";
2
- import { getScheduleTasks } from "./schedules";
3
- export * from "./interface";
4
- export * from "./schedules";
5
- export * from "./config";
6
- export * from "./cmd";
7
- export * from "./ws";
8
- export * from "./utils";
9
- export * from "./service";
10
- export * from "./infra";
1
+ import { botCommands } from "./cmd/index.js";
2
+ import { getScheduleTasks } from "./schedules/index.js";
3
+ export * from "./interface/index.js";
4
+ export * from "./schedules/index.js";
5
+ export * from "./config.js";
6
+ export * from "./cmd/index.js";
7
+ export * from "./ws/index.js";
8
+ export * from "./utils/index.js";
9
+ export * from "./service/index.js";
10
+ export * from "./infra/index.js";
11
11
  const getBot = (config) => ({
12
12
  commands: botCommands(),
13
13
  schedule: getScheduleTasks(config)
@@ -1,8 +1,8 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { interpolate } from "./parser";
5
- import { interpolateString } from "./util";
4
+ import { interpolate } from "./parser.js";
5
+ import { interpolateString } from "./util.js";
6
6
  class I18nService {
7
7
  constructor(config) {
8
8
  __publicField(this, "obj", {});
@@ -1,6 +1,6 @@
1
- export * from "./support/render";
2
- import { I18nService } from "./i18n";
3
- import { S3Service, s3ConfigSchema } from "./s3";
1
+ export * from "./support/render/index.js";
2
+ import { I18nService } from "./i18n/index.js";
3
+ import { S3Service, s3ConfigSchema } from "./s3/index.js";
4
4
  export {
5
5
  I18nService,
6
6
  S3Service,
@@ -1,5 +1,5 @@
1
- import { createFetch as c, Fetch } from "./ofetch";
2
- import { NotFoundError } from "./error";
1
+ import { createFetch as c, Fetch } from "./ofetch.js";
2
+ import { NotFoundError } from "./error.js";
3
3
  const rofetch = c({
4
4
  defaults: {
5
5
  retryStatusCodes: [400, 408, 409, 425, 429, 502, 503, 504],
@@ -34,7 +34,7 @@ const createFetch = (logger) => {
34
34
  ignoreResponseError: false
35
35
  });
36
36
  };
37
- import { Fetch as Fetch2 } from "./ofetch";
37
+ import { Fetch as Fetch2 } from "./ofetch.js";
38
38
  export {
39
39
  Fetch2 as Fetch,
40
40
  createFetch
@@ -50,9 +50,9 @@ var __async = (__this, __arguments, generator) => {
50
50
  step((generator = generator.apply(__this, __arguments)).next());
51
51
  });
52
52
  };
53
- import { html2imgBuffer, url2imgBuffer } from "./puppeteer";
53
+ import { html2imgBuffer, url2imgBuffer } from "./puppeteer.js";
54
54
  import { Puppeteer } from "puppeteer-core";
55
- import { createFetch } from "@/infra/support/fetch";
55
+ import { createFetch } from "../../../infra/support/fetch/index.js";
56
56
  import { z } from "zod/v4";
57
57
  const common = z.object({
58
58
  defaultWaitTimeout: z.number().optional(),
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { BizError } from "@/infra/errors";
24
+ import { BizError } from "../../infra/errors/index.js";
25
25
  class CommandBuilder {
26
26
  constructor() {
27
27
  __publicField(this, "name");
@@ -1,6 +1,6 @@
1
- export * from "./db";
2
- export * from "./logger";
3
- export * from "./bot";
1
+ export * from "./db/index.js";
2
+ export * from "./logger.js";
3
+ export * from "./bot.js";
4
4
  var Platform = /* @__PURE__ */ ((Platform2) => {
5
5
  Platform2["SS"] = "scoresaber";
6
6
  Platform2["BS"] = "beatsaver";
@@ -10,7 +10,7 @@ var Platform = /* @__PURE__ */ ((Platform2) => {
10
10
  const parsePlatform = (p) => {
11
11
  return p == "ss" ? "scoresaber" /* SS */ : "beatleader" /* BL */;
12
12
  };
13
- export * from "./cmd/type";
13
+ export * from "./cmd/type.js";
14
14
  export {
15
15
  Platform,
16
16
  parsePlatform
@@ -1,4 +1,4 @@
1
- import { LBScoreMonitor } from "./temp";
1
+ import { LBScoreMonitor } from "./temp.js";
2
2
  const getScheduleTasks = (config) => {
3
3
  var _a, _b, _c, _d, _e;
4
4
  return [
@@ -24,8 +24,12 @@ const LBScoreMonitor = (c) => __async(null, null, function* () {
24
24
  return;
25
25
  }
26
26
  const [hitbuf, scorebuf] = yield Promise.all([
27
- c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt"),
28
- c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/score")
27
+ c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/hitcnt", {
28
+ selector: "#render-result"
29
+ }),
30
+ c.services.render.renderUrl("https://aiobs.ktlab.io/tmp/lb/score", {
31
+ selector: "#render-result"
32
+ })
29
33
  ]);
30
34
  for (const group of channels) {
31
35
  const session = c.botService.getSessionByChannelInfo(group.groupChannel);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/schedules/temp.ts"],"sourcesContent":["import { ScheduleTaskCtx } from './interface'\n\nexport const LBScoreMonitor = async <T>(c: ScheduleTaskCtx<T>) => {\n const channels = await c.services.db.getSubscriptionsByType('lb-rank')\n if (channels.length <= 0) {\n return\n }\n const [hitbuf, scorebuf] = await Promise.all([\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/hitcnt'),\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/score'),\n ])\n for (const group of channels) {\n const session = c.botService.getSessionByChannelInfo(group.groupChannel)\n if (!session) {\n continue\n }\n await session.sendImgBuffer(hitbuf, 'image/png')\n await session.sendImgBuffer(scorebuf, 'image/png')\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,MAAM,iBAAiB,CAAU,MAA0B;AAChE,QAAM,WAAW,MAAM,EAAE,SAAS,GAAG,uBAAuB,SAAS;AACrE,MAAI,SAAS,UAAU,GAAG;AACxB;AAAA,EACF;AACA,QAAM,CAAC,QAAQ,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC3C,EAAE,SAAS,OAAO,UAAU,sCAAsC;AAAA,IAClE,EAAE,SAAS,OAAO,UAAU,qCAAqC;AAAA,EACnE,CAAC;AACD,aAAW,SAAS,UAAU;AAC5B,UAAM,UAAU,EAAE,WAAW,wBAAwB,MAAM,YAAY;AACvE,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,QAAQ,cAAc,QAAQ,WAAW;AAC/C,UAAM,QAAQ,cAAc,UAAU,WAAW;AAAA,EACnD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/schedules/temp.ts"],"sourcesContent":["import { ScheduleTaskCtx } from './interface'\n\nexport const LBScoreMonitor = async <T>(c: ScheduleTaskCtx<T>) => {\n const channels = await c.services.db.getSubscriptionsByType('lb-rank')\n if (channels.length <= 0) {\n return\n }\n const [hitbuf, scorebuf] = await Promise.all([\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/hitcnt', {\n selector: '#render-result',\n }),\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/score', {\n selector: '#render-result',\n }),\n ])\n for (const group of channels) {\n const session = c.botService.getSessionByChannelInfo(group.groupChannel)\n if (!session) {\n continue\n }\n await session.sendImgBuffer(hitbuf, 'image/png')\n await session.sendImgBuffer(scorebuf, 'image/png')\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,MAAM,iBAAiB,CAAU,MAA0B;AAChE,QAAM,WAAW,MAAM,EAAE,SAAS,GAAG,uBAAuB,SAAS;AACrE,MAAI,SAAS,UAAU,GAAG;AACxB;AAAA,EACF;AACA,QAAM,CAAC,QAAQ,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC3C,EAAE,SAAS,OAAO,UAAU,wCAAwC;AAAA,MAClE,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,EAAE,SAAS,OAAO,UAAU,uCAAuC;AAAA,MACjE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,aAAW,SAAS,UAAU;AAC5B,UAAM,UAAU,EAAE,WAAW,wBAAwB,MAAM,YAAY;AACvE,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,QAAQ,cAAc,QAAQ,WAAW;AAC/C,UAAM,QAAQ,cAAc,UAAU,WAAW;AAAA,EACnD;AACF;","names":[]}
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { createFetch } from "@/infra/support/fetch";
24
+ import { createFetch } from "../../../infra/support/fetch/index.js";
25
25
  class AIOSaberClient {
26
26
  constructor(logger) {
27
27
  __publicField(this, "f");
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { createFetch } from "@/infra/support/fetch";
24
+ import { createFetch } from "../../../infra/support/fetch/index.js";
25
25
  class BeatLeaderClient {
26
26
  constructor(opt) {
27
27
  __publicField(this, "f");
@@ -35,8 +35,8 @@ var __async = (__this, __arguments, generator) => {
35
35
  step((generator = generator.apply(__this, __arguments)).next());
36
36
  });
37
37
  };
38
- import { createFetch } from "@/infra/support/fetch";
39
- import { NotFoundError } from "@/infra/support/fetch/error";
38
+ import { createFetch } from "../../../infra/support/fetch/index.js";
39
+ import { NotFoundError } from "../../../infra/support/fetch/error.js";
40
40
  class BeatSaverClient {
41
41
  constructor(opt) {
42
42
  __publicField(this, "f");
@@ -1,5 +1,5 @@
1
- export * from "./ssclient";
2
- export * from "./blclient";
3
- export * from "./aioclient";
4
- export * from "./bsclient";
1
+ export * from "./ssclient.js";
2
+ export * from "./blclient.js";
3
+ export * from "./aioclient.js";
4
+ export * from "./bsclient.js";
5
5
  //# sourceMappingURL=index.js.map
@@ -21,8 +21,8 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { createFetch } from "@/infra/support/fetch";
25
- import { NotFoundError } from "@/infra/support/fetch/error";
24
+ import { createFetch } from "../../../infra/support/fetch/index.js";
25
+ import { NotFoundError } from "../../../infra/support/fetch/error.js";
26
26
  class ScoreSaberClient {
27
27
  constructor(logger) {
28
28
  __publicField(this, "f");
@@ -35,11 +35,11 @@ var __async = (__this, __arguments, generator) => {
35
35
  step((generator = generator.apply(__this, __arguments)).next());
36
36
  });
37
37
  };
38
- import { AIOSaberClient, BeatLeaderClient, BeatSaverClient, ScoreSaberClient } from "./base";
39
- import { BLIDNotFoundError, MapIdNotFoundError, SSIDNotFoundError } from "@/infra/errors";
40
- import { NotFoundError } from "@/infra/support/fetch/error";
41
- import { sortScore } from "./sortScore";
42
- import { decode } from "@/components/utils/bl/bsorDecoder";
38
+ import { AIOSaberClient, BeatLeaderClient, BeatSaverClient, ScoreSaberClient } from "./base/index.js";
39
+ import { BLIDNotFoundError, MapIdNotFoundError, SSIDNotFoundError } from "../../infra/errors/index.js";
40
+ import { NotFoundError } from "../../infra/support/fetch/error.js";
41
+ import { sortScore } from "./sortScore.js";
42
+ import { decode } from "../../components/utils/bl/bsorDecoder.js";
43
43
  class APIService {
44
44
  constructor(cfg, logger) {
45
45
  __publicField(this, "BeatLeader");
@@ -1,6 +1,6 @@
1
- export * from "./bsor";
2
- export * from "./req";
3
- export * from "./score";
4
- export * from "./user";
5
- export * from "./ws";
1
+ export * from "./bsor.js";
2
+ export * from "./req.js";
3
+ export * from "./score.js";
4
+ export * from "./user.js";
5
+ export * from "./ws.js";
6
6
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
- export * from "./ws";
2
- export * from "./bsmap";
3
- export * from "./resp";
4
- export * from "./user";
5
- export * from "./alert";
1
+ export * from "./ws.js";
2
+ export * from "./bsmap.js";
3
+ export * from "./resp.js";
4
+ export * from "./user.js";
5
+ export * from "./alert.js";
6
6
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export * from "./item";
2
- export * from "./resp";
3
- export * from "./user";
1
+ export * from "./item.js";
2
+ export * from "./resp.js";
3
+ export * from "./user.js";
4
4
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- import { APIService } from "./api";
2
- import { RenderService } from "./render";
1
+ import { APIService } from "./api/index.js";
2
+ import { RenderService } from "./render/index.js";
3
3
  export {
4
4
  APIService,
5
5
  RenderService
@@ -46,14 +46,14 @@ var __async = (__this, __arguments, generator) => {
46
46
  step((generator = generator.apply(__this, __arguments)).next());
47
47
  });
48
48
  };
49
- import { getHtml } from "@/components";
49
+ import { getHtml } from "../../components/index.js";
50
50
  import { PuppeteerError, TimeoutError } from "puppeteer-core";
51
- import { Platform } from "@/interface";
52
- import { getBLPlayerComp, getBLRankScoreComp, getBSMapComp, getSSPlayerComp } from "@/components/pages";
53
- import { preferenceKey } from "../preference";
54
- import { ImageRenderError, RequestError } from "@/infra/errors";
55
- import createQrcode from "@/components/utils/qrcode";
56
- import { getImageRender } from "@/infra/support/render";
51
+ import { Platform } from "../../interface/index.js";
52
+ import { getBLPlayerComp, getBLRankScoreComp, getBSMapComp, getSSPlayerComp } from "../../components/pages/index.js";
53
+ import { preferenceKey } from "../preference.js";
54
+ import { ImageRenderError, RequestError } from "../../infra/errors/index.js";
55
+ import createQrcode from "../../components/utils/qrcode.js";
56
+ import { getImageRender } from "../../infra/support/render/index.js";
57
57
  const getPreferenceKey = (platform) => {
58
58
  return platform == Platform.SS ? preferenceKey.ssProfileRenderImg.key : preferenceKey.blProfileRenderImg.key;
59
59
  };
@@ -131,7 +131,7 @@ class RenderService {
131
131
  renderUrl(url, renderOption) {
132
132
  return __async(this, null, function* () {
133
133
  var _a, _b;
134
- (_a = renderOption.onRenderStart) == null ? void 0 : _a.call(renderOption);
134
+ (_a = renderOption == null ? void 0 : renderOption.onRenderStart) == null ? void 0 : _a.call(renderOption);
135
135
  try {
136
136
  return this.imageRender.url2img(url, renderOption);
137
137
  } catch (e) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/service/render/index.ts"],"sourcesContent":["import {IRenderService, RenderOption} from './interfaces'\nimport { getHtml } from '@/components'\nimport { PuppeteerError, TimeoutError } from 'puppeteer-core'\nimport { Platform } from '@/interface'\nimport {getBLPlayerComp, getBLRankScoreComp, getBSMapComp, getSSPlayerComp} from '@/components/pages'\nimport {preferenceKey} from \"../preference\";\nimport {ImageRenderError, RequestError} from \"@/infra/errors\";\nimport createQrcode from \"@/components/utils/qrcode\";\nimport {APIService} from \"../api\";\nimport {BSMap} from \"../api/interfaces/beatsaver\";\nimport {CreateImageRenderOption, getImageRender, ImageRender} from \"@/infra/support/render\";\n\n\nconst getPreferenceKey = (platform: string) => {\n return platform == Platform.SS\n ? preferenceKey.ssProfileRenderImg.key\n : preferenceKey.blProfileRenderImg.key\n}\n\nexport class RenderService implements IRenderService {\n private constructor(\n private api: APIService,\n private imageRender: ImageRender\n ) {}\n\n static create(imgRenderConfig: CreateImageRenderOption & { api: APIService }) {\n const { api, ...config} = imgRenderConfig\n return new RenderService(api, getImageRender(config))\n }\n\n async renderRank(\n accountId: string,\n platform: Platform,\n renderOpts?: RenderOption\n ) {\n try {\n let bg = (await renderOpts?.userPreference?.get<string>(getPreferenceKey(platform)))\n bg = bg || 'https://www.loliapi.com/acg/pc/'\n let html: string\n if (platform == Platform.BL) {\n const { scores, userInfo } = await this.api.getBLPlayerScoresWithUserInfo(accountId)\n html = getHtml(getBLPlayerComp(scores, userInfo, bg))\n } else {\n const { scores, userInfo } = await this.api.getSSPlayerRecentScoreWithUserInfo(accountId)\n html = getHtml(getSSPlayerComp(scores, userInfo, bg))\n }\n return this.imageRender.html2img(html, {selector: '#render-result', ...renderOpts})\n }catch (e) {\n if (e instanceof TimeoutError || e instanceof PuppeteerError) {\n throw new ImageRenderError()\n }\n throw e\n }\n }\n\n async renderScore(\n scoreId: string,\n renderOpts?: RenderOption\n ) {\n const bg = (await renderOpts?.userPreference?.get<string>(preferenceKey.blScoreImg.key))\n ?? 'https://www.loliapi.com/acg/pc/'\n try {\n const { score, statistic, bsor, bsMap } =\n await this.api.getScoreAndBSMapByScoreId(scoreId)\n\n const { aroundScores, regionTopScores, difficulties } =\n await this.api.getAroundScoreAndRegionScoreByRankAndPage(\n score.leaderboardId,\n score.rank,\n score.player.country\n )\n return this.imageRender.html2img(\n getHtml(getBLRankScoreComp(score, aroundScores, regionTopScores, difficulties, bsMap, statistic, bsor, bg)),\n {selector: '#render-result', ...renderOpts}\n )\n }catch (e) {\n if (e instanceof RequestError) {\n throw e\n }\n throw new ImageRenderError()\n }\n }\n\n async renderMapById(\n mapId: string,\n renderOption: RenderOption\n ) {\n const map = await this.api.BeatSaver.searchMapById(mapId)\n return this.renderMap(map, renderOption)\n }\n\n async renderMap(\n bsMap: BSMap,\n renderOption?: RenderOption\n ) {\n const previewQrUrl = await createQrcode(`https://allpoland.github.io/ArcViewer/?id=${bsMap.id}`)\n const bsMapQrUrl = await createQrcode(`https://beatsaver.com/maps/${bsMap.id}`)\n return this.imageRender.html2img(\n getHtml(getBSMapComp(bsMap, bsMapQrUrl, previewQrUrl)), {selector: '#render-result', ...renderOption}\n )\n }\n\n async renderUrl(url: string, renderOption?: RenderOption) {\n renderOption.onRenderStart?.()\n try {\n return this.imageRender.url2img(url, renderOption)\n }catch (e) {\n renderOption?.onRenderError?.(e)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,eAAe;AACxB,SAAS,gBAAgB,oBAAoB;AAC7C,SAAS,gBAAgB;AACzB,SAAQ,iBAAiB,oBAAoB,cAAc,uBAAsB;AACjF,SAAQ,qBAAoB;AAC5B,SAAQ,kBAAkB,oBAAmB;AAC7C,OAAO,kBAAkB;AAGzB,SAAiC,sBAAkC;AAGnE,MAAM,mBAAmB,CAAC,aAAqB;AAC7C,SAAO,YAAY,SAAS,KACxB,cAAc,mBAAmB,MACjC,cAAc,mBAAmB;AACvC;AAEO,MAAM,cAAwC;AAAA,EAC3C,YACE,KACA,aACR;AAFQ;AACA;AAAA,EACP;AAAA,EAEH,OAAO,OAAO,iBAAgE;AAC5E,UAA0B,sBAAlB,MA1BZ,IA0B8B,IAAV,mBAAU,IAAV,CAAR;AACR,WAAO,IAAI,cAAc,KAAK,eAAe,MAAM,CAAC;AAAA,EACtD;AAAA,EAEM,WACJ,WACA,UACA,YACA;AAAA;AAlCJ;AAmCI,UAAI;AACF,YAAI,KAAM,OAAM,8CAAY,mBAAZ,mBAA4B,IAAY,iBAAiB,QAAQ;AACjF,aAAK,MAAM;AACX,YAAI;AACJ,YAAI,YAAY,SAAS,IAAI;AAC3B,gBAAM,EAAE,QAAQ,SAAS,IAAI,MAAM,KAAK,IAAI,8BAA8B,SAAS;AACnF,iBAAO,QAAQ,gBAAgB,QAAQ,UAAU,EAAE,CAAC;AAAA,QACtD,OAAO;AACL,gBAAM,EAAE,QAAQ,SAAS,IAAI,MAAM,KAAK,IAAI,mCAAmC,SAAS;AACxF,iBAAO,QAAQ,gBAAgB,QAAQ,UAAU,EAAE,CAAC;AAAA,QACtD;AACA,eAAO,KAAK,YAAY,SAAS,MAAM,iBAAC,UAAU,oBAAqB,WAAW;AAAA,MACpF,SAAQ,GAAG;AACT,YAAI,aAAa,gBAAgB,aAAa,gBAAgB;AAC5D,gBAAM,IAAI,iBAAiB;AAAA,QAC7B;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAAA;AAAA,EAEM,YACJ,SACA,YACA;AAAA;AA1DJ;AA2DI,YAAM,MAAM,YAAM,8CAAY,mBAAZ,mBAA4B,IAAY,cAAc,WAAW,SAAvE,YACP;AACL,UAAI;AACF,cAAM,EAAE,OAAO,WAAW,MAAM,MAAM,IACpC,MAAM,KAAK,IAAI,0BAA0B,OAAO;AAElD,cAAM,EAAE,cAAc,iBAAiB,aAAa,IAClD,MAAM,KAAK,IAAI;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM,OAAO;AAAA,QACf;AACF,eAAO,KAAK,YAAY;AAAA,UACtB,QAAQ,mBAAmB,OAAO,cAAc,iBAAiB,cAAc,OAAO,WAAW,MAAM,EAAE,CAAC;AAAA,UAC1G,iBAAC,UAAU,oBAAqB;AAAA,QAClC;AAAA,MACF,SAAQ,GAAG;AACT,YAAI,aAAa,cAAc;AAC7B,gBAAM;AAAA,QACR;AACA,cAAM,IAAI,iBAAiB;AAAA,MAC7B;AAAA,IACF;AAAA;AAAA,EAEM,cACJ,OACA,cACA;AAAA;AACA,YAAM,MAAM,MAAM,KAAK,IAAI,UAAU,cAAc,KAAK;AACxD,aAAO,KAAK,UAAU,KAAK,YAAY;AAAA,IACzC;AAAA;AAAA,EAEM,UACJ,OACA,cACA;AAAA;AACA,YAAM,eAAe,MAAM,aAAa,6CAA6C,MAAM,EAAE,EAAE;AAC/F,YAAM,aAAa,MAAM,aAAa,8BAA8B,MAAM,EAAE,EAAE;AAC9E,aAAO,KAAK,YAAY;AAAA,QACtB,QAAQ,aAAa,OAAO,YAAY,YAAY,CAAC;AAAA,QAAG,iBAAC,UAAU,oBAAqB;AAAA,MAC1F;AAAA,IACF;AAAA;AAAA,EAEM,UAAU,KAAa,cAA6B;AAAA;AAtG5D;AAuGI,yBAAa,kBAAb;AACA,UAAI;AACF,eAAO,KAAK,YAAY,QAAQ,KAAK,YAAY;AAAA,MACnD,SAAQ,GAAG;AACT,2DAAc,kBAAd,sCAA8B;AAAA,MAChC;AAAA,IACF;AAAA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/service/render/index.ts"],"sourcesContent":["import {IRenderService, RenderOption} from './interfaces'\nimport { getHtml } from '@/components'\nimport { PuppeteerError, TimeoutError } from 'puppeteer-core'\nimport { Platform } from '@/interface'\nimport {getBLPlayerComp, getBLRankScoreComp, getBSMapComp, getSSPlayerComp} from '@/components/pages'\nimport {preferenceKey} from \"../preference\";\nimport {ImageRenderError, RequestError} from \"@/infra/errors\";\nimport createQrcode from \"@/components/utils/qrcode\";\nimport {APIService} from \"../api\";\nimport {BSMap} from \"../api/interfaces/beatsaver\";\nimport {CreateImageRenderOption, getImageRender, ImageRender} from \"@/infra/support/render\";\n\n\nconst getPreferenceKey = (platform: string) => {\n return platform == Platform.SS\n ? preferenceKey.ssProfileRenderImg.key\n : preferenceKey.blProfileRenderImg.key\n}\n\nexport class RenderService implements IRenderService {\n private constructor(\n private api: APIService,\n private imageRender: ImageRender\n ) {}\n\n static create(imgRenderConfig: CreateImageRenderOption & { api: APIService }) {\n const { api, ...config} = imgRenderConfig\n return new RenderService(api, getImageRender(config))\n }\n\n async renderRank(\n accountId: string,\n platform: Platform,\n renderOpts?: RenderOption\n ) {\n try {\n let bg = (await renderOpts?.userPreference?.get<string>(getPreferenceKey(platform)))\n bg = bg || 'https://www.loliapi.com/acg/pc/'\n let html: string\n if (platform == Platform.BL) {\n const { scores, userInfo } = await this.api.getBLPlayerScoresWithUserInfo(accountId)\n html = getHtml(getBLPlayerComp(scores, userInfo, bg))\n } else {\n const { scores, userInfo } = await this.api.getSSPlayerRecentScoreWithUserInfo(accountId)\n html = getHtml(getSSPlayerComp(scores, userInfo, bg))\n }\n return this.imageRender.html2img(html, {selector: '#render-result', ...renderOpts})\n }catch (e) {\n if (e instanceof TimeoutError || e instanceof PuppeteerError) {\n throw new ImageRenderError()\n }\n throw e\n }\n }\n\n async renderScore(\n scoreId: string,\n renderOpts?: RenderOption\n ) {\n const bg = (await renderOpts?.userPreference?.get<string>(preferenceKey.blScoreImg.key))\n ?? 'https://www.loliapi.com/acg/pc/'\n try {\n const { score, statistic, bsor, bsMap } =\n await this.api.getScoreAndBSMapByScoreId(scoreId)\n\n const { aroundScores, regionTopScores, difficulties } =\n await this.api.getAroundScoreAndRegionScoreByRankAndPage(\n score.leaderboardId,\n score.rank,\n score.player.country\n )\n return this.imageRender.html2img(\n getHtml(getBLRankScoreComp(score, aroundScores, regionTopScores, difficulties, bsMap, statistic, bsor, bg)),\n {selector: '#render-result', ...renderOpts}\n )\n }catch (e) {\n if (e instanceof RequestError) {\n throw e\n }\n throw new ImageRenderError()\n }\n }\n\n async renderMapById(\n mapId: string,\n renderOption: RenderOption\n ) {\n const map = await this.api.BeatSaver.searchMapById(mapId)\n return this.renderMap(map, renderOption)\n }\n\n async renderMap(\n bsMap: BSMap,\n renderOption?: RenderOption\n ) {\n const previewQrUrl = await createQrcode(`https://allpoland.github.io/ArcViewer/?id=${bsMap.id}`)\n const bsMapQrUrl = await createQrcode(`https://beatsaver.com/maps/${bsMap.id}`)\n return this.imageRender.html2img(\n getHtml(getBSMapComp(bsMap, bsMapQrUrl, previewQrUrl)), {selector: '#render-result', ...renderOption}\n )\n }\n\n async renderUrl(url: string, renderOption?: RenderOption) {\n renderOption?.onRenderStart?.()\n try {\n return this.imageRender.url2img(url, renderOption)\n }catch (e) {\n renderOption?.onRenderError?.(e)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,eAAe;AACxB,SAAS,gBAAgB,oBAAoB;AAC7C,SAAS,gBAAgB;AACzB,SAAQ,iBAAiB,oBAAoB,cAAc,uBAAsB;AACjF,SAAQ,qBAAoB;AAC5B,SAAQ,kBAAkB,oBAAmB;AAC7C,OAAO,kBAAkB;AAGzB,SAAiC,sBAAkC;AAGnE,MAAM,mBAAmB,CAAC,aAAqB;AAC7C,SAAO,YAAY,SAAS,KACxB,cAAc,mBAAmB,MACjC,cAAc,mBAAmB;AACvC;AAEO,MAAM,cAAwC;AAAA,EAC3C,YACE,KACA,aACR;AAFQ;AACA;AAAA,EACP;AAAA,EAEH,OAAO,OAAO,iBAAgE;AAC5E,UAA0B,sBAAlB,MA1BZ,IA0B8B,IAAV,mBAAU,IAAV,CAAR;AACR,WAAO,IAAI,cAAc,KAAK,eAAe,MAAM,CAAC;AAAA,EACtD;AAAA,EAEM,WACJ,WACA,UACA,YACA;AAAA;AAlCJ;AAmCI,UAAI;AACF,YAAI,KAAM,OAAM,8CAAY,mBAAZ,mBAA4B,IAAY,iBAAiB,QAAQ;AACjF,aAAK,MAAM;AACX,YAAI;AACJ,YAAI,YAAY,SAAS,IAAI;AAC3B,gBAAM,EAAE,QAAQ,SAAS,IAAI,MAAM,KAAK,IAAI,8BAA8B,SAAS;AACnF,iBAAO,QAAQ,gBAAgB,QAAQ,UAAU,EAAE,CAAC;AAAA,QACtD,OAAO;AACL,gBAAM,EAAE,QAAQ,SAAS,IAAI,MAAM,KAAK,IAAI,mCAAmC,SAAS;AACxF,iBAAO,QAAQ,gBAAgB,QAAQ,UAAU,EAAE,CAAC;AAAA,QACtD;AACA,eAAO,KAAK,YAAY,SAAS,MAAM,iBAAC,UAAU,oBAAqB,WAAW;AAAA,MACpF,SAAQ,GAAG;AACT,YAAI,aAAa,gBAAgB,aAAa,gBAAgB;AAC5D,gBAAM,IAAI,iBAAiB;AAAA,QAC7B;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAAA;AAAA,EAEM,YACJ,SACA,YACA;AAAA;AA1DJ;AA2DI,YAAM,MAAM,YAAM,8CAAY,mBAAZ,mBAA4B,IAAY,cAAc,WAAW,SAAvE,YACP;AACL,UAAI;AACF,cAAM,EAAE,OAAO,WAAW,MAAM,MAAM,IACpC,MAAM,KAAK,IAAI,0BAA0B,OAAO;AAElD,cAAM,EAAE,cAAc,iBAAiB,aAAa,IAClD,MAAM,KAAK,IAAI;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM,OAAO;AAAA,QACf;AACF,eAAO,KAAK,YAAY;AAAA,UACtB,QAAQ,mBAAmB,OAAO,cAAc,iBAAiB,cAAc,OAAO,WAAW,MAAM,EAAE,CAAC;AAAA,UAC1G,iBAAC,UAAU,oBAAqB;AAAA,QAClC;AAAA,MACF,SAAQ,GAAG;AACT,YAAI,aAAa,cAAc;AAC7B,gBAAM;AAAA,QACR;AACA,cAAM,IAAI,iBAAiB;AAAA,MAC7B;AAAA,IACF;AAAA;AAAA,EAEM,cACJ,OACA,cACA;AAAA;AACA,YAAM,MAAM,MAAM,KAAK,IAAI,UAAU,cAAc,KAAK;AACxD,aAAO,KAAK,UAAU,KAAK,YAAY;AAAA,IACzC;AAAA;AAAA,EAEM,UACJ,OACA,cACA;AAAA;AACA,YAAM,eAAe,MAAM,aAAa,6CAA6C,MAAM,EAAE,EAAE;AAC/F,YAAM,aAAa,MAAM,aAAa,8BAA8B,MAAM,EAAE,EAAE;AAC9E,aAAO,KAAK,YAAY;AAAA,QACtB,QAAQ,aAAa,OAAO,YAAY,YAAY,CAAC;AAAA,QAAG,iBAAC,UAAU,oBAAqB;AAAA,MAC1F;AAAA,IACF;AAAA;AAAA,EAEM,UAAU,KAAa,cAA6B;AAAA;AAtG5D;AAuGI,yDAAc,kBAAd;AACA,UAAI;AACF,eAAO,KAAK,YAAY,QAAQ,KAAK,YAAY;AAAA,MACnD,SAAQ,GAAG;AACT,2DAAc,kBAAd,sCAA8B;AAAA,MAChC;AAAA,IACF;AAAA;AACF;","names":[]}
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { handleWSEventWithCache } from "@/utils";
24
+ import { handleWSEventWithCache } from "../utils/index.js";
25
25
  class BeatSaverWSHandler {
26
26
  constructor(db, render, logger, config, botService) {
27
27
  __publicField(this, "logger");
@@ -1,4 +1,4 @@
1
- export * from "./beatleader";
2
- export * from "./beatsaver";
3
- export * from "./handler";
1
+ export * from "./beatleader.js";
2
+ export * from "./beatsaver.js";
3
+ export * from "./handler.js";
4
4
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "beatsaber-bot-core",
3
3
  "description": "Beatsaber bot",
4
- "version": "0.2.0-rc.16",
4
+ "version": "0.2.0-rc.17",
5
5
  "files": [
6
6
  "dist"
7
7
  ],
@@ -71,7 +71,7 @@
71
71
  "zod": "^3.25.71"
72
72
  },
73
73
  "scripts": {
74
- "fix-path-alias": " tsc-alias --outDir dist/cjs && tsc-alias --outDir dist/cjs",
74
+ "fix-path-alias": " tsc-alias --outDir dist/cjs && tsc-alias --outDir dist/esm",
75
75
  "copy-yml-resource": "node scripts/build.mjs",
76
76
  "up": "tsup",
77
77
  "build": "tsup && pnpm run copy-yml-resource && pnpm run fix-path-alias",