beatsaber-bot-core 0.2.0-dev.34 → 0.2.0-dev.36

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 (40) hide show
  1. package/lib/img-render/index.js +20 -16
  2. package/lib/img-render/index.js.map +1 -1
  3. package/lib/img-render/result/bl-player.d.ts +1 -1
  4. package/lib/img-render/result/bl-player.js +6 -2
  5. package/lib/img-render/result/bl-player.js.map +1 -1
  6. package/lib/img-render/result/ss-player.js +1 -1
  7. package/lib/utils/puppeteer.d.ts +6 -3
  8. package/lib/utils/puppeteer.js +42 -29
  9. package/lib/utils/puppeteer.js.map +1 -1
  10. package/package.json +6 -2
  11. package/lib/api/base/aioRequest.d.ts +0 -6
  12. package/lib/api/base/aioRequest.js +0 -24
  13. package/lib/api/base/aioRequest.js.map +0 -1
  14. package/lib/api/base/blRequset.d.ts +0 -12
  15. package/lib/api/base/blRequset.js +0 -68
  16. package/lib/api/base/blRequset.js.map +0 -1
  17. package/lib/api/base/bsRequest.d.ts +0 -24
  18. package/lib/api/base/bsRequest.js +0 -64
  19. package/lib/api/base/bsRequest.js.map +0 -1
  20. package/lib/api/base/scRequest.d.ts +0 -8
  21. package/lib/api/base/scRequest.js +0 -43
  22. package/lib/api/base/scRequest.js.map +0 -1
  23. package/lib/db/index.d.ts +0 -0
  24. package/lib/db/index.js +0 -1
  25. package/lib/db/index.js.map +0 -1
  26. package/lib/img-render/components/blScoreItem.d.ts +0 -6
  27. package/lib/img-render/components/blScoreItem.js +0 -14
  28. package/lib/img-render/components/blScoreItem.js.map +0 -1
  29. package/lib/img-render/components/rankScoreItem.d.ts +0 -18
  30. package/lib/img-render/components/rankScoreItem.js +0 -42
  31. package/lib/img-render/components/rankScoreItem.js.map +0 -1
  32. package/lib/img-render/components/ssScoreItem.d.ts +0 -4
  33. package/lib/img-render/components/ssScoreItem.js +0 -14
  34. package/lib/img-render/components/ssScoreItem.js.map +0 -1
  35. package/lib/img-render/result/bs-score-with-rank.d.ts +0 -13
  36. package/lib/img-render/result/bs-score-with-rank.js +0 -33
  37. package/lib/img-render/result/bs-score-with-rank.js.map +0 -1
  38. package/lib/img-render/result/ss-score-with-rank.d.ts +0 -0
  39. package/lib/img-render/result/ss-score-with-rank.js +0 -277
  40. package/lib/img-render/result/ss-score-with-rank.js.map +0 -1
@@ -28,7 +28,8 @@ class RenderService {
28
28
  onRenderStart,
29
29
  userPreference,
30
30
  }).catch((e) => {
31
- if (e instanceof puppeteer_core_1.TimeoutError) {
31
+ if (e instanceof puppeteer_core_1.TimeoutError || e instanceof puppeteer_core_1.PuppeteerError) {
32
+ console.error(e);
32
33
  throw new errors_1.ImageRenderError();
33
34
  }
34
35
  throw e;
@@ -65,14 +66,15 @@ class RenderService {
65
66
  onRenderError,
66
67
  onRenderStart,
67
68
  }).catch((e) => {
68
- if (e instanceof puppeteer_core_1.TimeoutError) {
69
+ if (e instanceof puppeteer_core_1.TimeoutError || e instanceof puppeteer_core_1.PuppeteerError) {
70
+ console.error(e);
69
71
  throw new errors_1.ImageRenderError();
70
72
  }
71
73
  throw e;
72
74
  });
73
75
  }
74
76
  _renderScore = async (scoreId, platform, api, renderOpts) => {
75
- const bg = (await renderOpts.userPreference.get(utils_1.preferenceKey.blScoreImg.key)) ?? 'https://www.loliapi.com/acg/pc/';
77
+ const bg = (await renderOpts?.userPreference?.get(utils_1.preferenceKey.blScoreImg.key)) ?? 'https://www.loliapi.com/acg/pc/';
76
78
  try {
77
79
  const { score, statistic, bsor, bsMap } = await api.BeatLeader.getScoreAndBSMapByScoreId(scoreId);
78
80
  const { aroundScores, regionTopScores, difficulties } = await api.BeatLeader.getAroundScoreAndRegionScoreByRankAndPage(score.leaderboardId, score.rank, score.player.country);
@@ -95,6 +97,12 @@ class RenderService {
95
97
  userPreference,
96
98
  onRenderError,
97
99
  onRenderStart,
100
+ }).catch((e) => {
101
+ if (e instanceof puppeteer_core_1.TimeoutError || e instanceof puppeteer_core_1.PuppeteerError) {
102
+ console.error(e);
103
+ throw new errors_1.ImageRenderError();
104
+ }
105
+ throw e;
98
106
  });
99
107
  }
100
108
  async renderMap(map, userPreference, onRenderStart = noop, onRenderError = noop
@@ -107,7 +115,8 @@ class RenderService {
107
115
  onRenderError,
108
116
  onRenderStart,
109
117
  }).catch((e) => {
110
- if (e instanceof puppeteer_core_1.TimeoutError) {
118
+ if (e instanceof puppeteer_core_1.TimeoutError || e instanceof puppeteer_core_1.PuppeteerError) {
119
+ console.error(e);
111
120
  throw new errors_1.ImageRenderError();
112
121
  }
113
122
  throw e;
@@ -115,21 +124,16 @@ class RenderService {
115
124
  }
116
125
  async renderUrl(url, onRenderStart) {
117
126
  if (this.urlToImgBufferConverter) {
118
- return this.urlToImgBufferConverter(url, onRenderStart);
127
+ return this.urlToImgBufferConverter(url, onRenderStart).catch((e) => {
128
+ if (e instanceof puppeteer_core_1.TimeoutError || e instanceof puppeteer_core_1.PuppeteerError) {
129
+ console.error(e);
130
+ throw new errors_1.ImageRenderError();
131
+ }
132
+ throw e;
133
+ });
119
134
  }
120
135
  }
121
136
  _renderMap = async (bsMap, renderOpts) => {
122
- // if (renderOpts.type == 'remote') {
123
- // for (let i = 0; i < 3; i++) {
124
- // const image = await renderRemoteMap(
125
- // bsMap.id,
126
- // renderOpts as RemoteRenderOpts
127
- // )
128
- // if (image) {
129
- // return image
130
- // }
131
- // }
132
- // }
133
137
  const previewQrUrl = await (0, qrcode_1.default)(`https://allpoland.github.io/ArcViewer/?id=${bsMap.id}`);
134
138
  const bsMapQrUrl = await (0, qrcode_1.default)(`https://beatsaver.com/maps/${bsMap.id}`);
135
139
  return this.htmlToImgBufferConverter((0, render_1.getHtml)((0, result_1.getBSMapComp)(bsMap, bsMapQrUrl, previewQrUrl)), renderOpts.onRenderStart, renderOpts.onRenderError);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/img-render/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/img-render/index.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,5 @@ interface BLPlayerInfoProps {
4
4
  params?: Record<string, string>;
5
5
  bg: string;
6
6
  }
7
- export default function BLPlayerPage({ beatleaderItems, user, params, bg, }: BLPlayerInfoProps): import("react/jsx-runtime").JSX.Element;
7
+ export default function BLPlayerPage({ beatleaderItems: items, user, params, bg, }: BLPlayerInfoProps): import("react/jsx-runtime").JSX.Element;
8
8
  export {};
@@ -35,9 +35,13 @@ const bl_score_item_1 = __importDefault(require("../components/bl-score-item"));
35
35
  const flag_1 = __importStar(require("../components/flag"));
36
36
  const tw_join_1 = require("../utils/tw-join");
37
37
  const blheadset_1 = require("../utils/bl/blheadset");
38
- function BLPlayerPage({ beatleaderItems, user, params, bg, }) {
38
+ function BLPlayerPage({ beatleaderItems: items, user, params, bg, }) {
39
39
  const part = (0, getPart_1.default)(user);
40
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)("div", { id: 'render-result', className: 'flex flex-col justify-center items-center relative h-[720px] w-[1024px] my-auto', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white rounded-lg flex flex-col space-y-2 z-10', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex justify-between', children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex space-x-4 pb-2", children: [(0, jsx_runtime_1.jsx)("img", { src: user.avatar, className: 'h-36 w-36 rounded-md z-10', loading: 'eager' }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col justify-between', children: [(0, jsx_runtime_1.jsx)("span", { className: 'text-3xl font-bold', children: user.name }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex space-x-2 text-md font-bold items-center', children: [(0, jsx_runtime_1.jsxs)("span", { className: "flex items-center space-x-1", children: [(0, jsx_runtime_1.jsx)(flag_1.EarchIcon, {}), (0, jsx_runtime_1.jsxs)("span", { children: ["# ", user.rank] })] }), (0, jsx_runtime_1.jsxs)("span", { className: "flex items-center space-x-1", children: [(0, jsx_runtime_1.jsx)(flag_1.default, { flagNationCode: user.country }), (0, jsx_runtime_1.jsxs)("span", { children: ["# ", user.countryRank] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex gap-2 align-items-center ", children: [(0, jsx_runtime_1.jsx)(socre_badge_1.default, { className: "w-auto text-white", name: 'P', count: user.scoreStats.topPlatform }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { className: "w-auto text-white", name: 'H', count: (0, blheadset_1.getHeadsetForHMD)(user.scoreStats.topHMD) }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { className: "w-auto text-white", name: 'R', count: user.scoreStats.rankedPlayCount })] }), (0, jsx_runtime_1.jsxs)("div", { className: (0, tw_join_1.twJoin)('text-4xl font-bold ', ' bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300', 'text-orange-100'), children: [user.pp, " PP"] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "px-3 flex flex-col justify-end items-center grow", children: [user.badges.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-3 gap-2 justify-self-center align-items-cener justify-items-center mb-auto mt-2", children: user.badges.map((badge) => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("img", { alt: badge.description, src: badge.image, width: '70px', height: '20px', className: "self-center w-[70px] h-5" }, badge.id) }))) })), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-3 gap-2 align-items-center py-2", children: [(0, jsx_runtime_1.jsx)(socre_badge_1.default, { name: 'SS+', count: user.scoreStats.sspPlays }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { name: 'SS', count: user.scoreStats.ssPlays }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { name: 'S+', count: user.scoreStats.spPlays }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { name: 'S', count: user.scoreStats.sPlays }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { name: 'A', count: user.scoreStats.aPlays })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "ml-auto mr-4 flex justify-center items-center", children: (0, jsx_runtime_1.jsx)(skill_graph_1.default, { factorA: part.accPpPart, factorB: part.techPpPart, factorC: part.passPpPart }) })] }), (0, jsx_runtime_1.jsx)("div", { className: 'grid grid-cols-4 gap-2', children: beatleaderItems.map((item, idx) => ((0, jsx_runtime_1.jsx)(bl_score_item_1.default, { item: item }, idx))) })] }), (0, jsx_runtime_1.jsx)("img", { src: bg, className: 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center', loading: 'eager' })] }, 'render-result') }));
40
+ const beatleaderItems = items.map((it) => ({
41
+ ...it,
42
+ pinned: it.metadata?.pinnedContexts !== undefined,
43
+ }));
44
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)("div", { id: 'render-result', className: 'flex flex-col justify-center items-center relative h-[720px] w-[1200px] my-auto', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white rounded-lg flex flex-col space-y-2 z-10', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex justify-between', children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex space-x-4 pb-2", children: [(0, jsx_runtime_1.jsx)("img", { src: user.avatar, className: 'h-36 w-36 rounded-md z-10', loading: 'eager' }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col justify-between', children: [(0, jsx_runtime_1.jsx)("span", { className: 'text-3xl font-bold', children: user.name }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex space-x-2 text-md font-bold items-center', children: [(0, jsx_runtime_1.jsxs)("span", { className: "flex items-center space-x-1", children: [(0, jsx_runtime_1.jsx)(flag_1.EarchIcon, {}), (0, jsx_runtime_1.jsxs)("span", { children: ["# ", user.rank] })] }), (0, jsx_runtime_1.jsxs)("span", { className: "flex items-center space-x-1", children: [(0, jsx_runtime_1.jsx)(flag_1.default, { flagNationCode: user.country }), (0, jsx_runtime_1.jsxs)("span", { children: ["# ", user.countryRank] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex gap-2 align-items-center ", children: [(0, jsx_runtime_1.jsx)(socre_badge_1.default, { className: "w-auto text-white", name: 'P', count: user.scoreStats.topPlatform }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { className: "w-auto text-white", name: 'H', count: (0, blheadset_1.getHeadsetForHMD)(user.scoreStats.topHMD) }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { className: "w-auto text-white", name: 'R', count: user.scoreStats.rankedPlayCount })] }), (0, jsx_runtime_1.jsxs)("div", { className: (0, tw_join_1.twJoin)('text-4xl font-bold ', ' bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300', 'text-orange-100'), children: [user.pp, " PP"] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "px-3 flex flex-col justify-end items-center grow", children: [user.badges.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-3 gap-2 justify-self-center align-items-cener justify-items-center mb-auto mt-2", children: user.badges.map((badge) => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("img", { alt: badge.description, src: badge.image, width: '70px', height: '20px', className: "self-center w-[70px] h-5" }, badge.id) }))) })), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-3 gap-2 align-items-center py-2", children: [(0, jsx_runtime_1.jsx)(socre_badge_1.default, { name: 'SS+', count: user.scoreStats.sspPlays }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { name: 'SS', count: user.scoreStats.ssPlays }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { name: 'S+', count: user.scoreStats.spPlays }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { name: 'S', count: user.scoreStats.sPlays }), (0, jsx_runtime_1.jsx)(socre_badge_1.default, { name: 'A', count: user.scoreStats.aPlays })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "ml-auto mr-4 flex justify-center items-center", children: (0, jsx_runtime_1.jsx)(skill_graph_1.default, { factorA: part.accPpPart, factorB: part.techPpPart, factorC: part.passPpPart }) })] }), (0, jsx_runtime_1.jsx)("div", { className: 'grid grid-cols-4 gap-2', children: beatleaderItems.map((item, idx) => ((0, jsx_runtime_1.jsx)(bl_score_item_1.default, { item: item }, idx))) })] }), (0, jsx_runtime_1.jsx)("img", { src: bg, className: 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center', loading: 'eager' })] }, 'render-result') }));
41
45
  }
42
46
  exports.default = BLPlayerPage;
43
47
  //# sourceMappingURL=bl-player.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bl-player.js","sourceRoot":"","sources":["../../../src/img-render/result/bl-player.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bl-player.js","sourceRoot":"","sources":["../../../src/img-render/result/bl-player.tsx"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ const flag_1 = __importStar(require("../components/flag"));
32
32
  const tw_join_1 = require("../utils/tw-join");
33
33
  const ss_score_item_1 = __importDefault(require("../components/ss-score-item"));
34
34
  function SSPlayerPage({ leaderItems, scoreUser, bg, params, }) {
35
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col justify-center items-center relative h-[720px] w-[1024px] my-auto', id: "render-result", children: [(0, jsx_runtime_1.jsxs)("div", { className: 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white rounded-lg flex flex-col space-y-2 z-10', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex space-x-4 pb-2', children: [(0, jsx_runtime_1.jsx)("img", { className: 'h-32 w-32 rounded-md', src: scoreUser.profilePicture, loading: 'eager' }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col justify-between', children: [(0, jsx_runtime_1.jsx)("span", { className: 'text-3xl font-bold', children: scoreUser.name }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex space-x-2 text-md font-bold items-center', children: [(0, jsx_runtime_1.jsxs)("span", { className: "flex items-center space-x-1", children: [(0, jsx_runtime_1.jsx)(flag_1.EarchIcon, {}), (0, jsx_runtime_1.jsxs)("span", { children: ["# ", scoreUser.rank] })] }), (0, jsx_runtime_1.jsxs)("span", { className: "flex items-center space-x-1", children: [(0, jsx_runtime_1.jsx)(flag_1.default, { flagNationCode: scoreUser.country }), (0, jsx_runtime_1.jsxs)("span", { children: ["# ", scoreUser.countryRank] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: (0, tw_join_1.twJoin)('text-4xl font-bold ', ' bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300', 'text-orange-100'), children: [scoreUser.pp.toFixed(3), " PP"] })] }), (0, jsx_runtime_1.jsx)("div", { className: 'text-4xl pl-40 items-center flex text-gray-100 opacity-70', children: (0, jsx_runtime_1.jsx)("span", { children: "coming soon, ... maybe?" }) })] }), (0, jsx_runtime_1.jsx)("div", { className: 'grid grid-cols-4 gap-2', children: leaderItems.map((item, idx) => ((0, jsx_runtime_1.jsx)(ss_score_item_1.default, { scoreItem: item }, idx))) })] }), (0, jsx_runtime_1.jsx)("img", { src: bg, className: 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center', loading: 'eager' })] }) }));
35
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col justify-center items-center relative h-[720px] w-[1200px] my-auto', id: "render-result", children: [(0, jsx_runtime_1.jsxs)("div", { className: 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white rounded-lg flex flex-col space-y-2 z-10', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex space-x-4 pb-2', children: [(0, jsx_runtime_1.jsx)("img", { className: 'h-32 w-32 rounded-md', src: scoreUser.profilePicture, loading: 'eager' }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col justify-between', children: [(0, jsx_runtime_1.jsx)("span", { className: 'text-3xl font-bold', children: scoreUser.name }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex space-x-2 text-md font-bold items-center', children: [(0, jsx_runtime_1.jsxs)("span", { className: "flex items-center space-x-1", children: [(0, jsx_runtime_1.jsx)(flag_1.EarchIcon, {}), (0, jsx_runtime_1.jsxs)("span", { children: ["# ", scoreUser.rank] })] }), (0, jsx_runtime_1.jsxs)("span", { className: "flex items-center space-x-1", children: [(0, jsx_runtime_1.jsx)(flag_1.default, { flagNationCode: scoreUser.country }), (0, jsx_runtime_1.jsxs)("span", { children: ["# ", scoreUser.countryRank] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: (0, tw_join_1.twJoin)('text-4xl font-bold ', ' bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300', 'text-orange-100'), children: [scoreUser.pp.toFixed(3), " PP"] })] }), (0, jsx_runtime_1.jsx)("div", { className: 'text-4xl pl-40 items-center flex text-gray-100 opacity-70', children: (0, jsx_runtime_1.jsx)("span", { children: "coming soon, ... maybe?" }) })] }), (0, jsx_runtime_1.jsx)("div", { className: 'grid grid-cols-4 gap-2', children: leaderItems.map((item, idx) => ((0, jsx_runtime_1.jsx)(ss_score_item_1.default, { scoreItem: item }, idx))) })] }), (0, jsx_runtime_1.jsx)("img", { src: bg, className: 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center', loading: 'eager' })] }) }));
36
36
  }
37
37
  exports.default = SSPlayerPage;
38
38
  //# sourceMappingURL=ss-player.js.map
@@ -2,17 +2,20 @@
2
2
  import { Browser, ScreenshotClip, ScreenshotOptions } from 'puppeteer-core';
3
3
  import { Config } from '../config';
4
4
  export interface PuppeteerProvider {
5
- browser: Browser;
5
+ browser: () => Promise<Browser>;
6
6
  ok: boolean;
7
7
  }
8
8
  export declare class RemotePuppeteerProvider implements PuppeteerProvider {
9
- browser: Browser;
9
+ _browser: Browser;
10
+ endpoint: string;
11
+ _ok: boolean;
12
+ browser(): Promise<Browser>;
10
13
  constructor(config: Config);
11
14
  get ok(): boolean;
12
15
  }
13
16
  export declare class PuppeteerRender {
14
17
  browserHolders: PuppeteerProvider[];
15
- get browser(): Browser;
18
+ get browser(): Promise<Browser>;
16
19
  get ok(): false | PuppeteerProvider;
17
20
  constructor(providers: PuppeteerProvider[]);
18
21
  renderHTML(html: string, selector: string, onStart?: () => void, screenShotOption?: (clip: ScreenshotClip) => ScreenshotOptions): Promise<Buffer>;
@@ -7,20 +7,28 @@ exports.PuppeteerRender = exports.RemotePuppeteerProvider = void 0;
7
7
  const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
8
8
  const index_1 = require("./index");
9
9
  class RemotePuppeteerProvider {
10
- browser;
10
+ _browser;
11
+ endpoint;
12
+ _ok = true;
13
+ async browser() {
14
+ if (this._browser?.connected) {
15
+ return this._browser;
16
+ }
17
+ try {
18
+ this._browser = await puppeteer_core_1.default.connect({
19
+ browserWSEndpoint: this.endpoint,
20
+ });
21
+ return this._browser;
22
+ }
23
+ catch (e) {
24
+ this._ok = false;
25
+ }
26
+ }
11
27
  constructor(config) {
12
- puppeteer_core_1.default
13
- .connect({ browserWSEndpoint: config.broswerlessWSEndpoint })
14
- .then((res) => {
15
- console.log('connect to browser successful');
16
- this.browser = res;
17
- })
18
- .catch((e) => {
19
- console.error('connection error', e);
20
- });
28
+ this.endpoint = config.broswerlessWSEndpoint;
21
29
  }
22
30
  get ok() {
23
- return this.browser != null || this.browser != undefined;
31
+ return this._ok;
24
32
  }
25
33
  }
26
34
  exports.RemotePuppeteerProvider = RemotePuppeteerProvider;
@@ -29,7 +37,7 @@ class PuppeteerRender {
29
37
  get browser() {
30
38
  const provider = this.browserHolders.find((it) => it.ok);
31
39
  if (provider) {
32
- return provider.browser;
40
+ return provider.browser();
33
41
  }
34
42
  throw Error('NoSuitablePuppeteerProviderFound');
35
43
  }
@@ -37,35 +45,40 @@ class PuppeteerRender {
37
45
  return this.browserHolders.find((it) => it.ok) ?? false;
38
46
  }
39
47
  constructor(providers) {
40
- // unsafe singleton, but enough for now
41
48
  this.browserHolders = providers;
42
49
  }
43
50
  async renderHTML(html, selector, onStart, screenShotOption) {
44
51
  onStart?.();
45
- const page = await this.browser.newPage();
52
+ const browser = await this.browser;
53
+ const page = await browser.newPage();
46
54
  await page.setContent(html);
47
- await page.setViewport({
48
- width: 3840,
49
- height: 2160,
50
- deviceScaleFactor: 1,
51
- });
55
+ // await page.setViewport({
56
+ // width: 3840,
57
+ // height: 2160,
58
+ // deviceScaleFactor: 1,
59
+ // })
52
60
  const elm = await page.waitForSelector(selector, { timeout: 5000 });
53
- // const clip = await elm.boundingBox()
54
- const u8Arr = await elm
55
- .screenshot();
61
+ const clip = await elm.boundingBox();
62
+ const u8Arr = await elm.screenshot(screenShotOption
63
+ ? screenShotOption(clip)
64
+ : {
65
+ clip: clip,
66
+ type: 'png',
67
+ });
56
68
  await page.close();
57
69
  return Buffer.from(u8Arr);
58
70
  }
59
71
  async screenshotURL(url, selector, onStart, screenShotOption) {
60
72
  onStart?.();
61
- const page = await this.browser.newPage();
62
- await page.setViewport({
63
- width: 3840,
64
- height: 2160,
65
- deviceScaleFactor: 1,
66
- });
73
+ const browser = await this.browser;
74
+ const page = await browser.newPage();
75
+ // await page.setViewport({
76
+ // width: 3840,
77
+ // height: 2160,
78
+ // deviceScaleFactor: 1,
79
+ // })
67
80
  await page.goto(url, { timeout: 0, waitUntil: 'domcontentloaded' });
68
- const elm = await page.waitForSelector(selector, { timeout: 20000 });
81
+ const elm = await page.waitForSelector(selector, { timeout: 10000 });
69
82
  // wait for potential animation
70
83
  await (0, index_1.sleep)(3000);
71
84
  // const clip = await elm.boundingBox()
@@ -1 +1 @@
1
- {"version":3,"file":"puppeteer.js","sourceRoot":"","sources":["../../src/utils/puppeteer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puppeteer.js","sourceRoot":"","sources":["../../src/utils/puppeteer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "beatsaber-bot-core",
3
3
  "description": "一个用于新版 Steam 家庭的库存监控 Bot 插件",
4
- "version": "0.2.0-dev.34",
4
+ "version": "0.2.0-dev.36",
5
5
  "types": "lib/index.d.ts",
6
6
  "files": [
7
7
  "lib"
@@ -60,10 +60,14 @@
60
60
  "lru-cache": "^11.0.1",
61
61
  "lucide-react": "^0.379.0",
62
62
  "ofetch": "^1.4.1",
63
- "puppeteer-core": "^23.4.1",
63
+ "puppeteer-core": "^23.8.0",
64
64
  "react": "^18.3.1",
65
65
  "react-dom": "^18.3.1"
66
66
  },
67
+ "devDependencies": {
68
+ "tailwindcss": "^3.4.15",
69
+ "autoprefixer": "^10.4.20"
70
+ },
67
71
  "optionalDependencies": {
68
72
  "canvas": "^2.11.2",
69
73
  "skia-canvas": "^1.0.1",
@@ -1,6 +0,0 @@
1
- import { AioOauthTokenResponse } from '../interfaces/aiosaber';
2
- import { Config } from '../../config';
3
- export declare const aioRequest: (cfg: Config) => {
4
- getBSOAuthToken: (key: string) => Promise<AioOauthTokenResponse>;
5
- getBLOAuthToken: (key: string) => Promise<AioOauthTokenResponse>;
6
- };
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.aioRequest = void 0;
4
- const get = (...args) => fetch(args).then((res) => res.json());
5
- const aioRequest = (cfg) => {
6
- let host = 'https://aiobs.ktlab.io';
7
- if (host.endsWith('/')) {
8
- host = host.substring(0, host.length - 1);
9
- }
10
- const url = (path) => {
11
- if (!path.startsWith('/')) {
12
- path = '/' + path;
13
- }
14
- return host + path;
15
- };
16
- const getBSOAuthToken = async (key) => get(url(`/api/oauth/beatsaver/token/${key}`));
17
- const getBLOAuthToken = async (key) => get(url(`/api/oauth/beatleader/token/${key}`));
18
- return {
19
- getBSOAuthToken,
20
- getBLOAuthToken,
21
- };
22
- };
23
- exports.aioRequest = aioRequest;
24
- //# sourceMappingURL=aioRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aioRequest.js","sourceRoot":"","sources":["../../../src/api/base/aioRequest.ts"],"names":[],"mappings":";;;AAGA,MAAM,GAAG,GAAG,CAAI,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAO,CAAC,CAAA;AAEtE,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;IACxC,IAAI,IAAI,GAAG,wBAAwB,CAAA;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC3C,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;QACnB,CAAC;QACD,OAAO,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC,CAAA;IACD,MAAM,eAAe,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE,CAC5C,GAAG,CAAwB,GAAG,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC,CAAA;IACtE,MAAM,eAAe,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE,CAC5C,GAAG,CAAwB,GAAG,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC,CAAA;IACvE,OAAO;QACL,eAAe;QACf,eAAe;KAChB,CAAA;AACH,CAAC,CAAA;AAnBY,QAAA,UAAU,cAmBtB"}
@@ -1,12 +0,0 @@
1
- import { BeadLeaderScoresResponse, BeatLeaderPlayerScoreRequest, Leaderboard, Score, BeatLeaderUser } from '../interfaces/beatleader';
2
- import { Config } from '../../config';
3
- import { OAuthTokenInfoResponse, OAuthTokenResponse } from './bsRequest';
4
- export declare const blRequest: (cfg: Config) => {
5
- getPlayerScore: (req: BeatLeaderPlayerScoreRequest) => Promise<Leaderboard>;
6
- getPlayerScores: (accountId: string) => Promise<BeadLeaderScoresResponse>;
7
- getPlayerInfo: (accountId: string) => Promise<BeatLeaderUser>;
8
- getPlayerPinnedScores: (accountId: string) => Promise<Score[]>;
9
- getTokenInfo: (accessToken: string) => Promise<OAuthTokenInfoResponse>;
10
- refreshOAuthToken: (refreshToken: string) => Promise<OAuthTokenResponse>;
11
- getBeatScore: (scoreId: string) => Promise<Score>;
12
- };
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.blRequest = void 0;
4
- const utils_1 = require("../../utils");
5
- const blRequest = (cfg) => {
6
- let host = 'https://api.beatleader.xyz';
7
- if (host.endsWith('/')) {
8
- host = host.substring(0, host.length - 1);
9
- }
10
- const url = (path) => {
11
- if (!path.startsWith('/')) {
12
- path = '/' + path;
13
- }
14
- return host + path;
15
- };
16
- const getPlayerScore = async (req) => {
17
- const res = await (0, utils_1.fetchWithCache)(url(`/score/${req.leaderboardContext}/${req.playerID}/${req.hash}/${req.diff}/${req.mode}`));
18
- return res;
19
- };
20
- const getTokenInfo = async (accessToken) => {
21
- return (0, utils_1.fetchWithCache)(url(`/oauth2/identity`), {
22
- headers: {
23
- Authorization: `Bearer ${accessToken}`,
24
- },
25
- });
26
- };
27
- const refreshOAuthToken = async (refreshToken) => {
28
- const form = new URLSearchParams();
29
- form.append('client_id', cfg.blOauthClientId);
30
- form.append('client_secret', cfg.blOauthClientSecret);
31
- form.append('grant_type', 'refresh_token');
32
- form.append('refresh_token', refreshToken);
33
- const res = await fetch('https://beatsaver.com/api/oauth2/token', {
34
- method: 'POST',
35
- headers: {
36
- 'Content-Type': 'application/x-www-form-urlencoded',
37
- },
38
- body: form,
39
- }).then((res) => res.json());
40
- if (!res.access_token) {
41
- throw new Error('refreshToken failed');
42
- }
43
- return res;
44
- };
45
- const getPlayerInfo = async (accountId) => {
46
- return (0, utils_1.fetchWithCache)(url(`/player/${accountId}`));
47
- };
48
- const getPlayerScores = async (accountId) => {
49
- return (0, utils_1.fetchWithCache)(url(`/player/${accountId}/scores?count=24&sortBy=pp`));
50
- };
51
- const getPlayerPinnedScores = async (accountId) => {
52
- return (0, utils_1.fetchWithCache)(url(`/player/${accountId}/pinnedScores`));
53
- };
54
- const getBeatScore = async (scoreId) => {
55
- return (0, utils_1.fetchWithCache)(url(`/score/${scoreId}`));
56
- };
57
- return {
58
- getPlayerScore,
59
- getPlayerScores,
60
- getPlayerInfo,
61
- getPlayerPinnedScores,
62
- getTokenInfo,
63
- refreshOAuthToken,
64
- getBeatScore,
65
- };
66
- };
67
- exports.blRequest = blRequest;
68
- //# sourceMappingURL=blRequset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blRequset.js","sourceRoot":"","sources":["../../../src/api/base/blRequset.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { Config } from '../../config';
2
- import { BeatsaverAlert, BSMap, BSUserResponse, HashReqResponse } from '../interfaces/beatsaver';
3
- export interface OAuthTokenResponse {
4
- access_token: string;
5
- token_type: string;
6
- expires_in: number;
7
- refresh_token: string;
8
- scope?: string;
9
- }
10
- export interface OAuthTokenInfoResponse {
11
- scope?: string[];
12
- id: string;
13
- name: string;
14
- }
15
- export declare const bsRequest: (cfg: Config) => {
16
- refreshOAuthToken: (refreshToken: string) => Promise<OAuthTokenResponse>;
17
- getBSMapperById: (userId: string) => Promise<BSUserResponse>;
18
- getLatestMaps: (pageSize?: number) => Promise<BSMap[]>;
19
- searchMapByKeyword: (key: string) => Promise<BSMap[]>;
20
- searchMapById: (id: string) => Promise<BSMap>;
21
- getUnreadAlertsByPage: (accessToken: string, page: number) => Promise<BeatsaverAlert[]>;
22
- getTokenInfo: (accessToken: string) => Promise<OAuthTokenInfoResponse>;
23
- getMapsByHashes: (hashes: string[]) => Promise<HashReqResponse>;
24
- };
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.bsRequest = void 0;
4
- const get = (...args) => fetch(args).then((res) => res.json());
5
- const bsRequest = (cfg) => {
6
- let host = cfg.beatSaverHost ?? 'https://api.beatsaver.com';
7
- if (host.endsWith('/')) {
8
- host = host.substring(0, host.length - 1);
9
- }
10
- const url = (path) => {
11
- if (!path.startsWith('/')) {
12
- path = '/' + path;
13
- }
14
- return host + path;
15
- };
16
- const getBSMapperById = async (userId) => get(url(`/users/id/${userId}`));
17
- const getLatestMaps = async (pageSize = 5) => get(url(`/maps/latest?sort=FIRST_PUBLISHED&pageSize=${pageSize}`)).then((res) => res.docs);
18
- const searchMapByKeyword = async (key) => get(url(`/search/text/0?q=${key}`)).then((res) => res.docs);
19
- const searchMapById = async (id) => get(url(`/maps/id/${id}`));
20
- const getAlertsStats = async (accessToken) => get(url(`/alerts/stats`), {
21
- headers: { Authorization: `Bearer ${accessToken}` },
22
- });
23
- const getAlertsByPage = async (accessToken, type, page) => get(url(`/alerts/${type}/${page}`), {
24
- headers: { Authorization: `Bearer ${accessToken}` },
25
- });
26
- const getUnreadAlertsByPage = (accessToken, page) => getAlertsByPage(accessToken, 'unread', page);
27
- const getReadAlertsByPage = (accessToken, page) => getAlertsByPage(accessToken, 'read', page);
28
- const refreshOAuthToken = async (refreshToken) => {
29
- const form = new FormData();
30
- form.append('client_id', cfg.bsOauthClientId);
31
- form.append('client_secret', cfg.bsOauthClientSecret);
32
- form.append('grant_type', 'refresh_token');
33
- form.append('refresh_token', refreshToken);
34
- const res = await fetch('https://beatsaver.com/api/oauth2/token', {
35
- method: 'POST',
36
- body: form,
37
- }).then((res) => res.json());
38
- if (!res.access_token) {
39
- throw new Error('refreshToken failed');
40
- }
41
- return res;
42
- };
43
- //
44
- const getTokenInfo = async (accessToken) => {
45
- return get(url(`/oauth2/identity`), {
46
- headers: {
47
- Authorization: `Bearer ${accessToken}`,
48
- },
49
- });
50
- };
51
- const getMapsByHashes = async (hashes) => get(url(`/maps/hash/${hashes.join(',')}`));
52
- return {
53
- refreshOAuthToken,
54
- getBSMapperById,
55
- getLatestMaps,
56
- searchMapByKeyword,
57
- searchMapById,
58
- getUnreadAlertsByPage,
59
- getTokenInfo,
60
- getMapsByHashes,
61
- };
62
- };
63
- exports.bsRequest = bsRequest;
64
- //# sourceMappingURL=bsRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bsRequest.js","sourceRoot":"","sources":["../../../src/api/base/bsRequest.ts"],"names":[],"mappings":";;;AAuBA,MAAM,GAAG,GAAG,CAAI,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAO,CAAC,CAAA;AACtE,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;IACvC,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,IAAI,2BAA2B,CAAA;IAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;QACnB,CAAC;QACD,OAAO,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE,CAC/C,GAAG,CAAiB,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAA;IAEjD,MAAM,aAAa,GAAG,KAAK,EAAE,WAAmB,CAAC,EAAE,EAAE,CACnD,GAAG,CACD,GAAG,CAAC,8CAA8C,QAAQ,EAAE,CAAC,CAC9D,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAE3B,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE,CAC/C,GAAG,CAAsB,GAAG,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAC3D,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAClB,CAAA;IAEH,MAAM,aAAa,GAAG,KAAK,EAAE,EAAU,EAAE,EAAE,CAAC,GAAG,CAAQ,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAA;IAE7E,MAAM,cAAc,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE,CACnD,GAAG,CAAsB,GAAG,CAAC,eAAe,CAAC,EAAE;QAC7C,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE;KACpD,CAAC,CAAA;IAEJ,MAAM,eAAe,GAAG,KAAK,EAC3B,WAAmB,EACnB,IAAuB,EACvB,IAAY,EACZ,EAAE,CACF,GAAG,CAAmB,GAAG,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE;QACpD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE;KACpD,CAAC,CAAA;IAEJ,MAAM,qBAAqB,GAAG,CAAC,WAAmB,EAAE,IAAY,EAAE,EAAE,CAClE,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAE9C,MAAM,mBAAmB,GAAG,CAAC,WAAmB,EAAE,IAAY,EAAE,EAAE,CAChE,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAE5C,MAAM,iBAAiB,GAAG,KAAK,EAAE,YAAoB,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAA;QACrD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;QAC1C,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;QAC1C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,wCAAwC,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;SACX,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAiC,CAAC,CAAA;QAC3D,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;IAED,EAAE;IACF,MAAM,YAAY,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;QACjD,OAAO,GAAG,CAAyB,GAAG,CAAC,kBAAkB,CAAC,EAAE;YAC1D,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,EAAE;aACvC;SACF,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,KAAK,EAAE,MAAgB,EAAE,EAAE,CACjD,GAAG,CAAkB,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAE7D,OAAO;QACL,iBAAiB;QACjB,eAAe;QACf,aAAa;QACb,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,YAAY;QACZ,eAAe;KAChB,CAAA;AACH,CAAC,CAAA;AAtFY,QAAA,SAAS,aAsFrB"}
@@ -1,8 +0,0 @@
1
- import { Config } from '../../config';
2
- import { ScoreSaberUser, ScoreSaberUserResponse } from '../interfaces/scoresaber';
3
- import { ScoresaberLeaderboardResp } from '../../api/interfaces/scoresaber/leaderboard';
4
- export declare const scRequest: (cfg: Config) => {
5
- getScoreUserById: (userId: string) => Promise<ScoreSaberUser>;
6
- getScoreItemsById: (userId: string, page: number, pageSize?: number) => Promise<ScoreSaberUserResponse>;
7
- getScoreItemsByMapId: (mapId: string, diff: string, mode: string, page: number, pageSize?: number) => Promise<ScoresaberLeaderboardResp>;
8
- };
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.scRequest = void 0;
7
- const fetch_1 = __importDefault(require("../../utils/fetch"));
8
- const convertToLeaderboardId = (mapid, diff, mode) => {
9
- return mapid;
10
- };
11
- const scRequest = (cfg) => {
12
- const f = fetch_1.default.extend({
13
- baseURL: 'https://scoresaber.com',
14
- });
15
- const getScoreUserById = async (userId) => {
16
- return f.get(`/api/player/${userId}/full`);
17
- };
18
- const getScoreItemsById = (userId, page, pageSize = 8) => {
19
- return f.get(`/api/player/${userId}/scores`, {
20
- params: {
21
- sort: 'top',
22
- page: page,
23
- pageSize: pageSize,
24
- },
25
- });
26
- };
27
- const getScoreItemsByMapId = (mapId, diff, mode, page, pageSize = 8) => {
28
- const id = convertToLeaderboardId(mapId, diff, mode);
29
- return f.get(`/api/leaderboard/by-id/${id}/scores`, {
30
- params: {
31
- page: page,
32
- pageSize: pageSize,
33
- },
34
- });
35
- };
36
- return {
37
- getScoreUserById,
38
- getScoreItemsById,
39
- getScoreItemsByMapId,
40
- };
41
- };
42
- exports.scRequest = scRequest;
43
- //# sourceMappingURL=scRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scRequest.js","sourceRoot":"","sources":["../../../src/api/base/scRequest.ts"],"names":[],"mappings":";;;;;;AAMA,0DAAkC;AAElC,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,IAAY,EAAE,EAAE;IAC3E,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAEM,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;IACvC,MAAM,CAAC,GAAG,eAAM,CAAC,MAAM,CAAC;QACtB,OAAO,EAAE,wBAAwB;KAClC,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;QAChD,OAAO,CAAC,CAAC,GAAG,CAAiB,eAAe,MAAM,OAAO,CAAC,CAAA;IAC5D,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,CACxB,MAAc,EACd,IAAY,EACZ,WAAmB,CAAC,EACpB,EAAE;QACF,OAAO,CAAC,CAAC,GAAG,CAAyB,eAAe,MAAM,SAAS,EAAE;YACnE,MAAM,EAAE;gBACN,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,QAAQ;aACnB;SACF,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,MAAM,oBAAoB,GAAG,CAC3B,KAAa,EACb,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,WAAmB,CAAC,EACgB,EAAE;QACtC,MAAM,EAAE,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACpD,OAAO,CAAC,CAAC,GAAG,CAAC,0BAA0B,EAAE,SAAS,EAAE;YAClD,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,QAAQ;aACnB;SACF,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,OAAO;QACL,gBAAgB;QAChB,iBAAiB;QACjB,oBAAoB;KACrB,CAAA;AACH,CAAC,CAAA;AA1CY,QAAA,SAAS,aA0CrB"}
package/lib/db/index.d.ts DELETED
File without changes
package/lib/db/index.js DELETED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- import { Score } from '../../api/interfaces/beatleader';
2
- export default function BeatLeaderItem({ item, }: {
3
- item: Score & {
4
- pinned?: boolean;
5
- };
6
- }): import("react/jsx-runtime").JSX.Element;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsx_runtime_1 = require("react/jsx-runtime");
4
- const lucide_react_1 = require("lucide-react");
5
- const utils_1 = require("../utils");
6
- const getModifiers = (modifiers) => {
7
- return modifiers ? modifiers.split(',') : [];
8
- };
9
- function BeatLeaderItem({ item, }) {
10
- return ((0, jsx_runtime_1.jsxs)("div", { className: "relative overflow-hidden", children: [(0, jsx_runtime_1.jsxs)("div", { className: 'rounded-lg flex bg-black/[.4] space-x-2 backdrop-blur-md', children: [(0, jsx_runtime_1.jsx)("img", { loading: 'eager', src: item.leaderboard.song.coverImage, className: 'rounded-md h-20 w-20', alt: 'score item cover' }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col space-y-1 py-0.5', children: [(0, jsx_runtime_1.jsx)("div", { className: 'font-semibold text-xs text-ellipsis overflow-hidden line-clamp-1 break-all', children: item.leaderboard.song.name }), (0, jsx_runtime_1.jsxs)("div", { className: 'text-xs flex items-center space-x-2 *:flex *:items-center *:space-x-1 ', children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.BarChart, { className: 'w-3 h-3' }) }), (0, jsx_runtime_1.jsx)("span", { children: (0, utils_1.diffConv)(item.leaderboard.difficulty.difficultyName) })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Star, { className: 'w-3 h-3' }) }), (0, jsx_runtime_1.jsxs)("span", { children: [item.leaderboard.difficulty.stars?.toFixed(2) ?? 'none', ' '] })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Key, { className: 'w-3 h-3' }) }), (0, jsx_runtime_1.jsx)("span", { children: item.leaderboard.song.id.toLowerCase().replaceAll('x', '') })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex space-x-2 text-xs items-center', children: [(0, jsx_runtime_1.jsxs)("span", { children: [((item.baseScore / item.leaderboard.difficulty.maxScore) *
11
- 100).toFixed(2), "%"] }), (0, jsx_runtime_1.jsxs)("span", { className: 'text-orange-200', children: [item.pp.toFixed(2), "PP"] }), (0, jsx_runtime_1.jsx)("span", { className: 'text-xs opacity-70', children: (0, utils_1.formatRelativeTimeByDay)(item.timepost * 1000) })] }), (0, jsx_runtime_1.jsx)("div", { className: 'flex items-center space-x-2', children: getModifiers(item.modifiers).length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "text-xs flex flex-wrap space-x-2 items-center", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Wrench, { className: "h-3 w-3" }), getModifiers(item.modifiers).map((modifier) => ((0, jsx_runtime_1.jsx)("span", { children: modifier }, modifier)))] })) })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "absolute right-1 bottom-1 text-white flex text-xs space-x-1 items-center", children: [item.fullCombo && ((0, jsx_runtime_1.jsx)("span", { className: "from-blue-300 to-red-300 bg-gradient-to-r bg-clip-text text-transparent", children: "FC" })), item.pinned && (0, jsx_runtime_1.jsx)(lucide_react_1.Pin, { className: "rotate-45 h-3 w-3 my-auto" })] })] }));
12
- }
13
- exports.default = BeatLeaderItem;
14
- //# sourceMappingURL=blScoreItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blScoreItem.js","sourceRoot":"","sources":["../../../src/img-render/components/blScoreItem.tsx"],"names":[],"mappings":";;;AAAA,+CAA+D;AAC/D,oCAA4D;AAG5D,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;IACzC,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC9C,CAAC,CAAA;AAED,SAAwB,cAAc,CAAC,EACrC,IAAI,GAKL;IACC,OAAO,CACL,iCAAK,SAAS,EAAC,2BAA2B,aACxC,iCACE,SAAS,EAAE,0DAA0D,aAErE,gCACE,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EACrC,SAAS,EAAE,sBAAsB,EACjC,GAAG,EAAE,kBAAkB,GACvB,EACF,iCAAK,SAAS,EAAE,gCAAgC,aAC9C,gCACE,SAAS,EACP,4EAA4E,YAG7E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,GACvB,EACN,iCACE,SAAS,EACP,wEAAwE,aAG1E,4CACE,2CACE,uBAAC,uBAAQ,IAAC,SAAS,EAAE,SAAS,GAAI,GAC7B,EACP,2CACG,IAAA,gBAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,GAChD,IACH,EACN,4CACE,2CACE,uBAAC,mBAAI,IAAC,SAAS,EAAE,SAAS,GAAI,GACzB,EACP,6CACG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IACxD,IACH,EACN,4CACE,2CACE,uBAAC,kBAAG,IAAC,SAAS,EAAE,SAAS,GAAI,GACxB,EACP,2CACG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,GACtD,IACH,IACF,EACN,iCAAK,SAAS,EAAE,qCAAqC,aACnD,6CACG,CACC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC;gDACvD,GAAG,CACJ,CAAC,OAAO,CAAC,CAAC,CAAC,SAEP,EACP,kCAAM,SAAS,EAAE,iBAAiB,aAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EACjE,iCAAM,SAAS,EAAE,oBAAoB,YAClC,IAAA,+BAAuB,EAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GACzC,IACH,EACN,gCAAK,SAAS,EAAE,6BAA6B,YAC1C,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1C,iCAAK,SAAS,EAAC,+CAA+C,aAC5D,uBAAC,qBAAM,IAAC,SAAS,EAAC,SAAS,GAAG,EAC7B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC9C,2CAAsB,QAAQ,IAAnB,QAAQ,CAAmB,CACvC,CAAC,IACE,CACP,GACG,IACF,IACF,EAEN,iCAAK,SAAS,EAAC,0EAA0E,aACtF,IAAI,CAAC,SAAS,IAAI,CACjB,iCAAM,SAAS,EAAC,yEAAyE,mBAElF,CACR,EACA,IAAI,CAAC,MAAM,IAAI,uBAAC,kBAAG,IAAC,SAAS,EAAC,2BAA2B,GAAG,IACzD,IACF,CACP,CAAA;AACH,CAAC;AA5FD,iCA4FC"}
@@ -1,18 +0,0 @@
1
- interface ScoreItemProps {
2
- name: string;
3
- avatar: string;
4
- globalRank: number;
5
- countryCode: string;
6
- isRegionRank: boolean;
7
- score: number;
8
- modifiers: string;
9
- acc: number;
10
- pp: number;
11
- date: number;
12
- self: boolean;
13
- }
14
- export declare function RankScoreItem(props: ScoreItemProps): import("react/jsx-runtime").JSX.Element;
15
- export declare function ScoreItemSkeleton({ isRegionRank }: {
16
- isRegionRank: boolean;
17
- }): import("react/jsx-runtime").JSX.Element;
18
- export {};
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.ScoreItemSkeleton = exports.RankScoreItem = void 0;
30
- const jsx_runtime_1 = require("react/jsx-runtime");
31
- const dayjs_1 = __importDefault(require("dayjs"));
32
- const flag_1 = __importStar(require("../../img-render/components/flag"));
33
- const utils_1 = require("../../img-render/utils");
34
- function RankScoreItem(props) {
35
- return ((0, jsx_runtime_1.jsx)("div", { className: `${props.self ? 'gradient-border' : ''} bs-bg-gradient shadow-xl rounded-lg -skew-x-12 w-80 h-20 text-white font-bold flex flex-col p-1 z-10 relative max-w-[300px]`, children: (0, jsx_runtime_1.jsxs)("div", { className: "skew-x-12 relative", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center translate-x-2 justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: 'w-12 h-12 relative', children: [(0, jsx_runtime_1.jsx)("img", { src: props.avatar, className: "shadow-lg w-12 h-12 rounded-full object-cover" }), (0, jsx_runtime_1.jsx)("div", { className: 'w-3 h-3 absolute bottom-0 right-3', children: (0, jsx_runtime_1.jsx)(flag_1.default, { flagNationCode: props.countryCode }) })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: 'line-clamp-1 text-ellipsis max-w-[100px]', children: props.name }), (0, jsx_runtime_1.jsxs)("span", { className: "flex items-center space-x-1", children: [!props.isRegionRank && (0, jsx_runtime_1.jsx)(flag_1.EarchIcon, {}), (0, jsx_runtime_1.jsxs)("span", { children: ["# ", props.globalRank] })] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-end -translate-x-2 -skew-x-3", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(props.acc * 100).toFixed(2), " %"] }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex gap-2', children: [(0, jsx_runtime_1.jsx)("div", { className: 'space-x-1', children: props.modifiers.split(',').map((it) => ((0, jsx_runtime_1.jsx)("span", { children: it }, it))) }), (0, jsx_runtime_1.jsx)("div", { children: (0, utils_1.numberWithCommas)(props.score) })] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between mt-0 px-4 -translate-x-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex gap-2", children: (0, jsx_runtime_1.jsx)("div", { className: "flex gap-1 items-center justify-start -skew-x-2 text-xs opacity-60", children: (0, jsx_runtime_1.jsx)("div", { children: (0, utils_1.formatDate)((0, dayjs_1.default)(props.date * 1000).toDate(), 'YY 年 MM 月 DD 日') }) }) }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", { className: "flex gap-1 items-center justify-start translate-x-6 text-xl font-bold text-green-300", children: (0, jsx_runtime_1.jsxs)("div", { children: [" ", props.pp.toFixed(2), " PP"] }) }) })] })] }) }));
36
- }
37
- exports.RankScoreItem = RankScoreItem;
38
- function ScoreItemSkeleton({ isRegionRank }) {
39
- return ((0, jsx_runtime_1.jsx)("div", { className: `bs-bg-gradient shadow-xl rounded-lg -skew-x-12 w-80 h-20 text-white font-bold flex flex-col p-1 z-10 relative max-w-[300px]`, children: (0, jsx_runtime_1.jsxs)("div", { className: "skew-x-12 relative", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center translate-x-2 justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: 'w-12 h-12 relative', children: (0, jsx_runtime_1.jsx)("img", { src: `https://avatar.iran.liara.run/public`, className: "shadow-lg w-12 h-12 rounded-full object-cover" }) }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: 'line-clamp-1 text-ellipsis max-w-[100px]', children: "\u865A\u4F4D\u4EE5\u5F85" }), (0, jsx_runtime_1.jsxs)("span", { className: "flex items-center space-x-1", children: [!isRegionRank && (0, jsx_runtime_1.jsx)(flag_1.EarchIcon, {}), (0, jsx_runtime_1.jsx)("span", { children: "# 0 " })] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-end -translate-x-2 -skew-x-3", children: [(0, jsx_runtime_1.jsx)("div", { children: "0.00 %" }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex gap-2', children: [(0, jsx_runtime_1.jsx)("div", { className: 'space-x-1', children: " " }), (0, jsx_runtime_1.jsx)("div", { children: "000,000" })] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between mt-0 px-4 -translate-x-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex gap-1 items-center justify-start -skew-x-2 text-xs opacity-60", children: (0, jsx_runtime_1.jsx)("div", { children: "00 \u5E74 00 \u6708 00 \u65E5" }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex gap-1 items-center justify-start translate-x-6 text-xl font-bold text-green-300", children: (0, jsx_runtime_1.jsx)("div", { children: " 0.00 PP" }) })] })] }) }));
40
- }
41
- exports.ScoreItemSkeleton = ScoreItemSkeleton;
42
- //# sourceMappingURL=rankScoreItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rankScoreItem.js","sourceRoot":"","sources":["../../../src/img-render/components/rankScoreItem.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { ScoreSaberItem } from '../../api/interfaces/scoresaber';
2
- export default function SsScoreItem({ scoreItem, }: {
3
- scoreItem: ScoreSaberItem;
4
- }): import("react/jsx-runtime").JSX.Element;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsx_runtime_1 = require("react/jsx-runtime");
4
- const lucide_react_1 = require("lucide-react");
5
- const utils_1 = require("../utils");
6
- const getModifiers = (modifiers) => {
7
- return modifiers ? modifiers.split(',') : [];
8
- };
9
- function SsScoreItem({ scoreItem, }) {
10
- return ((0, jsx_runtime_1.jsxs)("div", { className: 'relative', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'rounded-lg flex bg-black/[.4] space-x-2 backdrop-blur-md overflow-hidden', children: [(0, jsx_runtime_1.jsx)("img", { loading: 'eager', src: scoreItem.leaderboard.coverImage, className: 'rounded-md h-20 w-20' }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col space-y-1 py-0.5', children: [(0, jsx_runtime_1.jsx)("div", { className: 'font-semibold text-xs text-ellipsis overflow-hidden line-clamp-1 break-all', children: scoreItem.leaderboard.songName }), (0, jsx_runtime_1.jsxs)("div", { className: 'text-xs flex items-center space-x-2 *:flex *:items-center *:space-x-1 ', children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.BarChart, { className: 'w-3 h-3' }) }), (0, jsx_runtime_1.jsx)("span", { children: (0, utils_1.diffConv)(scoreItem.leaderboard.difficulty.difficultyRaw) })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Star, { className: 'w-3 h-3' }) }), (0, jsx_runtime_1.jsxs)("span", { children: [scoreItem.leaderboard.stars, " "] })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Key, { className: 'w-3 h-3' }) }), (0, jsx_runtime_1.jsx)("span", { children: scoreItem.mapId ?? 'unknown' })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex space-x-2 text-xs', children: [(0, jsx_runtime_1.jsxs)("span", { children: [((scoreItem.score.baseScore / scoreItem.leaderboard.maxScore) *
11
- 100).toFixed(2), "%"] }), (0, jsx_runtime_1.jsxs)("span", { className: 'text-orange-200', children: [scoreItem.score.pp.toFixed(1), "PP"] }), (0, jsx_runtime_1.jsx)("span", { className: 'opacity-70', children: (0, utils_1.formatRelativeTimeByDay)(scoreItem.score.timeSet) })] }), getModifiers(scoreItem.score.modifiers).length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "text-xs flex flex-wrap space-x-2 items-center", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Wrench, { className: "h-3 w-3" }), getModifiers(scoreItem.score.modifiers).map((modifier) => ((0, jsx_runtime_1.jsx)("span", { children: modifier }, modifier)))] }))] })] }), (0, jsx_runtime_1.jsx)("div", { className: "absolute right-1 bottom-1 text-white flex text-xs space-x-1 items-center", children: scoreItem.score.fullCombo && ((0, jsx_runtime_1.jsx)("span", { className: "from-blue-300 to-red-300 bg-gradient-to-r bg-clip-text text-transparent", children: "FC" })) })] }));
12
- }
13
- exports.default = SsScoreItem;
14
- //# sourceMappingURL=ssScoreItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ssScoreItem.js","sourceRoot":"","sources":["../../../src/img-render/components/ssScoreItem.tsx"],"names":[],"mappings":";;;AAAA,+CAA0D;AAC1D,oCAA4D;AAI5D,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;IACzC,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC9C,CAAC,CAAA;AACD,SAAwB,WAAW,CAAC,EAClC,SAAS,GAGV;IACC,OAAO,CACL,iCAAK,SAAS,EAAE,UAAU,aACxB,iCACE,SAAS,EACP,2EAA2E,aAG7E,gCACE,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,SAAS,CAAC,WAAW,CAAC,UAAU,EACrC,SAAS,EAAE,sBAAsB,GACjC,EACF,iCAAK,SAAS,EAAE,gCAAgC,aAC9C,gCACE,SAAS,EACP,4EAA4E,YAG7E,SAAS,CAAC,WAAW,CAAC,QAAQ,GAC3B,EACN,iCACE,SAAS,EACP,wEAAwE,aAG1E,4CACE,2CACE,uBAAC,uBAAQ,IAAC,SAAS,EAAE,SAAS,GAAI,GAC7B,EACP,2CACG,IAAA,gBAAQ,EAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,GACpD,IACH,EACN,4CACE,2CACE,uBAAC,mBAAI,IAAC,SAAS,EAAE,SAAS,GAAI,GACzB,EACP,6CAAO,SAAS,CAAC,WAAW,CAAC,KAAK,SAAS,IACvC,EACN,4CACE,2CACE,uBAAC,kBAAG,IAAC,SAAS,EAAE,SAAS,GAAI,GACxB,EACP,2CAAO,SAAS,CAAC,KAAK,IAAI,SAAS,GAAQ,IACvC,IACF,EACN,iCAAK,SAAS,EAAE,wBAAwB,aACtC,6CACG,CACC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC;gDAC5D,GAAG,CACJ,CAAC,OAAO,CAAC,CAAC,CAAC,SAEP,EACP,kCAAM,SAAS,EAAE,iBAAiB,aAC/B,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,UAEzB,EACP,iCAAM,SAAS,EAAE,YAAY,YAC1B,IAAA,+BAAuB,EAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAC5C,IACH,EACL,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CACrD,iCAAK,SAAS,EAAC,+CAA+C,aAC5D,uBAAC,qBAAM,IAAC,SAAS,EAAC,SAAS,GAAG,EAC7B,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACzD,2CAAsB,QAAQ,IAAnB,QAAQ,CAAmB,CACvC,CAAC,IACE,CACP,IACG,IACF,EACN,gCAAK,SAAS,EAAC,0EAA0E,YACtF,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,CAC5B,iCAAM,SAAS,EAAC,yEAAyE,mBAElF,CACR,GACG,IACF,CACP,CAAA;AACH,CAAC;AAtFD,8BAsFC"}
@@ -1,13 +0,0 @@
1
- import { BSOR, Score } from '../../api/interfaces/beatleader';
2
- import { BSMap } from '../../api/interfaces/beatsaver';
3
- interface BLScoreProps {
4
- score: Score;
5
- aroundScores: Score[];
6
- regionTopScores: Score[];
7
- bsMap: BSMap;
8
- difficulties: any[];
9
- statistic: any;
10
- bsor: BSOR;
11
- }
12
- export default function BLRankScore({ score, aroundScores, regionTopScores, difficulties, bsMap, statistic, bsor, }: BLScoreProps): import("react/jsx-runtime").JSX.Element;
13
- export {};
@@ -1,33 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const jsx_runtime_1 = require("react/jsx-runtime");
7
- const lucide_react_1 = require("lucide-react");
8
- const scoregraph_1 = __importDefault(require("../components/scoregraph"));
9
- const rankScoreItem_1 = require("../../img-render/components/rankScoreItem");
10
- const RankDifficulty_1 = require("../../img-render/components/RankDifficulty");
11
- const avatar_1 = require("../../img-render/components/base/avatar");
12
- const utils_1 = require("../../img-render/utils");
13
- const progressbar_1 = __importDefault(require("../../img-render/components/progressbar"));
14
- function BLRankScore({ score, aroundScores, regionTopScores, difficulties, bsMap, statistic, bsor, }) {
15
- const bg = 'https://www.loliapi.com/acg/pc/';
16
- let aroundScore = aroundScores
17
- .slice(0, 7)
18
- .map((it) => ({ ...it, template: false }));
19
- let regionTopScore = regionTopScores
20
- .slice(0, 7)
21
- .map((it) => ({ ...it, template: false }));
22
- if (aroundScore.length < 7) {
23
- aroundScore = aroundScore.concat(new Array(7 - aroundScore.length).fill({ template: true }));
24
- }
25
- if (regionTopScore.length < 7) {
26
- regionTopScore = regionTopScore.concat(new Array(7 - regionTopScore.length).fill({ template: true }));
27
- }
28
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col justify-center items-center relative h-[720px] w-[1165px] my-auto rounded-none', id: "render-result", children: [(0, jsx_runtime_1.jsx)("div", { className: 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white flex flex-col justify-between z-10', children: (0, jsx_runtime_1.jsxs)("div", { className: 'flex justify-between items-start gap-2 grow', children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-start justify-between text-xl font-bold grow h-full", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex space-x-4 items-center justify-between text-2xl font-bold", children: [(0, jsx_runtime_1.jsx)(avatar_1.Avatar, { className: 'h-16 w-16 rounded-full', src: score.player.avatar, fallback: score.player.name.slice(0, 1) }), (0, jsx_runtime_1.jsx)("div", { children: score.player.name })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-xl text-ellipsis line-clamp-2", children: score.song.name }), (0, jsx_runtime_1.jsxs)("div", { className: "flex space-x-4 h-52", children: [(0, jsx_runtime_1.jsx)(avatar_1.Avatar, { className: 'h-52 w-52 rounded-md', src: score.song.cover, fallback: score.song.name.slice(0, 1) }), (0, jsx_runtime_1.jsxs)("div", { className: "text-xs font-bold flex flex-col items-start justify-between grow w-full", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex space-x-2 items-center text-sm", children: [(0, jsx_runtime_1.jsx)(avatar_1.Avatar, { className: 'h-4 w-4 rounded-full', src: bsMap.uploader.avatar, fallback: score.song.mapper.slice(0, 1) }), (0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-between", children: (0, jsx_runtime_1.jsx)("div", { className: "text-ellipsis line-clamp-1", children: score.song.mapper }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "text-xs flex gap-2 items-center *:space-x-1 *:flex *:items-center font-normal", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.HeartPulse, { className: "h-3 w-3" }), (0, jsx_runtime_1.jsx)("span", { children: bsMap.metadata.bpm.toFixed(0) })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Key, { className: 'w-3 h-3' }) }), (0, jsx_runtime_1.jsx)("span", { children: score.song.id.toLowerCase().replaceAll('x', '') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Clock, { className: "h-3 w-3" }), (0, jsx_runtime_1.jsx)("span", { children: (0, utils_1.formatDuration)(bsMap.metadata.duration) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center text-ellipsis col-span-2 line-clamp-1", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Calendar, { className: "h-3 w-3" }), (0, jsx_runtime_1.jsx)("span", { children: (0, utils_1.formatTime)(bsMap.lastPublishedAt) })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center space-x-2 justify-between font-normal", children: [(0, jsx_runtime_1.jsx)(progressbar_1.default, { value: bsMap.stats.score * 100 }), (0, jsx_runtime_1.jsxs)("span", { children: [(bsMap.stats.score * 100).toFixed(2), " %"] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.ThumbsUp, { className: "h-3 w-3 mr-0.5" }), (0, jsx_runtime_1.jsx)("span", { children: bsMap.stats.upvotes })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.ThumbsDown, { className: "h-3 w-3 mr-0.5" }), (0, jsx_runtime_1.jsx)("span", { children: bsMap.stats.downvotes })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: 'text-lg min-w-60 flex flex-col leading-6', children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between items-center", children: [(0, jsx_runtime_1.jsxs)("span", { children: [" # ", score.pp.toFixed(2), " PP"] }), (0, jsx_runtime_1.jsxs)("span", { children: [" # ", score.rank] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("span", { children: "Accuracy" }), (0, jsx_runtime_1.jsxs)("span", { children: [(score.accuracy * 100).toFixed(2), " %"] })] }), score.fullCombo && ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("span", { children: "Full Combo" }), (0, jsx_runtime_1.jsx)(lucide_react_1.Check, {})] })), score.maxCombo && ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("span", { children: "Max Combo" }), (0, jsx_runtime_1.jsx)("span", { children: score.maxCombo })] })), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("span", { children: "Missed Notes" }), (0, jsx_runtime_1.jsx)("span", { children: score.missedNotes })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("span", { children: "Total Mistakes" }), (0, jsx_runtime_1.jsx)("span", { children: score.missedNotes })] }), score.modifiers && ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("span", { children: "Modifiers" }), (0, jsx_runtime_1.jsx)("span", { children: score.modifiers })] }))] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-xl font-bold h-24 w-[500px] rounded-lg mt-auto flex items-center justify-evenly gap-2 ", children: difficulties
29
- .filter((it) => it.mode === 1)
30
- .map((diff) => ((0, jsx_runtime_1.jsx)(RankDifficulty_1.RankDifficulty, { difficulty: diff.difficultyName, stars: diff.stars, current: score.difficulty.id === diff.id }, diff.difficultyName))) }), (0, jsx_runtime_1.jsxs)("div", { className: "align-end mt-2 mb-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-xl font-bold", children: "AccGraph" }), (0, jsx_runtime_1.jsx)(scoregraph_1.default, { scoreId: score.id, scoreInfo: score, statistic: statistic, bsor: bsor, height: 240, width: 480 })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex justify-between gap-2 items-start mt-auto', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col items-start gap-2', children: [(0, jsx_runtime_1.jsx)("div", { className: 'text-white font-bold text-3xl mr-auto', children: "Global Rank" }), aroundScore.map((cur, idx) => !cur.template ? ((0, jsx_runtime_1.jsx)(rankScoreItem_1.RankScoreItem, { name: cur.player.name, date: cur.timepost, countryCode: cur.player.country ?? 'CN', avatar: cur.player.avatar, globalRank: cur.rank, score: cur.modifiedScore, modifiers: cur.modifiers, isRegionRank: false, acc: cur.accuracy, pp: cur.pp, self: cur.player.id === score.playerId }, cur.id)) : ((0, jsx_runtime_1.jsx)(rankScoreItem_1.ScoreItemSkeleton, { isRegionRank: false }, idx)))] }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col items-start gap-2', children: [(0, jsx_runtime_1.jsx)("div", { className: 'text-white font-bold text-3xl mr-auto', children: "Region Top Rank" }), regionTopScore.map((cur, idx) => !cur.template ? ((0, jsx_runtime_1.jsx)(rankScoreItem_1.RankScoreItem, { name: cur.player.name, date: cur.timepost, countryCode: cur.player.country ?? 'CN', avatar: cur.player.avatar, globalRank: cur.rank, score: cur.modifiedScore, modifiers: cur.modifiers, isRegionRank: true, acc: cur.accuracy, pp: cur.pp, self: cur.player.id === score.playerId }, cur.id)) : ((0, jsx_runtime_1.jsx)(rankScoreItem_1.ScoreItemSkeleton, { isRegionRank: true }, idx)))] })] })] }) }), (0, jsx_runtime_1.jsx)("img", { src: bg, className: 'inset-0 rounded-lg absolute h-full object-cover w-full', loading: 'eager' })] }) }));
31
- }
32
- exports.default = BLRankScore;
33
- //# sourceMappingURL=bs-score-with-rank.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bs-score-with-rank.js","sourceRoot":"","sources":["../../../src/img-render/result/bs-score-with-rank.tsx"],"names":[],"mappings":"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"}
File without changes
@@ -1,277 +0,0 @@
1
- // import {
2
- // Check,
3
- // Key,
4
- // Clock,
5
- // ThumbsUp,
6
- // ThumbsDown,
7
- // Calendar,
8
- // HeartPulse,
9
- // } from 'lucide-react'
10
- // import ScoreGraph from '../components/scoregraph'
11
- // import React from 'react'
12
- // import { BSOR, Score } from '../../api/interfaces/beatleader'
13
- // import { BSMap } from '../../api/interfaces/beatsaver'
14
- // import {
15
- // BlRankScoreItem,
16
- // ScoreItemSkeleton,
17
- // } from '../../img-render/components/bl-rank-score-item'
18
- // import { RankDifficulty } from '../../img-render/components/RankDifficulty'
19
- // import { Avatar } from '../../img-render/components/base/avatar'
20
- // import { formatDuration, formatTime } from '../../img-render/utils'
21
- // import Progressbar from '../../img-render/components/progressbar'
22
- // import {SSScore} from "../../api/interfaces/scoresaber";
23
- //
24
- // interface SSScoreProps {
25
- // score: SSScore
26
- // aroundScores: SSScore[]
27
- // regionTopScores: SSScore[]
28
- // bsMap: BSMap
29
- // difficulties: any[]
30
- // statistic: any
31
- // bsor: BSOR
32
- // bg: string
33
- // }
34
- //
35
- // export default function SSRankScore({
36
- // score,
37
- // aroundScores,
38
- // regionTopScores,
39
- // difficulties,
40
- // bsMap,
41
- // statistic,
42
- // bsor,
43
- // bg,
44
- // }: SSScoreProps) {
45
- //
46
- //
47
- // let aroundScore = aroundScores
48
- // .slice(0, 7)
49
- // .map((it) => ({ ...it, template: false }))
50
- // let regionTopScore = regionTopScores
51
- // .slice(0, 7)
52
- // .map((it) => ({ ...it, template: false }))
53
- // if (aroundScore.length < 7) {
54
- // aroundScore = aroundScore.concat(
55
- // new Array(7 - aroundScore.length).fill({ template: true })
56
- // )
57
- // }
58
- // if (regionTopScore.length < 7) {
59
- // regionTopScore = regionTopScore.concat(
60
- // new Array(7 - regionTopScore.length).fill({ template: true })
61
- // )
62
- // }
63
- //
64
- // return (
65
- // <>
66
- // <div
67
- // className={
68
- // 'flex flex-col justify-center items-center relative h-[720px] w-[1165px] my-auto rounded-none'
69
- // }
70
- // id="render-result"
71
- // >
72
- // <div
73
- // className={
74
- // 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white flex flex-col justify-between z-10'
75
- // }
76
- // >
77
- // <div className={'flex justify-between items-start gap-2 grow'}>
78
- // <div className="flex flex-col items-start justify-between text-xl font-bold grow h-full">
79
- // <div className="flex space-x-4 items-center justify-between text-2xl font-bold">
80
- // <Avatar
81
- // className={'h-16 w-16 rounded-full'}
82
- // src={score.player.avatar}
83
- // fallback={score.player.name.slice(0, 1)}
84
- // />
85
- // <div>{score.player.name}</div>
86
- // </div>
87
- // <div className="text-xl text-ellipsis line-clamp-2">
88
- // {score.song.name}
89
- // </div>
90
- // <div className="flex space-x-4 h-52">
91
- // <Avatar
92
- // className={'h-52 w-52 rounded-md'}
93
- // src={score.song.cover}
94
- // fallback={score.song.name.slice(0, 1)}
95
- // />
96
- // <div className="text-xs font-bold flex flex-col items-start justify-between grow w-full">
97
- // <div className="flex space-x-2 items-center text-sm">
98
- // <Avatar
99
- // className={'h-4 w-4 rounded-full'}
100
- // src={bsMap.uploader.avatar}
101
- // fallback={score.song.mapper.slice(0, 1)}
102
- // />
103
- // <div className="flex items-center justify-between">
104
- // <div className="text-ellipsis line-clamp-1">
105
- // {score.song.mapper}
106
- // </div>
107
- // </div>
108
- // </div>
109
- // <div className="text-xs flex gap-2 items-center *:space-x-1 *:flex *:items-center font-normal">
110
- // <div className="flex items-center">
111
- // <HeartPulse className="h-3 w-3" />
112
- // <span>{bsMap.metadata.bpm.toFixed(0)}</span>
113
- // </div>
114
- // <div>
115
- // <span>
116
- // <Key className={'w-3 h-3'} />
117
- // </span>
118
- // <span>
119
- // {score.song.id.toLowerCase().replaceAll('x', '')}
120
- // </span>
121
- // </div>
122
- //
123
- // <div className="flex items-center">
124
- // <Clock className="h-3 w-3" />
125
- // <span>{formatDuration(bsMap.metadata.duration)}</span>
126
- // </div>
127
- // <div className="flex items-center text-ellipsis col-span-2 line-clamp-1">
128
- // <Calendar className="h-3 w-3" />
129
- // <span>{formatTime(bsMap.lastPublishedAt)}</span>
130
- // </div>
131
- // </div>
132
- // <div className="flex items-center space-x-2 justify-between font-normal">
133
- // <Progressbar
134
- // value={bsMap.stats.score * 100}
135
- // // className="h-1.5"
136
- // // containerClassName="h-1.5"
137
- // />
138
- // <span>{(bsMap.stats.score * 100).toFixed(2)} %</span>
139
- // <div className="flex items-center">
140
- // <ThumbsUp className="h-3 w-3 mr-0.5" />
141
- // <span>{bsMap.stats.upvotes}</span>
142
- // </div>
143
- // <div className="flex items-center">
144
- // <ThumbsDown className="h-3 w-3 mr-0.5" />
145
- // <span>{bsMap.stats.downvotes}</span>
146
- // </div>
147
- // </div>
148
- // <div className={'text-lg min-w-60 flex flex-col leading-6'}>
149
- // <div className="flex justify-between items-center">
150
- // <span> # {score.pp.toFixed(2)} PP</span>
151
- // <span> # {score.rank}</span>
152
- // </div>
153
- // {
154
- // <div className="flex items-center justify-between">
155
- // <span>Accuracy</span>
156
- // <span>{(score.accuracy * 100).toFixed(2)} %</span>
157
- // </div>
158
- // }
159
- // {score.fullCombo && (
160
- // <div className="flex items-center justify-between">
161
- // <span>Full Combo</span>
162
- // <Check />
163
- // </div>
164
- // )}
165
- // {score.maxCombo && (
166
- // <div className="flex items-center justify-between">
167
- // <span>Max Combo</span>
168
- // <span>{score.maxCombo}</span>
169
- // </div>
170
- // )}
171
- //
172
- // {
173
- // <div className="flex items-center justify-between">
174
- // <span>Missed Notes</span>
175
- // <span>{score.missedNotes}</span>
176
- // </div>
177
- // }
178
- // {
179
- // <div className="flex items-center justify-between">
180
- // <span>Total Mistakes</span>
181
- // <span>{score.missedNotes}</span>
182
- // </div>
183
- // }
184
- // {score.modifiers && (
185
- // <div className="flex items-center justify-between">
186
- // <span>Modifiers</span>
187
- // <span>{score.modifiers}</span>
188
- // </div>
189
- // )}
190
- // </div>
191
- // </div>
192
- // </div>
193
- // {/*diff code */}
194
- // <div className="text-xl font-bold h-24 w-[500px] rounded-lg mt-auto flex items-center justify-evenly gap-2 ">
195
- // {difficulties
196
- // .filter((it: any) => it.mode === 1)
197
- // .map((diff: any) => (
198
- // <RankDifficulty
199
- // difficulty={diff.difficultyName}
200
- // stars={diff.stars}
201
- // current={score.difficulty.id === diff.id}
202
- // key={diff.difficultyName}
203
- // />
204
- // ))}
205
- // </div>
206
- //
207
- // {/*acc graph*/}
208
- // <div className="align-end mt-2 mb-2">
209
- // <span className="text-xl font-bold">AccGraph</span>
210
- //
211
- // {/*<ScoreGraph scoreId={score.id} scoreInfo={score} />*/}
212
- // </div>
213
- // </div>
214
- // <div className={'flex justify-between gap-2 items-start mt-auto'}>
215
- // <div className={'flex flex-col items-start gap-2'}>
216
- // <div className={'text-white font-bold text-3xl mr-auto'}>
217
- // Global Rank
218
- // </div>
219
- // {aroundScore.map((cur: any, idx) =>
220
- // !cur.template ? (
221
- // <BlRankScoreItem
222
- // key={cur.id}
223
- // name={cur.player.name}
224
- // date={cur.timepost}
225
- // countryCode={cur.player.country ?? 'CN'}
226
- // avatar={cur.player.avatar}
227
- // globalRank={cur.rank}
228
- // score={cur.modifiedScore}
229
- // modifiers={cur.modifiers}
230
- // isRegionRank={false}
231
- // acc={cur.accuracy}
232
- // pp={cur.pp}
233
- // self={cur.player.id === score.leaderboardPlayerInfo.id}
234
- // />
235
- // ) : (
236
- // <ScoreItemSkeleton isRegionRank={false} key={idx} />
237
- // )
238
- // )}
239
- // </div>
240
- // <div className={'flex flex-col items-start gap-2'}>
241
- // <div className={'text-white font-bold text-3xl mr-auto'}>
242
- // Region Top Rank
243
- // </div>
244
- // {regionTopScore.map((cur: any, idx) =>
245
- // !cur.template ? (
246
- // <BlRankScoreItem
247
- // key={cur.id}
248
- // name={cur.player.name}
249
- // date={cur.timepost}
250
- // countryCode={cur.player.country ?? 'CN'}
251
- // avatar={cur.player.avatar}
252
- // globalRank={cur.rank}
253
- // score={cur.modifiedScore}
254
- // modifiers={cur.modifiers}
255
- // isRegionRank
256
- // acc={cur.accuracy}
257
- // pp={cur.pp}
258
- // self={cur.player.id === score.playerId}
259
- // />
260
- // ) : (
261
- // <ScoreItemSkeleton isRegionRank key={idx} />
262
- // )
263
- // )}
264
- // </div>
265
- // </div>
266
- // </div>
267
- // </div>
268
- // <img
269
- // src={bg}
270
- // className={'inset-0 rounded-lg absolute h-full object-cover w-full'}
271
- // loading={'eager'}
272
- // />
273
- // </div>
274
- // </>
275
- // )
276
- // }
277
- //# sourceMappingURL=ss-score-with-rank.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ss-score-with-rank.js","sourceRoot":"","sources":["../../../src/img-render/result/ss-score-with-rank.tsx"],"names":[],"mappings":"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"}