maidraw 0.12.20 → 0.13.0

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 (350) hide show
  1. package/assets/themes/chunithm/best/luminous/new/manifest.json +1 -4
  2. package/assets/themes/chunithm/best/luminous/recents/manifest.json +1 -4
  3. package/assets/themes/chunithm/best/luminousplus/new/manifest.json +1 -4
  4. package/assets/themes/chunithm/best/luminousplus/recents/manifest.json +1 -4
  5. package/assets/themes/chunithm/best/paradiselost/new/manifest.json +1 -4
  6. package/assets/themes/chunithm/best/paradiselost/recents/manifest.json +1 -4
  7. package/assets/themes/chunithm/best/verse/new/manifest.json +1 -4
  8. package/assets/themes/chunithm/best/verse/recents/manifest.json +1 -4
  9. package/assets/themes/chunithm/best/xverse/new/manifest.json +1 -4
  10. package/assets/themes/chunithm/best/xverse/recents/manifest.json +1 -4
  11. package/assets/themes/chunithm/best/xversex/new/manifest.json +1 -4
  12. package/assets/themes/chunithm/best/xversex/recents/manifest.json +1 -4
  13. package/assets/themes/chunithm/chart/verse/manifest.json +1 -4
  14. package/assets/themes/chunithm/chart/xverse/manifest.json +1 -4
  15. package/assets/themes/chunithm/chart/xversex/manifest.json +1 -4
  16. package/assets/themes/maimai/best50/2024/landscape/manifest.json +1 -4
  17. package/assets/themes/maimai/best50/2024/portrait/manifest.json +1 -4
  18. package/assets/themes/maimai/best50/2025/landscape/manifest.json +1 -4
  19. package/assets/themes/maimai/best50/2025/portrait/manifest.json +1 -4
  20. package/assets/themes/maimai/best50/2026/landscape/manifest.json +1 -4
  21. package/assets/themes/maimai/best50/2026/portrait/manifest.json +1 -4
  22. package/assets/themes/maimai/best50/buddies/landscape/manifest.json +1 -4
  23. package/assets/themes/maimai/best50/buddies/portrait/manifest.json +1 -4
  24. package/assets/themes/maimai/best50/buddiesplus/landscape/manifest.json +1 -4
  25. package/assets/themes/maimai/best50/buddiesplus/portrait/manifest.json +1 -4
  26. package/assets/themes/maimai/best50/circle/landscape/manifest.json +1 -4
  27. package/assets/themes/maimai/best50/circle/portrait/manifest.json +1 -4
  28. package/assets/themes/maimai/best50/circleplus/landscape/manifest.json +1 -4
  29. package/assets/themes/maimai/best50/circleplus/portrait/manifest.json +1 -4
  30. package/assets/themes/maimai/best50/finale/landscape/manifest.json +1 -4
  31. package/assets/themes/maimai/best50/finale/portrait/manifest.json +1 -4
  32. package/assets/themes/maimai/best50/prism/landscape/manifest.json +1 -4
  33. package/assets/themes/maimai/best50/prism/portrait/manifest.json +1 -4
  34. package/assets/themes/maimai/best50/prismplus/landscape/manifest.json +1 -4
  35. package/assets/themes/maimai/best50/prismplus/portrait/manifest.json +1 -4
  36. package/assets/themes/maimai/best50/salt2026/landscape/manifest.json +1 -4
  37. package/assets/themes/maimai/best50/salt2026/portrait/manifest.json +1 -4
  38. package/assets/themes/maimai/chart/circle/manifest.json +1 -4
  39. package/assets/themes/maimai/chart/circleplus/manifest.json +1 -4
  40. package/assets/themes/maimai/chart/prism/manifest.json +1 -4
  41. package/assets/themes/maimai/chart/prismplus/manifest.json +1 -4
  42. package/assets/themes/ongeki/best/brightmemory/classic/manifest.json +1 -4
  43. package/assets/themes/ongeki/best/brightmemory/refresh/manifest.json +1 -4
  44. package/assets/themes/ongeki/best/refresh/classic/manifest.json +1 -4
  45. package/assets/themes/ongeki/best/refresh/refresh/manifest.json +1 -4
  46. package/assets/themes/ongeki/chart/brightMemory/manifest.json +1 -4
  47. package/assets/themes/ongeki/chart/refresh/manifest.json +1 -4
  48. package/dist/chunithm/index.d.ts +4 -0
  49. package/dist/chunithm/index.js +13 -0
  50. package/dist/chunithm/index.js.map +1 -0
  51. package/dist/chunithm/lib/adapter.d.ts +20 -0
  52. package/dist/{geki/lib/adapter/index.js → chunithm/lib/adapter.js} +1 -1
  53. package/dist/chunithm/lib/adapter.js.map +1 -0
  54. package/dist/chunithm/lib/calculateParadiseLostRating.d.ts +7 -0
  55. package/dist/chunithm/lib/calculateParadiseLostRating.js +48 -0
  56. package/dist/chunithm/lib/calculateParadiseLostRating.js.map +1 -0
  57. package/dist/chunithm/lib/types.d.ts +47 -0
  58. package/dist/chunithm/lib/types.js +44 -0
  59. package/dist/chunithm/lib/types.js.map +1 -0
  60. package/dist/chunithm/lib/version.d.ts +8 -0
  61. package/dist/chunithm/lib/version.js +47 -0
  62. package/dist/chunithm/lib/version.js.map +1 -0
  63. package/dist/{chu/painter/best50/index.d.ts → chunithm/painter/best.d.ts} +41 -50
  64. package/dist/chunithm/painter/best.js +81 -0
  65. package/dist/chunithm/painter/best.js.map +1 -0
  66. package/dist/{chu/painter/chart/index.d.ts → chunithm/painter/chart.d.ts} +45 -52
  67. package/dist/chunithm/painter/chart.js +95 -0
  68. package/dist/chunithm/painter/chart.js.map +1 -0
  69. package/dist/chunithm/painter/modules/chartGrid.d.ts +83 -0
  70. package/dist/chunithm/painter/modules/chartGrid.js +560 -0
  71. package/dist/chunithm/painter/modules/chartGrid.js.map +1 -0
  72. package/dist/chunithm/painter/modules/detailInfo.d.ts +29 -0
  73. package/dist/chunithm/painter/modules/detailInfo.js +117 -0
  74. package/dist/chunithm/painter/modules/detailInfo.js.map +1 -0
  75. package/dist/chunithm/painter/modules/profile.d.ts +38 -0
  76. package/dist/chunithm/painter/modules/profile.js +238 -0
  77. package/dist/chunithm/painter/modules/profile.js.map +1 -0
  78. package/dist/chunithm/painter/modules/scoreGrid.d.ts +86 -0
  79. package/dist/chunithm/painter/modules/scoreGrid.js +283 -0
  80. package/dist/chunithm/painter/modules/scoreGrid.js.map +1 -0
  81. package/dist/chunithm/painter/painter.d.ts +12 -0
  82. package/dist/chunithm/painter/painter.js +11 -0
  83. package/dist/chunithm/painter/painter.js.map +1 -0
  84. package/dist/{lib → common}/adapter.d.ts +5 -6
  85. package/dist/{lib → common}/adapter.js +13 -24
  86. package/dist/common/adapter.js.map +1 -0
  87. package/dist/{lib → common}/cache.js +11 -5
  88. package/dist/common/cache.js.map +1 -0
  89. package/dist/{lib → common}/error.d.ts +3 -3
  90. package/dist/{lib → common}/error.js +2 -2
  91. package/dist/common/error.js.map +1 -0
  92. package/dist/common/logger.d.ts +2 -0
  93. package/dist/common/logger.js +17 -0
  94. package/dist/common/logger.js.map +1 -0
  95. package/dist/common/painter/modules/hitokoto.d.ts +33 -0
  96. package/dist/common/painter/modules/hitokoto.js +59 -0
  97. package/dist/common/painter/modules/hitokoto.js.map +1 -0
  98. package/dist/common/painter/modules/image.d.ts +16 -0
  99. package/dist/common/painter/modules/image.js +98 -0
  100. package/dist/common/painter/modules/image.js.map +1 -0
  101. package/dist/common/painter/modules/text.d.ts +29 -0
  102. package/dist/common/painter/modules/text.js +61 -0
  103. package/dist/common/painter/modules/text.js.map +1 -0
  104. package/dist/common/painter/painter.d.ts +36 -0
  105. package/dist/common/painter/painter.js +66 -0
  106. package/dist/common/painter/painter.js.map +1 -0
  107. package/dist/common/painter/theme.d.ts +39 -0
  108. package/dist/common/painter/theme.js +100 -0
  109. package/dist/common/painter/theme.js.map +1 -0
  110. package/dist/common/types/score.d.ts +5 -0
  111. package/dist/{chu/lib/adapter/index.js → common/types/score.js} +1 -1
  112. package/dist/common/types/score.js.map +1 -0
  113. package/dist/common/utils/ctxWrapper.d.ts +6 -0
  114. package/dist/common/utils/ctxWrapper.js +60 -0
  115. package/dist/common/utils/ctxWrapper.js.map +1 -0
  116. package/dist/common/utils/getBpmRange.d.ts +1 -0
  117. package/dist/common/utils/getBpmRange.js +20 -0
  118. package/dist/common/utils/getBpmRange.js.map +1 -0
  119. package/dist/common/utils/halfFullWidthConvert.d.ts +2 -0
  120. package/dist/common/utils/halfFullWidthConvert.js +39 -0
  121. package/dist/common/utils/halfFullWidthConvert.js.map +1 -0
  122. package/dist/{lib → common}/utils/loadImage.d.ts +2 -1
  123. package/dist/{lib → common}/utils/loadImage.js +14 -10
  124. package/dist/common/utils/loadImage.js.map +1 -0
  125. package/dist/common/utils/misc.d.ts +18 -0
  126. package/dist/{lib → common}/utils/misc.js +4 -0
  127. package/dist/common/utils/misc.js.map +1 -0
  128. package/dist/common/utils/number.js.map +1 -0
  129. package/dist/common/utils/textDraw/drawEmojiOrGlyphs.d.ts +9 -0
  130. package/dist/common/utils/textDraw/drawEmojiOrGlyphs.js +17 -0
  131. package/dist/common/utils/textDraw/drawEmojiOrGlyphs.js.map +1 -0
  132. package/dist/common/utils/textDraw/drawText.d.ts +22 -0
  133. package/dist/common/utils/textDraw/drawText.js +99 -0
  134. package/dist/common/utils/textDraw/drawText.js.map +1 -0
  135. package/dist/common/utils/textDraw/drawVerticalText.d.ts +6 -0
  136. package/dist/common/utils/textDraw/drawVerticalText.js +49 -0
  137. package/dist/common/utils/textDraw/drawVerticalText.js.map +1 -0
  138. package/dist/common/utils/textDraw/utils.d.ts +5 -0
  139. package/dist/common/utils/textDraw/utils.js +42 -0
  140. package/dist/common/utils/textDraw/utils.js.map +1 -0
  141. package/dist/common/utils/zod.js.map +1 -0
  142. package/dist/exports/chunithm.d.ts +1 -0
  143. package/dist/exports/chunithm.js +18 -0
  144. package/dist/exports/chunithm.js.map +1 -0
  145. package/dist/exports/common.d.ts +2 -0
  146. package/dist/exports/common.js +21 -0
  147. package/dist/exports/common.js.map +1 -0
  148. package/dist/exports/maimai.d.ts +1 -0
  149. package/dist/exports/maimai.js +18 -0
  150. package/dist/exports/maimai.js.map +1 -0
  151. package/dist/exports/ongeki.d.ts +1 -0
  152. package/dist/exports/ongeki.js +18 -0
  153. package/dist/exports/ongeki.js.map +1 -0
  154. package/dist/maimai/index.d.ts +5 -0
  155. package/dist/maimai/index.js +14 -0
  156. package/dist/maimai/index.js.map +1 -0
  157. package/dist/maimai/lib/adapter.d.ts +18 -0
  158. package/dist/{mai/lib/adapter/index.js → maimai/lib/adapter.js} +1 -1
  159. package/dist/maimai/lib/adapter.js.map +1 -0
  160. package/dist/maimai/lib/types.d.ts +42 -0
  161. package/dist/maimai/lib/types.js +38 -0
  162. package/dist/maimai/lib/types.js.map +1 -0
  163. package/dist/maimai/lib/version.d.ts +7 -0
  164. package/dist/maimai/lib/version.js +45 -0
  165. package/dist/maimai/lib/version.js.map +1 -0
  166. package/dist/{mai/painter/best50/index.d.ts → maimai/painter/best50.d.ts} +44 -41
  167. package/dist/maimai/painter/best50.js +80 -0
  168. package/dist/maimai/painter/best50.js.map +1 -0
  169. package/dist/{mai/painter/chart/index.d.ts → maimai/painter/chart.d.ts} +38 -33
  170. package/dist/maimai/painter/chart.js +93 -0
  171. package/dist/maimai/painter/chart.js.map +1 -0
  172. package/dist/{mai/painter/level50/index.d.ts → maimai/painter/level50.d.ts} +12 -9
  173. package/dist/maimai/painter/level50.js +88 -0
  174. package/dist/maimai/painter/level50.js.map +1 -0
  175. package/dist/maimai/painter/modules/chartGrid.d.ts +92 -0
  176. package/dist/maimai/painter/modules/chartGrid.js +635 -0
  177. package/dist/maimai/painter/modules/chartGrid.js.map +1 -0
  178. package/dist/maimai/painter/modules/detailInfo.d.ts +35 -0
  179. package/dist/maimai/painter/modules/detailInfo.js +143 -0
  180. package/dist/maimai/painter/modules/detailInfo.js.map +1 -0
  181. package/dist/maimai/painter/modules/profile.d.ts +42 -0
  182. package/dist/maimai/painter/modules/profile.js +167 -0
  183. package/dist/maimai/painter/modules/profile.js.map +1 -0
  184. package/dist/maimai/painter/modules/scoreGrid.d.ts +98 -0
  185. package/dist/maimai/painter/modules/scoreGrid.js +316 -0
  186. package/dist/maimai/painter/modules/scoreGrid.js.map +1 -0
  187. package/dist/maimai/painter/painter.d.ts +12 -0
  188. package/dist/maimai/painter/painter.js +11 -0
  189. package/dist/maimai/painter/painter.js.map +1 -0
  190. package/dist/ongeki/index.d.ts +4 -0
  191. package/dist/ongeki/index.js +12 -0
  192. package/dist/ongeki/index.js.map +1 -0
  193. package/dist/ongeki/lib/adapter.d.ts +23 -0
  194. package/dist/ongeki/lib/adapter.js +3 -0
  195. package/dist/ongeki/lib/adapter.js.map +1 -0
  196. package/dist/ongeki/lib/types.d.ts +36 -0
  197. package/dist/ongeki/lib/types.js +31 -0
  198. package/dist/ongeki/lib/types.js.map +1 -0
  199. package/dist/ongeki/lib/util.d.ts +8 -0
  200. package/dist/ongeki/lib/util.js +28 -0
  201. package/dist/ongeki/lib/util.js.map +1 -0
  202. package/dist/ongeki/lib/version.d.ts +6 -0
  203. package/dist/ongeki/lib/version.js +39 -0
  204. package/dist/ongeki/lib/version.js.map +1 -0
  205. package/dist/{geki/painter/best50/index.d.ts → ongeki/painter/best.d.ts} +65 -74
  206. package/dist/ongeki/painter/best.js +137 -0
  207. package/dist/ongeki/painter/best.js.map +1 -0
  208. package/dist/{geki/painter/chart/index.d.ts → ongeki/painter/chart.d.ts} +68 -75
  209. package/dist/ongeki/painter/chart.js +100 -0
  210. package/dist/ongeki/painter/chart.js.map +1 -0
  211. package/dist/ongeki/painter/modules/characterInfo.d.ts +28 -0
  212. package/dist/ongeki/painter/modules/characterInfo.js +90 -0
  213. package/dist/ongeki/painter/modules/characterInfo.js.map +1 -0
  214. package/dist/ongeki/painter/modules/chartGrid.d.ts +83 -0
  215. package/dist/ongeki/painter/modules/chartGrid.js +483 -0
  216. package/dist/ongeki/painter/modules/chartGrid.js.map +1 -0
  217. package/dist/ongeki/painter/modules/detailInfo.d.ts +31 -0
  218. package/dist/ongeki/painter/modules/detailInfo.js +102 -0
  219. package/dist/ongeki/painter/modules/detailInfo.js.map +1 -0
  220. package/dist/ongeki/painter/modules/profile.d.ts +59 -0
  221. package/dist/ongeki/painter/modules/profile.js +281 -0
  222. package/dist/ongeki/painter/modules/profile.js.map +1 -0
  223. package/dist/ongeki/painter/modules/scoreGrid.d.ts +74 -0
  224. package/dist/ongeki/painter/modules/scoreGrid.js +337 -0
  225. package/dist/ongeki/painter/modules/scoreGrid.js.map +1 -0
  226. package/dist/ongeki/painter/painter.d.ts +12 -0
  227. package/dist/ongeki/painter/painter.js +11 -0
  228. package/dist/ongeki/painter/painter.js.map +1 -0
  229. package/package.json +30 -14
  230. package/.github/workflows/publish.yml +0 -35
  231. package/.vscode/settings.json +0 -16
  232. package/biome.json +0 -59
  233. package/dist/chu/index.d.ts +0 -20
  234. package/dist/chu/index.js +0 -48
  235. package/dist/chu/index.js.map +0 -1
  236. package/dist/chu/lib/adapter/index.d.ts +0 -26
  237. package/dist/chu/lib/adapter/index.js.map +0 -1
  238. package/dist/chu/lib/adapter/kamaiTachi/index.d.ts +0 -263
  239. package/dist/chu/lib/adapter/kamaiTachi/index.js +0 -747
  240. package/dist/chu/lib/adapter/kamaiTachi/index.js.map +0 -1
  241. package/dist/chu/lib/adapter/lxns/index.d.ts +0 -243
  242. package/dist/chu/lib/adapter/lxns/index.js +0 -295
  243. package/dist/chu/lib/adapter/lxns/index.js.map +0 -1
  244. package/dist/chu/lib/database.d.ts +0 -96
  245. package/dist/chu/lib/database.js +0 -122
  246. package/dist/chu/lib/database.js.map +0 -1
  247. package/dist/chu/lib/util.d.ts +0 -163
  248. package/dist/chu/lib/util.js +0 -323
  249. package/dist/chu/lib/util.js.map +0 -1
  250. package/dist/chu/painter/best50/index.js +0 -211
  251. package/dist/chu/painter/best50/index.js.map +0 -1
  252. package/dist/chu/painter/chart/index.js +0 -167
  253. package/dist/chu/painter/chart/index.js.map +0 -1
  254. package/dist/chu/painter/index.d.ts +0 -168
  255. package/dist/chu/painter/index.js +0 -1339
  256. package/dist/chu/painter/index.js.map +0 -1
  257. package/dist/chu/type.d.ts +0 -52
  258. package/dist/chu/type.js +0 -43
  259. package/dist/chu/type.js.map +0 -1
  260. package/dist/geki/index.d.ts +0 -22
  261. package/dist/geki/index.js +0 -82
  262. package/dist/geki/index.js.map +0 -1
  263. package/dist/geki/lib/adapter/index.d.ts +0 -28
  264. package/dist/geki/lib/adapter/index.js.map +0 -1
  265. package/dist/geki/lib/adapter/kamaiTachi/index.d.ts +0 -275
  266. package/dist/geki/lib/adapter/kamaiTachi/index.js +0 -545
  267. package/dist/geki/lib/adapter/kamaiTachi/index.js.map +0 -1
  268. package/dist/geki/lib/database.d.ts +0 -140
  269. package/dist/geki/lib/database.js +0 -156
  270. package/dist/geki/lib/database.js.map +0 -1
  271. package/dist/geki/lib/util.d.ts +0 -100
  272. package/dist/geki/lib/util.js +0 -271
  273. package/dist/geki/lib/util.js.map +0 -1
  274. package/dist/geki/painter/best50/index.js +0 -226
  275. package/dist/geki/painter/best50/index.js.map +0 -1
  276. package/dist/geki/painter/chart/index.js +0 -162
  277. package/dist/geki/painter/chart/index.js.map +0 -1
  278. package/dist/geki/painter/index.d.ts +0 -211
  279. package/dist/geki/painter/index.js +0 -1650
  280. package/dist/geki/painter/index.js.map +0 -1
  281. package/dist/geki/type.d.ts +0 -52
  282. package/dist/geki/type.js +0 -39
  283. package/dist/geki/type.js.map +0 -1
  284. package/dist/index.d.ts +0 -12
  285. package/dist/index.js +0 -40
  286. package/dist/index.js.map +0 -1
  287. package/dist/lib/adapter.js.map +0 -1
  288. package/dist/lib/cache.js.map +0 -1
  289. package/dist/lib/error.js.map +0 -1
  290. package/dist/lib/logger.d.ts +0 -4
  291. package/dist/lib/logger.js +0 -49
  292. package/dist/lib/logger.js.map +0 -1
  293. package/dist/lib/painter.d.ts +0 -123
  294. package/dist/lib/painter.js +0 -383
  295. package/dist/lib/painter.js.map +0 -1
  296. package/dist/lib/utils/halfFullWidthConvert.d.ts +0 -9
  297. package/dist/lib/utils/halfFullWidthConvert.js +0 -38
  298. package/dist/lib/utils/halfFullWidthConvert.js.map +0 -1
  299. package/dist/lib/utils/loadImage.js.map +0 -1
  300. package/dist/lib/utils/logger.d.ts +0 -2
  301. package/dist/lib/utils/logger.js +0 -40
  302. package/dist/lib/utils/logger.js.map +0 -1
  303. package/dist/lib/utils/misc.d.ts +0 -1
  304. package/dist/lib/utils/misc.js.map +0 -1
  305. package/dist/lib/utils/number.js.map +0 -1
  306. package/dist/lib/utils/textDraw.d.ts +0 -34
  307. package/dist/lib/utils/textDraw.js +0 -158
  308. package/dist/lib/utils/textDraw.js.map +0 -1
  309. package/dist/lib/utils/zod.js.map +0 -1
  310. package/dist/mai/index.d.ts +0 -30
  311. package/dist/mai/index.js +0 -90
  312. package/dist/mai/index.js.map +0 -1
  313. package/dist/mai/lib/adapter/divingFish/index.d.ts +0 -104
  314. package/dist/mai/lib/adapter/divingFish/index.js +0 -231
  315. package/dist/mai/lib/adapter/divingFish/index.js.map +0 -1
  316. package/dist/mai/lib/adapter/index.d.ts +0 -24
  317. package/dist/mai/lib/adapter/index.js.map +0 -1
  318. package/dist/mai/lib/adapter/kamaiTachi/index.d.ts +0 -422
  319. package/dist/mai/lib/adapter/kamaiTachi/index.js +0 -847
  320. package/dist/mai/lib/adapter/kamaiTachi/index.js.map +0 -1
  321. package/dist/mai/lib/adapter/lxns/index.d.ts +0 -270
  322. package/dist/mai/lib/adapter/lxns/index.js +0 -390
  323. package/dist/mai/lib/adapter/lxns/index.js.map +0 -1
  324. package/dist/mai/lib/adapter/maishift/index.d.ts +0 -70
  325. package/dist/mai/lib/adapter/maishift/index.js +0 -388
  326. package/dist/mai/lib/adapter/maishift/index.js.map +0 -1
  327. package/dist/mai/lib/database.d.ts +0 -129
  328. package/dist/mai/lib/database.js +0 -132
  329. package/dist/mai/lib/database.js.map +0 -1
  330. package/dist/mai/lib/util.d.ts +0 -135
  331. package/dist/mai/lib/util.js +0 -270
  332. package/dist/mai/lib/util.js.map +0 -1
  333. package/dist/mai/painter/best50/index.js +0 -221
  334. package/dist/mai/painter/best50/index.js.map +0 -1
  335. package/dist/mai/painter/chart/index.js +0 -157
  336. package/dist/mai/painter/chart/index.js.map +0 -1
  337. package/dist/mai/painter/index.d.ts +0 -202
  338. package/dist/mai/painter/index.js +0 -1541
  339. package/dist/mai/painter/index.js.map +0 -1
  340. package/dist/mai/painter/level50/index.js +0 -170
  341. package/dist/mai/painter/level50/index.js.map +0 -1
  342. package/dist/mai/type.d.ts +0 -118
  343. package/dist/mai/type.js +0 -85
  344. package/dist/mai/type.js.map +0 -1
  345. package/tsconfig.json +0 -33
  346. /package/dist/{lib → common}/cache.d.ts +0 -0
  347. /package/dist/{lib → common}/utils/number.d.ts +0 -0
  348. /package/dist/{lib → common}/utils/number.js +0 -0
  349. /package/dist/{lib → common}/utils/zod.d.ts +0 -0
  350. /package/dist/{lib → common}/utils/zod.js +0 -0
@@ -0,0 +1,4 @@
1
+ export { ChunithmScoreAdapter } from "./lib/adapter";
2
+ export { AchievementTypes, ChainLamp, ClearLamp, ComboLamp, Score } from "./lib/types";
3
+ export { BestPainter } from "./painter/best";
4
+ export { ChartPainter } from "./painter/chart";
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChartPainter = exports.BestPainter = exports.ComboLamp = exports.ClearLamp = exports.ChainLamp = exports.AchievementTypes = void 0;
4
+ var types_1 = require("./lib/types");
5
+ Object.defineProperty(exports, "AchievementTypes", { enumerable: true, get: function () { return types_1.AchievementTypes; } });
6
+ Object.defineProperty(exports, "ChainLamp", { enumerable: true, get: function () { return types_1.ChainLamp; } });
7
+ Object.defineProperty(exports, "ClearLamp", { enumerable: true, get: function () { return types_1.ClearLamp; } });
8
+ Object.defineProperty(exports, "ComboLamp", { enumerable: true, get: function () { return types_1.ComboLamp; } });
9
+ var best_1 = require("./painter/best");
10
+ Object.defineProperty(exports, "BestPainter", { enumerable: true, get: function () { return best_1.BestPainter; } });
11
+ var chart_1 = require("./painter/chart");
12
+ Object.defineProperty(exports, "ChartPainter", { enumerable: true, get: function () { return chart_1.ChartPainter; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chunithm/index.ts"],"names":[],"mappings":";;;AAEA,6CAA+F;AAAtF,yGAAA,gBAAgB,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,kGAAA,SAAS,OAAA;AAE1D,+CAAqD;AAA5C,mGAAA,WAAW,OAAA;AACpB,iDAAuD;AAA9C,qGAAA,YAAY,OAAA"}
@@ -0,0 +1,20 @@
1
+ import type { Score } from "../lib/types";
2
+ import type { DataOrError } from "../../common/error";
3
+ import type { Difficulty } from "gcm-database/chunithm";
4
+ export interface ChunithmScoreAdapter {
5
+ getPlayerRecent40(username: string): Promise<DataOrError<{
6
+ recent: Score[];
7
+ best: Score[];
8
+ }>>;
9
+ getPlayerBest50(username: string): Promise<DataOrError<{
10
+ new: Score[];
11
+ old: Score[];
12
+ best?: Score[];
13
+ }>>;
14
+ getPlayerInfo(username: string, type: "new" | "recents"): Promise<DataOrError<{
15
+ name: string;
16
+ rating: number;
17
+ }>>;
18
+ getPlayerProfilePicture(username: string): Promise<DataOrError<Buffer>>;
19
+ getPlayerScore(username: string, chartIdentifier: string): Promise<DataOrError<Record<Difficulty, Score | null>>>;
20
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/chunithm/lib/adapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Calculate the rating of a score.
3
+ * @param internalLevel Internal level of the chart.
4
+ * @param score Score, range between 0 to 1010000.
5
+ * @returns Raw decimal rating value.
6
+ */
7
+ export declare function calculateParadiseLostRating(internalLevel: number, score: number): number;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateParadiseLostRating = calculateParadiseLostRating;
4
+ const number_1 = require("../../common/utils/number");
5
+ /**
6
+ * Calculate the rating of a score.
7
+ * @param internalLevel Internal level of the chart.
8
+ * @param score Score, range between 0 to 1010000.
9
+ * @returns Raw decimal rating value.
10
+ */
11
+ function calculateParadiseLostRating(internalLevel, score) {
12
+ let bonus = 0;
13
+ switch (true) {
14
+ case score >= 1007500: {
15
+ bonus = 2;
16
+ break;
17
+ }
18
+ case score >= 1005000: {
19
+ bonus = 1.5 + (0, number_1.truncateNumber)((score - 1005000) / 50, 0) * 0.01;
20
+ break;
21
+ }
22
+ case score >= 1000000: {
23
+ bonus = 1 + (0, number_1.truncateNumber)((score - 1000000) / 100, 0) * 0.01;
24
+ break;
25
+ }
26
+ case score >= 975000: {
27
+ bonus = 0 + (0, number_1.truncateNumber)((score - 975000) / 250, 0) * 0.01;
28
+ break;
29
+ }
30
+ case score >= 900000: {
31
+ bonus = -0.0 - ((975000 - score) / 75000) * 5.0;
32
+ break;
33
+ }
34
+ case score >= 800000: {
35
+ bonus = -5.0 - ((900000 - score) / 100000) * ((internalLevel - 5.0) / 2);
36
+ break;
37
+ }
38
+ case score >= 500000: {
39
+ bonus = -5.0 - (internalLevel - 5.0) / 2 - ((800000 - score) / 300000) * ((internalLevel - 5.0) / 2);
40
+ break;
41
+ }
42
+ default: {
43
+ bonus = -internalLevel;
44
+ }
45
+ }
46
+ return internalLevel + bonus;
47
+ }
48
+ //# sourceMappingURL=calculateParadiseLostRating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculateParadiseLostRating.js","sourceRoot":"","sources":["../../../src/chunithm/lib/calculateParadiseLostRating.ts"],"names":[],"mappings":";;AAQA,kEAoCC;AA5CD,iDAAsD;AAEtD;;;;;GAKG;AACH,SAAgB,2BAA2B,CAAC,aAAqB,EAAE,KAAa;IAC5E,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;YACpB,KAAK,GAAG,CAAC,CAAC;YACV,MAAM;QACV,CAAC;QACD,KAAK,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;YACpB,KAAK,GAAG,GAAG,GAAG,IAAA,uBAAc,EAAC,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YAC/D,MAAM;QACV,CAAC;QACD,KAAK,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;YACpB,KAAK,GAAG,CAAC,GAAG,IAAA,uBAAc,EAAC,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YAC9D,MAAM;QACV,CAAC;QACD,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;YACnB,KAAK,GAAG,CAAC,GAAG,IAAA,uBAAc,EAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YAC7D,MAAM;QACV,CAAC;QACD,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;YACnB,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;YAChD,MAAM;QACV,CAAC;QACD,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;YACnB,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACzE,MAAM;QACV,CAAC;QACD,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;YACnB,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACrG,MAAM;QACV,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACN,KAAK,GAAG,CAAC,aAAa,CAAC;QAC3B,CAAC;IACL,CAAC;IACD,OAAO,aAAa,GAAG,KAAK,CAAC;AACjC,CAAC"}
@@ -0,0 +1,47 @@
1
+ import type { BaseScore } from "../../common/types/score";
2
+ import type { Chart } from "gcm-database/chunithm";
3
+ export declare enum ComboLamp {
4
+ NONE = "none",
5
+ FULL_COMBO = "full_combo",
6
+ ALL_JUSTICE = "all_justice",
7
+ ALL_JUSTICE_CRITICAL = "all_justice_critical"
8
+ }
9
+ export declare enum ClearLamp {
10
+ NONE = "none",
11
+ FAILED = "failed",
12
+ CLEAR = "clear",
13
+ HARD = "hard",
14
+ BRAVE = "brave",
15
+ ABSOLUTE = "absolute",
16
+ CATASTROPHY = "catastrophy"
17
+ }
18
+ export declare enum ChainLamp {
19
+ NONE = "none",
20
+ FULL_CHAIN = "full_chain",
21
+ FULL_CHAIN_JUSTICE = "full_chain_justice"
22
+ }
23
+ export declare enum AchievementTypes {
24
+ D = "d",
25
+ C = "C",
26
+ B = "b",
27
+ BB = "bb",
28
+ BBB = "bbb",
29
+ A = "a",
30
+ AA = "aa",
31
+ AAA = "aaa",
32
+ S = "s",
33
+ SP = "s_plus",
34
+ SS = "ss",
35
+ SSP = "ss_plus",
36
+ SSS = "sss",
37
+ SSSP = "sss_plus"
38
+ }
39
+ export interface Score extends BaseScore {
40
+ chart: Chart;
41
+ combo: ComboLamp;
42
+ chain: ChainLamp;
43
+ clear: ClearLamp;
44
+ score: number;
45
+ rank: AchievementTypes;
46
+ rating: number;
47
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AchievementTypes = exports.ChainLamp = exports.ClearLamp = exports.ComboLamp = void 0;
4
+ var ComboLamp;
5
+ (function (ComboLamp) {
6
+ ComboLamp["NONE"] = "none";
7
+ ComboLamp["FULL_COMBO"] = "full_combo";
8
+ ComboLamp["ALL_JUSTICE"] = "all_justice";
9
+ ComboLamp["ALL_JUSTICE_CRITICAL"] = "all_justice_critical";
10
+ })(ComboLamp || (exports.ComboLamp = ComboLamp = {}));
11
+ var ClearLamp;
12
+ (function (ClearLamp) {
13
+ ClearLamp["NONE"] = "none";
14
+ ClearLamp["FAILED"] = "failed";
15
+ ClearLamp["CLEAR"] = "clear";
16
+ ClearLamp["HARD"] = "hard";
17
+ ClearLamp["BRAVE"] = "brave";
18
+ ClearLamp["ABSOLUTE"] = "absolute";
19
+ ClearLamp["CATASTROPHY"] = "catastrophy";
20
+ })(ClearLamp || (exports.ClearLamp = ClearLamp = {}));
21
+ var ChainLamp;
22
+ (function (ChainLamp) {
23
+ ChainLamp["NONE"] = "none";
24
+ ChainLamp["FULL_CHAIN"] = "full_chain";
25
+ ChainLamp["FULL_CHAIN_JUSTICE"] = "full_chain_justice";
26
+ })(ChainLamp || (exports.ChainLamp = ChainLamp = {}));
27
+ var AchievementTypes;
28
+ (function (AchievementTypes) {
29
+ AchievementTypes["D"] = "d";
30
+ AchievementTypes["C"] = "C";
31
+ AchievementTypes["B"] = "b";
32
+ AchievementTypes["BB"] = "bb";
33
+ AchievementTypes["BBB"] = "bbb";
34
+ AchievementTypes["A"] = "a";
35
+ AchievementTypes["AA"] = "aa";
36
+ AchievementTypes["AAA"] = "aaa";
37
+ AchievementTypes["S"] = "s";
38
+ AchievementTypes["SP"] = "s_plus";
39
+ AchievementTypes["SS"] = "ss";
40
+ AchievementTypes["SSP"] = "ss_plus";
41
+ AchievementTypes["SSS"] = "sss";
42
+ AchievementTypes["SSSP"] = "sss_plus";
43
+ })(AchievementTypes || (exports.AchievementTypes = AchievementTypes = {}));
44
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/chunithm/lib/types.ts"],"names":[],"mappings":";;;AAGA,IAAY,SAKX;AALD,WAAY,SAAS;IACjB,0BAAa,CAAA;IACb,sCAAyB,CAAA;IACzB,wCAA2B,CAAA;IAC3B,0DAA6C,CAAA;AACjD,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB;AAED,IAAY,SAQX;AARD,WAAY,SAAS;IACjB,0BAAa,CAAA;IACb,8BAAiB,CAAA;IACjB,4BAAe,CAAA;IACf,0BAAa,CAAA;IACb,4BAAe,CAAA;IACf,kCAAqB,CAAA;IACrB,wCAA2B,CAAA;AAC/B,CAAC,EARW,SAAS,yBAAT,SAAS,QAQpB;AAED,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,0BAAa,CAAA;IACb,sCAAyB,CAAA;IACzB,sDAAyC,CAAA;AAC7C,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAED,IAAY,gBAeX;AAfD,WAAY,gBAAgB;IACxB,2BAAO,CAAA;IACP,2BAAO,CAAA;IACP,2BAAO,CAAA;IACP,6BAAS,CAAA;IACT,+BAAW,CAAA;IACX,2BAAO,CAAA;IACP,6BAAS,CAAA;IACT,+BAAW,CAAA;IACX,2BAAO,CAAA;IACP,iCAAa,CAAA;IACb,6BAAS,CAAA;IACT,mCAAe,CAAA;IACf,+BAAW,CAAA;IACX,qCAAiB,CAAA;AACrB,CAAC,EAfW,gBAAgB,gCAAhB,gBAAgB,QAe3B"}
@@ -0,0 +1,8 @@
1
+ import type { Regions } from "gcm-database-local/chunithm";
2
+ export declare const JPN_LATEST = 245;
3
+ export declare const INT_LATEST = 140;
4
+ export declare const CHN_LATEST = 120;
5
+ export declare function getNumberVersion(major: number, minor: number): number;
6
+ export declare function findVersion(major: number, minor: number, region: Regions): 245 | 140 | 120 | 240 | 230 | 225 | 220 | 215 | 210 | 205 | 200 | 155 | 150 | 145 | 135 | 130 | 125 | 115 | 110 | 105 | 100 | null;
7
+ export declare function findNewerVersion(major: number, minor: number, region: Regions): 245 | 140 | 120 | 240 | 230 | 225 | 220 | 215 | 210 | 205 | 200 | 155 | 150 | 145 | 135 | 130 | 125 | 115 | 110 | 105 | 100 | null;
8
+ export declare function findOlderMinorVersion(major: number, minor: number, region: Regions): 245 | 140 | 120 | 240 | 230 | 225 | 220 | 215 | 210 | 205 | 200 | 155 | 150 | 145 | 135 | 130 | 125 | 115 | 110 | 105 | 100 | null;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHN_LATEST = exports.INT_LATEST = exports.JPN_LATEST = void 0;
4
+ exports.getNumberVersion = getNumberVersion;
5
+ exports.findVersion = findVersion;
6
+ exports.findNewerVersion = findNewerVersion;
7
+ exports.findOlderMinorVersion = findOlderMinorVersion;
8
+ exports.JPN_LATEST = 245;
9
+ exports.INT_LATEST = 140;
10
+ exports.CHN_LATEST = 120;
11
+ const CHUNITHM_VERSIONS = [245, 240, 230, 225, 220, 215, 210, 205, 200, 155, 150, 145, 140, 135, 130, 125, 120, 115, 110, 105, 100];
12
+ const CHUNITHM_INT_VERSIONS = [140, 135, 130, 125, 120, 115, 110, 105, 100];
13
+ const ZHONGERJIEZOU_VERSIONS = [120, 110, 100];
14
+ const targetMap = {
15
+ // biome-ignore lint/style/useNamingConvention: region code
16
+ JPN: CHUNITHM_VERSIONS,
17
+ // biome-ignore lint/style/useNamingConvention: region code
18
+ INT: CHUNITHM_INT_VERSIONS,
19
+ // biome-ignore lint/style/useNamingConvention: region code
20
+ CHN: ZHONGERJIEZOU_VERSIONS,
21
+ };
22
+ function getTargetFromRegion(region) {
23
+ return targetMap[region];
24
+ }
25
+ function getNumberVersion(major, minor) {
26
+ return major * 100 + minor;
27
+ }
28
+ function findVersion(major, minor, region) {
29
+ return getTargetFromRegion(region).find((v) => getNumberVersion(major, minor) >= v) ?? null;
30
+ }
31
+ function findNewerVersion(major, minor, region) {
32
+ const target = getTargetFromRegion(region);
33
+ const adjustedMinor = findVersion(major, minor, region);
34
+ if (!adjustedMinor)
35
+ return null;
36
+ const indexOfCurrentVersion = target.indexOf(adjustedMinor);
37
+ return target[indexOfCurrentVersion - 1] ?? null;
38
+ }
39
+ function findOlderMinorVersion(major, minor, region) {
40
+ const target = getTargetFromRegion(region);
41
+ const adjustedMinor = findVersion(major, minor, region);
42
+ if (!adjustedMinor)
43
+ return null;
44
+ const indexOfCurrentVersion = target.indexOf(adjustedMinor);
45
+ return target[indexOfCurrentVersion + 1] ?? null;
46
+ }
47
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/chunithm/lib/version.ts"],"names":[],"mappings":";;;AAuBA,4CAEC;AAED,kCAEC;AAED,4CAMC;AAED,sDAMC;AA3CY,QAAA,UAAU,GAAG,GAAG,CAAC;AACjB,QAAA,UAAU,GAAG,GAAG,CAAC;AACjB,QAAA,UAAU,GAAG,GAAG,CAAC;AAE9B,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAC7I,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AACrF,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAExD,MAAM,SAAS,GAAG;IACd,2DAA2D;IAC3D,GAAG,EAAE,iBAAiB;IACtB,2DAA2D;IAC3D,GAAG,EAAE,qBAAqB;IAC1B,2DAA2D;IAC3D,GAAG,EAAE,sBAAsB;CAC9B,CAAC;AAEF,SAAS,mBAAmB,CAAoB,MAAS;IACrD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa,EAAE,KAAa;IACzD,OAAO,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AAC/B,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa,EAAE,KAAa,EAAE,MAAe;IACrE,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;AAChG,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa,EAAE,KAAa,EAAE,MAAe;IAC1E,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,qBAAqB,GAAI,MAA8B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AACrD,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAAa,EAAE,KAAa,EAAE,MAAe;IAC/E,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,qBAAqB,GAAI,MAA8B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AACrD,CAAC"}
@@ -1,35 +1,16 @@
1
- import type { IScore } from "../../type";
2
- import { MissingThemeError } from "../../../lib/error";
1
+ import type { Score } from "../lib/types";
2
+ import type { DataOrError } from "../../common/error";
3
+ import type { Chart, Database } from "gcm-database/chunithm";
3
4
  import { z } from "zod/v4";
4
- import type { ChunithmScoreAdapter } from "../../lib/adapter";
5
- import { ChunithmPainter } from "..";
6
- export declare class Best50Painter extends ChunithmPainter<typeof Best50Painter.Theme> {
7
- static readonly Theme: z.ZodObject<{
5
+ import type { ChunithmScoreAdapter } from "../lib/adapter";
6
+ import { ChunithmPainter } from "./painter";
7
+ export declare class BestPainter extends ChunithmPainter<typeof BestPainter.THEME> {
8
+ static readonly THEME: z.ZodObject<{
8
9
  name: z.ZodString;
9
10
  displayName: z.ZodString;
10
11
  width: z.ZodNumber;
11
12
  height: z.ZodNumber;
12
- elements: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
13
- x: z.ZodNumber;
14
- y: z.ZodNumber;
15
- type: z.ZodLiteral<"profile">;
16
- height: z.ZodNumber;
17
- sprites: z.ZodObject<{
18
- ratingNumberMap: z.ZodObject<{
19
- white: z.ZodString;
20
- bronze: z.ZodString;
21
- silver: z.ZodString;
22
- gold: z.ZodString;
23
- platinum: z.ZodString;
24
- rainbow: z.ZodString;
25
- kiwami: z.ZodString;
26
- }, z.core.$strip>;
27
- profile: z.ZodObject<{
28
- nameplate: z.ZodString;
29
- icon: z.ZodString;
30
- }, z.core.$strip>;
31
- }, z.core.$strip>;
32
- }, z.core.$strip>, z.ZodObject<{
13
+ elements: z.ZodArray<z.ZodDiscriminatedUnion<readonly [z.ZodObject<{
33
14
  x: z.ZodNumber;
34
15
  y: z.ZodNumber;
35
16
  type: z.ZodLiteral<"score-grid">;
@@ -79,6 +60,26 @@ export declare class Best50Painter extends ChunithmPainter<typeof Best50Painter.
79
60
  none: z.ZodString;
80
61
  }, z.core.$strip>;
81
62
  }, z.core.$strip>;
63
+ }, z.core.$strip>, z.ZodObject<{
64
+ x: z.ZodNumber;
65
+ y: z.ZodNumber;
66
+ type: z.ZodLiteral<"profile">;
67
+ height: z.ZodNumber;
68
+ sprites: z.ZodObject<{
69
+ ratingNumberMap: z.ZodObject<{
70
+ white: z.ZodString;
71
+ bronze: z.ZodString;
72
+ silver: z.ZodString;
73
+ gold: z.ZodString;
74
+ platinum: z.ZodString;
75
+ rainbow: z.ZodString;
76
+ kiwami: z.ZodString;
77
+ }, z.core.$strip>;
78
+ profile: z.ZodObject<{
79
+ nameplate: z.ZodString;
80
+ icon: z.ZodString;
81
+ }, z.core.$strip>;
82
+ }, z.core.$strip>;
82
83
  }, z.core.$strip>, z.ZodObject<{
83
84
  x: z.ZodNumber;
84
85
  y: z.ZodNumber;
@@ -97,8 +98,8 @@ export declare class Best50Painter extends ChunithmPainter<typeof Best50Painter.
97
98
  height: z.ZodOptional<z.ZodNumber>;
98
99
  linebreak: z.ZodOptional<z.ZodBoolean>;
99
100
  align: z.ZodOptional<z.ZodEnum<{
100
- left: "left";
101
101
  center: "center";
102
+ left: "left";
102
103
  right: "right";
103
104
  }>>;
104
105
  color: z.ZodOptional<z.ZodString>;
@@ -107,43 +108,39 @@ export declare class Best50Painter extends ChunithmPainter<typeof Best50Painter.
107
108
  }, z.core.$strip>, z.ZodObject<{
108
109
  x: z.ZodNumber;
109
110
  y: z.ZodNumber;
110
- type: z.ZodLiteral<"hitokoto">;
111
- size: z.ZodNumber;
112
111
  width: z.ZodOptional<z.ZodNumber>;
113
112
  height: z.ZodOptional<z.ZodNumber>;
113
+ borderColor: z.ZodOptional<z.ZodString>;
114
+ font: z.ZodOptional<z.ZodString>;
115
+ size: z.ZodNumber;
114
116
  linebreak: z.ZodOptional<z.ZodBoolean>;
115
117
  align: z.ZodOptional<z.ZodEnum<{
116
- left: "left";
117
118
  center: "center";
119
+ left: "left";
118
120
  right: "right";
119
121
  }>>;
120
122
  color: z.ZodOptional<z.ZodString>;
121
- borderColor: z.ZodOptional<z.ZodString>;
123
+ type: z.ZodLiteral<"hitokoto">;
122
124
  probability: z.ZodOptional<z.ZodNumber>;
123
125
  customLines: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
124
126
  }, z.core.$strip>], "type">>;
125
127
  }, z.core.$strip>;
126
- constructor();
127
128
  private static readonly DEFAULT_THEME;
129
+ private modules;
130
+ constructor(database: Database<Chart>);
128
131
  draw(variables: {
129
132
  username: string;
130
133
  rating: number;
131
- newScores: IScore[];
132
- oldScores: IScore[];
134
+ newScores: Score[];
135
+ oldScores: Score[];
133
136
  }, options: {
134
137
  scale?: number;
135
138
  theme?: string;
136
139
  profilePicture?: Buffer;
137
- bestScores?: IScore[];
140
+ bestScores?: Score[];
138
141
  type?: "new" | "recents";
139
142
  version?: "chunithm" | "crystal" | "new" | "verse";
140
- }): Promise<{
141
- data: Buffer;
142
- err?: undefined;
143
- } | {
144
- err: MissingThemeError;
145
- data?: undefined;
146
- }>;
143
+ }): Promise<DataOrError<Buffer>>;
147
144
  drawWithScoreSource(source: ChunithmScoreAdapter, variables: {
148
145
  username: string;
149
146
  }, options: {
@@ -152,11 +149,5 @@ export declare class Best50Painter extends ChunithmPainter<typeof Best50Painter.
152
149
  profilePicture?: Buffer | null;
153
150
  type?: "new" | "recents";
154
151
  version?: "chunithm" | "crystal" | "new" | "verse";
155
- }): Promise<{
156
- data: Buffer;
157
- err?: undefined;
158
- } | {
159
- err: MissingThemeError;
160
- data?: undefined;
161
- }>;
152
+ }): Promise<DataOrError<Buffer<ArrayBufferLike>>>;
162
153
  }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BestPainter = void 0;
7
+ const profile_1 = require("../painter/modules/profile");
8
+ const hitokoto_1 = require("../../common/painter/modules/hitokoto");
9
+ const image_1 = require("../../common/painter/modules/image");
10
+ const text_1 = require("../../common/painter/modules/text");
11
+ const theme_1 = require("../../common/painter/theme");
12
+ const halfFullWidthConvert_1 = require("../../common/utils/halfFullWidthConvert");
13
+ const number_1 = require("../../common/utils/number");
14
+ const upath_1 = __importDefault(require("upath"));
15
+ const v4_1 = require("zod/v4");
16
+ const scoreGrid_1 = require("./modules/scoreGrid");
17
+ const painter_1 = require("./painter");
18
+ const LOADED_SCHEMAS = [scoreGrid_1.ScoreGridModule, profile_1.ProfileModule, image_1.ImageModule, text_1.TextModule, hitokoto_1.HitokotoModule];
19
+ class BestPainter extends painter_1.ChunithmPainter {
20
+ static THEME = theme_1.ThemeManager.BASE_THEME.extend({
21
+ elements: v4_1.z.array(v4_1.z.discriminatedUnion("type", LOADED_SCHEMAS.map((v) => v.SCHEMA))),
22
+ });
23
+ static DEFAULT_THEME = "jp-xversex-landscape-new";
24
+ modules;
25
+ constructor(database) {
26
+ super({
27
+ theme: {
28
+ schema: BestPainter.THEME,
29
+ searchPaths: [upath_1.default.join(BestPainter.assetsPath, "themes", "chunithm", "best")],
30
+ defaultTheme: BestPainter.DEFAULT_THEME,
31
+ },
32
+ });
33
+ this.modules = Object.fromEntries(LOADED_SCHEMAS.map((v) => [v.SCHEMA.shape.type.value, new v(database)]));
34
+ }
35
+ async draw(variables, options) {
36
+ return this.wrapPainter(async (ctx, currentTheme) => {
37
+ for (const element of currentTheme.content.elements) {
38
+ await this.modules[element.type].draw(ctx, currentTheme, element, {
39
+ username: variables.username,
40
+ rating: variables.rating,
41
+ profilePicture: options?.profilePicture,
42
+ scores: {
43
+ new: variables.newScores,
44
+ old: variables.oldScores,
45
+ },
46
+ type: options.version ?? (options.type === "new" ? "verse" : "new"),
47
+ variables: {
48
+ username: (0, halfFullWidthConvert_1.toFullWidth)(variables.username),
49
+ rating: (0, number_1.truncate)(variables.rating, 0),
50
+ },
51
+ });
52
+ }
53
+ }, options ?? {});
54
+ }
55
+ async drawWithScoreSource(source, variables, options) {
56
+ const { data: profile, err: perr } = await source.getPlayerInfo(variables.username, options.type ?? "new");
57
+ if (perr)
58
+ return { err: perr };
59
+ const { data: score, err: serr } = await source.getPlayerBest50(variables.username);
60
+ if (serr)
61
+ return { err: serr };
62
+ return this.draw({
63
+ username: profile.name,
64
+ rating: profile.rating,
65
+ newScores: score.new,
66
+ oldScores: score.old,
67
+ }, {
68
+ ...options,
69
+ profilePicture: await (async () => {
70
+ if (options?.profilePicture)
71
+ return options?.profilePicture;
72
+ const { data: pfp, err: pfperr } = await source.getPlayerProfilePicture(variables.username);
73
+ if (pfperr)
74
+ return undefined;
75
+ return pfp;
76
+ })(),
77
+ });
78
+ }
79
+ }
80
+ exports.BestPainter = BestPainter;
81
+ //# sourceMappingURL=best.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"best.js","sourceRoot":"","sources":["../../../src/chunithm/painter/best.ts"],"names":[],"mappings":"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"}