beatsaber-bot-core 0.2.0-dev.8 → 0.2.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/lib/api/base/aioclient.d.ts +11 -0
  2. package/lib/api/base/aioclient.js +20 -0
  3. package/lib/api/base/aioclient.js.map +1 -0
  4. package/lib/api/base/blclient.d.ts +18 -0
  5. package/lib/api/base/blclient.js +60 -0
  6. package/lib/api/base/blclient.js.map +1 -0
  7. package/lib/api/base/bsclient.d.ts +17 -0
  8. package/lib/api/base/bsclient.js +75 -0
  9. package/lib/api/base/bsclient.js.map +1 -0
  10. package/lib/api/base/index.d.ts +4 -12
  11. package/lib/api/base/index.js +4 -4
  12. package/lib/api/base/index.js.map +1 -1
  13. package/lib/api/base/scRequest.d.ts +2 -0
  14. package/lib/api/base/scRequest.js +28 -13
  15. package/lib/api/base/scRequest.js.map +1 -1
  16. package/lib/api/base/ssclient.d.ts +13 -0
  17. package/lib/api/base/ssclient.js +48 -0
  18. package/lib/api/base/ssclient.js.map +1 -0
  19. package/lib/api/composed/beatleader.d.ts +8 -3
  20. package/lib/api/composed/beatleader.js +39 -5
  21. package/lib/api/composed/beatleader.js.map +1 -1
  22. package/lib/api/composed/beatsaver.d.ts +2 -3
  23. package/lib/api/composed/beatsaver.js +2 -1
  24. package/lib/api/composed/beatsaver.js.map +1 -1
  25. package/lib/api/composed/scoresaber.js +5 -1
  26. package/lib/api/composed/scoresaber.js.map +1 -1
  27. package/lib/api/error.d.ts +9 -0
  28. package/lib/api/error.js +27 -0
  29. package/lib/api/error.js.map +1 -0
  30. package/lib/api/helper.d.ts +19 -0
  31. package/lib/api/helper.js +102 -0
  32. package/lib/api/helper.js.map +1 -0
  33. package/lib/api/index.d.ts +6 -23
  34. package/lib/api/index.js +22 -113
  35. package/lib/api/index.js.map +1 -1
  36. package/lib/api/interfaces/beatsaver/bsmap.d.ts +2 -0
  37. package/lib/api/interfaces/beatsaver/index.d.ts +2 -1
  38. package/lib/api/interfaces/index.d.ts +12 -0
  39. package/lib/api/interfaces/index.js +3 -0
  40. package/lib/api/interfaces/index.js.map +1 -0
  41. package/lib/api/interfaces/scoresaber/item.d.ts +12 -3
  42. package/lib/api/interfaces/scoresaber/leaderboard.d.ts +10 -0
  43. package/lib/api/interfaces/scoresaber/leaderboard.js +3 -0
  44. package/lib/api/interfaces/scoresaber/leaderboard.js.map +1 -0
  45. package/lib/cmd/bind/bind-beatleader.js +15 -17
  46. package/lib/cmd/bind/bind-beatleader.js.map +1 -1
  47. package/lib/cmd/bind/bind-beatsaver.js +27 -21
  48. package/lib/cmd/bind/bind-beatsaver.js.map +1 -1
  49. package/lib/cmd/bind/bind-id-beatleader.js +8 -10
  50. package/lib/cmd/bind/bind-id-beatleader.js.map +1 -1
  51. package/lib/cmd/bind/bind-id-beatsaver.js +8 -10
  52. package/lib/cmd/bind/bind-id-beatsaver.js.map +1 -1
  53. package/lib/cmd/bind/bind-scoresaber.js +7 -9
  54. package/lib/cmd/bind/bind-scoresaber.js.map +1 -1
  55. package/lib/cmd/bind/index.js +6 -3
  56. package/lib/cmd/bind/index.js.map +1 -1
  57. package/lib/cmd/bsmap/id-search.js +5 -6
  58. package/lib/cmd/bsmap/id-search.js.map +1 -1
  59. package/lib/cmd/bsmap/key-search.js +10 -10
  60. package/lib/cmd/bsmap/key-search.js.map +1 -1
  61. package/lib/cmd/bsmap/latest.js +13 -19
  62. package/lib/cmd/bsmap/latest.js.map +1 -1
  63. package/lib/cmd/config/index.d.ts +12 -0
  64. package/lib/cmd/config/index.js +70 -0
  65. package/lib/cmd/config/index.js.map +1 -0
  66. package/lib/cmd/deprecated/me.d.ts +1 -1
  67. package/lib/cmd/deprecated/me.js +6 -6
  68. package/lib/cmd/deprecated/me.js.map +1 -1
  69. package/lib/cmd/deprecated/tmp.js +2 -0
  70. package/lib/cmd/deprecated/tmp.js.map +1 -1
  71. package/lib/cmd/deprecated/whois.js +2 -2
  72. package/lib/cmd/deprecated/whois.js.map +1 -1
  73. package/lib/cmd/help.js +2 -2
  74. package/lib/cmd/index.js +3 -1
  75. package/lib/cmd/index.js.map +1 -1
  76. package/lib/cmd/rank.js +12 -18
  77. package/lib/cmd/rank.js.map +1 -1
  78. package/lib/cmd/score.d.ts +1 -1
  79. package/lib/cmd/score.js +20 -12
  80. package/lib/cmd/score.js.map +1 -1
  81. package/lib/cmd/subscribe/group-beatleader-score.d.ts +2 -0
  82. package/lib/cmd/subscribe/group-beatleader-score.js +41 -0
  83. package/lib/cmd/subscribe/group-beatleader-score.js.map +1 -0
  84. package/lib/cmd/subscribe/group-beatsaver-mapper.d.ts +2 -0
  85. package/lib/cmd/subscribe/group-beatsaver-mapper.js +42 -0
  86. package/lib/cmd/subscribe/group-beatsaver-mapper.js.map +1 -0
  87. package/lib/cmd/subscribe/id-beatleader-score.d.ts +2 -0
  88. package/lib/cmd/subscribe/id-beatleader-score.js +41 -0
  89. package/lib/cmd/subscribe/id-beatleader-score.js.map +1 -0
  90. package/lib/cmd/subscribe/id-beatsaver-mapper.d.ts +2 -0
  91. package/lib/cmd/subscribe/id-beatsaver-mapper.js +42 -0
  92. package/lib/cmd/subscribe/id-beatsaver-mapper.js.map +1 -0
  93. package/lib/cmd/subscribe/index.js +22 -6
  94. package/lib/cmd/subscribe/index.js.map +1 -1
  95. package/lib/cmd/subscribe/unsubscribe.d.ts +4 -3
  96. package/lib/cmd/subscribe/unsubscribe.js +38 -0
  97. package/lib/cmd/subscribe/unsubscribe.js.map +1 -1
  98. package/lib/config.d.ts +21 -4
  99. package/lib/errors/index.d.ts +30 -0
  100. package/lib/errors/index.js +94 -1
  101. package/lib/errors/index.js.map +1 -1
  102. package/lib/i18n/index.js +17 -11
  103. package/lib/i18n/index.js.map +1 -1
  104. package/lib/i18n/parser.d.ts +14 -0
  105. package/lib/i18n/parser.js +165 -0
  106. package/lib/i18n/parser.js.map +1 -0
  107. package/lib/i18n/zh-cn.json +1 -1
  108. package/lib/img-render/components/RankDifficulty.d.ts +6 -0
  109. package/lib/img-render/components/RankDifficulty.js +17 -0
  110. package/lib/img-render/components/RankDifficulty.js.map +1 -0
  111. package/lib/img-render/components/base/avatar.d.ts +7 -0
  112. package/lib/img-render/components/base/avatar.js +11 -0
  113. package/lib/img-render/components/base/avatar.js.map +1 -1
  114. package/lib/img-render/components/bl-rank-score-item.d.ts +18 -0
  115. package/lib/img-render/components/bl-rank-score-item.js +42 -0
  116. package/lib/img-render/components/bl-rank-score-item.js.map +1 -0
  117. package/lib/img-render/components/bl-score-item.d.ts +6 -0
  118. package/lib/img-render/components/bl-score-item.js +14 -0
  119. package/lib/img-render/components/bl-score-item.js.map +1 -0
  120. package/lib/img-render/components/blScoreItem.js +2 -2
  121. package/lib/img-render/components/blScoreItem.js.map +1 -1
  122. package/lib/img-render/components/rankScoreItem.d.ts +18 -0
  123. package/lib/img-render/components/rankScoreItem.js +42 -0
  124. package/lib/img-render/components/rankScoreItem.js.map +1 -0
  125. package/lib/img-render/components/scoregraph.d.ts +3 -1
  126. package/lib/img-render/components/scoregraph.js +5 -4
  127. package/lib/img-render/components/scoregraph.js.map +1 -1
  128. package/lib/img-render/components/ss-rank-score-item.d.ts +18 -0
  129. package/lib/img-render/components/ss-rank-score-item.js +42 -0
  130. package/lib/img-render/components/ss-rank-score-item.js.map +1 -0
  131. package/lib/img-render/components/ss-score-item.d.ts +4 -0
  132. package/lib/img-render/components/ss-score-item.js +14 -0
  133. package/lib/img-render/components/ss-score-item.js.map +1 -0
  134. package/lib/img-render/components/ssScoreItem.js +1 -1
  135. package/lib/img-render/components/ssScoreItem.js.map +1 -1
  136. package/lib/img-render/index.d.ts +13 -10
  137. package/lib/img-render/index.js +61 -34
  138. package/lib/img-render/index.js.map +1 -1
  139. package/lib/img-render/interfaces.d.ts +2 -0
  140. package/lib/img-render/render.js +26 -1
  141. package/lib/img-render/render.js.map +1 -1
  142. package/lib/img-render/result/bl-player.d.ts +2 -1
  143. package/lib/img-render/result/bl-player.js +7 -4
  144. package/lib/img-render/result/bl-player.js.map +1 -1
  145. package/lib/img-render/result/bl-score-with-rank.d.ts +14 -0
  146. package/lib/img-render/result/bl-score-with-rank.js +33 -0
  147. package/lib/img-render/result/bl-score-with-rank.js.map +1 -0
  148. package/lib/img-render/result/bl-score.js +1 -1
  149. package/lib/img-render/result/bl-score.js.map +1 -1
  150. package/lib/img-render/result/bs-score-with-rank.d.ts +13 -0
  151. package/lib/img-render/result/bs-score-with-rank.js +33 -0
  152. package/lib/img-render/result/bs-score-with-rank.js.map +1 -0
  153. package/lib/img-render/result/index.d.ts +3 -2
  154. package/lib/img-render/result/index.js +10 -5
  155. package/lib/img-render/result/index.js.map +1 -1
  156. package/lib/img-render/result/ss-player.d.ts +2 -1
  157. package/lib/img-render/result/ss-player.js +3 -4
  158. package/lib/img-render/result/ss-player.js.map +1 -1
  159. package/lib/img-render/result/ss-score-with-rank.d.ts +0 -0
  160. package/lib/img-render/result/ss-score-with-rank.js +277 -0
  161. package/lib/img-render/result/ss-score-with-rank.js.map +1 -0
  162. package/lib/img-render/utils/canvas.js +9 -3
  163. package/lib/img-render/utils/canvas.js.map +1 -1
  164. package/lib/img-render/utils/format.d.ts +3 -0
  165. package/lib/img-render/utils/format.js +25 -1
  166. package/lib/img-render/utils/format.js.map +1 -1
  167. package/lib/img-render/utils/index.d.ts +1 -1
  168. package/lib/img-render/utils/index.js +1 -1
  169. package/lib/img-render/utils/index.js.map +1 -1
  170. package/lib/img-render/utils/qrcode.js +8 -1
  171. package/lib/img-render/utils/qrcode.js.map +1 -1
  172. package/lib/interface/cmd.d.ts +3 -0
  173. package/lib/interface/db/index.d.ts +7 -0
  174. package/lib/interface/db/models.d.ts +5 -0
  175. package/lib/interface/render.d.ts +7 -5
  176. package/lib/schedules/index.d.ts +6 -2
  177. package/lib/schedules/index.js +9 -2
  178. package/lib/schedules/index.js.map +1 -1
  179. package/lib/schedules/interface.d.ts +2 -1
  180. package/lib/schedules/oauthTokenRefreshTask.js +8 -8
  181. package/lib/schedules/oauthTokenRefreshTask.js.map +1 -1
  182. package/lib/schedules/temp.d.ts +2 -1
  183. package/lib/schedules/temp.js +20 -25
  184. package/lib/schedules/temp.js.map +1 -1
  185. package/lib/utils/cache.d.ts +2 -1
  186. package/lib/utils/cache.js +4 -4
  187. package/lib/utils/cache.js.map +1 -1
  188. package/lib/utils/fetch/error.d.ts +9 -0
  189. package/lib/utils/fetch/error.js +27 -0
  190. package/lib/utils/fetch/error.js.map +1 -0
  191. package/lib/utils/fetch/index.d.ts +4 -0
  192. package/lib/utils/fetch/index.js +34 -0
  193. package/lib/utils/fetch/index.js.map +1 -0
  194. package/lib/utils/fetch/ofetch.d.ts +23 -0
  195. package/lib/utils/fetch/ofetch.js +85 -0
  196. package/lib/utils/fetch/ofetch.js.map +1 -0
  197. package/lib/utils/index.d.ts +3 -0
  198. package/lib/utils/index.js +4 -1
  199. package/lib/utils/index.js.map +1 -1
  200. package/lib/utils/preference.d.ts +35 -0
  201. package/lib/utils/preference.js +115 -0
  202. package/lib/utils/preference.js.map +1 -0
  203. package/lib/utils/puppeteer.d.ts +23 -0
  204. package/lib/utils/puppeteer.js +92 -0
  205. package/lib/utils/puppeteer.js.map +1 -0
  206. package/lib/utils/s3.d.ts +11 -0
  207. package/lib/utils/s3.js +60 -0
  208. package/lib/utils/s3.js.map +1 -0
  209. package/lib/ws/beatsaver.js +16 -2
  210. package/lib/ws/beatsaver.js.map +1 -1
  211. package/package.json +12 -4
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SubscriptionNotExistError = exports.NoneSubscriptionExistError = exports.SubscriptionExistError = exports.SessionPromotionCancelError = exports.SessionPromotionTimeoutError = exports.ScoreSaberIDNotFoundError = exports.MapIdNotFoundError = exports.InvalidMapIdError = exports.AccountBindingNotFoundError = exports.ScoreNotFoundError = exports.BizError = exports.UnexpectedError = void 0;
3
+ exports.EmptyPromptError = exports.NotImplementedError = exports.ReachNetworkRetryLimitError = exports.RequestError = exports.ImageRenderError = exports.BSMapperSubscriptionNotExistError = exports.SubscriptionNotExistError = exports.NoneSubscriptionExistError = exports.SubscriptionExistError = exports.SessionPromotionCancelError = exports.SessionPromotionTimeoutError = exports.ScoreSaberIDNotFoundError = exports.BSIDNotFoundError = exports.SSIDNotFoundError = exports.BLIDNotFoundError = exports.MapIdNotFoundError = exports.InvalidMapIdError = exports.UnknownUserIDError = exports.AccountBindingNotFoundError = exports.ScoreNotFoundError = exports.BizError = exports.UnexpectedError = void 0;
4
4
  class UnexpectedError extends Error {
5
5
  constructor() {
6
6
  super('UnexpectedError');
@@ -30,6 +30,15 @@ class AccountBindingNotFoundError extends BizError {
30
30
  }
31
31
  }
32
32
  exports.AccountBindingNotFoundError = AccountBindingNotFoundError;
33
+ class UnknownUserIDError extends BizError {
34
+ constructor(params) {
35
+ super('UnknownUserIDError');
36
+ this.name = 'UnknownUserIDError';
37
+ this.id = 'commands.bsbot.me.not-found';
38
+ this.params = params;
39
+ }
40
+ }
41
+ exports.UnknownUserIDError = UnknownUserIDError;
33
42
  class InvalidMapIdError extends BizError {
34
43
  constructor(params) {
35
44
  super('InvalidMapIdError');
@@ -48,6 +57,36 @@ class MapIdNotFoundError extends BizError {
48
57
  }
49
58
  }
50
59
  exports.MapIdNotFoundError = MapIdNotFoundError;
60
+ class BLIDNotFoundError extends BizError {
61
+ constructor(params) {
62
+ super('BLIDNotFoundError');
63
+ this.name = 'BLIDNotFoundError';
64
+ this.id = 'commands.bsbot.bl.account.not-found';
65
+ this.params = params;
66
+ this.params = params;
67
+ }
68
+ }
69
+ exports.BLIDNotFoundError = BLIDNotFoundError;
70
+ class SSIDNotFoundError extends BizError {
71
+ constructor(params) {
72
+ super('SSIDNotFoundError');
73
+ this.name = 'SSIDNotFoundError';
74
+ this.id = 'commands.bsbot.ss.account.not-found';
75
+ this.params = params;
76
+ this.params = params;
77
+ }
78
+ }
79
+ exports.SSIDNotFoundError = SSIDNotFoundError;
80
+ class BSIDNotFoundError extends BizError {
81
+ constructor(params) {
82
+ super('BSIDNotFoundError');
83
+ this.name = 'BSIDNotFoundError';
84
+ this.id = 'commands.bsbot.bs.account.not-found';
85
+ this.params = params;
86
+ this.params = params;
87
+ }
88
+ }
89
+ exports.BSIDNotFoundError = BSIDNotFoundError;
51
90
  class ScoreSaberIDNotFoundError extends BizError {
52
91
  constructor(params) {
53
92
  super('ScoreSaberIdNotFoundError');
@@ -105,4 +144,58 @@ class SubscriptionNotExistError extends BizError {
105
144
  }
106
145
  }
107
146
  exports.SubscriptionNotExistError = SubscriptionNotExistError;
147
+ class BSMapperSubscriptionNotExistError extends BizError {
148
+ constructor(params) {
149
+ super('BSMapperSubscriptionNotExistError');
150
+ this.name = 'BSMapperSubscriptionNotExistError';
151
+ this.id = 'commands.bsbot.unsubscribe.nosub.beatsaver-mapper';
152
+ this.params = params;
153
+ }
154
+ }
155
+ exports.BSMapperSubscriptionNotExistError = BSMapperSubscriptionNotExistError;
156
+ class ImageRenderError extends BizError {
157
+ constructor(params) {
158
+ super('ImageRenderError');
159
+ this.name = 'ImageRenderError';
160
+ this.id = 'commands.bsbot.render.error';
161
+ this.params = params;
162
+ }
163
+ }
164
+ exports.ImageRenderError = ImageRenderError;
165
+ class RequestError extends BizError {
166
+ constructor(params) {
167
+ super('RequestError');
168
+ this.name = 'RequestError';
169
+ this.id = 'commands.bsbot.request.error';
170
+ this.params = params;
171
+ }
172
+ }
173
+ exports.RequestError = RequestError;
174
+ class ReachNetworkRetryLimitError extends BizError {
175
+ constructor(params) {
176
+ super('ReachNetworkRetryLimitError');
177
+ this.name = 'ReachNetworkRetryLimitError';
178
+ this.id = 'commands.bsbot.common.error.reach-request-retry-limit';
179
+ this.params = params;
180
+ }
181
+ }
182
+ exports.ReachNetworkRetryLimitError = ReachNetworkRetryLimitError;
183
+ class NotImplementedError extends BizError {
184
+ constructor(params) {
185
+ super('NotImplementedError');
186
+ this.name = 'NotImplementedError';
187
+ this.id = 'commands.bsbot.common.error.not-implemented';
188
+ this.params = params;
189
+ }
190
+ }
191
+ exports.NotImplementedError = NotImplementedError;
192
+ class EmptyPromptError extends BizError {
193
+ constructor(params) {
194
+ super('EmptyPromptError');
195
+ this.name = 'EmptyPromptError';
196
+ this.id = 'commands.bsbot.common.error.empty-prompt';
197
+ this.params = params;
198
+ }
199
+ }
200
+ exports.EmptyPromptError = EmptyPromptError;
108
201
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
package/lib/i18n/index.js CHANGED
@@ -24,6 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.tran = exports.loadI18nConfig = void 0;
27
+ const parser_1 = require("../i18n/parser");
27
28
  const i18nObj = {};
28
29
  init().then((_) => console.log('i18n loaded'));
29
30
  async function init() {
@@ -58,16 +59,6 @@ function loadI18nConfig(lang, obj) {
58
59
  console.log(`overwrite i18n ${lang} `);
59
60
  }
60
61
  exports.loadI18nConfig = loadI18nConfig;
61
- function safeEval(expr, context) {
62
- try {
63
- const fn = new Function(...Object.keys(context), `return ${expr}`);
64
- return fn(...Object.values(context));
65
- }
66
- catch (e) {
67
- console.error(expr, context, e);
68
- return expr;
69
- }
70
- }
71
62
  function tran(path, params = {}, lang = 'zh-cn') {
72
63
  const keys = path.split('.');
73
64
  let result = i18nObj[lang];
@@ -79,7 +70,12 @@ function tran(path, params = {}, lang = 'zh-cn') {
79
70
  return null;
80
71
  }
81
72
  }
82
- if (typeof result === 'string') {
73
+ try {
74
+ if (typeof result === 'string') {
75
+ return (0, parser_1.interpolate)(result, params);
76
+ }
77
+ }
78
+ catch (e) {
83
79
  return interpolateString(result, params);
84
80
  }
85
81
  return null;
@@ -109,4 +105,14 @@ function interpolateString(str, context) {
109
105
  str = str.replace(variableRegex, (match, expr) => safeEval(expr, context));
110
106
  return str;
111
107
  }
108
+ function safeEval(expr, context) {
109
+ try {
110
+ const fn = new Function(...Object.keys(context), `return ${expr}`);
111
+ return fn(...Object.values(context));
112
+ }
113
+ catch (e) {
114
+ console.error(expr, context, e);
115
+ return expr;
116
+ }
117
+ }
112
118
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare class Parser {
2
+ private template;
3
+ private data;
4
+ private tokens;
5
+ private current;
6
+ constructor(template: string, data: any);
7
+ private tokenize;
8
+ private match;
9
+ private consume;
10
+ private parseExpression;
11
+ private parseInterpolation;
12
+ parse(): string;
13
+ }
14
+ export declare function interpolate(template: string, data: any): string;
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.interpolate = exports.Parser = void 0;
4
+ var TokenType;
5
+ (function (TokenType) {
6
+ TokenType[TokenType["TEXT"] = 0] = "TEXT";
7
+ TokenType[TokenType["OPEN_BRACE"] = 1] = "OPEN_BRACE";
8
+ TokenType[TokenType["CLOSE_BRACE"] = 2] = "CLOSE_BRACE";
9
+ TokenType[TokenType["IDENTIFIER"] = 3] = "IDENTIFIER";
10
+ TokenType[TokenType["QUESTION"] = 4] = "QUESTION";
11
+ TokenType[TokenType["COLON"] = 5] = "COLON";
12
+ TokenType[TokenType["STRING"] = 6] = "STRING";
13
+ })(TokenType || (TokenType = {}));
14
+ // 插值解析Parser {{}},暂时没转义支持
15
+ // "😯,没有找到用户「{{user}}」的谱面「{{id}} ({{mode ? '{{mode}}' : '' }} {{diff ? '-{{diff}}' : '' }})」的打分数据"
16
+ class Parser {
17
+ template;
18
+ data;
19
+ tokens = [];
20
+ current = 0;
21
+ constructor(template, data) {
22
+ this.template = template;
23
+ this.data = data;
24
+ this.tokenize();
25
+ }
26
+ tokenize() {
27
+ let current = 0;
28
+ while (current < this.template.length) {
29
+ let char = this.template[current];
30
+ if (char === '\\' && current + 1 < this.template.length) {
31
+ // 处理转义字符
32
+ const nextChar = this.template[current + 1];
33
+ if (nextChar === '{' ||
34
+ nextChar === '}' ||
35
+ nextChar === '?' ||
36
+ nextChar === ':' ||
37
+ nextChar === "'" ||
38
+ nextChar === '\\') {
39
+ this.tokens.push({ type: TokenType.TEXT, value: nextChar });
40
+ current += 2;
41
+ continue;
42
+ }
43
+ }
44
+ if (char === '{' && this.template[current + 1] === '{') {
45
+ this.tokens.push({ type: TokenType.OPEN_BRACE, value: '{{' });
46
+ current += 2;
47
+ continue;
48
+ }
49
+ if (char === '}' && this.template[current + 1] === '}') {
50
+ this.tokens.push({ type: TokenType.CLOSE_BRACE, value: '}}' });
51
+ current += 2;
52
+ continue;
53
+ }
54
+ if (char === '?') {
55
+ this.tokens.push({ type: TokenType.QUESTION, value: '?' });
56
+ current++;
57
+ continue;
58
+ }
59
+ if (char === ':') {
60
+ this.tokens.push({ type: TokenType.COLON, value: ':' });
61
+ current++;
62
+ continue;
63
+ }
64
+ if (char === "'") {
65
+ let value = '';
66
+ char = this.template[++current];
67
+ while (char !== "'" && current < this.template.length) {
68
+ if (char === '\\' && current + 1 < this.template.length) {
69
+ char = this.template[++current];
70
+ }
71
+ value += char;
72
+ char = this.template[++current];
73
+ }
74
+ if (char === "'")
75
+ current++;
76
+ this.tokens.push({ type: TokenType.STRING, value });
77
+ continue;
78
+ }
79
+ if (/[a-zA-Z0-9_]/.test(char)) {
80
+ let value = '';
81
+ while (/[a-zA-Z0-9_]/.test(char)) {
82
+ value += char;
83
+ char = this.template[++current];
84
+ }
85
+ this.tokens.push({ type: TokenType.IDENTIFIER, value });
86
+ continue;
87
+ }
88
+ if (/\s/.test(char)) {
89
+ current++;
90
+ continue;
91
+ }
92
+ let value = '';
93
+ while (current < this.template.length &&
94
+ char !== '{' &&
95
+ char !== '}' &&
96
+ char !== '?' &&
97
+ char !== ':' &&
98
+ char !== "'"
99
+ // &&
100
+ // !/[a-zA-Z0-9_]/.test(char)
101
+ ) {
102
+ if (char === '\\' && current + 1 < this.template.length) {
103
+ value += this.template[++current];
104
+ }
105
+ else {
106
+ value += char;
107
+ }
108
+ char = this.template[++current];
109
+ }
110
+ if (value) {
111
+ this.tokens.push({ type: TokenType.TEXT, value });
112
+ }
113
+ }
114
+ }
115
+ match(...types) {
116
+ if (this.current >= this.tokens.length)
117
+ return false;
118
+ return types.includes(this.tokens[this.current].type);
119
+ }
120
+ consume(type) {
121
+ if (this.match(type)) {
122
+ return this.tokens[this.current++];
123
+ }
124
+ throw new Error(`Expected token type ${type}, but got ${this.tokens[this.current].type}`);
125
+ }
126
+ parseExpression() {
127
+ if (this.match(TokenType.OPEN_BRACE)) {
128
+ this.consume(TokenType.OPEN_BRACE);
129
+ const result = this.parseInterpolation();
130
+ this.consume(TokenType.CLOSE_BRACE);
131
+ return result;
132
+ }
133
+ if (this.match(TokenType.STRING)) {
134
+ const tmp = this.consume(TokenType.STRING).value;
135
+ return interpolate(tmp, this.data);
136
+ }
137
+ return this.consume(TokenType.TEXT).value;
138
+ }
139
+ parseInterpolation() {
140
+ const identifier = this.consume(TokenType.IDENTIFIER).value;
141
+ if (this.match(TokenType.QUESTION)) {
142
+ this.consume(TokenType.QUESTION);
143
+ const truePart = this.parseExpression();
144
+ this.consume(TokenType.COLON);
145
+ const falsePart = this.parseExpression();
146
+ return this.data[identifier] ? truePart : falsePart;
147
+ }
148
+ return this.data[identifier]?.toString() || '';
149
+ }
150
+ parse() {
151
+ // console.log(this.current, this.tokens)
152
+ let result = '';
153
+ while (this.current < this.tokens.length) {
154
+ result += this.parseExpression();
155
+ }
156
+ return result;
157
+ }
158
+ }
159
+ exports.Parser = Parser;
160
+ function interpolate(template, data) {
161
+ const parser = new Parser(template, data);
162
+ return parser.parse();
163
+ }
164
+ exports.interpolate = interpolate;
165
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/i18n/parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"common":{"hello":"你好,我是 bsbot","ping":"pong","render":{"wait":"开始渲染啦,请耐心等待 {{sec}} s"}},"ws":{"subscribe":{"update":"Hello {{username}},你关注的谱师「{{mapperName}}」更新啦!✨"}},"commands":{"bsbot":{"help":{"description":"查看帮助 (WIP)","usage":"bbhelp 查看使用方法","examples":"示例\nbbhelp\nbsbot.help"},"message":{"network-error":"☹️似乎发生了网络错误,请稍后重试吧"},"cmp":{"description":"compare 指令 (WIP)"},"who":{"description":"用于查询所@用户对应的 BeatLeader/ScoreSaber 面板","usage":"输入 bbwho 并@某人,如果他/她/它绑定了ScoreSaber Id(也就是 steam 的用户 Id),会查询该用户在对应平台的top 24 首 rank 谱面打分,并生成渲染图。","examples":"示例\nbbwho @someone\nbsbot.who @someone\nbsbot.who -p ss @someone","options":{"p":"查询的平台,ss 代表 scoresaber,默认为 beatleader"},"need-at":"谁?plz 重新执行指令并@ ta","not-bind":"你要查询的ta,还没有绑定哦"},"rank":{"description":"用于查询指定 scoreSaberID 对应用户的 BeatLeader/ScoreSaber 面板","usage":"输入 bbrank + scoreSaberId(也就是steamId)查询该用户在对应平台的top 24 首 rank 谱面打分,并生成渲染图。","examples":"示例\nbbrank 2169974796454690\nbsbot.rank 2169974796454690\nbsbot.rank -p ss 2169974796454690","options":{"p":"查询的平台,ss 代表 scoresaber,默认为 beatleader"}},"me":{"description":"用于查询自己绑定用户对应的 BeatLeader/ScoreSaber 面板","usage":"输入 bbme,如果已经绑定了ScoreSaber Id(也就是 steam 的用户 Id),会查询该用户在对应平台的top 24 首 rank 谱面打分,并生成渲染图。","examples":"示例\nbsbot.me\nbbme\nbbme -p ss","options":{"p":"查询的平台,ss 代表 scoresaber,默认为 beatleader"},"not-found":"Ops,似乎还没有绑定到 ScoreSaber 或 BeatLeader","score-not-found":"😯,没有找到 「{{user}}」的谱面 id 为「{{id}}」打分数据"},"bind":{"description":"绑定自己的 ScoreSaberId(也就是 steam 的用户 Id,仅公开信息,无需验证)","usage":"输入 bbbind,后接 userId,按照提示即可绑定","examples":"示例\nbsbot.bind 76561198339986544\nbbbind 76561198339986544","bs":{"not-found":"☹️什么没有找到,这个 code 真的有效吗?","network-error":"☹️似乎发生了网络错误,请稍后重试吧","unknown-error":"☹️不知道发生了什么,暂时无法绑定,请稍后重试吧","invalid-token":"无效 token,请确认给出的 code 有效。","success":"成功绑定 BeatSaver 用户 {{name}}({{id}})"},"bl":{"not-found":"☹️什么没有找到,这个 code 真的有效吗?","network-error":"☹️似乎发生了网络错误,请稍后重试吧","unknown-error":"☹️不知道发生了什么,暂时无法绑定,请稍后重试吧","invalid-token":"无效 token,请确认给出的 code 有效。","success":"成功绑定 BeatLeader 用户 {{name}}({{id}})"},"network-error":"☹️似乎发生了网络错误,请稍后重试吧","exist":"另外,你已经绑定了「{{id}}」,继续绑定丢失当前绑定哦","cancel":"已取消","timeout":"已超时取消","not-found":"Ops,没有找到 id 为「{{id}}」的 {{platform]} 用户","ack-prompt":"确定要绑定「{{user}}」吗,30 秒内回复「y」或「yes」以确认,超时或回复其他内容取消操作","success":"🎉,成功绑定「{{user}}」啦"},"score":{"description":"查询用户在Beatleader 上的某次打分成绩,并生成渲染图。","usage":"1. bbscore 加上 beatleader 的 scoreId,即可生成渲染图。\n2. bbscore 加上 Beatsaver 的 mapId,即可查询自己绑定的Bealeader账号关于该谱面的最高打分,并生成渲染图\n3. bbscore 加上 Beatsaver 的 mapId 并@某人,即可查询该用户绑定的Bealeader账号关于该谱面的最高打分,并生成渲染图","examples":"示例\nbsbot.score 13887221\nbbscore 33b62\nbbscore 33b62@someone","not-a-score-id":"似乎不是一个 score ID","not-bind":"你还没有绑定哦,使用 bind 指令进行绑定吧","who-not-bind":"你要查询的ta,还没有绑定哦"},"search":{"description":"按关键词进行谱面搜索","usage":"通过关键字进行谱面搜索,会发送将最相关的 3 个谱面。","examples":"示例\nbsbot.search megalovania\nbbsou megalovania\nbbsearch megalovania","success":"为你奉上关于「{{key}}」的{{length}}首谱面 🎉","not-found":"Ops,关于「{{key}}」什么都没找到","too-long-key":"关键词长度不应该超过 15 哦,因为这样容易什么都找不到,较长的部分已经帮你截掉啦,正在搜索中「{{key}}」"},"id":{"description":"按谱面id查找谱面。","usage":"根据谱面ID查找谱面。","examples":"示例\nbsbot.id 36677\nbbid 36677\n!bsr 36677\n36677","error-map-id":"「{{input}}」似乎不是一个 mapId,正确的 mapId 是这样的哦(3877a)","not-found":"Ops! 似乎没有找到 id 为「{{input}}」的谱面"},"latest":{"description":"查找最新的三首谱面。","usage":"获取最新的三首谱面。","examples":"示例\nbsbot.latest\nbsbot.new\nbbnew","info":"为你奉上最新的 3 首谱面 🎉"},"subscribe":{"description":"订阅 BeatSaber 相关的事件,并主动推送。(RC)","usage":"通过 bbsub 订阅 BeatSaber 相关的事件,当特定事件发生时会进行主动推送。","examples":"示例\nbsbot.subscribe\nbbsub","alert":{"no-bind-bs-id":"你还未绑定 beatsaver,快使用 bbbindbs 进行绑定吧","not-success":"订阅失败,可能是因为凭证已经过期","success":"成功订阅BeatSaver通知,当新通知出现时,会主动推送给你。","invalid-token":"似乎token 已经失效了,快使用 bbbindbs 重新进行绑定吧"},"beatleader":{"exist":"当前群聊/频道已订阅 BeatLeader 打分更新事件","success":"成功订阅 BeatLeader 打分更新事件,当参与群员出现满足条件的打分事件时,会主动推送"},"beatsaver":{"exist":"当前群聊/频道已订阅 BeatSaver 谱面更新事件","success":"成功订阅 BeatSaver 谱面更新事件,当参与群员发布新谱面时,会主动推送"},"info":{"none":"当前群聊/频道没有任何 BeatSaber 事件订阅。","header":"当前群聊/频道 BeatSaber 订阅如下:","body-item":"订阅类型「{{type}}」, 共 {{cnt}} 名参与成员","body-item-include-you":"(包括你哦)"},"join":{"description":"加入本群聊订阅的 BeatSaber 相关的事件","usage":"","examples":"示例\nbsbot.subscribe\nbbsub","success":{"beatleader":"成功加入本群Beatleader订阅组,当你打出高分时,会在本群推送","beatsaver":"成功加入本群订阅组,当你发布新谱面时,会在本群推送"},"nosub":{"beatleader":"当前群组/频道未启用 beatleader 打分订阅","beatsaver":"当前群组/频道未启用 beatsaver 谱师订阅"}},"leave":{"description":"离开本群 BeatSaber 相关事件订阅组","usage":"","examples":"示例\nbsbot.subscribe 查看当前会话的订阅信息\nbbsub\nbbsub --type beatsaver 为当前会话订阅 beatsaver 新谱面事件,当特定新谱面出现,会主动推送\nbbsub --type beatleader 为当前会话订阅 beatleader 打分事件,当满足要求的打分事件出现,会主动推送\nbbsub --type alert 订阅个人 BeatSaver 通知,当 beatsaver 新通知出现,会主动推送","not-exist":{"beatleader":"你还未加入当前群组/频道的 beatleader 打分订阅,无需离开","beatsaver":null},"success":{"beatleader":"成功离开本群「beatleader」订阅组,当你打出高分时,不会再在本群推送了","beatsaver":"成功离开本群「beatsaver」订阅组,当你发布新谱面时,不会再在本群推送了"}}},"unsubscribe":{"description":"取消订阅 BeatSaber 相关的事件。(RC)","usage":"取消通过 bbsub 订阅的 BeatSaber 相关的事件,当特定事件发生时不会进行主动推送。","examples":"示例\nbsbot.unsubscribe\nbbunsub","nosub":{"beatleader":"当前群组/频道未启用 beatleader 打分订阅","beatsaver":"当前群组/频道未启用 beatsaver 谱师订阅"},"success":{"beatleader":"成功禁用 beatleader 打分订阅","beatsaver":"成功禁用 beatsaver 谱师订阅"},"cancel-all":"已成功取消所有更新订阅","cancel":"已取消对谱师「{id}」的更新订阅"}}},"_config":{"beatSaverHost":"BeatSaverOrigin,例如:https://api.beatsaver.com","beatSaverWSHost":"BeatSaverWebSocketOrigin,用于实时监听谱面更新,例如wss://ws.beatsaver.com/maps","renderMode":"谱面图是由插件本地生成/远程获取"}}
1
+ {"common":{"hello":"你好,我是 bsbot","ping":"pong","render":{"wait":"开始渲染啦,请耐心等待 {{sec}} s"}},"ws":{"subscribe":{"update":"Hello {{username}},你关注的谱师「{{mapperName}}」更新啦!✨"}},"commands":{"bsbot":{"ss":{"account":{"not-found":"☹️没有找到SS用户「{{accountId}}」"}},"bs":{"account":{"not-found":"☹️没有找到BeatSaver用户「{{accountId}}」"}},"bl":{"account":{"not-found":"☹️没有找到BL用户「{{accountId}}」"}},"common":{"error":{"not-implemented":"😳被发现了,这个功能还没实现...","reach-request-retry-limit":"🤕网络重试到达上限、看来 bot 的网络出了点问题","empty-prompt":"看来你什么都没输入,已取消操作"}},"config":{"clear":"成功清除设置:{{key}}","set":{"success":"👍成功设置:{{key}}","fail":"😶‍🌫️用户偏好设置失败,{{reason}}"},"prompt":"请在30s内输入配置值,类型 {{type}}","unknown-key":"🤨{{input}}是一个未知配置项,不可以设置","all-available-key":"所有可能配置项如下:\n- BLProfile背景图片(bl::profile::render::img)\n- SSProfile背景图片(ss::profile::render::img)\n- BLScore背景图片(bl::score::render::img)\n","show":{"not-implemented":"还没实现展示用户偏好...不过你可以先设置着先"}},"render":{"error":"图片渲染超时/出错...也许稍等一会就好了","request":{"error":"数据获取失败了☹️"}},"help":{"description":"查看帮助 (WIP)","usage":"bbhelp 查看使用方法","examples":"示例\nbbhelp\nbsbot.help"},"message":{"network-error":"☹️似乎发生了网络错误,请稍后重试吧"},"cmp":{"description":"compare 指令 (WIP)"},"who":{"description":"用于查询所@用户对应的 BeatLeader/ScoreSaber 面板","usage":"输入 bbwho 并@某人,如果他/她/它绑定了ScoreSaber Id(也就是 steam 的用户 Id),会查询该用户在对应平台的top 24 首 rank 谱面打分,并生成渲染图。","examples":"示例\nbbwho @someone\nbsbot.who @someone\nbsbot.who -p ss @someone","options":{"p":"查询的平台,ss 代表 scoresaber,默认为 beatleader"},"need-at":"谁?plz 重新执行指令并@ ta","not-bind":"你要查询的ta,还没有绑定哦"},"rank":{"description":"用于查询指定 scoreSaberID 对应用户的 BeatLeader/ScoreSaber 面板","usage":"输入 bbrank + scoreSaberId(也就是steamId)查询该用户在对应平台的top 24 首 rank 谱面打分,并生成渲染图。","examples":"示例\nbbrank 2169974796454690\nbsbot.rank 2169974796454690\nbsbot.rank -p ss 2169974796454690","options":{"p":"查询的平台,ss 代表 scoresaber,默认为 beatleader"}},"me":{"description":"用于查询自己绑定用户对应的 BeatLeader/ScoreSaber 面板","usage":"输入 bbme,如果已经绑定了ScoreSaber Id(也就是 steam 的用户 Id),会查询该用户在对应平台的top 24 首 rank 谱面打分,并生成渲染图。","examples":"示例\nbsbot.me\nbbme\nbbme -p ss","options":{"p":"查询的平台,ss 代表 scoresaber,默认为 beatleader"},"not-found":"Ops,似乎还没有绑定到 ScoreSaber 或 BeatLeader","score-not-found":"😯,没有找到用户「{{user}}」谱面「{{id}} ({{mode ? '{{mode}}' : '' }} {{diff ? '-{{diff}}' : '' }})」的BL打分数据"},"bind":{"description":"绑定自己的 ScoreSaberId(也就是 steam 的用户 Id,仅公开信息,无需验证)","usage":"输入 bbbind,后接 userId,按照提示即可绑定","examples":"示例\nbsbot.bind 76561198339986544\nbbbind 76561198339986544","bs":{"not-found":"☹️什么没有找到,这个 code 真的有效吗?","network-error":"☹️似乎发生了网络错误,请稍后重试吧","unknown-error":"☹️不知道发生了什么,暂时无法绑定,请稍后重试吧","invalid-token":"无效 token,请确认给出的 code 有效。","success":"成功绑定 BeatSaver 用户 {{name}}({{id}})"},"bl":{"not-found":"☹️什么没有找到,这个 code 真的有效吗?","network-error":"☹️似乎发生了网络错误,请稍后重试吧","unknown-error":"☹️不知道发生了什么,暂时无法绑定,请稍后重试吧","invalid-token":"无效 token,请确认给出的 code 有效。","success":"成功绑定 BeatLeader 用户 {{name}}({{id}})"},"network-error":"☹️似乎发生了网络错误,请稍后重试吧","exist":"另外,你已经绑定了「{{id}}」,继续绑定丢失当前绑定哦","cancel":"已取消","timeout":"已超时取消","not-found":"Ops,没有找到 id 为「{{id}}」的 {{platform]} 用户","ack-prompt":"确定要绑定「{{user}}」吗,30 秒内回复「y」或「yes」以确认,超时或回复其他内容取消操作","success":"🎉,成功绑定「{{user}}」啦"},"score":{"description":"查询用户在Beatleader 上的某次打分成绩,并生成渲染图。","usage":"1. bbscore 加上 beatleader 的 scoreId,即可生成渲染图。\n2. bbscore 加上 Beatsaver 的 mapId,即可查询自己绑定的Bealeader账号关于该谱面的最高打分,并生成渲染图\n3. bbscore 加上 Beatsaver 的 mapId 并@某人,即可查询该用户绑定的Bealeader账号关于该谱面的最高打分,并生成渲染图","examples":"示例\nbsbot.score 13887221\nbbscore 33b62\nbbscore 33b62@someone","not-a-score-id":"似乎不是一个 score ID","not-bind":"你还没有绑定哦,使用 bind 指令进行绑定吧","who-not-bind":"你要查询的ta,还没有绑定哦"},"search":{"description":"按关键词进行谱面搜索","usage":"通过关键字进行谱面搜索,会发送将最相关的 3 个谱面。","examples":"示例\nbsbot.search megalovania\nbbsou megalovania\nbbsearch megalovania","success":"为你奉上关于「{{key}}」的{{length}}首谱面 🎉","not-found":"Ops,关于「{{key}}」什么都没找到","too-long-key":"关键词长度不应该超过 15 哦,因为这样容易什么都找不到,较长的部分已经帮你截掉啦,正在搜索中「{{key}}」"},"id":{"description":"按谱面id查找谱面。","usage":"根据谱面ID查找谱面。","examples":"示例\nbsbot.id 36677\nbbid 36677\n!bsr 36677\n36677","error-map-id":"「{{input}}」似乎不是一个 mapId,正确的 mapId 是这样的哦(3877a)","not-found":"Ops! 似乎没有找到 id 为「{{input}}」的谱面"},"latest":{"description":"查找最新的三首谱面。","usage":"获取最新的三首谱面。","examples":"示例\nbsbot.latest\nbsbot.new\nbbnew","info":"为你奉上最新的 3 首谱面 🎉"},"subscribe":{"description":"订阅 BeatSaber 相关的事件,并主动推送。(RC)","usage":"通过 bbsub 订阅 BeatSaber 相关的事件,当特定事件发生时会进行主动推送。","examples":"示例\nbsbot.subscribe\nbbsub","alert":{"no-bind-bs-id":"你还未绑定 beatsaver,快使用 bbbindbs 进行绑定吧","not-success":"订阅失败,可能是因为凭证已经过期","success":"成功订阅BeatSaver通知,当新通知出现时,会主动推送给你。","invalid-token":"似乎token 已经失效了,快使用 bbbindbs 重新进行绑定吧"},"beatleader":{"exist":"当前群聊/频道已订阅 BeatLeader 打分更新事件","success":"成功订阅 BeatLeader 打分更新事件,当参与群员出现满足条件的打分事件时,会主动推送"},"beatsaver-mapper":{"exist":"当前群聊/频道已订阅 BeatSaver 谱面更新事件","success":"成功订阅 BeatSaver 谱面更新事件,当「{{name}}」发布新谱面时,会主动推送"},"beatsaver":{"exist":"当前群聊/频道已订阅 BeatSaver 谱面更新事件","success":"成功订阅 BeatSaver 谱面更新事件,当参与群员发布新谱面时,会主动推送"},"info":{"none":"当前群聊/频道没有任何 BeatSaber 事件订阅。","header":"当前群聊/频道 BeatSaber 订阅如下:","group-body-item":"订阅类型「{{type}}」","body-item":"订阅类型「{{type}}」{{enable ? '' : '(已禁用)' }}, 共 {{cnt}} 名参与成员","body-item-include-you":"(包括你哦)"},"join":{"description":"加入本群聊订阅的 BeatSaber 相关的事件","usage":"","examples":"示例\nbsbot.subscribe\nbbsub","success":{"beatleader":"成功加入本群Beatleader订阅组,当你打出高分时,会在本群推送","beatsaver":"成功加入本群订阅组,当你发布新谱面时,会在本群推送"},"nosub":{"beatleader":"当前群组/频道未启用 beatleader 打分订阅","beatsaver":"当前群组/频道未启用 beatsaver 谱师订阅"}},"leave":{"description":"离开本群 BeatSaber 相关事件订阅组","usage":"","examples":"示例\nbsbot.subscribe 查看当前会话的订阅信息\nbbsub\nbbsub --type beatsaver 为当前会话订阅 beatsaver 新谱面事件,当特定新谱面出现,会主动推送\nbbsub --type beatleader 为当前会话订阅 beatleader 打分事件,当满足要求的打分事件出现,会主动推送\nbbsub --type alert 订阅个人 BeatSaver 通知,当 beatsaver 新通知出现,会主动推送","not-exist":{"beatleader":"你还未加入当前群组/频道的 beatleader 打分订阅,无需离开","beatsaver":null},"success":{"beatleader":"成功离开本群「beatleader」订阅组,当你打出高分时,不会再在本群推送了","beatsaver":"成功离开本群「beatsaver」订阅组,当你发布新谱面时,不会再在本群推送了"}}},"unsubscribe":{"description":"取消订阅 BeatSaber 相关的事件。(RC)","usage":"取消通过 bbsub 订阅的 BeatSaber 相关的事件,当特定事件发生时不会进行主动推送。","examples":"示例\nbsbot.unsubscribe\nbbunsub","nosub":{"beatleader":"当前群组/频道未启用 beatleader 打分订阅","beatsaver-mapper":"当前群组/频道未订阅 谱师「{{name}}」的更新,无需取消","beatsaver":"当前群组/频道未启用 beatsaver 谱师订阅"},"success":{"beatleader":"成功禁用 beatleader 打分订阅","beatsaver":"成功禁用 beatsaver 谱师订阅","beatsaver-mapper":"成功禁用谱师「{{name}}」的更新订阅"},"cancel-all":"已成功取消所有更新订阅","cancel":"已取消对谱师「{id}」的更新订阅"}}},"_config":{"beatSaverHost":"BeatSaverOrigin,例如:https://api.beatsaver.com","beatSaverWSHost":"BeatSaverWebSocketOrigin,用于实时监听谱面更新,例如wss://ws.beatsaver.com/maps","renderMode":"谱面图是由插件本地生成/远程获取"}}
@@ -0,0 +1,6 @@
1
+ export declare function RankDifficulty({ difficulty, star, blStar, current, }: {
2
+ difficulty: string;
3
+ star: number | undefined;
4
+ blStar: number | undefined;
5
+ current: boolean;
6
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RankDifficulty = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const utils_1 = require("../../img-render/utils");
7
+ function RankDifficulty({ difficulty, star, blStar, current, }) {
8
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `p-2 rounded-lg bs-bg-gradient ${current ? `gradient-border opacity-100` : 'opacity-60'} `, children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex items-center gap-2', children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.BarChart, { className: 'w-4 h-4' }) }), (0, jsx_runtime_1.jsx)("span", { children: (0, utils_1.diffConv)(difficulty) })] }), star && ((0, jsx_runtime_1.jsxs)("div", { className: 'flex items-center gap-2', children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(SSStar, { className: 'w-4 h-4' }) }), (0, jsx_runtime_1.jsxs)("span", { children: [star?.toFixed(2) ?? 'none', " "] })] })), blStar && ((0, jsx_runtime_1.jsxs)("div", { className: 'flex items-center gap-2', children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(BLStar, { className: 'w-4 h-4' }) }), (0, jsx_runtime_1.jsxs)("span", { children: [blStar?.toFixed(2) ?? 'none', " "] })] }))] }));
9
+ }
10
+ exports.RankDifficulty = RankDifficulty;
11
+ const BLStar = (props) => {
12
+ return ((0, jsx_runtime_1.jsxs)("svg", { ...props, width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("path", { d: "M14.6431 7.17815L11.8306 9.60502L12.6875 13.2344C12.7348 13.4314 12.7226 13.638 12.6525 13.8281C12.5824 14.0182 12.4576 14.1833 12.2937 14.3025C12.1299 14.4217 11.9344 14.4896 11.7319 14.4977C11.5295 14.5059 11.3292 14.4538 11.1563 14.3481L8.00002 12.4056L4.8419 14.3481C4.66904 14.4532 4.46896 14.5048 4.26686 14.4963C4.06476 14.4879 3.86966 14.4199 3.70615 14.3008C3.54263 14.1817 3.41801 14.0169 3.34796 13.8272C3.27792 13.6374 3.26559 13.4312 3.31252 13.2344L4.17252 9.60502L1.36002 7.17815C1.20708 7.04596 1.09648 6.87166 1.04201 6.67699C0.987547 6.48232 0.991641 6.27592 1.05378 6.08356C1.11592 5.89121 1.23336 5.72142 1.39142 5.59541C1.54948 5.4694 1.74116 5.39274 1.94252 5.37502L5.63002 5.07752L7.05252 1.63502C7.12952 1.44741 7.26057 1.28693 7.429 1.17398C7.59744 1.06104 7.79566 1.00073 7.99846 1.00073C8.20126 1.00073 8.39948 1.06104 8.56791 1.17398C8.73635 1.28693 8.8674 1.44741 8.9444 1.63502L10.3663 5.07752L14.0538 5.37502C14.2555 5.39208 14.4478 5.46831 14.6064 5.59415C14.765 5.71999 14.883 5.88984 14.9455 6.08243C15.0081 6.27502 15.0124 6.48178 14.9579 6.6768C14.9035 6.87182 14.7927 7.04644 14.6394 7.17877L14.6431 7.17815Z", fill: "url(#paint0_linear_36_531)" }), (0, jsx_runtime_1.jsx)("circle", { cx: "8", cy: "8", r: "2", fill: "#D9D9D9" }), (0, jsx_runtime_1.jsx)("defs", { children: (0, jsx_runtime_1.jsxs)("linearGradient", { id: "paint0_linear_36_531", x1: "3.50006", y1: "14", x2: "15.0001", y2: "1.00003", gradientUnits: "userSpaceOnUse", children: [(0, jsx_runtime_1.jsx)("stop", { stopColor: "#2A79F8" }), (0, jsx_runtime_1.jsx)("stop", { offset: "0.5", stopColor: "#F41AFF" }), (0, jsx_runtime_1.jsx)("stop", { offset: "1", stopColor: "#FF0303" })] }) })] }));
13
+ };
14
+ const SSStar = (props) => {
15
+ return ((0, jsx_runtime_1.jsxs)("svg", { ...props, width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("path", { d: "M14.6431 7.17815L11.8306 9.60502L12.6875 13.2344C12.7348 13.4314 12.7226 13.638 12.6525 13.8281C12.5824 14.0182 12.4576 14.1833 12.2937 14.3025C12.1299 14.4217 11.9344 14.4896 11.7319 14.4977C11.5295 14.5059 11.3292 14.4538 11.1563 14.3481L8.00002 12.4056L4.8419 14.3481C4.66904 14.4532 4.46896 14.5048 4.26686 14.4963C4.06476 14.4879 3.86966 14.4199 3.70615 14.3008C3.54263 14.1817 3.41801 14.0169 3.34796 13.8272C3.27792 13.6374 3.26559 13.4312 3.31252 13.2344L4.17252 9.60502L1.36002 7.17815C1.20708 7.04596 1.09648 6.87166 1.04201 6.67699C0.987547 6.48232 0.991641 6.27592 1.05378 6.08356C1.11592 5.89121 1.23336 5.72142 1.39142 5.59541C1.54948 5.4694 1.74116 5.39274 1.94252 5.37502L5.63002 5.07752L7.05252 1.63502C7.12952 1.44741 7.26057 1.28693 7.429 1.17398C7.59744 1.06104 7.79566 1.00073 7.99846 1.00073C8.20126 1.00073 8.39948 1.06104 8.56791 1.17398C8.73635 1.28693 8.8674 1.44741 8.9444 1.63502L10.3663 5.07752L14.0538 5.37502C14.2555 5.39208 14.4478 5.46831 14.6064 5.59415C14.765 5.71999 14.883 5.88984 14.9455 6.08243C15.0081 6.27502 15.0124 6.48178 14.9579 6.6768C14.9035 6.87182 14.7927 7.04644 14.6394 7.17877L14.6431 7.17815Z", fill: "url(#paint0_linear_36_522)" }), (0, jsx_runtime_1.jsx)("path", { d: "M9.90888 6H6.0907V7H9.90888V6Z", fill: "white" }), (0, jsx_runtime_1.jsx)("path", { d: "M8.81825 9H7.18188V10H8.81825V9Z", fill: "white" }), (0, jsx_runtime_1.jsx)("path", { d: "M9.90902 8H8.81812V9H9.90902V8Z", fill: "white" }), (0, jsx_runtime_1.jsx)("path", { d: "M7.18161 8H6.0907V9H7.18161V8Z", fill: "white" }), (0, jsx_runtime_1.jsx)("path", { d: "M11.0002 7H9.9093V8H11.0002V7Z", fill: "white" }), (0, jsx_runtime_1.jsx)("path", { d: "M6.09091 7H5V8H6.09091V7Z", fill: "white" }), (0, jsx_runtime_1.jsx)("defs", { children: (0, jsx_runtime_1.jsx)("linearGradient", { id: "paint0_linear_36_522", x1: "3.50006", y1: "14", x2: "34.5001", y2: "-12", gradientUnits: "userSpaceOnUse", children: (0, jsx_runtime_1.jsx)("stop", { stopColor: "#FFDE18" }) }) })] }));
16
+ };
17
+ //# sourceMappingURL=RankDifficulty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RankDifficulty.js","sourceRoot":"","sources":["../../../src/img-render/components/RankDifficulty.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface AvatarProps {
2
+ className?: string;
3
+ src: string;
4
+ fallback?: string;
5
+ }
6
+ export declare function Avatar({ src, fallback, className }: AvatarProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -1 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Avatar = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ function Avatar({ src, fallback, className }) {
6
+ // className={'h-4 w-4 rounded-full'}
7
+ // src={beatmap.uploader.avatar}
8
+ // fallback={score.song.mapper.slice(0, 1)}
9
+ return (0, jsx_runtime_1.jsx)("img", { className: className, src: src });
10
+ }
11
+ exports.Avatar = Avatar;
1
12
  //# sourceMappingURL=avatar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../../src/img-render/components/base/avatar.tsx"],"names":[],"mappings":""}
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../../src/img-render/components/base/avatar.tsx"],"names":[],"mappings":";;;;AAKA,SAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAe;IAC9D,qCAAqC;IACrC,gCAAgC;IAChC,2CAA2C;IAC3C,OAAO,gCAAK,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,GAAI,CAAA;AAChD,CAAC;AALD,wBAKC"}
@@ -0,0 +1,18 @@
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 BlRankScoreItem(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 {};
@@ -0,0 +1,42 @@
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.BlRankScoreItem = 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 BlRankScoreItem(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.BlRankScoreItem = BlRankScoreItem;
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=bl-rank-score-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bl-rank-score-item.js","sourceRoot":"","sources":["../../../src/img-render/components/bl-rank-score-item.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyB;AACzB,qEAA+D;AAC/D,8CAAiE;AAejE,SAAgB,eAAe,CAAC,KAAqB;IACnD,OAAO,CACL,gCACE,SAAS,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,8HAA8H,YAE/K,iCAAK,SAAS,EAAC,oBAAoB,aACjC,iCAAK,SAAS,EAAC,iDAAiD,aAC9D,iCAAK,SAAS,EAAC,YAAY,aACzB,iCAAK,SAAS,EAAE,oBAAoB,aAClC,gCACE,GAAG,EAAE,KAAK,CAAC,MAAM,EACjB,SAAS,EAAC,+CAA+C,GACzD,EACF,gCAAK,SAAS,EAAE,mCAAmC,YACjD,uBAAC,cAAK,IAAC,cAAc,EAAE,KAAK,CAAC,WAAW,GAAI,GACxC,IACF,EACN,4CACE,gCAAK,SAAS,EAAE,0CAA0C,YACvD,KAAK,CAAC,IAAI,GACP,EACN,kCAAM,SAAS,EAAC,6BAA6B,aAC1C,CAAC,KAAK,CAAC,YAAY,IAAI,uBAAC,gBAAS,KAAG,EACrC,mDAAS,KAAK,CAAC,UAAU,IAAQ,IAC5B,IACH,IACF,EAEN,iCAAK,SAAS,EAAC,kDAAkD,aAC/D,4CAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAS,EAC3C,iCAAK,SAAS,EAAE,YAAY,aAC1B,gCAAK,SAAS,EAAE,WAAW,YACxB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CACtC,2CAAgB,EAAE,IAAP,EAAE,CAAa,CAC3B,CAAC,GACE,EACN,0CAAM,IAAA,wBAAgB,EAAC,KAAK,CAAC,KAAK,CAAC,GAAO,IACtC,IACF,IACF,EACN,iCAAK,SAAS,EAAC,4DAA4D,aACzE,gCAAK,SAAS,EAAC,YAAY,YACzB,gCAAK,SAAS,EAAC,oEAAoE,YACjF,0CACG,IAAA,kBAAU,EACT,IAAA,eAAK,EAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,EACjC,gBAAgB,CACjB,GACG,GACF,GACF,EACN,0CACE,gCAAK,SAAS,EAAC,sFAAsF,YACnG,iDAAO,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,WAAU,GAChC,GACF,IACF,IACF,GACF,CACP,CAAA;AACH,CAAC;AA5DD,0CA4DC;AAED,SAAgB,iBAAiB,CAAC,EAAE,YAAY,EAA6B;IAC3E,OAAO,CACL,gCACE,SAAS,EAAE,6HAA6H,YAExI,iCAAK,SAAS,EAAC,oBAAoB,aACjC,iCAAK,SAAS,EAAC,iDAAiD,aAC9D,iCAAK,SAAS,EAAC,YAAY,aACzB,gCAAK,SAAS,EAAE,oBAAoB,YAClC,gCACE,GAAG,EAAE,sCAAsC,EAC3C,SAAS,EAAC,+CAA+C,GACzD,GACE,EACN,4CACE,gCAAK,SAAS,EAAE,0CAA0C,yCAEpD,EACN,kCAAM,SAAS,EAAC,6BAA6B,aAC1C,CAAC,YAAY,IAAI,uBAAC,gBAAS,KAAG,EAC/B,oDAAiB,IACZ,IACH,IACF,EAEN,iCAAK,SAAS,EAAC,kDAAkD,aAC/D,qDAAiB,EACjB,iCAAK,SAAS,EAAE,YAAY,aAC1B,gCAAK,SAAS,EAAE,WAAW,kBAAS,EACpC,sDAAkB,IACd,IACF,IACF,EACN,iCAAK,SAAS,EAAC,4DAA4D,aACzE,gCAAK,SAAS,EAAC,oEAAoE,YACjF,4EAAyB,GACrB,EACN,gCAAK,SAAS,EAAC,sFAAsF,YACnG,uDAAmB,GACf,IACF,IACF,GACF,CACP,CAAA;AACH,CAAC;AA5CD,8CA4CC"}
@@ -0,0 +1,6 @@
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;