beatsaber-bot-core 0.2.0-rc.13 → 0.2.0-rc.15

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 (338) hide show
  1. package/dist/cjs/cmd/bind/{bind-beatleader.js → bind-beatleader.cjs} +1 -1
  2. package/dist/cjs/cmd/bind/{bind-beatsaver.js → bind-beatsaver.cjs} +1 -1
  3. package/dist/cjs/cmd/bind/{bind-id-beatleader.js → bind-id-beatleader.cjs} +2 -2
  4. package/dist/cjs/cmd/bind/{bind-id-beatsaver.js → bind-id-beatsaver.cjs} +2 -2
  5. package/dist/cjs/cmd/bind/{bind-scoresaber.js → bind-scoresaber.cjs} +2 -2
  6. package/dist/cjs/cmd/bind/{index.js → index.cjs} +5 -5
  7. package/dist/cjs/cmd/bsmap/{id-search.js → id-search.cjs} +3 -3
  8. package/dist/cjs/cmd/bsmap/{key-search.js → key-search.cjs} +2 -2
  9. package/dist/cjs/cmd/bsmap/{latest.js → latest.cjs} +2 -2
  10. package/dist/cjs/cmd/config/index.cjs +1 -0
  11. package/dist/cjs/cmd/deprecated/{tmp.js → tmp.cjs} +2 -2
  12. package/dist/cjs/cmd/{index.js → index.cjs} +12 -12
  13. package/dist/cjs/cmd/index.cjs.map +1 -0
  14. package/dist/cjs/cmd/{rank.js → rank.cjs} +4 -4
  15. package/dist/cjs/cmd/{score.js → score.cjs} +6 -6
  16. package/dist/cjs/cmd/subscribe/{beatleader.js → beatleader.cjs} +2 -2
  17. package/dist/cjs/cmd/subscribe/{beatsaver.js → beatsaver.cjs} +2 -2
  18. package/dist/cjs/cmd/subscribe/{id-beatleader-score.js → id-beatleader-score.cjs} +2 -2
  19. package/dist/cjs/cmd/subscribe/{id-beatsaver-mapper.js → id-beatsaver-mapper.cjs} +2 -2
  20. package/dist/cjs/cmd/subscribe/{index.js → index.cjs} +6 -6
  21. package/dist/cjs/cmd/subscribe/{subjoin.js → subjoin.cjs} +3 -3
  22. package/dist/cjs/cmd/subscribe/{subleave.js → subleave.cjs} +2 -2
  23. package/dist/cjs/cmd/subscribe/{unsubscribe.js → unsubscribe.cjs} +3 -3
  24. package/dist/cjs/components/components/{RankDifficulty.js → RankDifficulty.cjs} +2 -2
  25. package/dist/cjs/components/components/base/{avatar.js → avatar.cjs} +1 -1
  26. package/dist/cjs/components/components/{bl-rank-score-item.js → bl-rank-score-item.cjs} +4 -4
  27. package/dist/cjs/components/components/{bl-score-item.js → bl-score-item.cjs} +2 -2
  28. package/dist/cjs/components/components/bl-score-item.cjs.map +1 -0
  29. package/dist/cjs/components/components/{characteristic.js → characteristic.cjs} +1 -1
  30. package/dist/cjs/components/components/{flag.js → flag.cjs} +2 -2
  31. package/dist/cjs/components/components/icons/{BeatLeader.js → BeatLeader.cjs} +1 -1
  32. package/dist/cjs/components/components/icons/{RankIcon.js → RankIcon.cjs} +3 -3
  33. package/dist/cjs/components/components/icons/{ScoreSaberIcon.js → ScoreSaberIcon.cjs} +1 -1
  34. package/dist/cjs/components/components/{progressbar.js → progressbar.cjs} +1 -1
  35. package/dist/cjs/components/components/{scoreItem.js → scoreItem.cjs} +2 -2
  36. package/dist/cjs/components/components/scoreItem.cjs.map +1 -0
  37. package/dist/cjs/components/components/{scoregraph.js → scoregraph.cjs} +3 -3
  38. package/dist/cjs/components/components/{skill-graph.js → skill-graph.cjs} +1 -1
  39. package/dist/cjs/components/components/{socre-badge.js → socre-badge.cjs} +1 -1
  40. package/dist/cjs/components/components/{ss-rank-score-item.js → ss-rank-score-item.cjs} +4 -4
  41. package/dist/cjs/components/components/{ss-score-item.js → ss-score-item.cjs} +2 -2
  42. package/dist/cjs/components/components/ss-score-item.cjs.map +1 -0
  43. package/dist/cjs/components/{index.js → index.cjs} +2 -2
  44. package/dist/cjs/components/pages/{bl-player.js → bl-player.cjs} +6 -6
  45. package/dist/cjs/components/pages/{bl-score-with-rank.js → bl-score-with-rank.cjs} +7 -7
  46. package/dist/cjs/components/pages/{bl-score.js → bl-score.cjs} +3 -3
  47. package/dist/cjs/components/pages/{bs-map.js → bs-map.cjs} +4 -4
  48. package/dist/cjs/components/pages/{index.js → index.cjs} +5 -5
  49. package/dist/cjs/components/pages/{ss-player.js → ss-player.cjs} +3 -3
  50. package/dist/cjs/components/utils/bl/{beatleader.js → beatleader.cjs} +1 -1
  51. package/dist/cjs/components/utils/bl/{blheadset.js → blheadset.cjs} +1 -1
  52. package/dist/cjs/components/utils/bl/{bsorDecoder.js → bsorDecoder.cjs} +1 -1
  53. package/dist/cjs/components/utils/bl/{bsorReplayAcc.js → bsorReplayAcc.cjs} +1 -1
  54. package/dist/cjs/components/utils/bl/{getPart.js → getPart.cjs} +1 -1
  55. package/dist/cjs/components/utils/bl/{stastic.js → stastic.cjs} +1 -1
  56. package/dist/cjs/components/utils/{canvas.js → canvas.cjs} +1 -1
  57. package/dist/cjs/components/utils/{format.js → format.cjs} +5 -5
  58. package/dist/cjs/components/utils/format.cjs.map +1 -0
  59. package/dist/cjs/components/utils/{getMods.js → getMods.cjs} +1 -1
  60. package/dist/cjs/components/utils/{index.js → index.cjs} +1 -1
  61. package/dist/cjs/components/utils/{qrcode.js → qrcode.cjs} +1 -1
  62. package/dist/cjs/components/utils/{sleep.js → sleep.cjs} +1 -1
  63. package/dist/cjs/components/utils/{tag-format.js → tag-format.cjs} +1 -1
  64. package/dist/cjs/components/utils/{tw-join.js → tw-join.cjs} +1 -1
  65. package/dist/cjs/config.cjs +55 -0
  66. package/dist/cjs/config.cjs.map +1 -0
  67. package/dist/cjs/{index.js → index.cjs} +1 -1
  68. package/dist/cjs/index.cjs.map +1 -0
  69. package/dist/cjs/infra/errors/{index.js → index.cjs} +1 -1
  70. package/dist/cjs/infra/i18n/{default.js → default.cjs} +1 -1
  71. package/dist/cjs/infra/i18n/{index.js → index.cjs} +1 -1
  72. package/dist/cjs/infra/i18n/{parser.js → parser.cjs} +1 -1
  73. package/dist/cjs/infra/i18n/{util.js → util.cjs} +1 -1
  74. package/dist/cjs/infra/{index.js → index.cjs} +4 -4
  75. package/dist/cjs/infra/index.cjs.map +1 -0
  76. package/dist/cjs/infra/s3/{index.js → index.cjs} +35 -4
  77. package/dist/cjs/infra/s3/index.cjs.map +1 -0
  78. package/dist/cjs/infra/support/{cache.js → cache.cjs} +1 -1
  79. package/dist/cjs/infra/support/fetch/{error.js → error.cjs} +1 -1
  80. package/dist/cjs/infra/support/fetch/{index.js → index.cjs} +14 -5
  81. package/dist/cjs/infra/support/fetch/index.cjs.map +1 -0
  82. package/dist/cjs/infra/support/fetch/{ofetch.js → ofetch.cjs} +6 -13
  83. package/dist/cjs/infra/support/fetch/ofetch.cjs.map +1 -0
  84. package/dist/cjs/infra/support/render/{index.js → index.cjs} +49 -15
  85. package/dist/cjs/infra/support/render/index.cjs.map +1 -0
  86. package/dist/cjs/infra/support/render/{puppeteer.js → puppeteer.cjs} +1 -1
  87. package/dist/cjs/interface/{bot.js → bot.cjs} +1 -1
  88. package/dist/cjs/interface/cmd/{builder.js → builder.cjs} +2 -2
  89. package/dist/cjs/interface/cmd/{type.js → type.cjs} +1 -1
  90. package/dist/cjs/interface/db/{index.js → index.cjs} +1 -1
  91. package/dist/cjs/interface/db/{models.js → models.cjs} +1 -1
  92. package/dist/cjs/interface/{index.js → index.cjs} +1 -1
  93. package/dist/cjs/interface/{logger.js → logger.cjs} +1 -1
  94. package/dist/cjs/schedules/{index.js → index.cjs} +4 -3
  95. package/dist/cjs/schedules/index.cjs.map +1 -0
  96. package/dist/cjs/schedules/{interface.js → interface.cjs} +1 -1
  97. package/dist/cjs/schedules/{temp.js → temp.cjs} +1 -1
  98. package/dist/cjs/service/api/base/{aioclient.js → aioclient.cjs} +2 -2
  99. package/dist/cjs/service/api/base/{blclient.js → blclient.cjs} +2 -2
  100. package/dist/cjs/service/api/base/{bsclient.js → bsclient.cjs} +3 -3
  101. package/dist/cjs/service/api/base/{index.js → index.cjs} +1 -1
  102. package/dist/cjs/service/api/base/{ssclient.js → ssclient.cjs} +3 -3
  103. package/dist/cjs/service/api/{index.js → index.cjs} +15 -6
  104. package/dist/cjs/service/api/index.cjs.map +1 -0
  105. package/dist/cjs/service/api/interfaces/aiosaber/{index.js → index.cjs} +1 -1
  106. package/dist/cjs/service/api/interfaces/beatleader/{bsor.js → bsor.cjs} +1 -1
  107. package/dist/cjs/service/api/interfaces/beatleader/{index.js → index.cjs} +1 -1
  108. package/dist/cjs/service/api/interfaces/beatleader/{req.js → req.cjs} +1 -1
  109. package/dist/cjs/service/api/interfaces/beatleader/{score.js → score.cjs} +1 -1
  110. package/dist/cjs/service/api/interfaces/beatleader/{user.js → user.cjs} +1 -1
  111. package/dist/cjs/service/api/interfaces/{beatsaver/ws.js → beatleader/ws.cjs} +1 -1
  112. package/dist/cjs/service/api/interfaces/beatsaver/{alert.js → alert.cjs} +1 -1
  113. package/dist/cjs/service/api/interfaces/beatsaver/{bsmap.js → bsmap.cjs} +1 -1
  114. package/dist/cjs/service/api/interfaces/beatsaver/{index.js → index.cjs} +1 -1
  115. package/dist/cjs/service/api/interfaces/beatsaver/{resp.js → resp.cjs} +1 -1
  116. package/dist/cjs/service/api/interfaces/beatsaver/{user.js → user.cjs} +1 -1
  117. package/dist/cjs/service/api/interfaces/{scoresaber/ws.js → beatsaver/ws.cjs} +1 -1
  118. package/dist/cjs/service/api/interfaces/{index.js → index.cjs} +1 -1
  119. package/dist/cjs/service/api/interfaces/scoresaber/{index.js → index.cjs} +1 -1
  120. package/dist/cjs/service/api/interfaces/scoresaber/{item.js → item.cjs} +1 -1
  121. package/dist/cjs/service/api/interfaces/scoresaber/{leaderboard.js → leaderboard.cjs} +1 -1
  122. package/dist/cjs/service/api/interfaces/scoresaber/{resp.js → resp.cjs} +1 -1
  123. package/dist/cjs/service/api/interfaces/scoresaber/{user.js → user.cjs} +1 -1
  124. package/dist/cjs/service/api/interfaces/{beatleader/ws.js → scoresaber/ws.cjs} +1 -1
  125. package/dist/cjs/service/api/{sortScore.js → sortScore.cjs} +1 -1
  126. package/dist/cjs/service/{index.js → index.cjs} +1 -1
  127. package/dist/cjs/service/{preference.js → preference.cjs} +1 -1
  128. package/dist/cjs/service/render/{index.js → index.cjs} +22 -9
  129. package/dist/cjs/service/render/index.cjs.map +1 -0
  130. package/dist/cjs/service/render/{interfaces.js → interfaces.cjs} +1 -1
  131. package/dist/cjs/utils/{index.js → index.cjs} +1 -1
  132. package/dist/cjs/ws/{beatleader.js → beatleader.cjs} +1 -1
  133. package/dist/cjs/ws/{beatsaver.js → beatsaver.cjs} +2 -2
  134. package/dist/cjs/ws/bl-filter.cjs +1 -0
  135. package/dist/cjs/ws/{handler.js → handler.cjs} +1 -1
  136. package/dist/cjs/ws/{index.js → index.cjs} +1 -1
  137. package/dist/esm/cmd/bind/bind-id-beatleader.js +1 -1
  138. package/dist/esm/cmd/bind/bind-id-beatsaver.js +1 -1
  139. package/dist/esm/cmd/bind/bind-scoresaber.js +1 -1
  140. package/dist/esm/cmd/bind/index.js +5 -5
  141. package/dist/esm/cmd/bsmap/id-search.js +2 -2
  142. package/dist/esm/cmd/bsmap/key-search.js +1 -1
  143. package/dist/esm/cmd/bsmap/latest.js +1 -1
  144. package/dist/esm/cmd/deprecated/tmp.js +1 -1
  145. package/dist/esm/cmd/index.js +11 -11
  146. package/dist/esm/cmd/index.js.map +1 -1
  147. package/dist/esm/cmd/rank.js +3 -3
  148. package/dist/esm/cmd/score.js +5 -5
  149. package/dist/esm/cmd/subscribe/beatleader.js +1 -1
  150. package/dist/esm/cmd/subscribe/beatsaver.js +1 -1
  151. package/dist/esm/cmd/subscribe/id-beatleader-score.js +1 -1
  152. package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +1 -1
  153. package/dist/esm/cmd/subscribe/index.js +5 -5
  154. package/dist/esm/cmd/subscribe/subjoin.js +2 -2
  155. package/dist/esm/cmd/subscribe/subleave.js +1 -1
  156. package/dist/esm/cmd/subscribe/unsubscribe.js +2 -2
  157. package/dist/esm/components/components/RankDifficulty.js +1 -1
  158. package/dist/esm/components/components/bl-rank-score-item.js +2 -2
  159. package/dist/esm/components/components/bl-score-item.js +2 -2
  160. package/dist/esm/components/components/bl-score-item.js.map +1 -1
  161. package/dist/esm/components/components/icons/RankIcon.js +2 -2
  162. package/dist/esm/components/components/scoreItem.js +1 -1
  163. package/dist/esm/components/components/scoreItem.js.map +1 -1
  164. package/dist/esm/components/components/scoregraph.js +3 -3
  165. package/dist/esm/components/components/socre-badge.js +1 -1
  166. package/dist/esm/components/components/ss-rank-score-item.js +2 -2
  167. package/dist/esm/components/components/ss-score-item.js +2 -2
  168. package/dist/esm/components/components/ss-score-item.js.map +1 -1
  169. package/dist/esm/components/pages/bl-player.js +7 -7
  170. package/dist/esm/components/pages/bl-score-with-rank.js +6 -6
  171. package/dist/esm/components/pages/bl-score.js +3 -3
  172. package/dist/esm/components/pages/bs-map.js +5 -5
  173. package/dist/esm/components/pages/index.js +5 -5
  174. package/dist/esm/components/pages/ss-player.js +3 -3
  175. package/dist/esm/components/utils/bl/bsorReplayAcc.js +2 -2
  176. package/dist/esm/components/utils/format.js +3 -3
  177. package/dist/esm/components/utils/format.js.map +1 -1
  178. package/dist/esm/components/utils/index.js +2 -2
  179. package/dist/esm/config.js +31 -0
  180. package/dist/esm/config.js.map +1 -1
  181. package/dist/esm/index.js +10 -10
  182. package/dist/esm/index.js.map +1 -1
  183. package/dist/esm/infra/i18n/index.js +2 -2
  184. package/dist/esm/infra/index.js +5 -5
  185. package/dist/esm/infra/index.js.map +1 -1
  186. package/dist/esm/infra/s3/index.js +31 -1
  187. package/dist/esm/infra/s3/index.js.map +1 -1
  188. package/dist/esm/infra/support/fetch/index.js +16 -7
  189. package/dist/esm/infra/support/fetch/index.js.map +1 -1
  190. package/dist/esm/infra/support/fetch/ofetch.js +4 -10
  191. package/dist/esm/infra/support/fetch/ofetch.js.map +1 -1
  192. package/dist/esm/infra/support/render/index.js +47 -13
  193. package/dist/esm/infra/support/render/index.js.map +1 -1
  194. package/dist/esm/interface/cmd/builder.js +1 -1
  195. package/dist/esm/interface/index.js +4 -4
  196. package/dist/esm/schedules/index.js +4 -3
  197. package/dist/esm/schedules/index.js.map +1 -1
  198. package/dist/esm/service/api/base/aioclient.js +1 -1
  199. package/dist/esm/service/api/base/blclient.js +1 -1
  200. package/dist/esm/service/api/base/bsclient.js +2 -2
  201. package/dist/esm/service/api/base/index.js +4 -4
  202. package/dist/esm/service/api/base/ssclient.js +2 -2
  203. package/dist/esm/service/api/index.js +16 -7
  204. package/dist/esm/service/api/index.js.map +1 -1
  205. package/dist/esm/service/api/interfaces/beatleader/index.js +5 -5
  206. package/dist/esm/service/api/interfaces/beatsaver/index.js +5 -5
  207. package/dist/esm/service/api/interfaces/scoresaber/index.js +3 -3
  208. package/dist/esm/service/index.js +2 -2
  209. package/dist/esm/service/render/index.js +22 -9
  210. package/dist/esm/service/render/index.js.map +1 -1
  211. package/dist/esm/ws/beatsaver.js +1 -1
  212. package/dist/esm/ws/index.js +3 -3
  213. package/dist/types/index.d.ts +205 -123
  214. package/package.json +27 -17
  215. package/dist/cjs/cmd/config/index.js +0 -1
  216. package/dist/cjs/cmd/index.js.map +0 -1
  217. package/dist/cjs/components/components/bl-score-item.js.map +0 -1
  218. package/dist/cjs/components/components/scoreItem.js.map +0 -1
  219. package/dist/cjs/components/components/ss-score-item.js.map +0 -1
  220. package/dist/cjs/components/utils/format.js.map +0 -1
  221. package/dist/cjs/config.js +0 -16
  222. package/dist/cjs/config.js.map +0 -1
  223. package/dist/cjs/index.js.map +0 -1
  224. package/dist/cjs/infra/index.js.map +0 -1
  225. package/dist/cjs/infra/s3/index.js.map +0 -1
  226. package/dist/cjs/infra/support/fetch/index.js.map +0 -1
  227. package/dist/cjs/infra/support/fetch/ofetch.js.map +0 -1
  228. package/dist/cjs/infra/support/render/index.js.map +0 -1
  229. package/dist/cjs/schedules/index.js.map +0 -1
  230. package/dist/cjs/service/api/index.js.map +0 -1
  231. package/dist/cjs/service/render/index.js.map +0 -1
  232. package/dist/cjs/ws/bl-filter.js +0 -1
  233. /package/dist/cjs/cmd/bind/{bind-beatleader.js.map → bind-beatleader.cjs.map} +0 -0
  234. /package/dist/cjs/cmd/bind/{bind-beatsaver.js.map → bind-beatsaver.cjs.map} +0 -0
  235. /package/dist/cjs/cmd/bind/{bind-id-beatleader.js.map → bind-id-beatleader.cjs.map} +0 -0
  236. /package/dist/cjs/cmd/bind/{bind-id-beatsaver.js.map → bind-id-beatsaver.cjs.map} +0 -0
  237. /package/dist/cjs/cmd/bind/{bind-scoresaber.js.map → bind-scoresaber.cjs.map} +0 -0
  238. /package/dist/cjs/cmd/bind/{index.js.map → index.cjs.map} +0 -0
  239. /package/dist/cjs/cmd/bsmap/{id-search.js.map → id-search.cjs.map} +0 -0
  240. /package/dist/cjs/cmd/bsmap/{key-search.js.map → key-search.cjs.map} +0 -0
  241. /package/dist/cjs/cmd/bsmap/{latest.js.map → latest.cjs.map} +0 -0
  242. /package/dist/cjs/cmd/config/{index.js.map → index.cjs.map} +0 -0
  243. /package/dist/cjs/cmd/deprecated/{tmp.js.map → tmp.cjs.map} +0 -0
  244. /package/dist/cjs/cmd/{rank.js.map → rank.cjs.map} +0 -0
  245. /package/dist/cjs/cmd/{score.js.map → score.cjs.map} +0 -0
  246. /package/dist/cjs/cmd/subscribe/{beatleader.js.map → beatleader.cjs.map} +0 -0
  247. /package/dist/cjs/cmd/subscribe/{beatsaver.js.map → beatsaver.cjs.map} +0 -0
  248. /package/dist/cjs/cmd/subscribe/{id-beatleader-score.js.map → id-beatleader-score.cjs.map} +0 -0
  249. /package/dist/cjs/cmd/subscribe/{id-beatsaver-mapper.js.map → id-beatsaver-mapper.cjs.map} +0 -0
  250. /package/dist/cjs/cmd/subscribe/{index.js.map → index.cjs.map} +0 -0
  251. /package/dist/cjs/cmd/subscribe/{subjoin.js.map → subjoin.cjs.map} +0 -0
  252. /package/dist/cjs/cmd/subscribe/{subleave.js.map → subleave.cjs.map} +0 -0
  253. /package/dist/cjs/cmd/subscribe/{unsubscribe.js.map → unsubscribe.cjs.map} +0 -0
  254. /package/dist/cjs/components/components/{RankDifficulty.js.map → RankDifficulty.cjs.map} +0 -0
  255. /package/dist/cjs/components/components/base/{avatar.js.map → avatar.cjs.map} +0 -0
  256. /package/dist/cjs/components/components/{bl-rank-score-item.js.map → bl-rank-score-item.cjs.map} +0 -0
  257. /package/dist/cjs/components/components/{characteristic.js.map → characteristic.cjs.map} +0 -0
  258. /package/dist/cjs/components/components/{flag.js.map → flag.cjs.map} +0 -0
  259. /package/dist/cjs/components/components/icons/{BeatLeader.js.map → BeatLeader.cjs.map} +0 -0
  260. /package/dist/cjs/components/components/icons/{RankIcon.js.map → RankIcon.cjs.map} +0 -0
  261. /package/dist/cjs/components/components/icons/{ScoreSaberIcon.js.map → ScoreSaberIcon.cjs.map} +0 -0
  262. /package/dist/cjs/components/components/{progressbar.js.map → progressbar.cjs.map} +0 -0
  263. /package/dist/cjs/components/components/{scoregraph.js.map → scoregraph.cjs.map} +0 -0
  264. /package/dist/cjs/components/components/{skill-graph.js.map → skill-graph.cjs.map} +0 -0
  265. /package/dist/cjs/components/components/{socre-badge.js.map → socre-badge.cjs.map} +0 -0
  266. /package/dist/cjs/components/components/{ss-rank-score-item.js.map → ss-rank-score-item.cjs.map} +0 -0
  267. /package/dist/cjs/components/{index.js.map → index.cjs.map} +0 -0
  268. /package/dist/cjs/components/pages/{bl-player.js.map → bl-player.cjs.map} +0 -0
  269. /package/dist/cjs/components/pages/{bl-score-with-rank.js.map → bl-score-with-rank.cjs.map} +0 -0
  270. /package/dist/cjs/components/pages/{bl-score.js.map → bl-score.cjs.map} +0 -0
  271. /package/dist/cjs/components/pages/{bs-map.js.map → bs-map.cjs.map} +0 -0
  272. /package/dist/cjs/components/pages/{index.js.map → index.cjs.map} +0 -0
  273. /package/dist/cjs/components/pages/{ss-player.js.map → ss-player.cjs.map} +0 -0
  274. /package/dist/cjs/components/utils/bl/{beatleader.js.map → beatleader.cjs.map} +0 -0
  275. /package/dist/cjs/components/utils/bl/{blheadset.js.map → blheadset.cjs.map} +0 -0
  276. /package/dist/cjs/components/utils/bl/{bsorDecoder.js.map → bsorDecoder.cjs.map} +0 -0
  277. /package/dist/cjs/components/utils/bl/{bsorReplayAcc.js.map → bsorReplayAcc.cjs.map} +0 -0
  278. /package/dist/cjs/components/utils/bl/{getPart.js.map → getPart.cjs.map} +0 -0
  279. /package/dist/cjs/components/utils/bl/{stastic.js.map → stastic.cjs.map} +0 -0
  280. /package/dist/cjs/components/utils/{canvas.js.map → canvas.cjs.map} +0 -0
  281. /package/dist/cjs/components/utils/{getMods.js.map → getMods.cjs.map} +0 -0
  282. /package/dist/cjs/components/utils/{index.js.map → index.cjs.map} +0 -0
  283. /package/dist/cjs/components/utils/{qrcode.js.map → qrcode.cjs.map} +0 -0
  284. /package/dist/cjs/components/utils/{sleep.js.map → sleep.cjs.map} +0 -0
  285. /package/dist/cjs/components/utils/{tag-format.js.map → tag-format.cjs.map} +0 -0
  286. /package/dist/cjs/components/utils/{tw-join.js.map → tw-join.cjs.map} +0 -0
  287. /package/dist/cjs/infra/errors/{index.js.map → index.cjs.map} +0 -0
  288. /package/dist/cjs/infra/i18n/{default.js.map → default.cjs.map} +0 -0
  289. /package/dist/cjs/infra/i18n/{index.js.map → index.cjs.map} +0 -0
  290. /package/dist/cjs/infra/i18n/{parser.js.map → parser.cjs.map} +0 -0
  291. /package/dist/cjs/infra/i18n/{util.js.map → util.cjs.map} +0 -0
  292. /package/dist/cjs/infra/support/{cache.js.map → cache.cjs.map} +0 -0
  293. /package/dist/cjs/infra/support/fetch/{error.js.map → error.cjs.map} +0 -0
  294. /package/dist/cjs/infra/support/render/{puppeteer.js.map → puppeteer.cjs.map} +0 -0
  295. /package/dist/cjs/interface/{bot.js.map → bot.cjs.map} +0 -0
  296. /package/dist/cjs/interface/cmd/{builder.js.map → builder.cjs.map} +0 -0
  297. /package/dist/cjs/interface/cmd/{type.js.map → type.cjs.map} +0 -0
  298. /package/dist/cjs/interface/db/{index.js.map → index.cjs.map} +0 -0
  299. /package/dist/cjs/interface/db/{models.js.map → models.cjs.map} +0 -0
  300. /package/dist/cjs/interface/{index.js.map → index.cjs.map} +0 -0
  301. /package/dist/cjs/interface/{logger.js.map → logger.cjs.map} +0 -0
  302. /package/dist/cjs/schedules/{interface.js.map → interface.cjs.map} +0 -0
  303. /package/dist/cjs/schedules/{temp.js.map → temp.cjs.map} +0 -0
  304. /package/dist/cjs/service/api/base/{aioclient.js.map → aioclient.cjs.map} +0 -0
  305. /package/dist/cjs/service/api/base/{blclient.js.map → blclient.cjs.map} +0 -0
  306. /package/dist/cjs/service/api/base/{bsclient.js.map → bsclient.cjs.map} +0 -0
  307. /package/dist/cjs/service/api/base/{index.js.map → index.cjs.map} +0 -0
  308. /package/dist/cjs/service/api/base/{ssclient.js.map → ssclient.cjs.map} +0 -0
  309. /package/dist/cjs/service/api/interfaces/aiosaber/{index.js.map → index.cjs.map} +0 -0
  310. /package/dist/cjs/service/api/interfaces/beatleader/{bsor.js.map → bsor.cjs.map} +0 -0
  311. /package/dist/cjs/service/api/interfaces/beatleader/{index.js.map → index.cjs.map} +0 -0
  312. /package/dist/cjs/service/api/interfaces/beatleader/{req.js.map → req.cjs.map} +0 -0
  313. /package/dist/cjs/service/api/interfaces/beatleader/{score.js.map → score.cjs.map} +0 -0
  314. /package/dist/cjs/service/api/interfaces/beatleader/{user.js.map → user.cjs.map} +0 -0
  315. /package/dist/cjs/service/api/interfaces/beatleader/{ws.js.map → ws.cjs.map} +0 -0
  316. /package/dist/cjs/service/api/interfaces/beatsaver/{alert.js.map → alert.cjs.map} +0 -0
  317. /package/dist/cjs/service/api/interfaces/beatsaver/{bsmap.js.map → bsmap.cjs.map} +0 -0
  318. /package/dist/cjs/service/api/interfaces/beatsaver/{index.js.map → index.cjs.map} +0 -0
  319. /package/dist/cjs/service/api/interfaces/beatsaver/{resp.js.map → resp.cjs.map} +0 -0
  320. /package/dist/cjs/service/api/interfaces/beatsaver/{user.js.map → user.cjs.map} +0 -0
  321. /package/dist/cjs/service/api/interfaces/beatsaver/{ws.js.map → ws.cjs.map} +0 -0
  322. /package/dist/cjs/service/api/interfaces/{index.js.map → index.cjs.map} +0 -0
  323. /package/dist/cjs/service/api/interfaces/scoresaber/{index.js.map → index.cjs.map} +0 -0
  324. /package/dist/cjs/service/api/interfaces/scoresaber/{item.js.map → item.cjs.map} +0 -0
  325. /package/dist/cjs/service/api/interfaces/scoresaber/{leaderboard.js.map → leaderboard.cjs.map} +0 -0
  326. /package/dist/cjs/service/api/interfaces/scoresaber/{resp.js.map → resp.cjs.map} +0 -0
  327. /package/dist/cjs/service/api/interfaces/scoresaber/{user.js.map → user.cjs.map} +0 -0
  328. /package/dist/cjs/service/api/interfaces/scoresaber/{ws.js.map → ws.cjs.map} +0 -0
  329. /package/dist/cjs/service/api/{sortScore.js.map → sortScore.cjs.map} +0 -0
  330. /package/dist/cjs/service/{index.js.map → index.cjs.map} +0 -0
  331. /package/dist/cjs/service/{preference.js.map → preference.cjs.map} +0 -0
  332. /package/dist/cjs/service/render/{interfaces.js.map → interfaces.cjs.map} +0 -0
  333. /package/dist/cjs/utils/{index.js.map → index.cjs.map} +0 -0
  334. /package/dist/cjs/ws/{beatleader.js.map → beatleader.cjs.map} +0 -0
  335. /package/dist/cjs/ws/{beatsaver.js.map → beatsaver.cjs.map} +0 -0
  336. /package/dist/cjs/ws/{bl-filter.js.map → bl-filter.cjs.map} +0 -0
  337. /package/dist/cjs/ws/{handler.js.map → handler.cjs.map} +0 -0
  338. /package/dist/cjs/ws/{index.js.map → index.cjs.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import RankIcon from "../components/icons/RankIcon";
2
+ import RankIcon from "../components/icons/RankIcon.js";
3
3
  import {
4
4
  Calendar,
5
5
  Clock,
@@ -11,10 +11,10 @@ import {
11
11
  ThumbsUp
12
12
  } from "lucide-react";
13
13
  import dayjs from "dayjs";
14
- import { diffConv, formatNumber, formatTime, getTag } from "../utils";
15
- import { getMods } from "../utils/getMods";
16
- import Progressbar from "../components/progressbar";
17
- import { CharacteristicIcon } from "../components/characteristic";
14
+ import { diffConv, formatNumber, formatTime, getTag } from "../utils/index.js";
15
+ import { getMods } from "../utils/getMods.js";
16
+ import Progressbar from "../components/progressbar.js";
17
+ import { CharacteristicIcon } from "../components/characteristic.js";
18
18
  function BSMapShare({
19
19
  bsMap,
20
20
  bsMapQrUrl,
@@ -1,9 +1,9 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import BSMapShare from "./bs-map";
3
- import SSPlayerPage from "./ss-player";
4
- import BLPlayerPage from "./bl-player";
5
- import { BLScore } from "./bl-score";
6
- import BLRankScore from "../../components/pages/bl-score-with-rank";
2
+ import BSMapShare from "./bs-map.js";
3
+ import SSPlayerPage from "./ss-player.js";
4
+ import BLPlayerPage from "./bl-player.js";
5
+ import { BLScore } from "./bl-score.js";
6
+ import BLRankScore from "../../components/pages/bl-score-with-rank.js";
7
7
  const getBSMapComp = (bsMap, bsMapQrUrl, previewQrUrl) => {
8
8
  return /* @__PURE__ */ jsx(
9
9
  BSMapShare,
@@ -1,7 +1,7 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import Flags, { EarchIcon } from "../components/flag";
3
- import { twJoin } from "../utils/tw-join";
4
- import ScoreItem from "../components/ss-score-item";
2
+ import Flags, { EarchIcon } from "../components/flag.js";
3
+ import { twJoin } from "../utils/tw-join.js";
4
+ import ScoreItem from "../components/ss-score-item.js";
5
5
  function SSPlayerPage({
6
6
  leaderItems,
7
7
  scoreUser,
@@ -29,8 +29,8 @@ var __objRest = (source, exclude) => {
29
29
  }
30
30
  return target;
31
31
  };
32
- import { NoteEventType } from "./bsorDecoder";
33
- import { createDistanceWeightFunction } from "./beatleader";
32
+ import { NoteEventType } from "./bsorDecoder.js";
33
+ import { createDistanceWeightFunction } from "./beatleader.js";
34
34
  const NoteScoringType = {
35
35
  Ignore: -1,
36
36
  NoScore: 0,
@@ -1,7 +1,7 @@
1
1
  import dayjs from "dayjs";
2
- import duration from "dayjs/plugin/duration";
3
- import relativeTime from "dayjs/plugin/relativeTime";
4
- import zh from "dayjs/locale/zh-cn";
2
+ import duration from "dayjs/plugin/duration.js";
3
+ import relativeTime from "dayjs/plugin/relativeTime.js";
4
+ import zh from "dayjs/locale/zh-cn.js";
5
5
  dayjs.extend(duration);
6
6
  dayjs.extend(relativeTime);
7
7
  const formatDuration = (duration2) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/utils/format.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport duration from 'dayjs/plugin/duration'\nimport relativeTime from 'dayjs/plugin/relativeTime'\nimport zh from 'dayjs/locale/zh-cn'\ndayjs.extend(duration)\ndayjs.extend(relativeTime)\nexport const formatDuration = (duration: number) => {\n const d = dayjs.duration(duration, 'second')\n return d.format('m[m]s[s]')\n}\n\n// export const formatDuration = (duration: number) => {\n// return dayjs.duration(duration,'seconds').format('mm:ss')\n// }\n\nexport const formatTime = (time: string) => {\n return dayjs(time).locale(zh).fromNow()\n}\n\nexport function formatRelativeTimeByDay(time: string | number | Date) {\n let res = dayjs().diff(dayjs(time), 'd')\n let unit = 'd'\n if (res <= 0) {\n res = dayjs().diff(dayjs(time), 'h')\n unit = 'h'\n }\n if (res <= 0) {\n res = dayjs().diff(dayjs(time), 'm')\n unit = 'm'\n }\n return `${res}${unit}`\n}\n\nexport const formatNumber = (number: number) => {\n // 1.11w\n try {\n if (number > 10000) {\n return `${(number / 10000.0).toFixed(2)}w`\n }\n // 1.11k\n if (number > 1000) {\n return `${(number / 1000.0).toFixed(2)}k`\n }\n return number.toString()\n } catch (e) {\n return '0'\n }\n}\n\nexport function numberWithCommas(x: number) {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n}\nexport const formatDate = (time: Date | undefined, template?: string) => {\n if (!time) return undefined\n return dayjs(time).format(template ?? 'YYYY-MM-DD')\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,OAAO,cAAc;AACrB,OAAO,kBAAkB;AACzB,OAAO,QAAQ;AACf,MAAM,OAAO,QAAQ;AACrB,MAAM,OAAO,YAAY;AAClB,MAAM,iBAAiB,CAACA,cAAqB;AAClD,QAAM,IAAI,MAAM,SAASA,WAAU,QAAQ;AAC3C,SAAO,EAAE,OAAO,UAAU;AAC5B;AAMO,MAAM,aAAa,CAAC,SAAiB;AAC1C,SAAO,MAAM,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ;AACxC;AAEO,SAAS,wBAAwB,MAA8B;AACpE,MAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,GAAG;AACvC,MAAI,OAAO;AACX,MAAI,OAAO,GAAG;AACZ,UAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,GAAG;AACnC,WAAO;AAAA,EACT;AACA,MAAI,OAAO,GAAG;AACZ,UAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,GAAG;AACnC,WAAO;AAAA,EACT;AACA,SAAO,GAAG,GAAG,GAAG,IAAI;AACtB;AAEO,MAAM,eAAe,CAAC,WAAmB;AAE9C,MAAI;AACF,QAAI,SAAS,KAAO;AAClB,aAAO,IAAI,SAAS,KAAS,QAAQ,CAAC,CAAC;AAAA,IACzC;AAEA,QAAI,SAAS,KAAM;AACjB,aAAO,IAAI,SAAS,KAAQ,QAAQ,CAAC,CAAC;AAAA,IACxC;AACA,WAAO,OAAO,SAAS;AAAA,EACzB,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEO,SAAS,iBAAiB,GAAW;AAC1C,SAAO,EAAE,SAAS,EAAE,QAAQ,yBAAyB,GAAG;AAC1D;AACO,MAAM,aAAa,CAAC,MAAwB,aAAsB;AACvE,MAAI,CAAC,KAAM,QAAO;AAClB,SAAO,MAAM,IAAI,EAAE,OAAO,8BAAY,YAAY;AACpD;","names":["duration"]}
1
+ {"version":3,"sources":["../../../../src/components/utils/format.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport duration from 'dayjs/plugin/duration.js'\nimport relativeTime from 'dayjs/plugin/relativeTime.js'\nimport zh from 'dayjs/locale/zh-cn.js'\ndayjs.extend(duration)\ndayjs.extend(relativeTime)\nexport const formatDuration = (duration: number) => {\n const d = dayjs.duration(duration, 'second')\n return d.format('m[m]s[s]')\n}\n\n// export const formatDuration = (duration: number) => {\n// return dayjs.duration(duration,'seconds').format('mm:ss')\n// }\n\nexport const formatTime = (time: string) => {\n return dayjs(time).locale(zh).fromNow()\n}\n\nexport function formatRelativeTimeByDay(time: string | number | Date) {\n let res = dayjs().diff(dayjs(time), 'd')\n let unit = 'd'\n if (res <= 0) {\n res = dayjs().diff(dayjs(time), 'h')\n unit = 'h'\n }\n if (res <= 0) {\n res = dayjs().diff(dayjs(time), 'm')\n unit = 'm'\n }\n return `${res}${unit}`\n}\n\nexport const formatNumber = (number: number) => {\n // 1.11w\n try {\n if (number > 10000) {\n return `${(number / 10000.0).toFixed(2)}w`\n }\n // 1.11k\n if (number > 1000) {\n return `${(number / 1000.0).toFixed(2)}k`\n }\n return number.toString()\n } catch (e) {\n return '0'\n }\n}\n\nexport function numberWithCommas(x: number) {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n}\nexport const formatDate = (time: Date | undefined, template?: string) => {\n if (!time) return undefined\n return dayjs(time).format(template ?? 'YYYY-MM-DD')\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,OAAO,cAAc;AACrB,OAAO,kBAAkB;AACzB,OAAO,QAAQ;AACf,MAAM,OAAO,QAAQ;AACrB,MAAM,OAAO,YAAY;AAClB,MAAM,iBAAiB,CAACA,cAAqB;AAClD,QAAM,IAAI,MAAM,SAASA,WAAU,QAAQ;AAC3C,SAAO,EAAE,OAAO,UAAU;AAC5B;AAMO,MAAM,aAAa,CAAC,SAAiB;AAC1C,SAAO,MAAM,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ;AACxC;AAEO,SAAS,wBAAwB,MAA8B;AACpE,MAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,GAAG;AACvC,MAAI,OAAO;AACX,MAAI,OAAO,GAAG;AACZ,UAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,GAAG;AACnC,WAAO;AAAA,EACT;AACA,MAAI,OAAO,GAAG;AACZ,UAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,GAAG;AACnC,WAAO;AAAA,EACT;AACA,SAAO,GAAG,GAAG,GAAG,IAAI;AACtB;AAEO,MAAM,eAAe,CAAC,WAAmB;AAE9C,MAAI;AACF,QAAI,SAAS,KAAO;AAClB,aAAO,IAAI,SAAS,KAAS,QAAQ,CAAC,CAAC;AAAA,IACzC;AAEA,QAAI,SAAS,KAAM;AACjB,aAAO,IAAI,SAAS,KAAQ,QAAQ,CAAC,CAAC;AAAA,IACxC;AACA,WAAO,OAAO,SAAS;AAAA,EACzB,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEO,SAAS,iBAAiB,GAAW;AAC1C,SAAO,EAAE,SAAS,EAAE,QAAQ,yBAAyB,GAAG;AAC1D;AACO,MAAM,aAAa,CAAC,MAAwB,aAAsB;AACvE,MAAI,CAAC,KAAM,QAAO;AAClB,SAAO,MAAM,IAAI,EAAE,OAAO,8BAAY,YAAY;AACpD;","names":["duration"]}
@@ -1,5 +1,5 @@
1
- export * from "./format";
2
- export * from "./tag-format";
1
+ export * from "./format.js";
2
+ export * from "./tag-format.js";
3
3
  const diffConv = (diff) => {
4
4
  if (diff.includes("ExpertPlus")) {
5
5
  return "EX+";
@@ -1 +1,32 @@
1
+ import { renderSchema, s3ConfigSchema } from "./infra/index.js";
2
+ import { z } from "zod/v4";
3
+ const cronSchema = z.object({
4
+ enabled: z.boolean().optional().default(false),
5
+ cron: z.string().optional()
6
+ }).optional().default({ enabled: false });
7
+ const configSchema = z.object({
8
+ s3: s3ConfigSchema.default({ enabled: false }).optional(),
9
+ render: renderSchema,
10
+ beatsaver: z.object({
11
+ host: z.string().default("https://api.beatsaver.com").optional(),
12
+ wsURL: z.string().default("wss://ws.beatsaver.com/maps").optional(),
13
+ oauthClientId: z.string().optional(),
14
+ oauthClientSecret: z.string().optional()
15
+ }).default({
16
+ host: "https://api.beatsaver.com",
17
+ wsURL: "wss://ws.beatsaver.com/maps"
18
+ }).optional(),
19
+ beatleader: z.object({
20
+ oauthClientId: z.string().optional(),
21
+ oauthClientSecret: z.string().optional()
22
+ }).default({}).optional(),
23
+ cron: z.object({
24
+ temp: cronSchema
25
+ }).default({
26
+ temp: { enabled: false }
27
+ }).optional()
28
+ });
29
+ export {
30
+ configSchema
31
+ };
1
32
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../src/config.ts"],"sourcesContent":["import { renderSchema, s3ConfigSchema } from '@/infra'\nimport {z} from 'zod/v4'\n\nconst cronSchema = z.object({\n enabled: z.boolean().optional().default(false),\n cron: z.string().optional(),\n}).optional().default({ enabled: false })\n\nexport const configSchema = z.object({\n s3: s3ConfigSchema.default({ enabled: false }).optional(),\n render: renderSchema,\n beatsaver: z.object({\n host: z.string().default('https://api.beatsaver.com').optional(),\n wsURL: z.string().default('wss://ws.beatsaver.com/maps').optional(),\n oauthClientId: z.string().optional(),\n oauthClientSecret: z.string().optional(),\n }).default({\n host: 'https://api.beatsaver.com',\n wsURL: 'wss://ws.beatsaver.com/maps',\n }).optional(),\n beatleader: z.object({\n oauthClientId: z.string().optional(),\n oauthClientSecret: z.string().optional(),\n }).default({}).optional(),\n cron: z.object({\n temp: cronSchema,\n }).default({\n temp: {enabled: false},\n }).optional()\n})\n\nexport type Config = z.infer<typeof configSchema>\n"],"mappings":"AAAA,SAAS,cAAc,sBAAsB;AAC7C,SAAQ,SAAQ;AAEhB,MAAM,aAAa,EAAE,OAAO;AAAA,EAC1B,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC7C,MAAM,EAAE,OAAO,EAAE,SAAS;AAC5B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,MAAM,CAAC;AAEjC,MAAM,eAAe,EAAE,OAAO;AAAA,EACnC,IAAI,eAAe,QAAQ,EAAE,SAAS,MAAM,CAAC,EAAE,SAAS;AAAA,EACxD,QAAQ;AAAA,EACR,WAAW,EAAE,OAAO;AAAA,IAClB,MAAM,EAAE,OAAO,EAAE,QAAQ,2BAA2B,EAAE,SAAS;AAAA,IAC/D,OAAO,EAAE,OAAO,EAAE,QAAQ,6BAA6B,EAAE,SAAS;AAAA,IAClE,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,IACnC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACzC,CAAC,EAAE,QAAQ;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACT,CAAC,EAAE,SAAS;AAAA,EACZ,YAAY,EAAE,OAAO;AAAA,IACnB,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,IACnC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACzC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS;AAAA,EACxB,MAAM,EAAE,OAAO;AAAA,IACb,MAAM;AAAA,EACR,CAAC,EAAE,QAAQ;AAAA,IACT,MAAM,EAAC,SAAS,MAAK;AAAA,EACvB,CAAC,EAAE,SAAS;AACd,CAAC;","names":[]}
package/dist/esm/index.js CHANGED
@@ -1,13 +1,13 @@
1
- import { botCommands } from "./cmd";
2
- import { getScheduleTasks } from "./schedules";
3
- export * from "./interface";
4
- export * from "./schedules";
5
- export * from "./config";
6
- export * from "./cmd";
7
- export * from "./ws";
8
- export * from "./utils";
9
- export * from "./service";
10
- export * from "./infra";
1
+ import { botCommands } from "./cmd/index.js";
2
+ import { getScheduleTasks } from "./schedules/index.js";
3
+ export * from "./interface/index.js";
4
+ export * from "./schedules/index.js";
5
+ export * from "./config.js";
6
+ export * from "./cmd/index.js";
7
+ export * from "./ws/index.js";
8
+ export * from "./utils/index.js";
9
+ export * from "./service/index.js";
10
+ export * from "./infra/index.js";
11
11
  const getBot = (config) => ({
12
12
  commands: botCommands(),
13
13
  schedule: getScheduleTasks(config)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import {botCommands} from \"./cmd\";\nimport {getScheduleTasks} from \"./schedules\";\nimport {Config} from \"./config\";\n\nexport * from './interface'\nexport * from './schedules'\nexport * from './config'\nexport * from './cmd'\nexport * from './ws'\nexport * from './utils'\nexport * from './service'\nexport * from './infra'\n\nexport const getBot = <T>(config: Config) => ({\n commands: botCommands<T>(),\n schedule: getScheduleTasks(config),\n})\n\n"],"mappings":"AAAA,SAAQ,mBAAkB;AAC1B,SAAQ,wBAAuB;AAG/B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEP,MAAM,SAAS,CAAI,YAAoB;AAAA,EAC5C,UAAU,YAAe;AAAA,EACzB,UAAU,iBAAiB,MAAM;AACnC;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import {botCommands} from \"./cmd\";\nimport {getScheduleTasks} from \"./schedules\";\nimport type {Config} from \"./config\";\n\nexport * from './interface'\nexport * from './schedules'\nexport * from './config'\nexport * from './cmd'\nexport * from './ws'\nexport * from './utils'\nexport * from './service'\nexport * from './infra'\n\nexport const getBot = <T>(config: Config) => ({\n commands: botCommands<T>(),\n schedule: getScheduleTasks(config),\n})\n\n"],"mappings":"AAAA,SAAQ,mBAAkB;AAC1B,SAAQ,wBAAuB;AAG/B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEP,MAAM,SAAS,CAAI,YAAoB;AAAA,EAC5C,UAAU,YAAe;AAAA,EACzB,UAAU,iBAAiB,MAAM;AACnC;","names":[]}
@@ -1,8 +1,8 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { interpolate } from "./parser";
5
- import { interpolateString } from "./util";
4
+ import { interpolate } from "./parser.js";
5
+ import { interpolateString } from "./util.js";
6
6
  class I18nService {
7
7
  constructor(config) {
8
8
  __publicField(this, "obj", {});
@@ -1,9 +1,9 @@
1
- export * from "./support/render";
2
- import { I18nService } from "./i18n";
3
- import { S3Service, S3Config } from "./s3";
1
+ export * from "./support/render/index.js";
2
+ import { I18nService } from "./i18n/index.js";
3
+ import { S3Service, s3ConfigSchema } from "./s3/index.js";
4
4
  export {
5
5
  I18nService,
6
- S3Config,
7
- S3Service
6
+ S3Service,
7
+ s3ConfigSchema
8
8
  };
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/infra/index.ts"],"sourcesContent":["export * from './support/render'\nexport { I18nService } from './i18n'\nexport { S3Service, S3Config } from './s3'\n"],"mappings":"AAAA,cAAc;AACd,SAAS,mBAAmB;AAC5B,SAAS,WAAW,gBAAgB;","names":[]}
1
+ {"version":3,"sources":["../../../src/infra/index.ts"],"sourcesContent":["export * from './support/render'\nexport { I18nService } from './i18n'\nexport { S3Service, type S3Config, s3ConfigSchema } from './s3'\n"],"mappings":"AAAA,cAAc;AACd,SAAS,mBAAmB;AAC5B,SAAS,WAA0B,sBAAsB;","names":[]}
@@ -1,5 +1,19 @@
1
1
  var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
2
5
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
3
17
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
18
  var __async = (__this, __arguments, generator) => {
5
19
  return new Promise((resolve, reject) => {
@@ -23,6 +37,20 @@ var __async = (__this, __arguments, generator) => {
23
37
  };
24
38
  import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
25
39
  import crypto from "crypto";
40
+ import { z } from "zod/v4";
41
+ const strictS3ConfigSchema = z.object({
42
+ s3AccessKey: z.string(),
43
+ s3SecretKey: z.string(),
44
+ endpoint: z.string(),
45
+ baseURL: z.string(),
46
+ bucketName: z.string(),
47
+ region: z.string().optional(),
48
+ keyPrefix: z.string().optional()
49
+ });
50
+ const s3ConfigSchema = z.discriminatedUnion("enabled", [
51
+ z.object(__spreadValues({ enabled: z.literal(true) }, strictS3ConfigSchema.shape)),
52
+ z.object({ enabled: z.literal(false) })
53
+ ]);
26
54
  class S3Service {
27
55
  constructor(config) {
28
56
  __publicField(this, "s3Client");
@@ -77,6 +105,8 @@ class S3Service {
77
105
  }
78
106
  }
79
107
  export {
80
- S3Service
108
+ S3Service,
109
+ s3ConfigSchema,
110
+ strictS3ConfigSchema
81
111
  };
82
112
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/infra/s3/index.ts"],"sourcesContent":["import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'\nimport crypto from 'crypto'\n\nexport interface S3Config {\n s3AccessKey: string\n s3SecretKey: string\n endpoint: string\n region: string | undefined\n bucketName: string\n keyPrefix: string\n baseURL: string\n}\n\nexport class S3Service {\n private s3Client: S3Client\n private readonly bucket: string\n private readonly keyPrefix: string = ''\n private readonly baseURL: string = ''\n constructor(config: S3Config) {\n const s3 = new S3Client({\n region: config.region ?? 'auto',\n endpoint: config.endpoint,\n credentials: {\n accessKeyId: config.s3AccessKey,\n secretAccessKey: config.s3SecretKey,\n },\n })\n this.bucket = config.bucketName\n this.keyPrefix = config.keyPrefix\n this.baseURL = config.baseURL\n this.s3Client = s3\n }\n async uploadImgWithUrl(url: string, mimeType?: string): Promise<string> {\n const res = await fetch(url).then((it) => it.arrayBuffer())\n const buf = Buffer.from(res)\n // @ts-ignore\n const md5 = crypto.createHash('md5').update(buf).digest('hex')\n const key = this.keyPrefix ? `${this.keyPrefix}-${md5}` : md5\n const params = {\n Bucket: this.bucket,\n Key: key,\n Body: buf,\n ContentType: mimeType ?? 'image/png',\n }\n const command = new PutObjectCommand(params)\n const data = await this.s3Client.send(command)\n return `${this.baseURL}${key}`\n }\n async uploadImg(buffer: Buffer, mimeType?: string): Promise<string> {\n // md5 digest\n // @ts-ignore\n const md5 = crypto.createHash('md5').update(buffer).digest('hex')\n const key = this.keyPrefix ? `${this.keyPrefix}-${md5}` : md5\n const params = {\n Bucket: this.bucket,\n Key: key,\n Body: buffer,\n ContentType: mimeType ?? 'image/png',\n }\n const command = new PutObjectCommand(params)\n const data = await this.s3Client.send(command)\n return `${this.baseURL}${key}`\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,UAAU,wBAAwB;AAC3C,OAAO,YAAY;AAYZ,MAAM,UAAU;AAAA,EAKrB,YAAY,QAAkB;AAJ9B,wBAAQ;AACR,wBAAiB;AACjB,wBAAiB,aAAoB;AACrC,wBAAiB,WAAkB;AAjBrC;AAmBI,UAAM,KAAK,IAAI,SAAS;AAAA,MACtB,SAAQ,YAAO,WAAP,YAAiB;AAAA,MACzB,UAAU,OAAO;AAAA,MACjB,aAAa;AAAA,QACX,aAAa,OAAO;AAAA,QACpB,iBAAiB,OAAO;AAAA,MAC1B;AAAA,IACF,CAAC;AACD,SAAK,SAAS,OAAO;AACrB,SAAK,YAAY,OAAO;AACxB,SAAK,UAAU,OAAO;AACtB,SAAK,WAAW;AAAA,EAClB;AAAA,EACM,iBAAiB,KAAa,UAAoC;AAAA;AACtE,YAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;AAC1D,YAAM,MAAM,OAAO,KAAK,GAAG;AAE3B,YAAM,MAAM,OAAO,WAAW,KAAK,EAAE,OAAO,GAAG,EAAE,OAAO,KAAK;AAC7D,YAAM,MAAM,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK;AAC1D,YAAM,SAAS;AAAA,QACb,QAAQ,KAAK;AAAA,QACb,KAAK;AAAA,QACL,MAAM;AAAA,QACN,aAAa,8BAAY;AAAA,MAC3B;AACA,YAAM,UAAU,IAAI,iBAAiB,MAAM;AAC3C,YAAM,OAAO,MAAM,KAAK,SAAS,KAAK,OAAO;AAC7C,aAAO,GAAG,KAAK,OAAO,GAAG,GAAG;AAAA,IAC9B;AAAA;AAAA,EACM,UAAU,QAAgB,UAAoC;AAAA;AAGlE,YAAM,MAAM,OAAO,WAAW,KAAK,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK;AAChE,YAAM,MAAM,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK;AAC1D,YAAM,SAAS;AAAA,QACb,QAAQ,KAAK;AAAA,QACb,KAAK;AAAA,QACL,MAAM;AAAA,QACN,aAAa,8BAAY;AAAA,MAC3B;AACA,YAAM,UAAU,IAAI,iBAAiB,MAAM;AAC3C,YAAM,OAAO,MAAM,KAAK,SAAS,KAAK,OAAO;AAC7C,aAAO,GAAG,KAAK,OAAO,GAAG,GAAG;AAAA,IAC9B;AAAA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/infra/s3/index.ts"],"sourcesContent":["import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'\nimport crypto from 'crypto'\nimport {z} from \"zod/v4\";\n\nexport interface S3Config {\n s3AccessKey: string\n s3SecretKey: string\n endpoint: string\n region?: string\n bucketName: string\n keyPrefix?: string\n baseURL: string\n}\n\n\n\nexport const strictS3ConfigSchema = z.object({\n s3AccessKey: z.string(),\n s3SecretKey: z.string(),\n endpoint: z.string(),\n baseURL: z.string(),\n bucketName: z.string(),\n region: z.string().optional(),\n keyPrefix: z.string().optional(),\n})\n\nexport const s3ConfigSchema = z.discriminatedUnion('enabled', [\n z.object({ enabled: z.literal(true), ...strictS3ConfigSchema.shape }),\n z.object({ enabled: z.literal(false),}),\n])\n\nexport class S3Service {\n private s3Client: S3Client\n private readonly bucket: string\n private readonly keyPrefix: string = ''\n private readonly baseURL: string = ''\n constructor(config: S3Config) {\n const s3 = new S3Client({\n region: config.region ?? 'auto',\n endpoint: config.endpoint,\n credentials: {\n accessKeyId: config.s3AccessKey,\n secretAccessKey: config.s3SecretKey,\n },\n })\n this.bucket = config.bucketName\n this.keyPrefix = config.keyPrefix\n this.baseURL = config.baseURL\n this.s3Client = s3\n }\n async uploadImgWithUrl(url: string, mimeType?: string): Promise<string> {\n const res = await fetch(url).then((it) => it.arrayBuffer())\n const buf = Buffer.from(res)\n // @ts-ignore\n const md5 = crypto.createHash('md5').update(buf).digest('hex')\n const key = this.keyPrefix ? `${this.keyPrefix}-${md5}` : md5\n const params = {\n Bucket: this.bucket,\n Key: key,\n Body: buf,\n ContentType: mimeType ?? 'image/png',\n }\n const command = new PutObjectCommand(params)\n const data = await this.s3Client.send(command)\n return `${this.baseURL}${key}`\n }\n async uploadImg(buffer: Buffer, mimeType?: string): Promise<string> {\n // md5 digest\n // @ts-ignore\n const md5 = crypto.createHash('md5').update(buffer).digest('hex')\n const key = this.keyPrefix ? `${this.keyPrefix}-${md5}` : md5\n const params = {\n Bucket: this.bucket,\n Key: key,\n Body: buffer,\n ContentType: mimeType ?? 'image/png',\n }\n const command = new PutObjectCommand(params)\n const data = await this.s3Client.send(command)\n return `${this.baseURL}${key}`\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,UAAU,wBAAwB;AAC3C,OAAO,YAAY;AACnB,SAAQ,SAAQ;AAcT,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,aAAa,EAAE,OAAO;AAAA,EACtB,aAAa,EAAE,OAAO;AAAA,EACtB,UAAU,EAAE,OAAO;AAAA,EACnB,SAAS,EAAE,OAAO;AAAA,EAClB,YAAY,EAAE,OAAO;AAAA,EACrB,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,MAAM,iBAAiB,EAAE,mBAAmB,WAAW;AAAA,EAC5D,EAAE,OAAO,iBAAE,SAAS,EAAE,QAAQ,IAAI,KAAM,qBAAqB,MAAO;AAAA,EACpE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,KAAK,EAAE,CAAC;AACxC,CAAC;AAEM,MAAM,UAAU;AAAA,EAKrB,YAAY,QAAkB;AAJ9B,wBAAQ;AACR,wBAAiB;AACjB,wBAAiB,aAAoB;AACrC,wBAAiB,WAAkB;AAnCrC;AAqCI,UAAM,KAAK,IAAI,SAAS;AAAA,MACtB,SAAQ,YAAO,WAAP,YAAiB;AAAA,MACzB,UAAU,OAAO;AAAA,MACjB,aAAa;AAAA,QACX,aAAa,OAAO;AAAA,QACpB,iBAAiB,OAAO;AAAA,MAC1B;AAAA,IACF,CAAC;AACD,SAAK,SAAS,OAAO;AACrB,SAAK,YAAY,OAAO;AACxB,SAAK,UAAU,OAAO;AACtB,SAAK,WAAW;AAAA,EAClB;AAAA,EACM,iBAAiB,KAAa,UAAoC;AAAA;AACtE,YAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;AAC1D,YAAM,MAAM,OAAO,KAAK,GAAG;AAE3B,YAAM,MAAM,OAAO,WAAW,KAAK,EAAE,OAAO,GAAG,EAAE,OAAO,KAAK;AAC7D,YAAM,MAAM,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK;AAC1D,YAAM,SAAS;AAAA,QACb,QAAQ,KAAK;AAAA,QACb,KAAK;AAAA,QACL,MAAM;AAAA,QACN,aAAa,8BAAY;AAAA,MAC3B;AACA,YAAM,UAAU,IAAI,iBAAiB,MAAM;AAC3C,YAAM,OAAO,MAAM,KAAK,SAAS,KAAK,OAAO;AAC7C,aAAO,GAAG,KAAK,OAAO,GAAG,GAAG;AAAA,IAC9B;AAAA;AAAA,EACM,UAAU,QAAgB,UAAoC;AAAA;AAGlE,YAAM,MAAM,OAAO,WAAW,KAAK,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK;AAChE,YAAM,MAAM,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK;AAC1D,YAAM,SAAS;AAAA,QACb,QAAQ,KAAK;AAAA,QACb,KAAK;AAAA,QACL,MAAM;AAAA,QACN,aAAa,8BAAY;AAAA,MAC3B;AACA,YAAM,UAAU,IAAI,iBAAiB,MAAM;AAC3C,YAAM,OAAO,MAAM,KAAK,SAAS,KAAK,OAAO;AAC7C,aAAO,GAAG,KAAK,OAAO,GAAG,GAAG;AAAA,IAC9B;AAAA;AACF;","names":[]}
@@ -1,5 +1,5 @@
1
- import { createFetch as c, Fetch } from "./ofetch";
2
- import { NotFoundError } from "./error";
1
+ import { createFetch as c, Fetch } from "./ofetch.js";
2
+ import { NotFoundError } from "./error.js";
3
3
  const rofetch = c({
4
4
  defaults: {
5
5
  retryStatusCodes: [400, 408, 409, 425, 429, 502, 503, 504],
@@ -7,25 +7,34 @@ const rofetch = c({
7
7
  retryDelay: 400
8
8
  }
9
9
  });
10
- const ofetch = new Fetch(rofetch);
10
+ const ofetch = new Fetch();
11
11
  const createFetch = (logger) => {
12
12
  return ofetch.extend({
13
13
  onRequest: (context) => {
14
14
  logger.debug(`[fetch -->] ${context.options.baseURL}${context.request}`);
15
+ logger.debug(`[fetch -->] ${JSON.stringify(context.options, null, 2)}`);
15
16
  },
16
17
  onResponse: (context) => {
17
18
  logger.debug(`[fetch <--] ${context.request} ${context.response.status}`);
19
+ switch (context.options.responseType) {
20
+ case "text":
21
+ logger.debug(`[fetch <--] ${context.response._data}`);
22
+ break;
23
+ case "json":
24
+ logger.debug(`[fetch -->] ${JSON.stringify(context.response._data, null, 2)}`);
25
+ break;
26
+ }
18
27
  },
19
- onResponseError: (context) => {
20
- if (context.response.status === 404) {
28
+ onResponseError({ request, response, options, error }) {
29
+ logger.debug(`response error ${response.statusText}`, error);
30
+ if (response.status === 404) {
21
31
  throw new NotFoundError();
22
32
  }
23
- throw context.error;
24
33
  },
25
34
  ignoreResponseError: false
26
35
  });
27
36
  };
28
- import { Fetch as Fetch2 } from "./ofetch";
37
+ import { Fetch as Fetch2 } from "./ofetch.js";
29
38
  export {
30
39
  Fetch2 as Fetch,
31
40
  createFetch
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/infra/support/fetch/index.ts"],"sourcesContent":["import { createFetch as c, Fetch } from './ofetch'\nimport { Logger } from '@/interface'\nimport { NotFoundError } from './error'\n\nconst rofetch = c({\n defaults: {\n retryStatusCodes: [400, 408, 409, 425, 429, 502, 503, 504],\n retry: 2,\n retryDelay: 400,\n },\n})\n\nconst ofetch = new Fetch(rofetch)\n\nexport const createFetch = (logger: Logger) => {\n return ofetch.extend({\n onRequest: (context) => {\n logger.debug(`[fetch -->] ${context.options.baseURL}${context.request}`)\n },\n onResponse: (context) => {\n logger.debug(`[fetch <--] ${context.request} ${context.response.status}`)\n },\n onResponseError: (context) => {\n if (context.response.status === 404) {\n throw new NotFoundError()\n }\n throw context.error\n },\n ignoreResponseError: false,\n })\n}\n\nexport { Fetch } from './ofetch'\n"],"mappings":"AAAA,SAAS,eAAe,GAAG,aAAa;AAExC,SAAS,qBAAqB;AAE9B,MAAM,UAAU,EAAE;AAAA,EAChB,UAAU;AAAA,IACR,kBAAkB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IACzD,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,CAAC;AAED,MAAM,SAAS,IAAI,MAAM,OAAO;AAEzB,MAAM,cAAc,CAAC,WAAmB;AAC7C,SAAO,OAAO,OAAO;AAAA,IACnB,WAAW,CAAC,YAAY;AACtB,aAAO,MAAM,eAAe,QAAQ,QAAQ,OAAO,GAAG,QAAQ,OAAO,EAAE;AAAA,IACzE;AAAA,IACA,YAAY,CAAC,YAAY;AACvB,aAAO,MAAM,eAAe,QAAQ,OAAO,IAAI,QAAQ,SAAS,MAAM,EAAE;AAAA,IAC1E;AAAA,IACA,iBAAiB,CAAC,YAAY;AAC5B,UAAI,QAAQ,SAAS,WAAW,KAAK;AACnC,cAAM,IAAI,cAAc;AAAA,MAC1B;AACA,YAAM,QAAQ;AAAA,IAChB;AAAA,IACA,qBAAqB;AAAA,EACvB,CAAC;AACH;AAEA,SAAS,SAAAA,cAAa;","names":["Fetch"]}
1
+ {"version":3,"sources":["../../../../../src/infra/support/fetch/index.ts"],"sourcesContent":["import { createFetch as c, Fetch } from './ofetch'\nimport { Logger } from '@/interface'\nimport { NotFoundError } from './error'\n\nconst rofetch = c({\n defaults: {\n retryStatusCodes: [400, 408, 409, 425, 429, 502, 503, 504],\n retry: 2,\n retryDelay: 400,\n },\n})\n\nconst ofetch = new Fetch()\n\nexport const createFetch = (logger: Logger) => {\n return ofetch.extend({\n onRequest: (context) => {\n logger.debug(`[fetch -->] ${context.options.baseURL}${context.request}`)\n logger.debug(`[fetch -->] ${JSON.stringify(context.options, null, 2)}`)\n },\n onResponse: (context) => {\n logger.debug(`[fetch <--] ${context.request} ${context.response.status}`)\n switch (context.options.responseType) {\n case 'text':\n logger.debug(`[fetch <--] ${context.response._data}`)\n break\n case \"json\":\n logger.debug(`[fetch -->] ${JSON.stringify(context.response._data, null, 2)}`)\n break\n }\n },\n onResponseError({ request, response, options, error }) {\n logger.debug(`response error ${response.statusText}`, error)\n if (response.status === 404) {\n throw new NotFoundError()\n }\n },\n ignoreResponseError: false,\n })\n}\n\nexport { Fetch } from './ofetch'\n"],"mappings":"AAAA,SAAS,eAAe,GAAG,aAAa;AAExC,SAAS,qBAAqB;AAE9B,MAAM,UAAU,EAAE;AAAA,EAChB,UAAU;AAAA,IACR,kBAAkB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IACzD,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,CAAC;AAED,MAAM,SAAS,IAAI,MAAM;AAElB,MAAM,cAAc,CAAC,WAAmB;AAC7C,SAAO,OAAO,OAAO;AAAA,IACnB,WAAW,CAAC,YAAY;AACtB,aAAO,MAAM,eAAe,QAAQ,QAAQ,OAAO,GAAG,QAAQ,OAAO,EAAE;AACvE,aAAO,MAAM,eAAe,KAAK,UAAU,QAAQ,SAAS,MAAM,CAAC,CAAC,EAAE;AAAA,IACxE;AAAA,IACA,YAAY,CAAC,YAAY;AACvB,aAAO,MAAM,eAAe,QAAQ,OAAO,IAAI,QAAQ,SAAS,MAAM,EAAE;AACxE,cAAQ,QAAQ,QAAQ,cAAc;AAAA,QACpC,KAAK;AACH,iBAAO,MAAM,eAAe,QAAQ,SAAS,KAAK,EAAE;AACpD;AAAA,QACF,KAAK;AACH,iBAAO,MAAM,eAAe,KAAK,UAAU,QAAQ,SAAS,OAAO,MAAM,CAAC,CAAC,EAAE;AAC7E;AAAA,MACJ;AAAA,IACF;AAAA,IACA,gBAAgB,EAAE,SAAS,UAAU,SAAS,MAAM,GAAG;AACrD,aAAO,MAAM,kBAAkB,SAAS,UAAU,IAAI,KAAK;AAC3D,UAAI,SAAS,WAAW,KAAK;AAC3B,cAAM,IAAI,cAAc;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,EACvB,CAAC;AACH;AAEA,SAAS,SAAAA,cAAa;","names":["Fetch"]}
@@ -39,19 +39,13 @@ var __async = (__this, __arguments, generator) => {
39
39
  });
40
40
  };
41
41
  import { createFetch } from "ofetch";
42
- import { NotFoundError } from "./error";
43
42
  const rofetch = createFetch({
44
43
  defaults: {
45
- retryStatusCodes: [400, 408, 409, 425, 429, 500, 502, 503, 504],
46
- retry: 3,
44
+ retryStatusCodes: [408, 409, 425, 429, 500, 502, 503, 504],
45
+ retry: 2,
47
46
  retryDelay: 800
48
47
  }
49
48
  }).create({
50
- onResponseError({ request, response, options }) {
51
- if (response.status === 404) {
52
- throw new NotFoundError();
53
- }
54
- },
55
49
  onRequestError({ request, error }) {
56
50
  }
57
51
  });
@@ -76,6 +70,7 @@ class Fetch {
76
70
  body: f
77
71
  });
78
72
  }
73
+ console.debug();
79
74
  const res = yield this.ofetchInstance(request, opt);
80
75
  return res;
81
76
  });
@@ -108,7 +103,6 @@ class Fetch {
108
103
  import { createFetch as createFetch2 } from "ofetch";
109
104
  export {
110
105
  Fetch,
111
- createFetch2 as createFetch,
112
- rofetch
106
+ createFetch2 as createFetch
113
107
  };
114
108
  //# sourceMappingURL=ofetch.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/infra/support/fetch/ofetch.ts"],"sourcesContent":["import { $Fetch, createFetch, FetchOptions, ResponseType } from 'ofetch'\nimport { NotFoundError } from './error'\n\nexport const rofetch = createFetch({\n defaults: {\n retryStatusCodes: [400, 408, 409, 425, 429, 500, 502, 503, 504],\n retry: 3,\n retryDelay: 800,\n },\n}).create({\n onResponseError({ request, response, options }) {\n if (response.status === 404) {\n throw new NotFoundError()\n }\n },\n onRequestError({ request, error }) {},\n})\n\nexport type ExtendFetchOptions<R extends ResponseType = ResponseType, T = any> = {\n form?: Record<string, any>\n} & FetchOptions<R, T>\n\nexport class Fetch {\n private options?: FetchOptions\n private ofetchInstance: $Fetch\n constructor(fetchInstance?: $Fetch, options?: FetchOptions) {\n this.options = options\n this.ofetchInstance = fetchInstance ?? rofetch\n }\n async fetch<T, R extends ResponseType>(request: string, options?: ExtendFetchOptions<R, T>) {\n let opt = {\n ...options,\n ...this.options\n } as ExtendFetchOptions<R, T>\n if(opt.form) {\n const form = new FormData()\n let f = opt.form\n Object.entries(form).forEach(([key, value]) => form.append(key, value))\n opt = {\n ...opt,\n headers: {\n ...opt.headers,\n 'Content-Type': 'multipart/form-data'\n },\n body: f\n }\n }\n\n const res = await this.ofetchInstance<T, R>(request, opt)\n return res\n }\n get<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch<T, R>(request, { ...options, method: 'GET' })\n }\n post<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch<T, R>(request, { ...options, method: 'POST' })\n }\n put<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch(request, { ...options, method: 'PUT' })\n }\n patch<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch(request, { ...options, method: 'PATCH' })\n }\n delete<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch(request, { ...options, method: 'DELETE' })\n }\n head(request: string, options?: FetchOptions) {\n return this.fetch(request, { ...options, method: 'HEAD' })\n }\n\n extend(options: FetchOptions) {\n return new Fetch(this.ofetchInstance, { ...this.options, ...options })\n }\n baseUrl(url: string) {\n return this.extend({ baseURL: url })\n }\n}\n\nexport { createFetch } from 'ofetch'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAiB,mBAA+C;AAChE,SAAS,qBAAqB;AAEvB,MAAM,UAAU,YAAY;AAAA,EACjC,UAAU;AAAA,IACR,kBAAkB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IAC9D,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,CAAC,EAAE,OAAO;AAAA,EACR,gBAAgB,EAAE,SAAS,UAAU,QAAQ,GAAG;AAC9C,QAAI,SAAS,WAAW,KAAK;AAC3B,YAAM,IAAI,cAAc;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,eAAe,EAAE,SAAS,MAAM,GAAG;AAAA,EAAC;AACtC,CAAC;AAMM,MAAM,MAAM;AAAA,EAGjB,YAAY,eAAwB,SAAwB;AAF5D,wBAAQ;AACR,wBAAQ;AAEN,SAAK,UAAU;AACf,SAAK,iBAAiB,wCAAiB;AAAA,EACzC;AAAA,EACO,MAAiC,SAAiB,SAAoC;AAAA;AAC3F,UAAI,MAAM,kCACL,UACA,KAAK;AAEV,UAAG,IAAI,MAAM;AACX,cAAM,OAAO,IAAI,SAAS;AAC1B,YAAI,IAAI,IAAI;AACZ,eAAO,QAAQ,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,CAAC;AACtE,cAAM,iCACD,MADC;AAAA,UAEJ,SAAS,iCACJ,IAAI,UADA;AAAA,YAEP,gBAAgB;AAAA,UAClB;AAAA,UACA,MAAM;AAAA,QACR;AAAA,MACF;AAEA,YAAM,MAAM,MAAM,KAAK,eAAqB,SAAS,GAAG;AACxD,aAAO;AAAA,IACT;AAAA;AAAA,EACA,IACE,SACA,SACA;AACA,WAAO,KAAK,MAAY,SAAS,iCAAK,UAAL,EAAc,QAAQ,MAAM,EAAC;AAAA,EAChE;AAAA,EACA,KACE,SACA,SACA;AACA,WAAO,KAAK,MAAY,SAAS,iCAAK,UAAL,EAAc,QAAQ,OAAO,EAAC;AAAA,EACjE;AAAA,EACA,IACE,SACA,SACA;AACA,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,MAAM,EAAC;AAAA,EAC1D;AAAA,EACA,MACE,SACA,SACA;AACA,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,QAAQ,EAAC;AAAA,EAC5D;AAAA,EACA,OACE,SACA,SACA;AACA,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,SAAS,EAAC;AAAA,EAC7D;AAAA,EACA,KAAK,SAAiB,SAAwB;AAC5C,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,OAAO,EAAC;AAAA,EAC3D;AAAA,EAEA,OAAO,SAAuB;AAC5B,WAAO,IAAI,MAAM,KAAK,gBAAgB,kCAAK,KAAK,UAAY,QAAS;AAAA,EACvE;AAAA,EACA,QAAQ,KAAa;AACnB,WAAO,KAAK,OAAO,EAAE,SAAS,IAAI,CAAC;AAAA,EACrC;AACF;AAEA,SAAS,eAAAA,oBAAmB;","names":["createFetch"]}
1
+ {"version":3,"sources":["../../../../../src/infra/support/fetch/ofetch.ts"],"sourcesContent":["import { $Fetch, createFetch, FetchOptions, ResponseType } from 'ofetch'\n\n\nconst rofetch = createFetch({\n defaults: {\n retryStatusCodes: [408, 409, 425, 429, 500, 502, 503, 504],\n retry: 2,\n retryDelay: 800,\n },\n}).create({\n\n onRequestError({ request, error }) {\n\n },\n})\n\nexport type ExtendFetchOptions<R extends ResponseType = ResponseType, T = any> = {\n form?: Record<string, any>\n} & FetchOptions<R, T>\n\nexport class Fetch {\n private options?: FetchOptions\n private ofetchInstance: $Fetch\n constructor(fetchInstance?: $Fetch, options?: FetchOptions) {\n this.options = options\n this.ofetchInstance = fetchInstance ?? rofetch\n }\n async fetch<T, R extends ResponseType>(request: string, options?: ExtendFetchOptions<R, T>) {\n let opt = {\n ...options,\n ...this.options\n } as ExtendFetchOptions<R, T>\n if(opt.form) {\n const form = new FormData()\n let f = opt.form\n Object.entries(form).forEach(([key, value]) => form.append(key, value))\n opt = {\n ...opt,\n headers: {\n ...opt.headers,\n 'Content-Type': 'multipart/form-data'\n },\n body: f\n }\n }\n console.debug()\n const res = await this.ofetchInstance<T, R>(request, opt)\n return res\n }\n get<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch<T, R>(request, { ...options, method: 'GET' })\n }\n post<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch<T, R>(request, { ...options, method: 'POST' })\n }\n put<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch(request, { ...options, method: 'PUT' })\n }\n patch<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch(request, { ...options, method: 'PATCH' })\n }\n delete<T = any, R extends ResponseType = 'json'>(\n request: string,\n options?: ExtendFetchOptions<R>\n ) {\n return this.fetch(request, { ...options, method: 'DELETE' })\n }\n head(request: string, options?: FetchOptions) {\n return this.fetch(request, { ...options, method: 'HEAD' })\n }\n\n extend(options: FetchOptions) {\n return new Fetch(this.ofetchInstance, { ...this.options, ...options })\n }\n baseUrl(url: string) {\n return this.extend({ baseURL: url })\n }\n}\n\nexport { createFetch } from 'ofetch'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAiB,mBAA+C;AAGhE,MAAM,UAAU,YAAY;AAAA,EAC1B,UAAU;AAAA,IACR,kBAAkB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IACzD,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,CAAC,EAAE,OAAO;AAAA,EAER,eAAe,EAAE,SAAS,MAAM,GAAG;AAAA,EAEnC;AACF,CAAC;AAMM,MAAM,MAAM;AAAA,EAGjB,YAAY,eAAwB,SAAwB;AAF5D,wBAAQ;AACR,wBAAQ;AAEN,SAAK,UAAU;AACf,SAAK,iBAAiB,wCAAiB;AAAA,EACzC;AAAA,EACO,MAAiC,SAAiB,SAAoC;AAAA;AAC3F,UAAI,MAAM,kCACL,UACA,KAAK;AAEV,UAAG,IAAI,MAAM;AACX,cAAM,OAAO,IAAI,SAAS;AAC1B,YAAI,IAAI,IAAI;AACZ,eAAO,QAAQ,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,CAAC;AACtE,cAAM,iCACD,MADC;AAAA,UAEJ,SAAS,iCACJ,IAAI,UADA;AAAA,YAEP,gBAAgB;AAAA,UAClB;AAAA,UACA,MAAM;AAAA,QACR;AAAA,MACF;AACA,cAAQ,MAAM;AACd,YAAM,MAAM,MAAM,KAAK,eAAqB,SAAS,GAAG;AACxD,aAAO;AAAA,IACT;AAAA;AAAA,EACA,IACE,SACA,SACA;AACA,WAAO,KAAK,MAAY,SAAS,iCAAK,UAAL,EAAc,QAAQ,MAAM,EAAC;AAAA,EAChE;AAAA,EACA,KACE,SACA,SACA;AACA,WAAO,KAAK,MAAY,SAAS,iCAAK,UAAL,EAAc,QAAQ,OAAO,EAAC;AAAA,EACjE;AAAA,EACA,IACE,SACA,SACA;AACA,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,MAAM,EAAC;AAAA,EAC1D;AAAA,EACA,MACE,SACA,SACA;AACA,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,QAAQ,EAAC;AAAA,EAC5D;AAAA,EACA,OACE,SACA,SACA;AACA,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,SAAS,EAAC;AAAA,EAC7D;AAAA,EACA,KAAK,SAAiB,SAAwB;AAC5C,WAAO,KAAK,MAAM,SAAS,iCAAK,UAAL,EAAc,QAAQ,OAAO,EAAC;AAAA,EAC3D;AAAA,EAEA,OAAO,SAAuB;AAC5B,WAAO,IAAI,MAAM,KAAK,gBAAgB,kCAAK,KAAK,UAAY,QAAS;AAAA,EACvE;AAAA,EACA,QAAQ,KAAa;AACnB,WAAO,KAAK,OAAO,EAAE,SAAS,IAAI,CAAC;AAAA,EACrC;AACF;AAEA,SAAS,eAAAA,oBAAmB;","names":["createFetch"]}
@@ -17,6 +17,18 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
20
32
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
21
33
  var __async = (__this, __arguments, generator) => {
22
34
  return new Promise((resolve, reject) => {
@@ -38,13 +50,31 @@ var __async = (__this, __arguments, generator) => {
38
50
  step((generator = generator.apply(__this, __arguments)).next());
39
51
  });
40
52
  };
41
- import { html2imgBuffer, RenderOptions, url2imgBuffer } from "./puppeteer";
53
+ import { html2imgBuffer, url2imgBuffer } from "./puppeteer.js";
42
54
  import { Puppeteer } from "puppeteer-core";
43
- import { Fetch } from "../../../infra/support/fetch";
55
+ import { createFetch } from "../../../infra/support/fetch/index.js";
56
+ import { z } from "zod/v4";
57
+ const common = z.object({
58
+ defaultWaitTimeout: z.number().optional(),
59
+ waitTimeout: z.number().optional()
60
+ });
61
+ const cfConfig = z.object({
62
+ cfAccountId: z.string().min(1, "Cloudflare account id is required"),
63
+ cfAPIKey: z.string().min(1, "Cloudflare API key is required")
64
+ });
65
+ const puppeteerConfig = z.object({
66
+ puppeteerURL: z.string().describe("remote puppeteer url, eg: wss://browserless/xxx, https://browserless/xxx").optional()
67
+ });
68
+ const strictRenderConfig = z.discriminatedUnion("mode", [
69
+ z.object(__spreadValues(__spreadValues({ mode: z.literal("cf") }, cfConfig.shape), common.shape)),
70
+ z.object(__spreadValues(__spreadValues({ mode: z.literal("puppeteer") }, puppeteerConfig.shape), common.shape)),
71
+ z.object(__spreadValues({ mode: z.literal("custom") }, common.shape))
72
+ ]);
73
+ const renderSchema = strictRenderConfig.and(z.object(__spreadValues(__spreadValues(__spreadValues({}, cfConfig.shape), puppeteerConfig.shape), common.shape)).partial());
44
74
  class CFBrowserRendering {
45
- constructor(accountId, cfAPIKey) {
75
+ constructor(accountId, cfAPIKey, logger) {
46
76
  __publicField(this, "f");
47
- this.f = new Fetch().baseUrl(`https://api.cloudflare.com/client/v4/accounts/${accountId}`).extend({
77
+ this.f = createFetch(logger).baseUrl(`https://api.cloudflare.com/client/v4/accounts/${accountId}`).extend({
48
78
  headers: {
49
79
  Authorization: `Bearer ${cfAPIKey}`
50
80
  }
@@ -55,7 +85,8 @@ class CFBrowserRendering {
55
85
  responseType: "arrayBuffer",
56
86
  body: __spreadProps(__spreadValues({
57
87
  "screenshotOptions": {
58
- quality: 90
88
+ quality: 90,
89
+ type: "webp"
59
90
  }
60
91
  }, body), {
61
92
  "viewport": {
@@ -108,26 +139,29 @@ const RemoteBrowserGetter = (addr) => {
108
139
  }
109
140
  return () => p.connect(opt);
110
141
  };
111
- const getImageRender = (cfg) => {
142
+ const getImageRender = (config) => {
143
+ const _a = config, { logger, render, browserGetter } = _a, _cfg = __objRest(_a, ["logger", "render", "browserGetter"]);
144
+ const cfg = strictRenderConfig.parse(_cfg);
112
145
  if (cfg.mode === "cf") {
113
- return new CFBrowserRendering(cfg.cfAccountId, cfg.cfAPIKey);
146
+ return new CFBrowserRendering(cfg.cfAccountId, cfg.cfAPIKey, logger);
114
147
  }
115
148
  if (cfg.mode === "custom") {
116
- if (!cfg.render) throw new Error("please provide custom img render");
117
- return cfg.render;
149
+ if (!render) throw new Error("please provide custom img render");
150
+ return render;
118
151
  }
119
152
  if (cfg.puppeteerURL) {
120
153
  return new PuppeteerRendering(RemoteBrowserGetter(cfg.puppeteerURL));
121
154
  }
122
- if (cfg.browserGetter) {
123
- return new PuppeteerRendering(cfg.browserGetter);
155
+ if (browserGetter) {
156
+ return new PuppeteerRendering(browserGetter);
124
157
  }
158
+ return null;
125
159
  };
126
160
  export {
127
161
  CFBrowserRendering,
128
- RenderOptions as PuppeteerOptions,
129
162
  PuppeteerRendering,
130
163
  RemoteBrowserGetter,
131
- getImageRender
164
+ getImageRender,
165
+ renderSchema
132
166
  };
133
167
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/infra/support/render/index.ts"],"sourcesContent":["import {html2imgBuffer, RenderOptions, url2imgBuffer} from \"./puppeteer\";\nimport {Browser, Puppeteer} from \"puppeteer-core\";\nimport {Fetch} from \"@/infra/support/fetch\";\nexport {RenderOptions as PuppeteerOptions}\nexport interface ImageRender {\n html2img: (html: string, opt: RenderOptions) => Promise<Buffer>\n url2img: (url: string, opt: RenderOptions) => Promise<Buffer>\n}\n\nexport type RenderConfig = {\n mode: 'cf' | 'puppeteer' | 'custom'\n puppeteerURL?: string\n defaultWaitTimeout?: number\n waitTimeout?: number\n cfAccountId?: string,\n cfAPIKey?: string,\n}\n\nexport class CFBrowserRendering implements ImageRender {\n f: Fetch\n constructor(accountId: string, cfAPIKey: string) {\n this.f = new Fetch()\n .baseUrl(`https://api.cloudflare.com/client/v4/accounts/${accountId}`)\n .extend({\n headers: {\n Authorization: `Bearer ${cfAPIKey}`\n },\n })\n }\n private post(body) {\n return this.f.post('/browser-rendering/screenshot', {\n responseType: 'arrayBuffer',\n body: {\n \"screenshotOptions\": {\n quality: 90\n },\n ...body,\n \"viewport\": {\n \"width\": 3840,\n \"height\": 2160,\n \"deviceScaleFactor\": 2,\n },\n \"gotoOptions\": {\n \"waitUntil\": \"networkidle0\",\n \"timeout\": 30000\n },\n }\n })\n }\n\n\n\n async html2img (html: string, opt: RenderOptions) {\n const buf = await this.post({html: html, ...opt})\n return Buffer.from(buf)\n }\n async url2img (url: string, opt: RenderOptions) {\n const buf = await this.post({url: url, ...opt})\n return Buffer.from(buf)\n }\n}\n\nexport class PuppeteerRendering implements ImageRender {\n constructor(private browserGetter: () => Promise<Browser>) {\n }\n async html2img (html: string, opt: RenderOptions) {\n return html2imgBuffer(this.browserGetter, html, opt)\n }\n async url2img (html: string, opt: RenderOptions) {\n return url2imgBuffer(this.browserGetter, html, opt)\n }\n}\n\n\nexport const RemoteBrowserGetter = (addr: string) => {\n const p = new Puppeteer()\n let opt = {}\n if(addr.startsWith('ws')) {\n opt = { browserWSEndpoint: addr }\n }else if(addr.startsWith('http')) {\n opt = { browserURL: addr }\n }\n return () => p.connect(opt)\n}\n\n\n\nexport const getImageRender = (cfg: RenderConfig & {render?: ImageRender,browserGetter?: () => Promise<Browser>}) => {\n if(cfg.mode === 'cf') {\n return new CFBrowserRendering(cfg.cfAccountId, cfg.cfAPIKey)\n }\n if(cfg.mode === 'custom') {\n if(!cfg.render) throw new Error(\"please provide custom img render\")\n return cfg.render\n }\n if(cfg.puppeteerURL) {\n return new PuppeteerRendering(RemoteBrowserGetter(cfg.puppeteerURL))\n }\n if(cfg.browserGetter) {\n return new PuppeteerRendering(cfg.browserGetter)\n }\n}\n\nexport type CreateImageRenderOption = Parameters<typeof getImageRender>[0]\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,gBAAgB,eAAe,qBAAoB;AAC3D,SAAiB,iBAAgB;AACjC,SAAQ,aAAY;AAgBb,MAAM,mBAA0C;AAAA,EAErD,YAAY,WAAmB,UAAkB;AADjD;AAEE,SAAK,IAAI,IAAI,MAAM,EAChB,QAAQ,iDAAiD,SAAS,EAAE,EACpE,OAAO;AAAA,MACN,SAAS;AAAA,QACP,eAAe,UAAU,QAAQ;AAAA,MACnC;AAAA,IACF,CAAC;AAAA,EACL;AAAA,EACQ,KAAK,MAAM;AACjB,WAAO,KAAK,EAAE,KAAK,iCAAiC;AAAA,MAClD,cAAc;AAAA,MACd,MAAM;AAAA,QACJ,qBAAqB;AAAA,UACnB,SAAS;AAAA,QACX;AAAA,SACG,OAJC;AAAA,QAKJ,YAAY;AAAA,UACV,SAAS;AAAA,UACT,UAAU;AAAA,UACV,qBAAqB;AAAA,QACvB;AAAA,QACA,eAAe;AAAA,UACb,aAAa;AAAA,UACb,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAIM,SAAU,MAAc,KAAoB;AAAA;AAChD,YAAM,MAAM,MAAM,KAAK,KAAK,iBAAC,QAAe,IAAI;AAChD,aAAO,OAAO,KAAK,GAAG;AAAA,IACxB;AAAA;AAAA,EACM,QAAS,KAAa,KAAoB;AAAA;AAC9C,YAAM,MAAM,MAAM,KAAK,KAAK,iBAAC,OAAa,IAAI;AAC9C,aAAO,OAAO,KAAK,GAAG;AAAA,IACxB;AAAA;AACF;AAEO,MAAM,mBAA0C;AAAA,EACrD,YAAoB,eAAuC;AAAvC;AAAA,EACpB;AAAA,EACM,SAAU,MAAc,KAAoB;AAAA;AAChD,aAAO,eAAe,KAAK,eAAe,MAAM,GAAG;AAAA,IACrD;AAAA;AAAA,EACM,QAAS,MAAc,KAAoB;AAAA;AAC/C,aAAO,cAAc,KAAK,eAAe,MAAM,GAAG;AAAA,IACpD;AAAA;AACF;AAGO,MAAM,sBAAsB,CAAC,SAAiB;AACnD,QAAM,IAAI,IAAI,UAAU;AACxB,MAAI,MAAM,CAAC;AACX,MAAG,KAAK,WAAW,IAAI,GAAG;AACxB,UAAM,EAAE,mBAAmB,KAAK;AAAA,EAClC,WAAS,KAAK,WAAW,MAAM,GAAG;AAChC,UAAM,EAAE,YAAY,KAAK;AAAA,EAC3B;AACA,SAAO,MAAM,EAAE,QAAQ,GAAG;AAC5B;AAIO,MAAM,iBAAiB,CAAC,QAAsF;AACnH,MAAG,IAAI,SAAS,MAAM;AACpB,WAAO,IAAI,mBAAmB,IAAI,aAAa,IAAI,QAAQ;AAAA,EAC7D;AACA,MAAG,IAAI,SAAS,UAAU;AACxB,QAAG,CAAC,IAAI,OAAQ,OAAM,IAAI,MAAM,kCAAkC;AAClE,WAAQ,IAAI;AAAA,EACd;AACA,MAAG,IAAI,cAAc;AACnB,WAAO,IAAI,mBAAmB,oBAAoB,IAAI,YAAY,CAAC;AAAA,EACrE;AACA,MAAG,IAAI,eAAe;AACpB,WAAO,IAAI,mBAAmB,IAAI,aAAa;AAAA,EACjD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/infra/support/render/index.ts"],"sourcesContent":["import {html2imgBuffer, type RenderOptions, url2imgBuffer} from \"./puppeteer\";\nimport {Browser, Puppeteer} from \"puppeteer-core\";\nimport {Fetch, createFetch} from \"@/infra/support/fetch\";\nimport {Logger} from \"@/interface\";\nimport {z} from \"zod/v4\";\nexport type {RenderOptions as PuppeteerOptions}\nexport interface ImageRender {\n html2img: (html: string, opt: RenderOptions) => Promise<Buffer>\n url2img: (url: string, opt: RenderOptions) => Promise<Buffer>\n}\n\nconst common = z.object({\n defaultWaitTimeout: z.number().optional(),\n waitTimeout: z.number().optional(),\n})\n\nconst cfConfig = z.object({\n cfAccountId: z.string().min(1, \"Cloudflare account id is required\"),\n cfAPIKey: z.string().min(1, \"Cloudflare API key is required\"),\n})\n\nconst puppeteerConfig = z.object({\n puppeteerURL: z.string().describe(\"remote puppeteer url, eg: wss://browserless/xxx, https://browserless/xxx\").optional(),\n})\n\nconst strictRenderConfig = z.discriminatedUnion('mode', [\n z.object({ mode: z.literal('cf'), ...cfConfig.shape, ...common.shape }),\n z.object({ mode: z.literal('puppeteer'), ...puppeteerConfig.shape, ...common.shape }),\n z.object({ mode: z.literal('custom'), ...common.shape }),\n])\n\nexport const renderSchema = strictRenderConfig\n .and(z.object({\n ...cfConfig.shape,\n ...puppeteerConfig.shape,\n ...common.shape\n }).partial())\n\nexport type RenderConfig = z.infer<typeof renderSchema>\n\ntype StrictRenderConfig = z.infer<typeof strictRenderConfig>\n\n\n\n\nexport class CFBrowserRendering implements ImageRender {\n f: Fetch\n constructor(accountId: string, cfAPIKey: string, logger: Logger) {\n this.f = createFetch(logger)\n .baseUrl(`https://api.cloudflare.com/client/v4/accounts/${accountId}`)\n .extend({\n headers: {\n Authorization: `Bearer ${cfAPIKey}`\n },\n })\n }\n private post(body) {\n return this.f.post('/browser-rendering/screenshot', {\n responseType: 'arrayBuffer',\n body: {\n \"screenshotOptions\": {\n quality: 90,\n type: 'webp'\n },\n ...body,\n \"viewport\": {\n \"width\": 3840,\n \"height\": 2160,\n \"deviceScaleFactor\": 2,\n },\n \"gotoOptions\": {\n \"waitUntil\": \"networkidle0\",\n \"timeout\": 30000\n },\n }\n })\n }\n\n\n\n async html2img (html: string, opt: RenderOptions) {\n const buf = await this.post({html: html, ...opt})\n return Buffer.from(buf)\n }\n async url2img (url: string, opt: RenderOptions) {\n const buf = await this.post({url: url, ...opt})\n return Buffer.from(buf)\n }\n}\n\nexport class PuppeteerRendering implements ImageRender {\n constructor(private browserGetter: () => Promise<Browser>) {\n }\n async html2img (html: string, opt: RenderOptions) {\n return html2imgBuffer(this.browserGetter, html, opt)\n }\n async url2img (html: string, opt: RenderOptions) {\n return url2imgBuffer(this.browserGetter, html, opt)\n }\n}\n\n\nexport const RemoteBrowserGetter = (addr: string) => {\n const p = new Puppeteer()\n let opt = {}\n if(addr.startsWith('ws')) {\n opt = { browserWSEndpoint: addr }\n }else if(addr.startsWith('http')) {\n opt = { browserURL: addr }\n }\n return () => p.connect(opt)\n}\n\ntype ImageRenderCreateOptions = StrictRenderConfig & {\n logger: Logger,\n render?: ImageRender,\n browserGetter?: () => Promise<Browser>\n}\n\n\nexport const getImageRender = (config: ImageRenderCreateOptions) => {\n const { logger, render, browserGetter, ..._cfg} = config\n const cfg = strictRenderConfig.parse(_cfg)\n if(cfg.mode === 'cf') {\n return new CFBrowserRendering(cfg.cfAccountId, cfg.cfAPIKey, logger)\n }\n if(cfg.mode === 'custom') {\n if(!render) throw new Error(\"please provide custom img render\")\n return render\n }\n if(cfg.puppeteerURL) {\n return new PuppeteerRendering(RemoteBrowserGetter(cfg.puppeteerURL))\n }\n if(browserGetter) {\n return new PuppeteerRendering(browserGetter)\n }\n return null\n}\n\nexport type CreateImageRenderOption = Parameters<typeof getImageRender>[0]\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,gBAAoC,qBAAoB;AAChE,SAAiB,iBAAgB;AACjC,SAAe,mBAAkB;AAEjC,SAAQ,SAAQ;AAOhB,MAAM,SAAS,EAAE,OAAO;AAAA,EACtB,oBAAoB,EAAE,OAAO,EAAE,SAAS;AAAA,EACxC,aAAa,EAAE,OAAO,EAAE,SAAS;AACnC,CAAC;AAED,MAAM,WAAW,EAAE,OAAO;AAAA,EACxB,aAAa,EAAE,OAAO,EAAE,IAAI,GAAG,mCAAmC;AAAA,EAClE,UAAU,EAAE,OAAO,EAAE,IAAI,GAAG,gCAAgC;AAC9D,CAAC;AAED,MAAM,kBAAkB,EAAE,OAAO;AAAA,EAC/B,cAAc,EAAE,OAAO,EAAE,SAAS,0EAA0E,EAAE,SAAS;AACzH,CAAC;AAED,MAAM,qBAAqB,EAAE,mBAAmB,QAAQ;AAAA,EACtD,EAAE,OAAO,gCAAE,MAAM,EAAE,QAAQ,IAAI,KAAM,SAAS,QAAU,OAAO,MAAO;AAAA,EACtE,EAAE,OAAO,gCAAE,MAAM,EAAE,QAAQ,WAAW,KAAM,gBAAgB,QAAU,OAAO,MAAO;AAAA,EACpF,EAAE,OAAO,iBAAE,MAAM,EAAE,QAAQ,QAAQ,KAAM,OAAO,MAAO;AACzD,CAAC;AAEM,MAAM,eAAe,mBACzB,IAAI,EAAE,OAAO,iDACT,SAAS,QACT,gBAAgB,QAChB,OAAO,MACX,EAAE,QAAQ,CAAC;AASP,MAAM,mBAA0C;AAAA,EAErD,YAAY,WAAmB,UAAkB,QAAgB;AADjE;AAEE,SAAK,IAAI,YAAY,MAAM,EACxB,QAAQ,iDAAiD,SAAS,EAAE,EACpE,OAAO;AAAA,MACN,SAAS;AAAA,QACP,eAAe,UAAU,QAAQ;AAAA,MACnC;AAAA,IACF,CAAC;AAAA,EACL;AAAA,EACQ,KAAK,MAAM;AACjB,WAAO,KAAK,EAAE,KAAK,iCAAiC;AAAA,MAClD,cAAc;AAAA,MACd,MAAM;AAAA,QACJ,qBAAqB;AAAA,UACnB,SAAS;AAAA,UACT,MAAM;AAAA,QACR;AAAA,SACG,OALC;AAAA,QAMJ,YAAY;AAAA,UACV,SAAS;AAAA,UACT,UAAU;AAAA,UACV,qBAAqB;AAAA,QACvB;AAAA,QACA,eAAe;AAAA,UACb,aAAa;AAAA,UACb,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAIM,SAAU,MAAc,KAAoB;AAAA;AAChD,YAAM,MAAM,MAAM,KAAK,KAAK,iBAAC,QAAe,IAAI;AAChD,aAAO,OAAO,KAAK,GAAG;AAAA,IACxB;AAAA;AAAA,EACM,QAAS,KAAa,KAAoB;AAAA;AAC9C,YAAM,MAAM,MAAM,KAAK,KAAK,iBAAC,OAAa,IAAI;AAC9C,aAAO,OAAO,KAAK,GAAG;AAAA,IACxB;AAAA;AACF;AAEO,MAAM,mBAA0C;AAAA,EACrD,YAAoB,eAAuC;AAAvC;AAAA,EACpB;AAAA,EACM,SAAU,MAAc,KAAoB;AAAA;AAChD,aAAO,eAAe,KAAK,eAAe,MAAM,GAAG;AAAA,IACrD;AAAA;AAAA,EACM,QAAS,MAAc,KAAoB;AAAA;AAC/C,aAAO,cAAc,KAAK,eAAe,MAAM,GAAG;AAAA,IACpD;AAAA;AACF;AAGO,MAAM,sBAAsB,CAAC,SAAiB;AACnD,QAAM,IAAI,IAAI,UAAU;AACxB,MAAI,MAAM,CAAC;AACX,MAAG,KAAK,WAAW,IAAI,GAAG;AACxB,UAAM,EAAE,mBAAmB,KAAK;AAAA,EAClC,WAAS,KAAK,WAAW,MAAM,GAAG;AAChC,UAAM,EAAE,YAAY,KAAK;AAAA,EAC3B;AACA,SAAO,MAAM,EAAE,QAAQ,GAAG;AAC5B;AASO,MAAM,iBAAiB,CAAC,WAAqC;AAClE,QAAkD,aAA1C,UAAQ,QAAQ,cAzH1B,IAyHoD,IAAR,iBAAQ,IAAR,CAAlC,UAAQ,UAAQ;AACxB,QAAM,MAAM,mBAAmB,MAAM,IAAI;AACzC,MAAG,IAAI,SAAS,MAAM;AACpB,WAAO,IAAI,mBAAmB,IAAI,aAAa,IAAI,UAAU,MAAM;AAAA,EACrE;AACA,MAAG,IAAI,SAAS,UAAU;AACxB,QAAG,CAAC,OAAQ,OAAM,IAAI,MAAM,kCAAkC;AAC9D,WAAO;AAAA,EACT;AACA,MAAG,IAAI,cAAc;AACnB,WAAO,IAAI,mBAAmB,oBAAoB,IAAI,YAAY,CAAC;AAAA,EACrE;AACA,MAAG,eAAe;AAChB,WAAO,IAAI,mBAAmB,aAAa;AAAA,EAC7C;AACA,SAAO;AACT;","names":[]}
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { BizError } from "../../infra/errors";
24
+ import { BizError } from "../../infra/errors/index.js";
25
25
  class CommandBuilder {
26
26
  constructor() {
27
27
  __publicField(this, "name");
@@ -1,6 +1,6 @@
1
- export * from "./db";
2
- export * from "./logger";
3
- export * from "./bot";
1
+ export * from "./db/index.js";
2
+ export * from "./logger.js";
3
+ export * from "./bot.js";
4
4
  var Platform = /* @__PURE__ */ ((Platform2) => {
5
5
  Platform2["SS"] = "scoresaber";
6
6
  Platform2["BS"] = "beatsaver";
@@ -10,7 +10,7 @@ var Platform = /* @__PURE__ */ ((Platform2) => {
10
10
  const parsePlatform = (p) => {
11
11
  return p == "ss" ? "scoresaber" /* SS */ : "beatleader" /* BL */;
12
12
  };
13
- export * from "./cmd/type";
13
+ export * from "./cmd/type.js";
14
14
  export {
15
15
  Platform,
16
16
  parsePlatform
@@ -1,11 +1,12 @@
1
- import { LBScoreMonitor } from "./temp";
1
+ import { LBScoreMonitor } from "./temp.js";
2
2
  const getScheduleTasks = (config) => {
3
+ var _a, _b, _c, _d, _e;
3
4
  return [
4
5
  {
5
6
  name: "lb-rank-notifier",
6
7
  handler: LBScoreMonitor,
7
- cron: config.tempCron.cron,
8
- enabled: config.tempCron.enabled
8
+ cron: (_b = (_a = config.cron) == null ? void 0 : _a.temp) == null ? void 0 : _b.cron,
9
+ enabled: (_e = (_d = (_c = config.cron) == null ? void 0 : _c.temp) == null ? void 0 : _d.enabled) != null ? _e : false
9
10
  }
10
11
  ];
11
12
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/schedules/index.ts"],"sourcesContent":["import { Config } from '@/config'\nimport { LBScoreMonitor } from './temp'\n\n\nexport const getScheduleTasks = (config: Config) => {\n return [\n {\n name: 'lb-rank-notifier',\n handler: LBScoreMonitor,\n cron: config.tempCron.cron,\n enabled: config.tempCron.enabled,\n },\n ]\n}\n"],"mappings":"AACA,SAAS,sBAAsB;AAGxB,MAAM,mBAAmB,CAAC,WAAmB;AAClD,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAM,OAAO,SAAS;AAAA,MACtB,SAAS,OAAO,SAAS;AAAA,IAC3B;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/schedules/index.ts"],"sourcesContent":["import { Config } from '@/config'\nimport { LBScoreMonitor } from './temp'\n\n\nexport const getScheduleTasks = (config: Config) => {\n return [\n {\n name: 'lb-rank-notifier',\n handler: LBScoreMonitor,\n cron: config.cron?.temp?.cron,\n enabled: config.cron?.temp?.enabled ?? false,\n },\n ]\n}\n"],"mappings":"AACA,SAAS,sBAAsB;AAGxB,MAAM,mBAAmB,CAAC,WAAmB;AAJpD;AAKE,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAM,kBAAO,SAAP,mBAAa,SAAb,mBAAmB;AAAA,MACzB,UAAS,wBAAO,SAAP,mBAAa,SAAb,mBAAmB,YAAnB,YAA8B;AAAA,IACzC;AAAA,EACF;AACF;","names":[]}
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { createFetch } from "../../../infra/support/fetch";
24
+ import { createFetch } from "../../../infra/support/fetch/index.js";
25
25
  class AIOSaberClient {
26
26
  constructor(logger) {
27
27
  __publicField(this, "f");
@@ -21,7 +21,7 @@ var __async = (__this, __arguments, generator) => {
21
21
  step((generator = generator.apply(__this, __arguments)).next());
22
22
  });
23
23
  };
24
- import { createFetch } from "../../../infra/support/fetch";
24
+ import { createFetch } from "../../../infra/support/fetch/index.js";
25
25
  class BeatLeaderClient {
26
26
  constructor(opt) {
27
27
  __publicField(this, "f");