beatsaber-bot-core 0.2.0-dev.2 → 0.2.0-dev.20

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 (377) hide show
  1. package/lib/api/base/aioRequest.d.ts +6 -0
  2. package/lib/api/base/aioRequest.js +24 -0
  3. package/lib/api/base/aioRequest.js.map +1 -0
  4. package/lib/api/base/blRequset.d.ts +12 -0
  5. package/lib/api/base/blRequset.js +68 -0
  6. package/lib/api/base/blRequset.js.map +1 -0
  7. package/lib/api/base/bsRequest.d.ts +24 -0
  8. package/lib/api/base/bsRequest.js +64 -0
  9. package/lib/api/base/bsRequest.js.map +1 -0
  10. package/lib/api/base/index.d.ts +12 -0
  11. package/lib/api/base/index.js +21 -0
  12. package/lib/api/base/index.js.map +1 -0
  13. package/lib/api/base/scRequest.d.ts +6 -0
  14. package/lib/api/base/scRequest.js +28 -0
  15. package/lib/api/base/scRequest.js.map +1 -0
  16. package/lib/api/composed/aiosaber.d.ts +7 -0
  17. package/lib/api/composed/aiosaber.js +16 -0
  18. package/lib/api/composed/aiosaber.js.map +1 -0
  19. package/lib/api/composed/beatleader.d.ts +32 -0
  20. package/lib/api/composed/beatleader.js +112 -0
  21. package/lib/api/composed/beatleader.js.map +1 -0
  22. package/lib/api/composed/beatsaver.d.ts +12 -0
  23. package/lib/api/composed/beatsaver.js +18 -0
  24. package/lib/api/composed/beatsaver.js.map +1 -0
  25. package/lib/api/composed/scoresaber.d.ts +14 -0
  26. package/lib/api/composed/scoresaber.js +67 -0
  27. package/lib/api/composed/scoresaber.js.map +1 -0
  28. package/lib/api/index.d.ts +31 -0
  29. package/lib/api/index.js +134 -0
  30. package/lib/api/index.js.map +1 -0
  31. package/lib/api/interfaces/aiosaber/index.d.ts +7 -0
  32. package/lib/api/interfaces/aiosaber/index.js +3 -0
  33. package/lib/api/interfaces/aiosaber/index.js.map +1 -0
  34. package/lib/api/interfaces/beatleader/bsor.d.ts +112 -0
  35. package/lib/api/interfaces/beatleader/bsor.js +3 -0
  36. package/lib/api/interfaces/beatleader/bsor.js.map +1 -0
  37. package/lib/api/interfaces/beatleader/index.d.ts +5 -0
  38. package/lib/api/interfaces/beatleader/index.js +22 -0
  39. package/lib/api/interfaces/beatleader/index.js.map +1 -0
  40. package/lib/api/interfaces/beatleader/req.d.ts +19 -0
  41. package/lib/api/interfaces/beatleader/req.js +3 -0
  42. package/lib/api/interfaces/beatleader/req.js.map +1 -0
  43. package/lib/api/interfaces/beatleader/score.d.ts +162 -0
  44. package/lib/api/interfaces/beatleader/score.js +3 -0
  45. package/lib/api/interfaces/beatleader/score.js.map +1 -0
  46. package/lib/api/interfaces/beatleader/user.d.ts +171 -0
  47. package/lib/api/interfaces/beatleader/user.js +3 -0
  48. package/lib/api/interfaces/beatleader/user.js.map +1 -0
  49. package/lib/api/interfaces/beatleader/ws.d.ts +87 -0
  50. package/lib/api/interfaces/beatleader/ws.js +3 -0
  51. package/lib/api/interfaces/beatleader/ws.js.map +1 -0
  52. package/lib/api/interfaces/beatsaver/alert.d.ts +18 -0
  53. package/lib/api/interfaces/beatsaver/alert.js +3 -0
  54. package/lib/api/interfaces/beatsaver/alert.js.map +1 -0
  55. package/lib/api/interfaces/beatsaver/bsmap.d.ts +66 -0
  56. package/lib/api/interfaces/beatsaver/bsmap.js +3 -0
  57. package/lib/api/interfaces/beatsaver/bsmap.js.map +1 -0
  58. package/lib/api/interfaces/beatsaver/index.d.ts +10 -0
  59. package/lib/api/interfaces/beatsaver/index.js +22 -0
  60. package/lib/api/interfaces/beatsaver/index.js.map +1 -0
  61. package/lib/api/interfaces/beatsaver/resp.d.ts +8 -0
  62. package/lib/api/interfaces/beatsaver/resp.js +3 -0
  63. package/lib/api/interfaces/beatsaver/resp.js.map +1 -0
  64. package/lib/api/interfaces/beatsaver/user.d.ts +8 -0
  65. package/lib/api/interfaces/beatsaver/user.js +3 -0
  66. package/lib/api/interfaces/beatsaver/user.js.map +1 -0
  67. package/lib/api/interfaces/beatsaver/ws.d.ts +11 -0
  68. package/lib/api/interfaces/beatsaver/ws.js +3 -0
  69. package/lib/api/interfaces/beatsaver/ws.js.map +1 -0
  70. package/lib/api/interfaces/scoresaber/index.d.ts +3 -0
  71. package/lib/api/interfaces/scoresaber/index.js +20 -0
  72. package/lib/api/interfaces/scoresaber/index.js.map +1 -0
  73. package/lib/api/interfaces/scoresaber/item.d.ts +57 -0
  74. package/lib/api/interfaces/scoresaber/item.js +3 -0
  75. package/lib/api/interfaces/scoresaber/item.js.map +1 -0
  76. package/lib/api/interfaces/scoresaber/resp.d.ts +9 -0
  77. package/lib/api/interfaces/scoresaber/resp.js +3 -0
  78. package/lib/api/interfaces/scoresaber/resp.js.map +1 -0
  79. package/lib/api/interfaces/scoresaber/user.d.ts +33 -0
  80. package/lib/api/interfaces/scoresaber/user.js +3 -0
  81. package/lib/api/interfaces/scoresaber/user.js.map +1 -0
  82. package/lib/api/interfaces/scoresaber/ws.d.ts +78 -0
  83. package/lib/api/interfaces/scoresaber/ws.js +3 -0
  84. package/lib/api/interfaces/scoresaber/ws.js.map +1 -0
  85. package/lib/api/netResult.d.ts +18 -0
  86. package/lib/api/netResult.js +42 -0
  87. package/lib/api/netResult.js.map +1 -0
  88. package/lib/api/sortScore.d.ts +2 -0
  89. package/lib/api/sortScore.js +31 -0
  90. package/lib/api/sortScore.js.map +1 -0
  91. package/lib/cmd/bind/bind-beatleader.d.ts +2 -0
  92. package/lib/cmd/bind/bind-beatleader.js +53 -0
  93. package/lib/cmd/bind/bind-beatleader.js.map +1 -0
  94. package/lib/cmd/bind/bind-beatsaver.d.ts +2 -0
  95. package/lib/cmd/bind/bind-beatsaver.js +55 -0
  96. package/lib/cmd/bind/bind-beatsaver.js.map +1 -0
  97. package/lib/cmd/bind/bind-id-beatleader.d.ts +2 -0
  98. package/lib/cmd/bind/bind-id-beatleader.js +55 -0
  99. package/lib/cmd/bind/bind-id-beatleader.js.map +1 -0
  100. package/lib/cmd/bind/bind-id-beatsaver.d.ts +2 -0
  101. package/lib/cmd/bind/bind-id-beatsaver.js +55 -0
  102. package/lib/cmd/bind/bind-id-beatsaver.js.map +1 -0
  103. package/lib/cmd/bind/bind-scoresaber.d.ts +2 -0
  104. package/lib/cmd/bind/bind-scoresaber.js +61 -0
  105. package/lib/cmd/bind/bind-scoresaber.js.map +1 -0
  106. package/lib/cmd/bind/index.d.ts +11 -0
  107. package/lib/cmd/bind/index.js +52 -0
  108. package/lib/cmd/bind/index.js.map +1 -0
  109. package/lib/cmd/bsmap/id-search.d.ts +9 -0
  110. package/lib/cmd/bsmap/id-search.js +35 -0
  111. package/lib/cmd/bsmap/id-search.js.map +1 -0
  112. package/lib/cmd/bsmap/key-search.d.ts +9 -0
  113. package/lib/cmd/bsmap/key-search.js +41 -0
  114. package/lib/cmd/bsmap/key-search.js.map +1 -0
  115. package/lib/cmd/bsmap/latest.d.ts +9 -0
  116. package/lib/cmd/bsmap/latest.js +36 -0
  117. package/lib/cmd/bsmap/latest.js.map +1 -0
  118. package/lib/cmd/builder.d.ts +27 -0
  119. package/lib/cmd/builder.js +60 -0
  120. package/lib/cmd/builder.js.map +1 -0
  121. package/lib/cmd/deprecated/cmp.d.ts +9 -0
  122. package/lib/cmd/deprecated/cmp.js +15 -0
  123. package/lib/cmd/deprecated/cmp.js.map +1 -0
  124. package/lib/cmd/deprecated/me.d.ts +13 -0
  125. package/lib/cmd/deprecated/me.js +66 -0
  126. package/lib/cmd/deprecated/me.js.map +1 -0
  127. package/lib/cmd/deprecated/tmp.d.ts +9 -0
  128. package/lib/cmd/deprecated/tmp.js +23 -0
  129. package/lib/cmd/deprecated/tmp.js.map +1 -0
  130. package/lib/cmd/deprecated/whois.d.ts +11 -0
  131. package/lib/cmd/deprecated/whois.js +40 -0
  132. package/lib/cmd/deprecated/whois.js.map +1 -0
  133. package/lib/cmd/help.d.ts +9 -0
  134. package/lib/cmd/help.js +14 -0
  135. package/lib/cmd/help.js.map +1 -0
  136. package/lib/cmd/index.d.ts +2 -0
  137. package/lib/cmd/index.js +24 -0
  138. package/lib/cmd/index.js.map +1 -0
  139. package/lib/cmd/rank.d.ts +11 -0
  140. package/lib/cmd/rank.js +56 -0
  141. package/lib/cmd/rank.js.map +1 -0
  142. package/lib/cmd/score.d.ts +13 -0
  143. package/lib/cmd/score.js +48 -0
  144. package/lib/cmd/score.js.map +1 -0
  145. package/lib/cmd/subscribe/beatleader.d.ts +2 -0
  146. package/lib/cmd/subscribe/beatleader.js +27 -0
  147. package/lib/cmd/subscribe/beatleader.js.map +1 -0
  148. package/lib/cmd/subscribe/beatsaver.d.ts +2 -0
  149. package/lib/cmd/subscribe/beatsaver.js +27 -0
  150. package/lib/cmd/subscribe/beatsaver.js.map +1 -0
  151. package/lib/cmd/subscribe/deprecated/alert.d.ts +0 -0
  152. package/lib/cmd/subscribe/deprecated/alert.js +86 -0
  153. package/lib/cmd/subscribe/deprecated/alert.js.map +1 -0
  154. package/lib/cmd/subscribe/deprecated/blfilters.d.ts +0 -0
  155. package/lib/cmd/subscribe/deprecated/blfilters.js +49 -0
  156. package/lib/cmd/subscribe/deprecated/blfilters.js.map +1 -0
  157. package/lib/cmd/subscribe/deprecated/scoresaber.d.ts +0 -0
  158. package/lib/cmd/subscribe/deprecated/scoresaber.js +43 -0
  159. package/lib/cmd/subscribe/deprecated/scoresaber.js.map +1 -0
  160. package/lib/cmd/subscribe/index.d.ts +11 -0
  161. package/lib/cmd/subscribe/index.js +45 -0
  162. package/lib/cmd/subscribe/index.js.map +1 -0
  163. package/lib/cmd/subscribe/subjoin.d.ts +11 -0
  164. package/lib/cmd/subscribe/subjoin.js +42 -0
  165. package/lib/cmd/subscribe/subjoin.js.map +1 -0
  166. package/lib/cmd/subscribe/subleave.d.ts +11 -0
  167. package/lib/cmd/subscribe/subleave.js +35 -0
  168. package/lib/cmd/subscribe/subleave.js.map +1 -0
  169. package/lib/cmd/subscribe/unsubscribe.d.ts +11 -0
  170. package/lib/cmd/subscribe/unsubscribe.js +41 -0
  171. package/lib/cmd/subscribe/unsubscribe.js.map +1 -0
  172. package/lib/config.d.ts +40 -0
  173. package/lib/config.js +3 -0
  174. package/lib/config.js.map +1 -0
  175. package/lib/db/index.d.ts +0 -0
  176. package/lib/db/index.js +1 -0
  177. package/lib/db/index.js.map +1 -0
  178. package/lib/errors/index.d.ts +40 -0
  179. package/lib/errors/index.js +117 -0
  180. package/lib/errors/index.js.map +1 -0
  181. package/lib/i18n/index.d.ts +2 -0
  182. package/lib/i18n/index.js +118 -0
  183. package/lib/i18n/index.js.map +1 -0
  184. package/lib/i18n/parser.d.ts +14 -0
  185. package/lib/i18n/parser.js +165 -0
  186. package/lib/i18n/parser.js.map +1 -0
  187. package/lib/i18n/zh-cn.json +1 -0
  188. package/lib/img-render/components/RankDifficulty.d.ts +5 -0
  189. package/lib/img-render/components/RankDifficulty.js +11 -0
  190. package/lib/img-render/components/RankDifficulty.js.map +1 -0
  191. package/lib/img-render/components/base/avatar.d.ts +7 -0
  192. package/lib/img-render/components/base/avatar.js +12 -0
  193. package/lib/img-render/components/base/avatar.js.map +1 -0
  194. package/lib/img-render/components/blScoreItem.d.ts +6 -0
  195. package/lib/img-render/components/blScoreItem.js +14 -0
  196. package/lib/img-render/components/blScoreItem.js.map +1 -0
  197. package/lib/img-render/components/characteristic.d.ts +5 -0
  198. package/lib/img-render/components/characteristic.js +27 -0
  199. package/lib/img-render/components/characteristic.js.map +1 -0
  200. package/lib/img-render/components/flag.d.ts +5 -0
  201. package/lib/img-render/components/flag.js +39 -0
  202. package/lib/img-render/components/flag.js.map +1 -0
  203. package/lib/img-render/components/icons/BeatLeader.d.ts +3 -0
  204. package/lib/img-render/components/icons/BeatLeader.js +10 -0
  205. package/lib/img-render/components/icons/BeatLeader.js.map +1 -0
  206. package/lib/img-render/components/icons/RankIcon.d.ts +4 -0
  207. package/lib/img-render/components/icons/RankIcon.js +14 -0
  208. package/lib/img-render/components/icons/RankIcon.js.map +1 -0
  209. package/lib/img-render/components/icons/ScoreSaberIcon.d.ts +3 -0
  210. package/lib/img-render/components/icons/ScoreSaberIcon.js +8 -0
  211. package/lib/img-render/components/icons/ScoreSaberIcon.js.map +1 -0
  212. package/lib/img-render/components/progressbar.d.ts +4 -0
  213. package/lib/img-render/components/progressbar.js +9 -0
  214. package/lib/img-render/components/progressbar.js.map +1 -0
  215. package/lib/img-render/components/rankScoreItem.d.ts +18 -0
  216. package/lib/img-render/components/rankScoreItem.js +42 -0
  217. package/lib/img-render/components/rankScoreItem.js.map +1 -0
  218. package/lib/img-render/components/scoreItem.d.ts +4 -0
  219. package/lib/img-render/components/scoreItem.js +29 -0
  220. package/lib/img-render/components/scoreItem.js.map +1 -0
  221. package/lib/img-render/components/scoregraph.d.ts +10 -0
  222. package/lib/img-render/components/scoregraph.js +301 -0
  223. package/lib/img-render/components/scoregraph.js.map +1 -0
  224. package/lib/img-render/components/skill-graph.d.ts +5 -0
  225. package/lib/img-render/components/skill-graph.js +50 -0
  226. package/lib/img-render/components/skill-graph.js.map +1 -0
  227. package/lib/img-render/components/socre-badge.d.ts +5 -0
  228. package/lib/img-render/components/socre-badge.js +10 -0
  229. package/lib/img-render/components/socre-badge.js.map +1 -0
  230. package/lib/img-render/components/ssScoreItem.d.ts +4 -0
  231. package/lib/img-render/components/ssScoreItem.js +14 -0
  232. package/lib/img-render/components/ssScoreItem.js.map +1 -0
  233. package/lib/img-render/index.d.ts +24 -0
  234. package/lib/img-render/index.js +134 -0
  235. package/lib/img-render/index.js.map +1 -0
  236. package/lib/img-render/interfaces.d.ts +17 -0
  237. package/lib/img-render/interfaces.js +3 -0
  238. package/lib/img-render/interfaces.js.map +1 -0
  239. package/lib/img-render/remote/index.d.ts +0 -0
  240. package/lib/img-render/remote/index.js +56 -0
  241. package/lib/img-render/remote/index.js.map +1 -0
  242. package/lib/img-render/render.d.ts +7 -0
  243. package/lib/img-render/render.js +65 -0
  244. package/lib/img-render/render.js.map +1 -0
  245. package/lib/img-render/renderImg.d.ts +0 -0
  246. package/lib/img-render/renderImg.js +1 -0
  247. package/lib/img-render/renderImg.js.map +1 -0
  248. package/lib/img-render/result/bl-player.d.ts +7 -0
  249. package/lib/img-render/result/bl-player.js +44 -0
  250. package/lib/img-render/result/bl-player.js.map +1 -0
  251. package/lib/img-render/result/bl-score.d.ts +11 -0
  252. package/lib/img-render/result/bl-score.js +18 -0
  253. package/lib/img-render/result/bl-score.js.map +1 -0
  254. package/lib/img-render/result/bs-map.d.ts +8 -0
  255. package/lib/img-render/result/bs-map.js +26 -0
  256. package/lib/img-render/result/bs-map.js.map +1 -0
  257. package/lib/img-render/result/bs-score-with-rank.d.ts +13 -0
  258. package/lib/img-render/result/bs-score-with-rank.js +33 -0
  259. package/lib/img-render/result/bs-score-with-rank.js.map +1 -0
  260. package/lib/img-render/result/index.d.ts +8 -0
  261. package/lib/img-render/result/index.js +33 -0
  262. package/lib/img-render/result/index.js.map +1 -0
  263. package/lib/img-render/result/ss-player.d.ts +8 -0
  264. package/lib/img-render/result/ss-player.js +39 -0
  265. package/lib/img-render/result/ss-player.js.map +1 -0
  266. package/lib/img-render/utils/bl/beatleader.d.ts +13 -0
  267. package/lib/img-render/utils/bl/beatleader.js +38 -0
  268. package/lib/img-render/utils/bl/beatleader.js.map +1 -0
  269. package/lib/img-render/utils/bl/blheadset.d.ts +273 -0
  270. package/lib/img-render/utils/bl/blheadset.js +281 -0
  271. package/lib/img-render/utils/bl/blheadset.js.map +1 -0
  272. package/lib/img-render/utils/bl/bsorDecoder.d.ts +68 -0
  273. package/lib/img-render/utils/bl/bsorDecoder.js +286 -0
  274. package/lib/img-render/utils/bl/bsorDecoder.js.map +1 -0
  275. package/lib/img-render/utils/bl/bsorReplayAcc.d.ts +35 -0
  276. package/lib/img-render/utils/bl/bsorReplayAcc.js +590 -0
  277. package/lib/img-render/utils/bl/bsorReplayAcc.js.map +1 -0
  278. package/lib/img-render/utils/bl/getPart.d.ts +7 -0
  279. package/lib/img-render/utils/bl/getPart.js +31 -0
  280. package/lib/img-render/utils/bl/getPart.js.map +1 -0
  281. package/lib/img-render/utils/bl/stastic.d.ts +2 -0
  282. package/lib/img-render/utils/bl/stastic.js +53 -0
  283. package/lib/img-render/utils/bl/stastic.js.map +1 -0
  284. package/lib/img-render/utils/canvas.d.ts +5 -0
  285. package/lib/img-render/utils/canvas.js +70 -0
  286. package/lib/img-render/utils/canvas.js.map +1 -0
  287. package/lib/img-render/utils/format.d.ts +6 -0
  288. package/lib/img-render/utils/format.js +66 -0
  289. package/lib/img-render/utils/format.js.map +1 -0
  290. package/lib/img-render/utils/getMods.d.ts +2 -0
  291. package/lib/img-render/utils/getMods.js +22 -0
  292. package/lib/img-render/utils/getMods.js.map +1 -0
  293. package/lib/img-render/utils/index.d.ts +3 -0
  294. package/lib/img-render/utils/index.js +36 -0
  295. package/lib/img-render/utils/index.js.map +1 -0
  296. package/lib/img-render/utils/qrcode.d.ts +1 -0
  297. package/lib/img-render/utils/qrcode.js +43 -0
  298. package/lib/img-render/utils/qrcode.js.map +1 -0
  299. package/lib/img-render/utils/sleep.d.ts +1 -0
  300. package/lib/img-render/utils/sleep.js +10 -0
  301. package/lib/img-render/utils/sleep.js.map +1 -0
  302. package/lib/img-render/utils/tag-format.d.ts +1 -0
  303. package/lib/img-render/utils/tag-format.js +225 -0
  304. package/lib/img-render/utils/tag-format.js.map +1 -0
  305. package/lib/img-render/utils/tw-join.d.ts +4 -0
  306. package/lib/img-render/utils/tw-join.js +36 -0
  307. package/lib/img-render/utils/tw-join.js.map +1 -0
  308. package/lib/index.d.ts +8 -0
  309. package/lib/index.js +25 -0
  310. package/lib/index.js.map +1 -0
  311. package/lib/interface/bot.d.ts +20 -0
  312. package/lib/interface/bot.js +3 -0
  313. package/lib/interface/bot.js.map +1 -0
  314. package/lib/interface/cmd.d.ts +36 -0
  315. package/lib/interface/cmd.js +3 -0
  316. package/lib/interface/cmd.js.map +1 -0
  317. package/lib/interface/db/index.d.ts +36 -0
  318. package/lib/interface/db/index.js +18 -0
  319. package/lib/interface/db/index.js.map +1 -0
  320. package/lib/interface/db/models.d.ts +34 -0
  321. package/lib/interface/db/models.js +3 -0
  322. package/lib/interface/db/models.js.map +1 -0
  323. package/lib/interface/index.d.ts +14 -0
  324. package/lib/interface/index.js +34 -0
  325. package/lib/interface/index.js.map +1 -0
  326. package/lib/interface/logger.d.ts +6 -0
  327. package/lib/interface/logger.js +3 -0
  328. package/lib/interface/logger.js.map +1 -0
  329. package/lib/interface/render.d.ts +22 -0
  330. package/lib/interface/render.js +3 -0
  331. package/lib/interface/render.js.map +1 -0
  332. package/lib/schedules/BeatSaverAlertMonitor.d.ts +0 -0
  333. package/lib/schedules/BeatSaverAlertMonitor.js +231 -0
  334. package/lib/schedules/BeatSaverAlertMonitor.js.map +1 -0
  335. package/lib/schedules/index.d.ts +7 -0
  336. package/lib/schedules/index.js +23 -0
  337. package/lib/schedules/index.js.map +1 -0
  338. package/lib/schedules/interface.d.ts +18 -0
  339. package/lib/schedules/interface.js +3 -0
  340. package/lib/schedules/interface.js.map +1 -0
  341. package/lib/schedules/oauthTokenRefreshTask.d.ts +2 -0
  342. package/lib/schedules/oauthTokenRefreshTask.js +53 -0
  343. package/lib/schedules/oauthTokenRefreshTask.js.map +1 -0
  344. package/lib/schedules/temp.d.ts +2 -0
  345. package/lib/schedules/temp.js +23 -0
  346. package/lib/schedules/temp.js.map +1 -0
  347. package/lib/utils/cache.d.ts +2 -0
  348. package/lib/utils/cache.js +28 -0
  349. package/lib/utils/cache.js.map +1 -0
  350. package/lib/utils/index.d.ts +7 -0
  351. package/lib/utils/index.js +79 -0
  352. package/lib/utils/index.js.map +1 -0
  353. package/lib/utils/puppeteer.d.ts +20 -0
  354. package/lib/utils/puppeteer.js +79 -0
  355. package/lib/utils/puppeteer.js.map +1 -0
  356. package/lib/utils/s3.d.ts +10 -0
  357. package/lib/utils/s3.js +45 -0
  358. package/lib/utils/s3.js.map +1 -0
  359. package/lib/ws/beatleader.d.ts +18 -0
  360. package/lib/ws/beatleader.js +56 -0
  361. package/lib/ws/beatleader.js.map +1 -0
  362. package/lib/ws/beatsaver.d.ts +23 -0
  363. package/lib/ws/beatsaver.js +58 -0
  364. package/lib/ws/beatsaver.js.map +1 -0
  365. package/lib/ws/bl-filter.d.ts +0 -0
  366. package/lib/ws/bl-filter.js +64 -0
  367. package/lib/ws/bl-filter.js.map +1 -0
  368. package/lib/ws/handler.d.ts +6 -0
  369. package/lib/ws/handler.js +3 -0
  370. package/lib/ws/handler.js.map +1 -0
  371. package/lib/ws/index.d.ts +4 -0
  372. package/lib/ws/index.js +21 -0
  373. package/lib/ws/index.js.map +1 -0
  374. package/lib/ws/scoresaber.d.ts +18 -0
  375. package/lib/ws/scoresaber.js +37 -0
  376. package/lib/ws/scoresaber.js.map +1 -0
  377. package/package.json +4 -1
@@ -0,0 +1,117 @@
1
+ "use strict";
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.UnknownUserIDError = exports.AccountBindingNotFoundError = exports.ScoreNotFoundError = exports.BizError = exports.UnexpectedError = void 0;
4
+ class UnexpectedError extends Error {
5
+ constructor() {
6
+ super('UnexpectedError');
7
+ }
8
+ }
9
+ exports.UnexpectedError = UnexpectedError;
10
+ class BizError extends Error {
11
+ id;
12
+ params;
13
+ }
14
+ exports.BizError = BizError;
15
+ class ScoreNotFoundError extends BizError {
16
+ constructor(params) {
17
+ super('ScoreNotFoundError');
18
+ this.name = 'ScoreNotFoundError';
19
+ this.id = 'commands.bsbot.me.score-not-found';
20
+ this.params = params;
21
+ }
22
+ }
23
+ exports.ScoreNotFoundError = ScoreNotFoundError;
24
+ class AccountBindingNotFoundError extends BizError {
25
+ constructor(params) {
26
+ super('AccountBindingNotFoundError');
27
+ this.name = 'AccountBindingNotFoundError';
28
+ this.id = 'commands.bsbot.score.not-bind';
29
+ this.params = params;
30
+ }
31
+ }
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;
42
+ class InvalidMapIdError extends BizError {
43
+ constructor(params) {
44
+ super('InvalidMapIdError');
45
+ this.name = 'InvalidMapIdError';
46
+ this.id = 'commands.bsbot.id.error-map-id';
47
+ this.params = params;
48
+ }
49
+ }
50
+ exports.InvalidMapIdError = InvalidMapIdError;
51
+ class MapIdNotFoundError extends BizError {
52
+ constructor(params) {
53
+ super('MapIdNotFoundError');
54
+ this.name = 'MapIdNotFoundError';
55
+ this.id = 'commands.bsbot.id.not-found';
56
+ this.params = params;
57
+ }
58
+ }
59
+ exports.MapIdNotFoundError = MapIdNotFoundError;
60
+ class ScoreSaberIDNotFoundError extends BizError {
61
+ constructor(params) {
62
+ super('ScoreSaberIdNotFoundError');
63
+ this.name = 'ScoreSaberIdNotFoundError';
64
+ this.id = 'commands.bsbot.bind.not-found';
65
+ this.params = params;
66
+ this.params = params;
67
+ }
68
+ }
69
+ exports.ScoreSaberIDNotFoundError = ScoreSaberIDNotFoundError;
70
+ class SessionPromotionTimeoutError extends BizError {
71
+ constructor(params) {
72
+ super('SessionPromotionTimeoutError');
73
+ this.name = 'SessionPromotionTimeoutError';
74
+ this.id = 'commands.bsbot.session-promotion-timeout';
75
+ this.params = params;
76
+ }
77
+ }
78
+ exports.SessionPromotionTimeoutError = SessionPromotionTimeoutError;
79
+ class SessionPromotionCancelError extends BizError {
80
+ constructor(params) {
81
+ const name = 'SessionPromotionCancelError';
82
+ super(name);
83
+ this.name = name;
84
+ this.id = 'commands.bsbot.bind.cancel';
85
+ this.params = params;
86
+ }
87
+ }
88
+ exports.SessionPromotionCancelError = SessionPromotionCancelError;
89
+ class SubscriptionExistError extends BizError {
90
+ constructor(params) {
91
+ super('SubscriptionExistError');
92
+ this.params = params;
93
+ this.name = 'SubscriptionExistError';
94
+ this.id = 'commands.bsbot.subscribe.exist';
95
+ this.params = params;
96
+ }
97
+ }
98
+ exports.SubscriptionExistError = SubscriptionExistError;
99
+ class NoneSubscriptionExistError extends BizError {
100
+ constructor(params) {
101
+ super('NoneSubscriptionExistError');
102
+ this.name = 'NoneSubscriptionExistError';
103
+ this.id = 'commands.bsbot.subscribe.info.none';
104
+ this.params = params;
105
+ }
106
+ }
107
+ exports.NoneSubscriptionExistError = NoneSubscriptionExistError;
108
+ class SubscriptionNotExistError extends BizError {
109
+ constructor(params) {
110
+ super('SubscriptionNotExistError');
111
+ this.name = 'SubscriptionNotExistError';
112
+ this.id = 'commands.bsbot.unsubscribe.nosub';
113
+ this.params = params;
114
+ }
115
+ }
116
+ exports.SubscriptionNotExistError = SubscriptionNotExistError;
117
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAgB,SAAQ,KAAK;IACxC;QACE,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAC1B,CAAC;CACF;AAJD,0CAIC;AAED,MAAa,QAAS,SAAQ,KAAK;IACjC,EAAE,CAAQ;IACV,MAAM,CAAM;CACb;AAHD,4BAGC;AAED,MAAa,kBAAmB,SAAQ,QAAQ;IAC9C,YAAY,MAAY;QACtB,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,EAAE,GAAG,mCAAmC,CAAA;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAPD,gDAOC;AAED,MAAa,2BAA4B,SAAQ,QAAQ;IACvD,YAAY,MAAY;QACtB,KAAK,CAAC,6BAA6B,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAA;QACzC,IAAI,CAAC,EAAE,GAAG,+BAA+B,CAAA;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAPD,kEAOC;AACD,MAAa,kBAAmB,SAAQ,QAAQ;IAC9C,YAAY,MAAY;QACtB,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,EAAE,GAAG,6BAA6B,CAAA;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAPD,gDAOC;AACD,MAAa,iBAAkB,SAAQ,QAAQ;IAC7C,YAAY,MAAY;QACtB,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;QAC/B,IAAI,CAAC,EAAE,GAAG,gCAAgC,CAAA;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAPD,8CAOC;AAED,MAAa,kBAAmB,SAAQ,QAAQ;IAC9C,YAAY,MAAY;QACtB,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,EAAE,GAAG,6BAA6B,CAAA;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAPD,gDAOC;AAED,MAAa,yBAA0B,SAAQ,QAAQ;IACrD,YAAY,MAAY;QACtB,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;QACvC,IAAI,CAAC,EAAE,GAAG,+BAA+B,CAAA;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AARD,8DAQC;AAED,MAAa,4BAA6B,SAAQ,QAAQ;IACxD,YAAY,MAAY;QACtB,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAA;QAC1C,IAAI,CAAC,EAAE,GAAG,0CAA0C,CAAA;QACpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAPD,oEAOC;AAED,MAAa,2BAA4B,SAAQ,QAAQ;IACvD,YAAY,MAAY;QACtB,MAAM,IAAI,GAAG,6BAA6B,CAAA;QAC1C,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,EAAE,GAAG,4BAA4B,CAAA;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AARD,kEAQC;AAED,MAAa,sBAAuB,SAAQ,QAAQ;IAClD,YAAY,MAAY;QACtB,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,EAAE,GAAG,gCAAgC,CAAA;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AARD,wDAQC;AACD,MAAa,0BAA2B,SAAQ,QAAQ;IACtD,YAAY,MAAY;QACtB,KAAK,CAAC,4BAA4B,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAA;QACxC,IAAI,CAAC,EAAE,GAAG,oCAAoC,CAAA;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAPD,gEAOC;AAED,MAAa,yBAA0B,SAAQ,QAAQ;IACrD,YAAY,MAAY;QACtB,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;QACvC,IAAI,CAAC,EAAE,GAAG,kCAAkC,CAAA;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAPD,8DAOC"}
@@ -0,0 +1,2 @@
1
+ export declare function loadI18nConfig(lang: string, obj: any): void;
2
+ export declare function tran(path: string, params?: {}, lang?: string): string;
@@ -0,0 +1,118 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.tran = exports.loadI18nConfig = void 0;
27
+ const parser_1 = require("../i18n/parser");
28
+ const i18nObj = {};
29
+ init().then((_) => console.log('i18n loaded'));
30
+ async function init() {
31
+ // @ts-expect-error
32
+ const zh = await Promise.resolve().then(() => __importStar(require('./zh-cn.json')));
33
+ i18nObj['zh-cn'] = zh;
34
+ }
35
+ function isObject(item) {
36
+ return item && typeof item === 'object' && !Array.isArray(item);
37
+ }
38
+ function merge(target, ...sources) {
39
+ if (!sources.length)
40
+ return target;
41
+ const source = sources.shift();
42
+ if (isObject(target) && isObject(source)) {
43
+ for (const key in source) {
44
+ if (isObject(source[key])) {
45
+ if (!target[key])
46
+ Object.assign(target, { [key]: {} });
47
+ merge(target[key], source[key]);
48
+ }
49
+ else {
50
+ Object.assign(target, { [key]: source[key] });
51
+ }
52
+ }
53
+ }
54
+ return merge(target, ...sources);
55
+ }
56
+ function loadI18nConfig(lang, obj) {
57
+ const raw = i18nObj[lang];
58
+ i18nObj[lang] = merge(raw, obj);
59
+ console.log(`overwrite i18n ${lang} `);
60
+ }
61
+ exports.loadI18nConfig = loadI18nConfig;
62
+ function tran(path, params = {}, lang = 'zh-cn') {
63
+ const keys = path.split('.');
64
+ let result = i18nObj[lang];
65
+ for (const key of keys) {
66
+ if (result[key] !== undefined) {
67
+ result = result[key];
68
+ }
69
+ else {
70
+ return null;
71
+ }
72
+ }
73
+ try {
74
+ if (typeof result === 'string') {
75
+ return (0, parser_1.interpolate)(result, params);
76
+ }
77
+ }
78
+ catch (e) {
79
+ return interpolateString(result, params);
80
+ }
81
+ return null;
82
+ }
83
+ exports.tran = tran;
84
+ function interpolateString(str, context) {
85
+ // 正则表达式匹配三元表达式
86
+ const regex = /\{\{(.*?)\?\s*'(.*?)'\s*:\s*'(.*?)'\s*\}\}/;
87
+ let match;
88
+ // 递归解析
89
+ while ((match = regex.exec(str)) !== null) {
90
+ const [fullMatch, condition, trueValue, falseValue] = match;
91
+ // 递归解析 trueValue 和 falseValue 以处理嵌套情况
92
+ const resolvedTrueValue = interpolateString(trueValue, context);
93
+ const resolvedFalseValue = interpolateString(falseValue, context);
94
+ // 计算条件表达式
95
+ let result = safeEval(condition, context);
96
+ if (typeof result === 'string') {
97
+ result = false;
98
+ }
99
+ const replacement = result ? resolvedTrueValue : resolvedFalseValue;
100
+ // 替换匹配到的三元表达式
101
+ str = str.replace(fullMatch, replacement);
102
+ }
103
+ // 替换变量插值
104
+ const variableRegex = /\{\{(.*?)\}\}/g;
105
+ str = str.replace(variableRegex, (match, expr) => safeEval(expr, context));
106
+ return str;
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
+ }
118
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
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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"}
@@ -0,0 +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}} ({{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":{"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":"谱面图是由插件本地生成/远程获取"}}
@@ -0,0 +1,5 @@
1
+ export declare function RankDifficulty({ difficulty, stars, current, }: {
2
+ difficulty: string;
3
+ stars: number;
4
+ current: boolean;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
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, stars, 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) })] }), (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.Star, { className: 'w-4 h-4' }) }), (0, jsx_runtime_1.jsxs)("span", { children: [stars?.toFixed(2) ?? 'none', " "] })] })] }));
9
+ }
10
+ exports.RankDifficulty = RankDifficulty;
11
+ //# sourceMappingURL=RankDifficulty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RankDifficulty.js","sourceRoot":"","sources":["../../../src/img-render/components/RankDifficulty.tsx"],"names":[],"mappings":";;;;AAAA,+CAA6C;AAC7C,8CAA6C;AAE7C,SAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,KAAK,EACL,OAAO,GAKR;IACC,OAAO,CACL,iCACE,SAAS,EAAE,kCAAkC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,GAAG,aAEtG,iCAAK,SAAS,EAAE,yBAAyB,aACvC,2CACE,uBAAC,uBAAQ,IAAC,SAAS,EAAE,SAAS,GAAI,GAC7B,EACP,2CAAO,IAAA,gBAAQ,EAAC,UAAU,CAAC,GAAQ,IAC/B,EACN,iCAAK,SAAS,EAAE,yBAAyB,aACvC,2CACE,uBAAC,mBAAI,IAAC,SAAS,EAAE,SAAS,GAAI,GACzB,EACP,6CAAO,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,SAAS,IACvC,IACF,CACP,CAAA;AACH,CAAC;AA3BD,wCA2BC"}
@@ -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 {};
@@ -0,0 +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;
12
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
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,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;
@@ -0,0 +1,14 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,5 @@
1
+ /** @jsxImportSource react */
2
+ export declare function CharacteristicIcon({ characteristic, className, }: {
3
+ characteristic: string;
4
+ className?: string;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CharacteristicIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ /** @jsxImportSource react */
6
+ const LawlessIcon = () => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", stroke: "currentColor", viewBox: "0 0 1280 1280", children: [(0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M639.63,931.84c-32.42,0-64.85,0.01-97.27,0c-49.35-0.02-91.47-40.08-94.1-89.41\n c-0.23-4.24-0.68-8.49-1.24-12.7c-2.09-15.62-8.63-23.1-24.53-24.41c-22.41-1.84-43.94-5.51-62.46-19.39\n c-25.42-19.04-40.52-43.98-39.39-76.17c0.66-18.65-4.31-34.83-11.99-51.32c-26.74-57.41-47.22-117.1-51.51-180.6\n c-6.77-100.1,19.79-189.66,91.12-263.06c67.86-69.83,152.88-103.69,247.85-113.16c97.36-9.71,189.34,9.89,272.44,62.65\n c101.84,64.65,154.46,157.75,155.77,279.06c0.74,69.03-18.74,133.48-44.27,196.55c-5.26,13-12.77,25.23-16.73,38.57\n c-3.05,10.29-2.68,21.75-2.92,32.7c-0.47,22.04-6.94,41.84-20.71,59.07c-17.3,21.65-40.59,31.48-67.65,33.62\n c-0.85,0.07-1.71-0.01-2.56,0.02c-27.51,1.05-35.9,8.81-37.05,36.03c-0.87,20.78-7.73,39.17-20.44,55.24\n c-18.74,23.7-43.11,36.72-73.81,36.72C705.33,931.84,672.48,931.84,639.63,931.84z M480.05,675.84c54.01,0,96.15-41.51,96.22-94.81\n c0.08-54.41-41.23-95.84-93.84-97.55c-53.66-1.74-99.41,45.06-98.41,95.82C385.11,633.95,425.78,675.84,480.05,675.84z\n M800.21,483.84c-53.87,0-95.87,41.64-95.93,95.11c-0.06,54.3,41.34,95.6,94.14,97.25c53.21,1.66,99.2-44.9,98.12-96.11\n C895.39,525.54,854.69,483.84,800.21,483.84z M640.62,775.21c3.39,5.64,6,11.05,9.59,15.72c9.19,11.96,24.81,16.36,37.63,11.13\n c11.95-4.87,18.72-15.54,16.14-31.29c-6.07-37-23.41-67.85-53.77-90.78c-6.73-5.08-12.97-5.26-19.7-0.1\n c-30.87,23.65-49.06,54.84-53.97,93.24c-1.86,14.55,4.56,24.54,16.05,28.77c12.63,4.65,24.61,2.59,34.06-7.2\n C631.85,789.29,635.55,782.41,640.62,775.21z" }), (0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M1236.1,788.03L1236.1,788.03c-10.85-23.21-38.46-33.24-61.67-22.39l-533.92,249.47L106.75,766.76\n c-23.23-10.81-50.82-0.74-61.63,22.49l0,0c-10.81,23.23-0.74,50.82,22.49,61.63l463.17,215.5l-12.54,5.86l-2.58-5.53L290.31,1172\n l43.52,93.13l225.34-105.29l-1.66-3.55l83.09-38.82l82.58,38.42l-1.96,4.21l225.51,104.93l43.37-93.2l-225.51-104.93l-2.27,4.87\n l-11.98-5.57l463.37-216.51C1236.92,838.85,1246.95,811.24,1236.1,788.03z" })] }) }));
7
+ const StandardIcon = () => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", stroke: "currentColor", viewBox: "0 0 1280 1280", children: (0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M1014,1160c39,5,63-3,75.87-31.69l0,0c13.53-32.46-1.82-69.75-34.28-83.27L708.07,900.22l71.48-37.92 l321.62,145.05c32.72,14.76,71.2,0.2,85.96-32.52v0c7.38-16.36,8.52-35.88,3.74-53.15c-0.68-2.47-1.5-4.8-2.41-7.02l8.48-529.63 c0.33-20.64-16.13-37.64-36.77-37.97l0,0c-20.64-0.33-37.64,16.13-37.97,36.77l-7.66,478.4C974.56,800.83,832.1,745.34,692.3,683.52 c5.01,0.61,10.11,0.93,15.28,0.93c69.05,0,125.03-55.98,125.03-125.03S776.63,434.4,707.58,434.4s-125.03,55.98-125.03,125.03 c0,37.23,16.28,70.65,42.1,93.56c-142.4-65.53-282.26-137.13-424.6-202.8L409.6,121.57c11.1-17.41,5.99-40.51-11.42-51.61l0,0 c-17.41-11.1-40.51-5.99-51.61,11.42L126.42,426.63c-25.08,3.05-49.73,19.87-60.04,42.73l0,0c-14.76,32.72-0.2,71.2,32.52,85.96 l313.11,141.22l-68.3,175.18l-88.76,86.09c-20.92,20.29-25.68,50.93-14.09,75.96c3.82,8.45,9.46,16.24,16.9,22.74l115.03,100.42 c27.77,24.24,69.93,21.38,94.17-6.38h0c24.24-27.77,21.38-69.93-6.38-94.17l-60.8-53.08l19.39-18.81h130.07l0.02-0.01L1014,1160z" }) }) }));
8
+ const LightShowIcon = () => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", stroke: "currentColor", viewBox: "0 0 1280 1280", children: [(0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M1214.77,1060.46L345.4,323.04c-10.53-8.93-26.3-7.63-35.23,2.89l0,0c-8.93,10.53-7.63,26.3,2.89,35.23 l760.31,644.9C1001.05,989.8,914.14,981,823,981c-112.48,0-218.54,13.4-298.65,37.72c-46.18,14.02-81.2,30.97-104.39,50.3 L231.57,407.7c-3.78-13.28-17.61-20.97-30.89-17.19c-13.28,3.78-20.97,17.61-17.19,30.89l200.62,704.3c0.58,2.03,1.39,3.92,2.4,5.67 c0.77,45.1,48.38,83.26,137.83,110.42c80.11,24.32,186.17,37.72,298.65,37.72s218.54-13.4,298.65-37.72 c90.18-27.38,137.85-65.95,137.85-111.53C1259.5,1104.5,1244.28,1080.98,1214.77,1060.46z M1107.71,1195.85 C1032,1218.84,930.88,1231.5,823,1231.5s-209-12.66-284.71-35.65c-71.7-21.77-103.79-48.63-103.79-65.6s32.09-43.83,103.79-65.6 C614,1041.66,715.12,1029,823,1029s209,12.66,284.71,35.65c28.28,8.59,50.4,17.97,66.82,27.22l16.4,13.91 c3,2.55,6.43,4.26,10.01,5.16c7.13,7.14,10.57,13.75,10.57,19.3C1211.5,1147.22,1179.41,1174.08,1107.71,1195.85z" }), (0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M314.38,157.41l-68.74-4.95l-63.09-91.22c-10.96-15.12-28.15-24.07-46.59-27.02 c-18.44-2.95-36.92,1.47-52.04,12.42l-41.81,30.3C10.9,99.56,3.9,143.36,26.52,174.58l58.98,83.44l-22.94,71 c-4.11,12.71,2.87,26.35,15.58,30.46h0c12.71,4.11,26.35-2.87,30.46-15.58l19.07-59.03l17.54,38.17c3.17,6.88,9.46,12.2,16.83,14.24 c2.25,0.62,4.53,0.93,6.8,0.93c5,0,9.91-1.48,14.12-4.36l85.76-58.73c8.29-6.13,12.84-7.92,15.24-13.3l0.98-2.22 c3.7-8.37,1.51-18.17-5.4-24.17l-1.31-1.13l-34.56-33.48l67.24,4.84c13.32,0.96,24.9-9.07,25.86-22.39v0 C337.73,169.95,327.71,158.37,314.38,157.41z M70.24,115.78l41.81-30.3c3.79-2.75,8.25-4.18,12.84-4.18c1.16,0,2.34,0.09,3.51,0.28 c5.79,0.92,10.88,4.05,14.32,8.8l50.4,73.24l-74.59,56.23l-53.19-73.4C58.24,136.64,60.44,122.88,70.24,115.78z M177.86,279.16 l-13.44-29.26l35.11-25l23.84,23.09L177.86,279.16z" })] }) }));
9
+ const OneSaberIcon = () => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", stroke: "currentColor", viewBox: "0 0 1280 1280", children: (0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M1219.85,1045.85l-224.8-83.69L854,850V645.44l317.06,43.14c33.1,4.5,63.58-18.68,68.08-51.77v0 c4.5-33.1-18.68-63.58-51.77-68.08l-434.95-59.19C792.87,491.12,821,450.35,821,403c0-64.62-52.38-117-117-117s-117,52.38-117,117 c0,51.94,33.85,95.97,80.69,111.25l-378.02-43.52c-2.67-0.31-5.31-0.42-7.92-0.38c4.76-10.41,4.8-22.84-0.97-33.74L80.93,59.64 c-9.87-18.61-32.95-25.7-51.56-15.83v0c-18.61,9.87-25.7,32.95-15.83,51.56l199.84,376.98c5.13,9.68,13.83,16.23,23.62,18.91 c-7.69,8.88-12.89,20.09-14.34,32.64v0c-3.82,33.18,19.98,63.18,53.17,67l323.91,37.29l0,0L598,810c0,0-128,2-189,5 c-53,3-75,65-46.05,106.24c0.05-0.24,136.94,189.62,136.94,189.62c19.6,26.61,57.05,32.29,83.66,12.69l0,0 c26.61-19.6,32.29-57.05,12.69-83.66L542,941l201-6l205.66,137.35l4.64,1.96l224.8,83.69c30.97,11.53,65.42-4.23,76.95-35.2v0 C1266.57,1091.83,1250.82,1057.38,1219.85,1045.85z" }) }) }));
10
+ const Degree360Icon = () => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", stroke: "currentColor", viewBox: "0 0 1280 1280", children: (0, jsx_runtime_1.jsxs)("g", { children: [(0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M197.39,338.14v127.8H83V314.09c0-99.23,36.13-148.87,108.43-148.87h100.46 c72.28,0,108.43,49.63,108.43,148.87v202.98c0,62.16-13.93,100.25-41.77,114.28c27.84,14.03,41.77,50.12,41.77,108.26v225.55 c0,99.23-36.15,148.85-108.43,148.85H191.43C119.13,1114,83,1064.38,83,965.15V814.78h114.39v126.3c0,16.06,1.99,26.83,5.96,32.34 s11.27,8.27,21.89,8.27h33.82c10.6,0,17.9-2.76,21.88-8.27c3.97-5.51,5.98-16.28,5.98-32.34V738.1c0-16.03-1.83-27.05-5.48-33.07 s-11.1-9.03-22.37-9.03h-76.6V569.69h76.6c10.6,0,17.9-2.76,21.88-8.27c3.97-5.51,5.98-16.28,5.98-32.32V338.14 c0-16.03-2-26.81-5.98-32.32c-3.97-5.51-11.27-8.28-21.88-8.28h-33.82c-10.62,0-17.92,2.77-21.89,8.28S197.39,322.12,197.39,338.14 z" }), (0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M584.33,562.18h108.43c72.28,0,108.43,49.62,108.43,148.85v254.12c0,99.23-36.15,148.85-108.43,148.85 H579.36c-72.29,0-108.43-49.62-108.43-148.85V314.09c0-99.23,36.13-148.87,108.43-148.87h108.43 c72.28,0,108.43,49.63,108.43,148.87v145.84h-112.4V338.14c0-16.03-2-26.81-5.98-32.32s-11.27-8.28-21.88-8.28h-43.77 c-10.62,0-17.92,2.77-21.89,8.28c-3.97,5.51-5.96,16.3-5.96,32.32V562.18z M688.78,941.08v-209c0-16.03-2-26.81-5.98-32.32 c-3.97-5.51-11.6-8.27-22.87-8.27h-75.6v249.59c0,16.06,1.99,26.83,5.96,32.34c3.97,5.51,11.27,8.27,21.89,8.27h47.75 c11.27,0,18.9-2.76,22.87-8.27S688.78,957.14,688.78,941.08z" }), (0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M1199.04,314.09v651.07c0,99.23-36.15,148.85-108.43,148.85H975.24c-72.29,0-108.43-49.62-108.43-148.85 V314.09c0-99.23,36.13-148.87,108.43-148.87h115.38C1162.9,165.22,1199.04,214.85,1199.04,314.09z M1084.66,941.08V338.14 c0-16.03-2-26.81-5.98-32.32s-11.6-8.28-22.87-8.28h-45.76c-10.62,0-17.92,2.77-21.89,8.28c-3.97,5.51-5.96,16.3-5.96,32.32v602.94 c0,16.06,1.99,26.83,5.96,32.34c3.97,5.51,11.27,8.27,21.89,8.27h45.76c11.27,0,18.9-2.76,22.87-8.27 S1084.66,957.14,1084.66,941.08z" })] }) }) }));
11
+ const Degree90Icon = () => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", stroke: "currentColor", viewBox: "0 0 1280 1280", children: (0, jsx_runtime_1.jsxs)("g", { children: [(0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M386.25,168.31h112.6c72.4,0,108.61,49.2,108.61,147.59v645.51c0,98.39-36.21,147.59-108.61,147.59H390.23 c-72.41,0-108.61-49.2-108.61-147.59V819.79h112.6v117.77c0,15.91,1.99,26.6,5.98,32.05c3.99,5.47,11.29,8.2,21.92,8.2h44.84 c10.62,0,17.94-2.73,21.92-8.2c3.99-5.45,5.98-16.14,5.98-32.05V730.34H386.25c-72.41,0-108.61-49.2-108.61-147.59V315.9 C277.64,217.51,313.84,168.31,386.25,168.31z M418.14,606.6h76.73V339.75c0-15.89-1.99-26.58-5.98-32.05 c-3.99-5.45-11.3-8.2-21.92-8.2h-48.83c-10.63,0-17.94,2.75-21.92,8.2c-3.99,5.47-5.98,16.17-5.98,32.05v226.6 c0,15.91,1.99,26.6,5.98,32.05C400.2,603.88,407.5,606.6,418.14,606.6z" }), (0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M1013,315.9v645.51c0,98.39-36.21,147.59-108.61,147.59H788.8c-72.41,0-108.61-49.2-108.61-147.59V315.9 c0-98.39,36.2-147.59,108.61-147.59h115.59C976.79,168.31,1013,217.51,1013,315.9z M898.41,937.56V339.75 c0-15.89-1.99-26.58-5.98-32.05c-3.98-5.45-11.63-8.2-22.92-8.2h-45.84c-10.63,0-17.94,2.75-21.92,8.2 c-3.98,5.47-5.98,16.17-5.98,32.05v597.81c0,15.91,1.99,26.6,5.98,32.05c3.99,5.47,11.29,8.2,21.92,8.2h45.84 c11.29,0,18.93-2.73,22.92-8.2C896.42,964.16,898.41,953.47,898.41,937.56z" })] }) }) }));
12
+ const characteristicIcons = {
13
+ Lawless: (0, jsx_runtime_1.jsx)(LawlessIcon, {}),
14
+ Standard: (0, jsx_runtime_1.jsx)(StandardIcon, {}),
15
+ Lightshow: (0, jsx_runtime_1.jsx)(LightShowIcon, {}),
16
+ OneSaber: (0, jsx_runtime_1.jsx)(OneSaberIcon, {}),
17
+ '90Degree': (0, jsx_runtime_1.jsx)(Degree90Icon, {}),
18
+ '360Degree': (0, jsx_runtime_1.jsx)(Degree360Icon, {}),
19
+ };
20
+ function CharacteristicIcon({ characteristic, className, }) {
21
+ if (Object.keys(characteristicIcons).includes(characteristic)) {
22
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("span", { className: className, children: characteristicIcons[characteristic] }) }));
23
+ }
24
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
25
+ }
26
+ exports.CharacteristicIcon = CharacteristicIcon;
27
+ //# sourceMappingURL=characteristic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"characteristic.js","sourceRoot":"","sources":["../../../src/img-render/components/characteristic.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ declare const Flags: ({ flagNationCode }: {
2
+ flagNationCode: string;
3
+ }) => import("react/jsx-runtime").JSX.Element;
4
+ export default Flags;
5
+ export declare const EarchIcon: () => import("react/jsx-runtime").JSX.Element;