@itsmrtr/bunkoshelf 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (864) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-path-routes-manifest.json +1 -0
  3. package/dist/.next/build-manifest.json +6 -6
  4. package/dist/.next/prerender-manifest.json +3 -3
  5. package/dist/.next/required-server-files.json +4 -1
  6. package/dist/.next/routes-manifest.json +8 -0
  7. package/dist/.next/server/app/[lang]/books/page/build-manifest.json +3 -3
  8. package/dist/.next/server/app/[lang]/books/page/server-reference-manifest.json +4 -4
  9. package/dist/.next/server/app/[lang]/books/page.js +10 -7
  10. package/dist/.next/server/app/[lang]/books/page.js.nft.json +1 -1
  11. package/dist/.next/server/app/[lang]/books/page_client-reference-manifest.js +1 -1
  12. package/dist/.next/server/app/[lang]/books.meta +2 -2
  13. package/dist/.next/server/app/[lang]/books.segments/$d$lang/books/__PAGE__.segment.rsc +1 -1
  14. package/dist/.next/server/app/[lang]/books.segments/$d$lang/books.segment.rsc +1 -1
  15. package/dist/.next/server/app/[lang]/books.segments/$d$lang.segment.rsc +2 -2
  16. package/dist/.next/server/app/[lang]/books.segments/_full.segment.rsc +2 -2
  17. package/dist/.next/server/app/[lang]/books.segments/_head.segment.rsc +1 -1
  18. package/dist/.next/server/app/[lang]/books.segments/_index.segment.rsc +1 -1
  19. package/dist/.next/server/app/[lang]/books.segments/_tree.segment.rsc +2 -2
  20. package/dist/.next/server/app/[lang]/favorites/books/page/build-manifest.json +3 -3
  21. package/dist/.next/server/app/[lang]/favorites/books/page/server-reference-manifest.json +4 -4
  22. package/dist/.next/server/app/[lang]/favorites/books/page.js +10 -7
  23. package/dist/.next/server/app/[lang]/favorites/books/page.js.nft.json +1 -1
  24. package/dist/.next/server/app/[lang]/favorites/books/page_client-reference-manifest.js +1 -1
  25. package/dist/.next/server/app/[lang]/favorites/books.meta +2 -2
  26. package/dist/.next/server/app/[lang]/favorites/books.segments/$d$lang/favorites/books/__PAGE__.segment.rsc +1 -1
  27. package/dist/.next/server/app/[lang]/favorites/books.segments/$d$lang/favorites/books.segment.rsc +1 -1
  28. package/dist/.next/server/app/[lang]/favorites/books.segments/$d$lang/favorites.segment.rsc +1 -1
  29. package/dist/.next/server/app/[lang]/favorites/books.segments/$d$lang.segment.rsc +2 -2
  30. package/dist/.next/server/app/[lang]/favorites/books.segments/_full.segment.rsc +2 -2
  31. package/dist/.next/server/app/[lang]/favorites/books.segments/_head.segment.rsc +1 -1
  32. package/dist/.next/server/app/[lang]/favorites/books.segments/_index.segment.rsc +1 -1
  33. package/dist/.next/server/app/[lang]/favorites/books.segments/_tree.segment.rsc +2 -2
  34. package/dist/.next/server/app/[lang]/favorites/page/build-manifest.json +3 -3
  35. package/dist/.next/server/app/[lang]/favorites/page/server-reference-manifest.json +72 -12
  36. package/dist/.next/server/app/[lang]/favorites/page.js +14 -11
  37. package/dist/.next/server/app/[lang]/favorites/page.js.nft.json +1 -1
  38. package/dist/.next/server/app/[lang]/favorites/page_client-reference-manifest.js +1 -1
  39. package/dist/.next/server/app/[lang]/favorites.meta +2 -2
  40. package/dist/.next/server/app/[lang]/favorites.segments/$d$lang/favorites/__PAGE__.segment.rsc +1 -1
  41. package/dist/.next/server/app/[lang]/favorites.segments/$d$lang/favorites.segment.rsc +1 -1
  42. package/dist/.next/server/app/[lang]/favorites.segments/$d$lang.segment.rsc +2 -2
  43. package/dist/.next/server/app/[lang]/favorites.segments/_full.segment.rsc +2 -2
  44. package/dist/.next/server/app/[lang]/favorites.segments/_head.segment.rsc +1 -1
  45. package/dist/.next/server/app/[lang]/favorites.segments/_index.segment.rsc +1 -1
  46. package/dist/.next/server/app/[lang]/favorites.segments/_tree.segment.rsc +2 -2
  47. package/dist/.next/server/app/[lang]/login/page/build-manifest.json +3 -3
  48. package/dist/.next/server/app/[lang]/login/page/server-reference-manifest.json +5 -5
  49. package/dist/.next/server/app/[lang]/login/page.js +10 -7
  50. package/dist/.next/server/app/[lang]/login/page.js.nft.json +1 -1
  51. package/dist/.next/server/app/[lang]/login/page_client-reference-manifest.js +1 -1
  52. package/dist/.next/server/app/[lang]/login.meta +2 -2
  53. package/dist/.next/server/app/[lang]/login.segments/$d$lang/login/__PAGE__.segment.rsc +2 -2
  54. package/dist/.next/server/app/[lang]/login.segments/$d$lang/login.segment.rsc +1 -1
  55. package/dist/.next/server/app/[lang]/login.segments/$d$lang.segment.rsc +2 -2
  56. package/dist/.next/server/app/[lang]/login.segments/_full.segment.rsc +3 -3
  57. package/dist/.next/server/app/[lang]/login.segments/_head.segment.rsc +1 -1
  58. package/dist/.next/server/app/[lang]/login.segments/_index.segment.rsc +1 -1
  59. package/dist/.next/server/app/[lang]/login.segments/_tree.segment.rsc +2 -2
  60. package/dist/.next/server/app/[lang]/manga/[series]/page/build-manifest.json +3 -3
  61. package/dist/.next/server/app/[lang]/manga/[series]/page/server-reference-manifest.json +90 -30
  62. package/dist/.next/server/app/[lang]/manga/[series]/page.js +15 -13
  63. package/dist/.next/server/app/[lang]/manga/[series]/page.js.nft.json +1 -1
  64. package/dist/.next/server/app/[lang]/manga/[series]/page_client-reference-manifest.js +1 -1
  65. package/dist/.next/server/app/[lang]/manga/[series].meta +2 -2
  66. package/dist/.next/server/app/[lang]/manga/[series].segments/$d$lang/manga/$d$series/__PAGE__.segment.rsc +1 -1
  67. package/dist/.next/server/app/[lang]/manga/[series].segments/$d$lang/manga/$d$series.segment.rsc +1 -1
  68. package/dist/.next/server/app/[lang]/manga/[series].segments/$d$lang/manga.segment.rsc +1 -1
  69. package/dist/.next/server/app/[lang]/manga/[series].segments/$d$lang.segment.rsc +2 -2
  70. package/dist/.next/server/app/[lang]/manga/[series].segments/_full.segment.rsc +2 -2
  71. package/dist/.next/server/app/[lang]/manga/[series].segments/_head.segment.rsc +1 -1
  72. package/dist/.next/server/app/[lang]/manga/[series].segments/_index.segment.rsc +1 -1
  73. package/dist/.next/server/app/[lang]/manga/[series].segments/_tree.segment.rsc +2 -2
  74. package/dist/.next/server/app/[lang]/manga/page/build-manifest.json +3 -3
  75. package/dist/.next/server/app/[lang]/manga/page/server-reference-manifest.json +82 -22
  76. package/dist/.next/server/app/[lang]/manga/page.js +14 -11
  77. package/dist/.next/server/app/[lang]/manga/page.js.nft.json +1 -1
  78. package/dist/.next/server/app/[lang]/manga/page_client-reference-manifest.js +1 -1
  79. package/dist/.next/server/app/[lang]/manga/series/page/build-manifest.json +3 -3
  80. package/dist/.next/server/app/[lang]/manga/series/page/server-reference-manifest.json +78 -18
  81. package/dist/.next/server/app/[lang]/manga/series/page.js +14 -11
  82. package/dist/.next/server/app/[lang]/manga/series/page.js.nft.json +1 -1
  83. package/dist/.next/server/app/[lang]/manga/series/page_client-reference-manifest.js +1 -1
  84. package/dist/.next/server/app/[lang]/manga/series.meta +2 -2
  85. package/dist/.next/server/app/[lang]/manga/series.segments/$d$lang/manga/series/__PAGE__.segment.rsc +1 -1
  86. package/dist/.next/server/app/[lang]/manga/series.segments/$d$lang/manga/series.segment.rsc +1 -1
  87. package/dist/.next/server/app/[lang]/manga/series.segments/$d$lang/manga.segment.rsc +1 -1
  88. package/dist/.next/server/app/[lang]/manga/series.segments/$d$lang.segment.rsc +2 -2
  89. package/dist/.next/server/app/[lang]/manga/series.segments/_full.segment.rsc +2 -2
  90. package/dist/.next/server/app/[lang]/manga/series.segments/_head.segment.rsc +1 -1
  91. package/dist/.next/server/app/[lang]/manga/series.segments/_index.segment.rsc +1 -1
  92. package/dist/.next/server/app/[lang]/manga/series.segments/_tree.segment.rsc +2 -2
  93. package/dist/.next/server/app/[lang]/manga/toread/page/build-manifest.json +3 -3
  94. package/dist/.next/server/app/[lang]/manga/toread/page/server-reference-manifest.json +78 -18
  95. package/dist/.next/server/app/[lang]/manga/toread/page.js +14 -11
  96. package/dist/.next/server/app/[lang]/manga/toread/page.js.nft.json +1 -1
  97. package/dist/.next/server/app/[lang]/manga/toread/page_client-reference-manifest.js +1 -1
  98. package/dist/.next/server/app/[lang]/manga/toread.meta +2 -2
  99. package/dist/.next/server/app/[lang]/manga/toread.segments/$d$lang/manga/toread/__PAGE__.segment.rsc +1 -1
  100. package/dist/.next/server/app/[lang]/manga/toread.segments/$d$lang/manga/toread.segment.rsc +1 -1
  101. package/dist/.next/server/app/[lang]/manga/toread.segments/$d$lang/manga.segment.rsc +1 -1
  102. package/dist/.next/server/app/[lang]/manga/toread.segments/$d$lang.segment.rsc +2 -2
  103. package/dist/.next/server/app/[lang]/manga/toread.segments/_full.segment.rsc +2 -2
  104. package/dist/.next/server/app/[lang]/manga/toread.segments/_head.segment.rsc +1 -1
  105. package/dist/.next/server/app/[lang]/manga/toread.segments/_index.segment.rsc +1 -1
  106. package/dist/.next/server/app/[lang]/manga/toread.segments/_tree.segment.rsc +2 -2
  107. package/dist/.next/server/app/[lang]/manga/volume/[slug]/page/build-manifest.json +3 -3
  108. package/dist/.next/server/app/[lang]/manga/volume/[slug]/page/server-reference-manifest.json +102 -42
  109. package/dist/.next/server/app/[lang]/manga/volume/[slug]/page.js +15 -13
  110. package/dist/.next/server/app/[lang]/manga/volume/[slug]/page.js.nft.json +1 -1
  111. package/dist/.next/server/app/[lang]/manga/volume/[slug]/page_client-reference-manifest.js +1 -1
  112. package/dist/.next/server/app/[lang]/manga/volume/[slug].meta +2 -2
  113. package/dist/.next/server/app/[lang]/manga/volume/[slug].segments/$d$lang/manga/volume/$d$slug/__PAGE__.segment.rsc +1 -1
  114. package/dist/.next/server/app/[lang]/manga/volume/[slug].segments/$d$lang/manga/volume/$d$slug.segment.rsc +1 -1
  115. package/dist/.next/server/app/[lang]/manga/volume/[slug].segments/$d$lang/manga/volume.segment.rsc +1 -1
  116. package/dist/.next/server/app/[lang]/manga/volume/[slug].segments/$d$lang/manga.segment.rsc +1 -1
  117. package/dist/.next/server/app/[lang]/manga/volume/[slug].segments/$d$lang.segment.rsc +2 -2
  118. package/dist/.next/server/app/[lang]/manga/volume/[slug].segments/_full.segment.rsc +2 -2
  119. package/dist/.next/server/app/[lang]/manga/volume/[slug].segments/_head.segment.rsc +1 -1
  120. package/dist/.next/server/app/[lang]/manga/volume/[slug].segments/_index.segment.rsc +1 -1
  121. package/dist/.next/server/app/[lang]/manga/volume/[slug].segments/_tree.segment.rsc +2 -2
  122. package/dist/.next/server/app/[lang]/manga/volumes/page/build-manifest.json +3 -3
  123. package/dist/.next/server/app/[lang]/manga/volumes/page/server-reference-manifest.json +78 -18
  124. package/dist/.next/server/app/[lang]/manga/volumes/page.js +14 -11
  125. package/dist/.next/server/app/[lang]/manga/volumes/page.js.nft.json +1 -1
  126. package/dist/.next/server/app/[lang]/manga/volumes/page_client-reference-manifest.js +1 -1
  127. package/dist/.next/server/app/[lang]/manga/volumes.meta +2 -2
  128. package/dist/.next/server/app/[lang]/manga/volumes.segments/$d$lang/manga/volumes/__PAGE__.segment.rsc +1 -1
  129. package/dist/.next/server/app/[lang]/manga/volumes.segments/$d$lang/manga/volumes.segment.rsc +1 -1
  130. package/dist/.next/server/app/[lang]/manga/volumes.segments/$d$lang/manga.segment.rsc +1 -1
  131. package/dist/.next/server/app/[lang]/manga/volumes.segments/$d$lang.segment.rsc +2 -2
  132. package/dist/.next/server/app/[lang]/manga/volumes.segments/_full.segment.rsc +2 -2
  133. package/dist/.next/server/app/[lang]/manga/volumes.segments/_head.segment.rsc +1 -1
  134. package/dist/.next/server/app/[lang]/manga/volumes.segments/_index.segment.rsc +1 -1
  135. package/dist/.next/server/app/[lang]/manga/volumes.segments/_tree.segment.rsc +2 -2
  136. package/dist/.next/server/app/[lang]/manga.meta +2 -2
  137. package/dist/.next/server/app/[lang]/manga.segments/$d$lang/manga/__PAGE__.segment.rsc +1 -1
  138. package/dist/.next/server/app/[lang]/manga.segments/$d$lang/manga.segment.rsc +1 -1
  139. package/dist/.next/server/app/[lang]/manga.segments/$d$lang.segment.rsc +2 -2
  140. package/dist/.next/server/app/[lang]/manga.segments/_full.segment.rsc +2 -2
  141. package/dist/.next/server/app/[lang]/manga.segments/_head.segment.rsc +1 -1
  142. package/dist/.next/server/app/[lang]/manga.segments/_index.segment.rsc +1 -1
  143. package/dist/.next/server/app/[lang]/manga.segments/_tree.segment.rsc +2 -2
  144. package/dist/.next/server/app/[lang]/page/build-manifest.json +3 -3
  145. package/dist/.next/server/app/[lang]/page/server-reference-manifest.json +92 -32
  146. package/dist/.next/server/app/[lang]/page.js +14 -11
  147. package/dist/.next/server/app/[lang]/page.js.nft.json +1 -1
  148. package/dist/.next/server/app/[lang]/page_client-reference-manifest.js +1 -1
  149. package/dist/.next/server/app/[lang]/profile/notifications/page/build-manifest.json +3 -3
  150. package/dist/.next/server/app/[lang]/profile/notifications/page/server-reference-manifest.json +19 -19
  151. package/dist/.next/server/app/[lang]/profile/notifications/page.js +11 -8
  152. package/dist/.next/server/app/[lang]/profile/notifications/page.js.nft.json +1 -1
  153. package/dist/.next/server/app/[lang]/profile/notifications/page_client-reference-manifest.js +1 -1
  154. package/dist/.next/server/app/[lang]/profile/notifications.meta +2 -2
  155. package/dist/.next/server/app/[lang]/profile/notifications.segments/$d$lang/profile/notifications/__PAGE__.segment.rsc +1 -1
  156. package/dist/.next/server/app/[lang]/profile/notifications.segments/$d$lang/profile/notifications.segment.rsc +1 -1
  157. package/dist/.next/server/app/[lang]/profile/notifications.segments/$d$lang/profile.segment.rsc +1 -1
  158. package/dist/.next/server/app/[lang]/profile/notifications.segments/$d$lang.segment.rsc +2 -2
  159. package/dist/.next/server/app/[lang]/profile/notifications.segments/_full.segment.rsc +2 -2
  160. package/dist/.next/server/app/[lang]/profile/notifications.segments/_head.segment.rsc +1 -1
  161. package/dist/.next/server/app/[lang]/profile/notifications.segments/_index.segment.rsc +1 -1
  162. package/dist/.next/server/app/[lang]/profile/notifications.segments/_tree.segment.rsc +2 -2
  163. package/dist/.next/server/app/[lang]/profile/page/build-manifest.json +3 -3
  164. package/dist/.next/server/app/[lang]/profile/page/server-reference-manifest.json +9 -9
  165. package/dist/.next/server/app/[lang]/profile/page.js +13 -10
  166. package/dist/.next/server/app/[lang]/profile/page.js.nft.json +1 -1
  167. package/dist/.next/server/app/[lang]/profile/page_client-reference-manifest.js +1 -1
  168. package/dist/.next/server/app/[lang]/profile/update/page/build-manifest.json +3 -3
  169. package/dist/.next/server/app/[lang]/profile/update/page/server-reference-manifest.json +14 -14
  170. package/dist/.next/server/app/[lang]/profile/update/page.js +11 -8
  171. package/dist/.next/server/app/[lang]/profile/update/page.js.nft.json +1 -1
  172. package/dist/.next/server/app/[lang]/profile/update/page_client-reference-manifest.js +1 -1
  173. package/dist/.next/server/app/[lang]/profile/update.meta +2 -2
  174. package/dist/.next/server/app/[lang]/profile/update.segments/$d$lang/profile/update/__PAGE__.segment.rsc +1 -1
  175. package/dist/.next/server/app/[lang]/profile/update.segments/$d$lang/profile/update.segment.rsc +1 -1
  176. package/dist/.next/server/app/[lang]/profile/update.segments/$d$lang/profile.segment.rsc +1 -1
  177. package/dist/.next/server/app/[lang]/profile/update.segments/$d$lang.segment.rsc +2 -2
  178. package/dist/.next/server/app/[lang]/profile/update.segments/_full.segment.rsc +2 -2
  179. package/dist/.next/server/app/[lang]/profile/update.segments/_head.segment.rsc +1 -1
  180. package/dist/.next/server/app/[lang]/profile/update.segments/_index.segment.rsc +1 -1
  181. package/dist/.next/server/app/[lang]/profile/update.segments/_tree.segment.rsc +2 -2
  182. package/dist/.next/server/app/[lang]/profile.meta +2 -2
  183. package/dist/.next/server/app/[lang]/profile.segments/$d$lang/profile/__PAGE__.segment.rsc +1 -1
  184. package/dist/.next/server/app/[lang]/profile.segments/$d$lang/profile.segment.rsc +1 -1
  185. package/dist/.next/server/app/[lang]/profile.segments/$d$lang.segment.rsc +2 -2
  186. package/dist/.next/server/app/[lang]/profile.segments/_full.segment.rsc +2 -2
  187. package/dist/.next/server/app/[lang]/profile.segments/_head.segment.rsc +1 -1
  188. package/dist/.next/server/app/[lang]/profile.segments/_index.segment.rsc +1 -1
  189. package/dist/.next/server/app/[lang]/profile.segments/_tree.segment.rsc +2 -2
  190. package/dist/.next/server/app/[lang]/search/page/build-manifest.json +3 -3
  191. package/dist/.next/server/app/[lang]/search/page/server-reference-manifest.json +4 -4
  192. package/dist/.next/server/app/[lang]/search/page.js +10 -7
  193. package/dist/.next/server/app/[lang]/search/page.js.nft.json +1 -1
  194. package/dist/.next/server/app/[lang]/search/page_client-reference-manifest.js +1 -1
  195. package/dist/.next/server/app/[lang]/search.meta +2 -2
  196. package/dist/.next/server/app/[lang]/search.segments/$d$lang/search/__PAGE__.segment.rsc +1 -1
  197. package/dist/.next/server/app/[lang]/search.segments/$d$lang/search.segment.rsc +1 -1
  198. package/dist/.next/server/app/[lang]/search.segments/$d$lang.segment.rsc +2 -2
  199. package/dist/.next/server/app/[lang]/search.segments/_full.segment.rsc +2 -2
  200. package/dist/.next/server/app/[lang]/search.segments/_head.segment.rsc +1 -1
  201. package/dist/.next/server/app/[lang]/search.segments/_index.segment.rsc +1 -1
  202. package/dist/.next/server/app/[lang]/search.segments/_tree.segment.rsc +2 -2
  203. package/dist/.next/server/app/[lang]/settings/library/page/build-manifest.json +3 -3
  204. package/dist/.next/server/app/[lang]/settings/library/page/server-reference-manifest.json +10 -10
  205. package/dist/.next/server/app/[lang]/settings/library/page.js +11 -8
  206. package/dist/.next/server/app/[lang]/settings/library/page.js.nft.json +1 -1
  207. package/dist/.next/server/app/[lang]/settings/library/page_client-reference-manifest.js +1 -1
  208. package/dist/.next/server/app/[lang]/settings/library.meta +2 -2
  209. package/dist/.next/server/app/[lang]/settings/library.segments/$d$lang/settings/library/__PAGE__.segment.rsc +1 -1
  210. package/dist/.next/server/app/[lang]/settings/library.segments/$d$lang/settings/library.segment.rsc +1 -1
  211. package/dist/.next/server/app/[lang]/settings/library.segments/$d$lang/settings.segment.rsc +1 -1
  212. package/dist/.next/server/app/[lang]/settings/library.segments/$d$lang.segment.rsc +2 -2
  213. package/dist/.next/server/app/[lang]/settings/library.segments/_full.segment.rsc +2 -2
  214. package/dist/.next/server/app/[lang]/settings/library.segments/_head.segment.rsc +1 -1
  215. package/dist/.next/server/app/[lang]/settings/library.segments/_index.segment.rsc +1 -1
  216. package/dist/.next/server/app/[lang]/settings/library.segments/_tree.segment.rsc +2 -2
  217. package/dist/.next/server/app/[lang]/settings/page/build-manifest.json +3 -3
  218. package/dist/.next/server/app/[lang]/settings/page/server-reference-manifest.json +9 -9
  219. package/dist/.next/server/app/[lang]/settings/page.js +11 -8
  220. package/dist/.next/server/app/[lang]/settings/page.js.nft.json +1 -1
  221. package/dist/.next/server/app/[lang]/settings/page_client-reference-manifest.js +1 -1
  222. package/dist/.next/server/app/[lang]/settings.meta +2 -2
  223. package/dist/.next/server/app/[lang]/settings.segments/$d$lang/settings/__PAGE__.segment.rsc +1 -1
  224. package/dist/.next/server/app/[lang]/settings.segments/$d$lang/settings.segment.rsc +1 -1
  225. package/dist/.next/server/app/[lang]/settings.segments/$d$lang.segment.rsc +2 -2
  226. package/dist/.next/server/app/[lang]/settings.segments/_full.segment.rsc +2 -2
  227. package/dist/.next/server/app/[lang]/settings.segments/_head.segment.rsc +1 -1
  228. package/dist/.next/server/app/[lang]/settings.segments/_index.segment.rsc +1 -1
  229. package/dist/.next/server/app/[lang]/settings.segments/_tree.segment.rsc +2 -2
  230. package/dist/.next/server/app/[lang].meta +2 -2
  231. package/dist/.next/server/app/[lang].segments/$d$lang/__PAGE__.segment.rsc +1 -1
  232. package/dist/.next/server/app/[lang].segments/$d$lang.segment.rsc +2 -2
  233. package/dist/.next/server/app/[lang].segments/_full.segment.rsc +2 -2
  234. package/dist/.next/server/app/[lang].segments/_head.segment.rsc +1 -1
  235. package/dist/.next/server/app/[lang].segments/_index.segment.rsc +1 -1
  236. package/dist/.next/server/app/[lang].segments/_tree.segment.rsc +2 -2
  237. package/dist/.next/server/app/_global-error/page/build-manifest.json +3 -3
  238. package/dist/.next/server/app/_global-error/page.js +3 -2
  239. package/dist/.next/server/app/_global-error/page.js.nft.json +1 -1
  240. package/dist/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  241. package/dist/.next/server/app/_global-error.html +1 -1
  242. package/dist/.next/server/app/_global-error.rsc +1 -1
  243. package/dist/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  244. package/dist/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  245. package/dist/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  246. package/dist/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  247. package/dist/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  248. package/dist/.next/server/app/_not-found/page/build-manifest.json +3 -3
  249. package/dist/.next/server/app/_not-found/page.js +3 -2
  250. package/dist/.next/server/app/_not-found/page.js.nft.json +1 -1
  251. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  252. package/dist/.next/server/app/_not-found.html +1 -1
  253. package/dist/.next/server/app/_not-found.rsc +1 -1
  254. package/dist/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  255. package/dist/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  256. package/dist/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  257. package/dist/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  258. package/dist/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  259. package/dist/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  260. package/dist/.next/server/app/api/admin/db/download/route.js +2 -2
  261. package/dist/.next/server/app/api/admin/db/download/route.js.nft.json +1 -1
  262. package/dist/.next/server/app/api/admin/db/upload/route.js +2 -2
  263. package/dist/.next/server/app/api/admin/db/upload/route.js.nft.json +1 -1
  264. package/dist/.next/server/app/api/admin/scan-manga/extract-cover/route.js +6 -5
  265. package/dist/.next/server/app/api/admin/scan-manga/extract-cover/route.js.nft.json +1 -1
  266. package/dist/.next/server/app/api/admin/scan-manga/extract-meta/route.js +7 -6
  267. package/dist/.next/server/app/api/admin/scan-manga/extract-meta/route.js.nft.json +1 -1
  268. package/dist/.next/server/app/api/admin/scan-manga/index-library/route.js +5 -4
  269. package/dist/.next/server/app/api/admin/scan-manga/index-library/route.js.nft.json +1 -1
  270. package/dist/.next/server/app/api/admin/scan-manga/start/route.js +5 -4
  271. package/dist/.next/server/app/api/admin/scan-manga/start/route.js.nft.json +1 -1
  272. package/dist/.next/server/app/api/admin/scan-manga/status/route.js +2 -2
  273. package/dist/.next/server/app/api/admin/scan-manga/status/route.js.nft.json +1 -1
  274. package/dist/.next/server/app/api/admin/upload/confirm/route.js +5 -4
  275. package/dist/.next/server/app/api/admin/upload/confirm/route.js.nft.json +1 -1
  276. package/dist/.next/server/app/api/admin/upload/library/chunk/route.js +5 -4
  277. package/dist/.next/server/app/api/admin/upload/library/chunk/route.js.nft.json +1 -1
  278. package/dist/.next/server/app/api/admin/upload/library/route.js +2 -2
  279. package/dist/.next/server/app/api/admin/upload/library/route.js.nft.json +1 -1
  280. package/dist/.next/server/app/api/admin/upload/presigned/route.js +2 -2
  281. package/dist/.next/server/app/api/admin/upload/presigned/route.js.nft.json +1 -1
  282. package/dist/.next/server/app/api/library/manga/cover/[...slug]/route.js +3 -3
  283. package/dist/.next/server/app/api/library/manga/cover/[...slug]/route.js.nft.json +1 -1
  284. package/dist/.next/server/app/api/profile/[file]/route/app-paths-manifest.json +3 -0
  285. package/dist/.next/server/app/api/profile/[file]/route/build-manifest.json +9 -0
  286. package/dist/.next/server/app/api/profile/[file]/route/server-reference-manifest.json +4 -0
  287. package/dist/.next/server/app/api/profile/[file]/route.js +6 -0
  288. package/dist/.next/server/app/api/profile/[file]/route.js.map +5 -0
  289. package/dist/.next/server/app/api/profile/[file]/route.js.nft.json +1 -0
  290. package/dist/.next/server/app/api/profile/[file]/route_client-reference-manifest.js +3 -0
  291. package/dist/.next/server/app/api/reader/manga/route.js +6 -5
  292. package/dist/.next/server/app/api/reader/manga/route.js.nft.json +1 -1
  293. package/dist/.next/server/app/api/reader/temp-image/route.js +2 -2
  294. package/dist/.next/server/app/api/reader/temp-image/route.js.nft.json +1 -1
  295. package/dist/.next/server/app/en/books.html +1 -1
  296. package/dist/.next/server/app/en/books.meta +1 -1
  297. package/dist/.next/server/app/en/books.segments/$d$lang/books/__PAGE__.segment.rsc +2 -2
  298. package/dist/.next/server/app/en/books.segments/$d$lang/books.segment.rsc +1 -1
  299. package/dist/.next/server/app/en/books.segments/$d$lang.segment.rsc +3 -3
  300. package/dist/.next/server/app/en/books.segments/_full.segment.rsc +4 -4
  301. package/dist/.next/server/app/en/books.segments/_head.segment.rsc +1 -1
  302. package/dist/.next/server/app/en/books.segments/_index.segment.rsc +1 -1
  303. package/dist/.next/server/app/en/books.segments/_tree.segment.rsc +2 -2
  304. package/dist/.next/server/app/en/favorites/books.html +1 -1
  305. package/dist/.next/server/app/en/favorites/books.meta +1 -1
  306. package/dist/.next/server/app/en/favorites/books.segments/$d$lang/favorites/books/__PAGE__.segment.rsc +2 -2
  307. package/dist/.next/server/app/en/favorites/books.segments/$d$lang/favorites/books.segment.rsc +1 -1
  308. package/dist/.next/server/app/en/favorites/books.segments/$d$lang/favorites.segment.rsc +3 -3
  309. package/dist/.next/server/app/en/favorites/books.segments/$d$lang.segment.rsc +3 -3
  310. package/dist/.next/server/app/en/favorites/books.segments/_full.segment.rsc +6 -6
  311. package/dist/.next/server/app/en/favorites/books.segments/_head.segment.rsc +1 -1
  312. package/dist/.next/server/app/en/favorites/books.segments/_index.segment.rsc +1 -1
  313. package/dist/.next/server/app/en/favorites/books.segments/_tree.segment.rsc +2 -2
  314. package/dist/.next/server/app/en/favorites.html +1 -1
  315. package/dist/.next/server/app/en/favorites.meta +1 -1
  316. package/dist/.next/server/app/en/favorites.segments/$d$lang/favorites/__PAGE__.segment.rsc +1 -1
  317. package/dist/.next/server/app/en/favorites.segments/$d$lang/favorites.segment.rsc +3 -3
  318. package/dist/.next/server/app/en/favorites.segments/$d$lang.segment.rsc +3 -3
  319. package/dist/.next/server/app/en/favorites.segments/_full.segment.rsc +6 -6
  320. package/dist/.next/server/app/en/favorites.segments/_head.segment.rsc +1 -1
  321. package/dist/.next/server/app/en/favorites.segments/_index.segment.rsc +1 -1
  322. package/dist/.next/server/app/en/favorites.segments/_tree.segment.rsc +2 -2
  323. package/dist/.next/server/app/en/login.html +1 -1
  324. package/dist/.next/server/app/en/login.meta +1 -1
  325. package/dist/.next/server/app/en/login.segments/$d$lang/login/__PAGE__.segment.rsc +4 -4
  326. package/dist/.next/server/app/en/login.segments/$d$lang/login.segment.rsc +1 -1
  327. package/dist/.next/server/app/en/login.segments/$d$lang.segment.rsc +3 -3
  328. package/dist/.next/server/app/en/login.segments/_full.segment.rsc +6 -6
  329. package/dist/.next/server/app/en/login.segments/_head.segment.rsc +1 -1
  330. package/dist/.next/server/app/en/login.segments/_index.segment.rsc +1 -1
  331. package/dist/.next/server/app/en/login.segments/_tree.segment.rsc +2 -2
  332. package/dist/.next/server/app/en/manga/[series].html +1 -1
  333. package/dist/.next/server/app/en/manga/[series].meta +1 -1
  334. package/dist/.next/server/app/en/manga/[series].segments/$d$lang/manga/$d$series/__PAGE__.segment.rsc +1 -1
  335. package/dist/.next/server/app/en/manga/[series].segments/$d$lang/manga/$d$series.segment.rsc +1 -1
  336. package/dist/.next/server/app/en/manga/[series].segments/$d$lang/manga.segment.rsc +2 -2
  337. package/dist/.next/server/app/en/manga/[series].segments/$d$lang.segment.rsc +3 -3
  338. package/dist/.next/server/app/en/manga/[series].segments/_full.segment.rsc +5 -5
  339. package/dist/.next/server/app/en/manga/[series].segments/_head.segment.rsc +1 -1
  340. package/dist/.next/server/app/en/manga/[series].segments/_index.segment.rsc +1 -1
  341. package/dist/.next/server/app/en/manga/[series].segments/_tree.segment.rsc +2 -2
  342. package/dist/.next/server/app/en/manga/series.html +1 -1
  343. package/dist/.next/server/app/en/manga/series.meta +1 -1
  344. package/dist/.next/server/app/en/manga/series.segments/$d$lang/manga/series/__PAGE__.segment.rsc +1 -1
  345. package/dist/.next/server/app/en/manga/series.segments/$d$lang/manga/series.segment.rsc +1 -1
  346. package/dist/.next/server/app/en/manga/series.segments/$d$lang/manga.segment.rsc +2 -2
  347. package/dist/.next/server/app/en/manga/series.segments/$d$lang.segment.rsc +3 -3
  348. package/dist/.next/server/app/en/manga/series.segments/_full.segment.rsc +5 -5
  349. package/dist/.next/server/app/en/manga/series.segments/_head.segment.rsc +1 -1
  350. package/dist/.next/server/app/en/manga/series.segments/_index.segment.rsc +1 -1
  351. package/dist/.next/server/app/en/manga/series.segments/_tree.segment.rsc +2 -2
  352. package/dist/.next/server/app/en/manga/toread.html +1 -1
  353. package/dist/.next/server/app/en/manga/toread.meta +1 -1
  354. package/dist/.next/server/app/en/manga/toread.segments/$d$lang/manga/toread/__PAGE__.segment.rsc +1 -1
  355. package/dist/.next/server/app/en/manga/toread.segments/$d$lang/manga/toread.segment.rsc +1 -1
  356. package/dist/.next/server/app/en/manga/toread.segments/$d$lang/manga.segment.rsc +2 -2
  357. package/dist/.next/server/app/en/manga/toread.segments/$d$lang.segment.rsc +3 -3
  358. package/dist/.next/server/app/en/manga/toread.segments/_full.segment.rsc +5 -5
  359. package/dist/.next/server/app/en/manga/toread.segments/_head.segment.rsc +1 -1
  360. package/dist/.next/server/app/en/manga/toread.segments/_index.segment.rsc +1 -1
  361. package/dist/.next/server/app/en/manga/toread.segments/_tree.segment.rsc +2 -2
  362. package/dist/.next/server/app/en/manga/volume/[slug].html +1 -1
  363. package/dist/.next/server/app/en/manga/volume/[slug].meta +1 -1
  364. package/dist/.next/server/app/en/manga/volume/[slug].segments/$d$lang/manga/volume/$d$slug/__PAGE__.segment.rsc +1 -1
  365. package/dist/.next/server/app/en/manga/volume/[slug].segments/$d$lang/manga/volume/$d$slug.segment.rsc +1 -1
  366. package/dist/.next/server/app/en/manga/volume/[slug].segments/$d$lang/manga/volume.segment.rsc +1 -1
  367. package/dist/.next/server/app/en/manga/volume/[slug].segments/$d$lang/manga.segment.rsc +2 -2
  368. package/dist/.next/server/app/en/manga/volume/[slug].segments/$d$lang.segment.rsc +3 -3
  369. package/dist/.next/server/app/en/manga/volume/[slug].segments/_full.segment.rsc +5 -5
  370. package/dist/.next/server/app/en/manga/volume/[slug].segments/_head.segment.rsc +1 -1
  371. package/dist/.next/server/app/en/manga/volume/[slug].segments/_index.segment.rsc +1 -1
  372. package/dist/.next/server/app/en/manga/volume/[slug].segments/_tree.segment.rsc +2 -2
  373. package/dist/.next/server/app/en/manga/volumes.html +1 -1
  374. package/dist/.next/server/app/en/manga/volumes.meta +1 -1
  375. package/dist/.next/server/app/en/manga/volumes.segments/$d$lang/manga/volumes/__PAGE__.segment.rsc +1 -1
  376. package/dist/.next/server/app/en/manga/volumes.segments/$d$lang/manga/volumes.segment.rsc +1 -1
  377. package/dist/.next/server/app/en/manga/volumes.segments/$d$lang/manga.segment.rsc +2 -2
  378. package/dist/.next/server/app/en/manga/volumes.segments/$d$lang.segment.rsc +3 -3
  379. package/dist/.next/server/app/en/manga/volumes.segments/_full.segment.rsc +5 -5
  380. package/dist/.next/server/app/en/manga/volumes.segments/_head.segment.rsc +1 -1
  381. package/dist/.next/server/app/en/manga/volumes.segments/_index.segment.rsc +1 -1
  382. package/dist/.next/server/app/en/manga/volumes.segments/_tree.segment.rsc +2 -2
  383. package/dist/.next/server/app/en/manga.html +1 -1
  384. package/dist/.next/server/app/en/manga.meta +1 -1
  385. package/dist/.next/server/app/en/manga.segments/$d$lang/manga/__PAGE__.segment.rsc +2 -2
  386. package/dist/.next/server/app/en/manga.segments/$d$lang/manga.segment.rsc +2 -2
  387. package/dist/.next/server/app/en/manga.segments/$d$lang.segment.rsc +3 -3
  388. package/dist/.next/server/app/en/manga.segments/_full.segment.rsc +6 -6
  389. package/dist/.next/server/app/en/manga.segments/_head.segment.rsc +1 -1
  390. package/dist/.next/server/app/en/manga.segments/_index.segment.rsc +1 -1
  391. package/dist/.next/server/app/en/manga.segments/_tree.segment.rsc +2 -2
  392. package/dist/.next/server/app/en/profile/notifications.html +1 -1
  393. package/dist/.next/server/app/en/profile/notifications.meta +1 -1
  394. package/dist/.next/server/app/en/profile/notifications.segments/$d$lang/profile/notifications/__PAGE__.segment.rsc +1 -1
  395. package/dist/.next/server/app/en/profile/notifications.segments/$d$lang/profile/notifications.segment.rsc +1 -1
  396. package/dist/.next/server/app/en/profile/notifications.segments/$d$lang/profile.segment.rsc +3 -3
  397. package/dist/.next/server/app/en/profile/notifications.segments/$d$lang.segment.rsc +3 -3
  398. package/dist/.next/server/app/en/profile/notifications.segments/_full.segment.rsc +6 -6
  399. package/dist/.next/server/app/en/profile/notifications.segments/_head.segment.rsc +1 -1
  400. package/dist/.next/server/app/en/profile/notifications.segments/_index.segment.rsc +1 -1
  401. package/dist/.next/server/app/en/profile/notifications.segments/_tree.segment.rsc +2 -2
  402. package/dist/.next/server/app/en/profile/update.html +1 -1
  403. package/dist/.next/server/app/en/profile/update.meta +1 -1
  404. package/dist/.next/server/app/en/profile/update.segments/$d$lang/profile/update/__PAGE__.segment.rsc +1 -1
  405. package/dist/.next/server/app/en/profile/update.segments/$d$lang/profile/update.segment.rsc +1 -1
  406. package/dist/.next/server/app/en/profile/update.segments/$d$lang/profile.segment.rsc +3 -3
  407. package/dist/.next/server/app/en/profile/update.segments/$d$lang.segment.rsc +3 -3
  408. package/dist/.next/server/app/en/profile/update.segments/_full.segment.rsc +6 -6
  409. package/dist/.next/server/app/en/profile/update.segments/_head.segment.rsc +1 -1
  410. package/dist/.next/server/app/en/profile/update.segments/_index.segment.rsc +1 -1
  411. package/dist/.next/server/app/en/profile/update.segments/_tree.segment.rsc +2 -2
  412. package/dist/.next/server/app/en/profile.html +1 -1
  413. package/dist/.next/server/app/en/profile.meta +1 -1
  414. package/dist/.next/server/app/en/profile.segments/$d$lang/profile/__PAGE__.segment.rsc +7 -7
  415. package/dist/.next/server/app/en/profile.segments/$d$lang/profile.segment.rsc +3 -3
  416. package/dist/.next/server/app/en/profile.segments/$d$lang.segment.rsc +3 -3
  417. package/dist/.next/server/app/en/profile.segments/_full.segment.rsc +10 -10
  418. package/dist/.next/server/app/en/profile.segments/_head.segment.rsc +1 -1
  419. package/dist/.next/server/app/en/profile.segments/_index.segment.rsc +1 -1
  420. package/dist/.next/server/app/en/profile.segments/_tree.segment.rsc +2 -2
  421. package/dist/.next/server/app/en/search.html +1 -1
  422. package/dist/.next/server/app/en/search.meta +1 -1
  423. package/dist/.next/server/app/en/search.segments/$d$lang/search/__PAGE__.segment.rsc +3 -3
  424. package/dist/.next/server/app/en/search.segments/$d$lang/search.segment.rsc +1 -1
  425. package/dist/.next/server/app/en/search.segments/$d$lang.segment.rsc +3 -3
  426. package/dist/.next/server/app/en/search.segments/_full.segment.rsc +5 -5
  427. package/dist/.next/server/app/en/search.segments/_head.segment.rsc +1 -1
  428. package/dist/.next/server/app/en/search.segments/_index.segment.rsc +1 -1
  429. package/dist/.next/server/app/en/search.segments/_tree.segment.rsc +2 -2
  430. package/dist/.next/server/app/en/settings/library.html +1 -1
  431. package/dist/.next/server/app/en/settings/library.meta +1 -1
  432. package/dist/.next/server/app/en/settings/library.segments/$d$lang/settings/library/__PAGE__.segment.rsc +4 -4
  433. package/dist/.next/server/app/en/settings/library.segments/$d$lang/settings/library.segment.rsc +1 -1
  434. package/dist/.next/server/app/en/settings/library.segments/$d$lang/settings.segment.rsc +3 -3
  435. package/dist/.next/server/app/en/settings/library.segments/$d$lang.segment.rsc +3 -3
  436. package/dist/.next/server/app/en/settings/library.segments/_full.segment.rsc +7 -7
  437. package/dist/.next/server/app/en/settings/library.segments/_head.segment.rsc +1 -1
  438. package/dist/.next/server/app/en/settings/library.segments/_index.segment.rsc +1 -1
  439. package/dist/.next/server/app/en/settings/library.segments/_tree.segment.rsc +2 -2
  440. package/dist/.next/server/app/en/settings.html +1 -1
  441. package/dist/.next/server/app/en/settings.meta +1 -1
  442. package/dist/.next/server/app/en/settings.segments/$d$lang/settings/__PAGE__.segment.rsc +1 -1
  443. package/dist/.next/server/app/en/settings.segments/$d$lang/settings.segment.rsc +3 -3
  444. package/dist/.next/server/app/en/settings.segments/$d$lang.segment.rsc +3 -3
  445. package/dist/.next/server/app/en/settings.segments/_full.segment.rsc +6 -6
  446. package/dist/.next/server/app/en/settings.segments/_head.segment.rsc +1 -1
  447. package/dist/.next/server/app/en/settings.segments/_index.segment.rsc +1 -1
  448. package/dist/.next/server/app/en/settings.segments/_tree.segment.rsc +2 -2
  449. package/dist/.next/server/app/en.html +1 -1
  450. package/dist/.next/server/app/en.meta +1 -1
  451. package/dist/.next/server/app/en.segments/$d$lang/__PAGE__.segment.rsc +6 -6
  452. package/dist/.next/server/app/en.segments/$d$lang.segment.rsc +3 -3
  453. package/dist/.next/server/app/en.segments/_full.segment.rsc +8 -8
  454. package/dist/.next/server/app/en.segments/_head.segment.rsc +1 -1
  455. package/dist/.next/server/app/en.segments/_index.segment.rsc +1 -1
  456. package/dist/.next/server/app/en.segments/_tree.segment.rsc +2 -2
  457. package/dist/.next/server/app/es/books.html +1 -1
  458. package/dist/.next/server/app/es/books.meta +1 -1
  459. package/dist/.next/server/app/es/books.segments/$d$lang/books/__PAGE__.segment.rsc +2 -2
  460. package/dist/.next/server/app/es/books.segments/$d$lang/books.segment.rsc +1 -1
  461. package/dist/.next/server/app/es/books.segments/$d$lang.segment.rsc +3 -3
  462. package/dist/.next/server/app/es/books.segments/_full.segment.rsc +4 -4
  463. package/dist/.next/server/app/es/books.segments/_head.segment.rsc +1 -1
  464. package/dist/.next/server/app/es/books.segments/_index.segment.rsc +1 -1
  465. package/dist/.next/server/app/es/books.segments/_tree.segment.rsc +2 -2
  466. package/dist/.next/server/app/es/favorites/books.html +1 -1
  467. package/dist/.next/server/app/es/favorites/books.meta +1 -1
  468. package/dist/.next/server/app/es/favorites/books.segments/$d$lang/favorites/books/__PAGE__.segment.rsc +2 -2
  469. package/dist/.next/server/app/es/favorites/books.segments/$d$lang/favorites/books.segment.rsc +1 -1
  470. package/dist/.next/server/app/es/favorites/books.segments/$d$lang/favorites.segment.rsc +3 -3
  471. package/dist/.next/server/app/es/favorites/books.segments/$d$lang.segment.rsc +3 -3
  472. package/dist/.next/server/app/es/favorites/books.segments/_full.segment.rsc +6 -6
  473. package/dist/.next/server/app/es/favorites/books.segments/_head.segment.rsc +1 -1
  474. package/dist/.next/server/app/es/favorites/books.segments/_index.segment.rsc +1 -1
  475. package/dist/.next/server/app/es/favorites/books.segments/_tree.segment.rsc +2 -2
  476. package/dist/.next/server/app/es/favorites.html +1 -1
  477. package/dist/.next/server/app/es/favorites.meta +1 -1
  478. package/dist/.next/server/app/es/favorites.segments/$d$lang/favorites/__PAGE__.segment.rsc +1 -1
  479. package/dist/.next/server/app/es/favorites.segments/$d$lang/favorites.segment.rsc +3 -3
  480. package/dist/.next/server/app/es/favorites.segments/$d$lang.segment.rsc +3 -3
  481. package/dist/.next/server/app/es/favorites.segments/_full.segment.rsc +6 -6
  482. package/dist/.next/server/app/es/favorites.segments/_head.segment.rsc +1 -1
  483. package/dist/.next/server/app/es/favorites.segments/_index.segment.rsc +1 -1
  484. package/dist/.next/server/app/es/favorites.segments/_tree.segment.rsc +2 -2
  485. package/dist/.next/server/app/es/login.html +1 -1
  486. package/dist/.next/server/app/es/login.meta +1 -1
  487. package/dist/.next/server/app/es/login.segments/$d$lang/login/__PAGE__.segment.rsc +4 -4
  488. package/dist/.next/server/app/es/login.segments/$d$lang/login.segment.rsc +1 -1
  489. package/dist/.next/server/app/es/login.segments/$d$lang.segment.rsc +3 -3
  490. package/dist/.next/server/app/es/login.segments/_full.segment.rsc +6 -6
  491. package/dist/.next/server/app/es/login.segments/_head.segment.rsc +1 -1
  492. package/dist/.next/server/app/es/login.segments/_index.segment.rsc +1 -1
  493. package/dist/.next/server/app/es/login.segments/_tree.segment.rsc +2 -2
  494. package/dist/.next/server/app/es/manga/[series].html +1 -1
  495. package/dist/.next/server/app/es/manga/[series].meta +1 -1
  496. package/dist/.next/server/app/es/manga/[series].segments/$d$lang/manga/$d$series/__PAGE__.segment.rsc +1 -1
  497. package/dist/.next/server/app/es/manga/[series].segments/$d$lang/manga/$d$series.segment.rsc +1 -1
  498. package/dist/.next/server/app/es/manga/[series].segments/$d$lang/manga.segment.rsc +2 -2
  499. package/dist/.next/server/app/es/manga/[series].segments/$d$lang.segment.rsc +3 -3
  500. package/dist/.next/server/app/es/manga/[series].segments/_full.segment.rsc +5 -5
  501. package/dist/.next/server/app/es/manga/[series].segments/_head.segment.rsc +1 -1
  502. package/dist/.next/server/app/es/manga/[series].segments/_index.segment.rsc +1 -1
  503. package/dist/.next/server/app/es/manga/[series].segments/_tree.segment.rsc +2 -2
  504. package/dist/.next/server/app/es/manga/series.html +1 -1
  505. package/dist/.next/server/app/es/manga/series.meta +1 -1
  506. package/dist/.next/server/app/es/manga/series.segments/$d$lang/manga/series/__PAGE__.segment.rsc +1 -1
  507. package/dist/.next/server/app/es/manga/series.segments/$d$lang/manga/series.segment.rsc +1 -1
  508. package/dist/.next/server/app/es/manga/series.segments/$d$lang/manga.segment.rsc +2 -2
  509. package/dist/.next/server/app/es/manga/series.segments/$d$lang.segment.rsc +3 -3
  510. package/dist/.next/server/app/es/manga/series.segments/_full.segment.rsc +5 -5
  511. package/dist/.next/server/app/es/manga/series.segments/_head.segment.rsc +1 -1
  512. package/dist/.next/server/app/es/manga/series.segments/_index.segment.rsc +1 -1
  513. package/dist/.next/server/app/es/manga/series.segments/_tree.segment.rsc +2 -2
  514. package/dist/.next/server/app/es/manga/toread.html +1 -1
  515. package/dist/.next/server/app/es/manga/toread.meta +1 -1
  516. package/dist/.next/server/app/es/manga/toread.segments/$d$lang/manga/toread/__PAGE__.segment.rsc +1 -1
  517. package/dist/.next/server/app/es/manga/toread.segments/$d$lang/manga/toread.segment.rsc +1 -1
  518. package/dist/.next/server/app/es/manga/toread.segments/$d$lang/manga.segment.rsc +2 -2
  519. package/dist/.next/server/app/es/manga/toread.segments/$d$lang.segment.rsc +3 -3
  520. package/dist/.next/server/app/es/manga/toread.segments/_full.segment.rsc +5 -5
  521. package/dist/.next/server/app/es/manga/toread.segments/_head.segment.rsc +1 -1
  522. package/dist/.next/server/app/es/manga/toread.segments/_index.segment.rsc +1 -1
  523. package/dist/.next/server/app/es/manga/toread.segments/_tree.segment.rsc +2 -2
  524. package/dist/.next/server/app/es/manga/volume/[slug].html +1 -1
  525. package/dist/.next/server/app/es/manga/volume/[slug].meta +1 -1
  526. package/dist/.next/server/app/es/manga/volume/[slug].segments/$d$lang/manga/volume/$d$slug/__PAGE__.segment.rsc +1 -1
  527. package/dist/.next/server/app/es/manga/volume/[slug].segments/$d$lang/manga/volume/$d$slug.segment.rsc +1 -1
  528. package/dist/.next/server/app/es/manga/volume/[slug].segments/$d$lang/manga/volume.segment.rsc +1 -1
  529. package/dist/.next/server/app/es/manga/volume/[slug].segments/$d$lang/manga.segment.rsc +2 -2
  530. package/dist/.next/server/app/es/manga/volume/[slug].segments/$d$lang.segment.rsc +3 -3
  531. package/dist/.next/server/app/es/manga/volume/[slug].segments/_full.segment.rsc +5 -5
  532. package/dist/.next/server/app/es/manga/volume/[slug].segments/_head.segment.rsc +1 -1
  533. package/dist/.next/server/app/es/manga/volume/[slug].segments/_index.segment.rsc +1 -1
  534. package/dist/.next/server/app/es/manga/volume/[slug].segments/_tree.segment.rsc +2 -2
  535. package/dist/.next/server/app/es/manga/volumes.html +1 -1
  536. package/dist/.next/server/app/es/manga/volumes.meta +1 -1
  537. package/dist/.next/server/app/es/manga/volumes.segments/$d$lang/manga/volumes/__PAGE__.segment.rsc +1 -1
  538. package/dist/.next/server/app/es/manga/volumes.segments/$d$lang/manga/volumes.segment.rsc +1 -1
  539. package/dist/.next/server/app/es/manga/volumes.segments/$d$lang/manga.segment.rsc +2 -2
  540. package/dist/.next/server/app/es/manga/volumes.segments/$d$lang.segment.rsc +3 -3
  541. package/dist/.next/server/app/es/manga/volumes.segments/_full.segment.rsc +5 -5
  542. package/dist/.next/server/app/es/manga/volumes.segments/_head.segment.rsc +1 -1
  543. package/dist/.next/server/app/es/manga/volumes.segments/_index.segment.rsc +1 -1
  544. package/dist/.next/server/app/es/manga/volumes.segments/_tree.segment.rsc +2 -2
  545. package/dist/.next/server/app/es/manga.html +1 -1
  546. package/dist/.next/server/app/es/manga.meta +1 -1
  547. package/dist/.next/server/app/es/manga.segments/$d$lang/manga/__PAGE__.segment.rsc +2 -2
  548. package/dist/.next/server/app/es/manga.segments/$d$lang/manga.segment.rsc +2 -2
  549. package/dist/.next/server/app/es/manga.segments/$d$lang.segment.rsc +3 -3
  550. package/dist/.next/server/app/es/manga.segments/_full.segment.rsc +6 -6
  551. package/dist/.next/server/app/es/manga.segments/_head.segment.rsc +1 -1
  552. package/dist/.next/server/app/es/manga.segments/_index.segment.rsc +1 -1
  553. package/dist/.next/server/app/es/manga.segments/_tree.segment.rsc +2 -2
  554. package/dist/.next/server/app/es/profile/notifications.html +1 -1
  555. package/dist/.next/server/app/es/profile/notifications.meta +1 -1
  556. package/dist/.next/server/app/es/profile/notifications.segments/$d$lang/profile/notifications/__PAGE__.segment.rsc +1 -1
  557. package/dist/.next/server/app/es/profile/notifications.segments/$d$lang/profile/notifications.segment.rsc +1 -1
  558. package/dist/.next/server/app/es/profile/notifications.segments/$d$lang/profile.segment.rsc +3 -3
  559. package/dist/.next/server/app/es/profile/notifications.segments/$d$lang.segment.rsc +3 -3
  560. package/dist/.next/server/app/es/profile/notifications.segments/_full.segment.rsc +6 -6
  561. package/dist/.next/server/app/es/profile/notifications.segments/_head.segment.rsc +1 -1
  562. package/dist/.next/server/app/es/profile/notifications.segments/_index.segment.rsc +1 -1
  563. package/dist/.next/server/app/es/profile/notifications.segments/_tree.segment.rsc +2 -2
  564. package/dist/.next/server/app/es/profile/update.html +1 -1
  565. package/dist/.next/server/app/es/profile/update.meta +1 -1
  566. package/dist/.next/server/app/es/profile/update.segments/$d$lang/profile/update/__PAGE__.segment.rsc +1 -1
  567. package/dist/.next/server/app/es/profile/update.segments/$d$lang/profile/update.segment.rsc +1 -1
  568. package/dist/.next/server/app/es/profile/update.segments/$d$lang/profile.segment.rsc +3 -3
  569. package/dist/.next/server/app/es/profile/update.segments/$d$lang.segment.rsc +3 -3
  570. package/dist/.next/server/app/es/profile/update.segments/_full.segment.rsc +6 -6
  571. package/dist/.next/server/app/es/profile/update.segments/_head.segment.rsc +1 -1
  572. package/dist/.next/server/app/es/profile/update.segments/_index.segment.rsc +1 -1
  573. package/dist/.next/server/app/es/profile/update.segments/_tree.segment.rsc +2 -2
  574. package/dist/.next/server/app/es/profile.html +1 -1
  575. package/dist/.next/server/app/es/profile.meta +1 -1
  576. package/dist/.next/server/app/es/profile.segments/$d$lang/profile/__PAGE__.segment.rsc +7 -7
  577. package/dist/.next/server/app/es/profile.segments/$d$lang/profile.segment.rsc +3 -3
  578. package/dist/.next/server/app/es/profile.segments/$d$lang.segment.rsc +3 -3
  579. package/dist/.next/server/app/es/profile.segments/_full.segment.rsc +10 -10
  580. package/dist/.next/server/app/es/profile.segments/_head.segment.rsc +1 -1
  581. package/dist/.next/server/app/es/profile.segments/_index.segment.rsc +1 -1
  582. package/dist/.next/server/app/es/profile.segments/_tree.segment.rsc +2 -2
  583. package/dist/.next/server/app/es/search.html +1 -1
  584. package/dist/.next/server/app/es/search.meta +1 -1
  585. package/dist/.next/server/app/es/search.segments/$d$lang/search/__PAGE__.segment.rsc +3 -3
  586. package/dist/.next/server/app/es/search.segments/$d$lang/search.segment.rsc +1 -1
  587. package/dist/.next/server/app/es/search.segments/$d$lang.segment.rsc +3 -3
  588. package/dist/.next/server/app/es/search.segments/_full.segment.rsc +5 -5
  589. package/dist/.next/server/app/es/search.segments/_head.segment.rsc +1 -1
  590. package/dist/.next/server/app/es/search.segments/_index.segment.rsc +1 -1
  591. package/dist/.next/server/app/es/search.segments/_tree.segment.rsc +2 -2
  592. package/dist/.next/server/app/es/settings/library.html +1 -1
  593. package/dist/.next/server/app/es/settings/library.meta +1 -1
  594. package/dist/.next/server/app/es/settings/library.segments/$d$lang/settings/library/__PAGE__.segment.rsc +4 -4
  595. package/dist/.next/server/app/es/settings/library.segments/$d$lang/settings/library.segment.rsc +1 -1
  596. package/dist/.next/server/app/es/settings/library.segments/$d$lang/settings.segment.rsc +3 -3
  597. package/dist/.next/server/app/es/settings/library.segments/$d$lang.segment.rsc +3 -3
  598. package/dist/.next/server/app/es/settings/library.segments/_full.segment.rsc +7 -7
  599. package/dist/.next/server/app/es/settings/library.segments/_head.segment.rsc +1 -1
  600. package/dist/.next/server/app/es/settings/library.segments/_index.segment.rsc +1 -1
  601. package/dist/.next/server/app/es/settings/library.segments/_tree.segment.rsc +2 -2
  602. package/dist/.next/server/app/es/settings.html +1 -1
  603. package/dist/.next/server/app/es/settings.meta +1 -1
  604. package/dist/.next/server/app/es/settings.segments/$d$lang/settings/__PAGE__.segment.rsc +1 -1
  605. package/dist/.next/server/app/es/settings.segments/$d$lang/settings.segment.rsc +3 -3
  606. package/dist/.next/server/app/es/settings.segments/$d$lang.segment.rsc +3 -3
  607. package/dist/.next/server/app/es/settings.segments/_full.segment.rsc +6 -6
  608. package/dist/.next/server/app/es/settings.segments/_head.segment.rsc +1 -1
  609. package/dist/.next/server/app/es/settings.segments/_index.segment.rsc +1 -1
  610. package/dist/.next/server/app/es/settings.segments/_tree.segment.rsc +2 -2
  611. package/dist/.next/server/app/es.html +1 -1
  612. package/dist/.next/server/app/es.meta +1 -1
  613. package/dist/.next/server/app/es.segments/$d$lang/__PAGE__.segment.rsc +6 -6
  614. package/dist/.next/server/app/es.segments/$d$lang.segment.rsc +3 -3
  615. package/dist/.next/server/app/es.segments/_full.segment.rsc +8 -8
  616. package/dist/.next/server/app/es.segments/_head.segment.rsc +1 -1
  617. package/dist/.next/server/app/es.segments/_index.segment.rsc +1 -1
  618. package/dist/.next/server/app/es.segments/_tree.segment.rsc +2 -2
  619. package/dist/.next/server/app-paths-manifest.json +1 -0
  620. package/dist/.next/server/chunks/[externals]__06o7v.s._.js +3 -0
  621. package/dist/.next/server/chunks/[externals]__08.r02j._.js +3 -0
  622. package/dist/.next/server/chunks/[externals]__0io1dqn._.js +3 -0
  623. package/dist/.next/server/chunks/[root-of-the-server]__000e5ac._.js +5 -0
  624. package/dist/.next/server/chunks/[root-of-the-server]__01minwl._.js +3 -0
  625. package/dist/.next/server/chunks/[root-of-the-server]__065cjna._.js +3 -0
  626. package/dist/.next/server/chunks/{[root-of-the-server]__0f19woy._.js → [root-of-the-server]__090y5g~._.js} +2 -2
  627. package/dist/.next/server/chunks/{[root-of-the-server]__00~.f1h._.js → [root-of-the-server]__0bqqxvi._.js} +3 -3
  628. package/dist/.next/server/chunks/[root-of-the-server]__0mho9rx._.js +3 -0
  629. package/dist/.next/server/chunks/{[root-of-the-server]__08ozbjo._.js → [root-of-the-server]__0nnsbsa._.js} +2 -2
  630. package/dist/.next/server/chunks/[root-of-the-server]__0q4f5nz._.js +5 -0
  631. package/dist/.next/server/chunks/[root-of-the-server]__0qxte8q._.js +3 -0
  632. package/dist/.next/server/chunks/[root-of-the-server]__0thue9b._.js +3 -0
  633. package/dist/.next/server/chunks/[root-of-the-server]__0tp8msd._.js +3 -0
  634. package/dist/.next/server/chunks/[root-of-the-server]__0w.wsz5._.js +3 -0
  635. package/dist/.next/server/chunks/[root-of-the-server]__0w30bka._.js +3 -0
  636. package/dist/.next/server/chunks/[root-of-the-server]__0w8r0rc._.js +219 -0
  637. package/dist/.next/server/chunks/[root-of-the-server]__0wzdxnb._.js +3 -0
  638. package/dist/.next/server/chunks/[root-of-the-server]__0zbby0w._.js +5 -0
  639. package/dist/.next/server/chunks/[root-of-the-server]__120g6lv._.js +219 -0
  640. package/dist/.next/server/chunks/{[root-of-the-server]__0f9hm.b._.js → [root-of-the-server]__12wzt~c._.js} +25 -25
  641. package/dist/.next/server/chunks/_0-x.21m._.js +1 -1
  642. package/dist/.next/server/chunks/_07otzs8._.js +2 -1
  643. package/dist/.next/server/chunks/_0acvjtf._.js +16 -0
  644. package/dist/.next/server/chunks/_0f4oh8x._.js +16 -0
  645. package/dist/.next/server/chunks/_0he79j5._.js +1 -1
  646. package/dist/.next/server/chunks/_0qvo6nz._.js +1 -1
  647. package/dist/.next/server/chunks/_0yipzck._.js +169 -0
  648. package/dist/.next/server/chunks/_107a6s1._.js +1 -1
  649. package/dist/.next/server/chunks/_next-internal_server_app_api_profile_[file]_route_actions_081le2f.js +3 -0
  650. package/dist/.next/server/chunks/ssr/0xn0_next_0mmjsg9._.js +3 -0
  651. package/dist/.next/server/chunks/ssr/0xn0_next_dist_07o~iiv._.js +10 -0
  652. package/dist/.next/server/chunks/ssr/0xn0_next_dist_0kq-56-._.js +3 -0
  653. package/dist/.next/server/chunks/ssr/0xn0_next_dist_0xwri9l._.js +3 -0
  654. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0._f028._.js +36 -0
  655. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0.m~6gk._.js +4 -0
  656. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0.ryx.a._.js +4 -0
  657. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0163-3l._.js +1 -1
  658. package/dist/.next/server/chunks/ssr/[root-of-the-server]__018gs4f._.js +3 -0
  659. package/dist/.next/server/chunks/ssr/{[root-of-the-server]__03c5.en._.js → [root-of-the-server]__03otmt0._.js} +2 -2
  660. package/dist/.next/server/chunks/ssr/{_13l50z7._.js → [root-of-the-server]__07-jt01._.js} +5 -166
  661. package/dist/.next/server/chunks/ssr/[root-of-the-server]__07rj5~y._.js +14 -0
  662. package/dist/.next/server/chunks/ssr/[root-of-the-server]__089fvdc._.js +4 -0
  663. package/dist/.next/server/chunks/ssr/[root-of-the-server]__08zvzs0._.js +3 -0
  664. package/dist/.next/server/chunks/ssr/[root-of-the-server]__098q1zi._.js +3 -0
  665. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0_~n0jf._.js +3 -0
  666. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0bf.gcx._.js +4 -0
  667. package/dist/.next/server/chunks/ssr/{[root-of-the-server]__0ftuzrv._.js → [root-of-the-server]__0bo9310._.js} +1 -1
  668. package/dist/.next/server/chunks/ssr/{[root-of-the-server]__0hx3z-i._.js → [root-of-the-server]__0drk75y._.js} +2 -2
  669. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0dt626~._.js +5 -0
  670. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0emto8o._.js +5 -0
  671. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0f51w7p._.js +3 -0
  672. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0fta~.q._.js +11 -0
  673. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0i935p0._.js +36 -0
  674. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0kwcjdy._.js +11 -0
  675. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0lmhha4._.js +6 -0
  676. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0mrfwmc._.js +3 -0
  677. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0od4ov7._.js +14 -0
  678. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0o~wtg1._.js +3 -0
  679. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0pgblxq._.js +5 -0
  680. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0qmig-l._.js +37 -0
  681. package/dist/.next/server/chunks/ssr/{[root-of-the-server]__12zt.5r._.js → [root-of-the-server]__0rr_p-o._.js} +3 -3
  682. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0tsardx._.js +3 -0
  683. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0v6eec5._.js +1 -1
  684. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0w5_b~q._.js +37 -0
  685. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0wc3k~b._.js +195 -0
  686. package/dist/.next/server/chunks/ssr/{[root-of-the-server]__0m6l821._.js → [root-of-the-server]__0wiet4z._.js} +2 -2
  687. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0xvohej._.js +3 -0
  688. package/dist/.next/server/chunks/ssr/{[root-of-the-server]__0__uciq._.js → [root-of-the-server]__0y2f1~v._.js} +3 -3
  689. package/dist/.next/server/chunks/ssr/[root-of-the-server]__10lwhia._.js +4 -0
  690. package/dist/.next/server/chunks/ssr/[root-of-the-server]__11mv0l0._.js +130 -0
  691. package/dist/.next/server/chunks/ssr/{_08-97h1._.js → _0-ebvut._.js} +2 -2
  692. package/dist/.next/server/chunks/ssr/_041r_yi._.js +3 -0
  693. package/dist/.next/server/chunks/ssr/_048l2a~._.js +1 -1
  694. package/dist/.next/server/chunks/ssr/_05voq8o._.js +179 -0
  695. package/dist/.next/server/chunks/ssr/_07-ylhi._.js +1 -1
  696. package/dist/.next/server/chunks/ssr/_07xxqxh._.js +49 -0
  697. package/dist/.next/server/chunks/ssr/{_04diprd._.js → _08pl1y1._.js} +2 -2
  698. package/dist/.next/server/chunks/ssr/_092ya8a._.js +1 -1
  699. package/dist/.next/server/chunks/ssr/_0_wsici._.js +2 -2
  700. package/dist/.next/server/chunks/ssr/{_06y5gyn._.js → _0_y--8g._.js} +2 -2
  701. package/dist/.next/server/chunks/ssr/_0fuvfg_._.js +18 -0
  702. package/dist/.next/server/chunks/ssr/{_0ucxu9v._.js → _0f~qxkm._.js} +2 -2
  703. package/dist/.next/server/chunks/ssr/_0h.5.93._.js +1 -1
  704. package/dist/.next/server/chunks/ssr/_0i-_eb8._.js +3 -0
  705. package/dist/.next/server/chunks/ssr/_0i6jouj._.js +1 -1
  706. package/dist/.next/server/chunks/ssr/_0io0xwx._.js +3 -0
  707. package/dist/.next/server/chunks/ssr/_0iq8tqc._.js +1 -1
  708. package/dist/.next/server/chunks/ssr/_0p~hw5y._.js +1 -1
  709. package/dist/.next/server/chunks/ssr/_0so9_59._.js +1 -1
  710. package/dist/.next/server/chunks/ssr/node_modules__pnpm_0.rcelq._.js +3 -0
  711. package/dist/.next/server/chunks/ssr/src_0vxxrk2._.js +6 -0
  712. package/dist/.next/server/chunks/ssr/{src_0iq.276._.js → src_11n4vzd._.js} +2 -2
  713. package/dist/.next/server/chunks/ssr/src_1317vs.._.js +1 -1
  714. package/dist/.next/server/chunks/ssr/src_components_0aht.-v._.js +1 -1
  715. package/dist/.next/server/chunks/ssr/src_components_13jytkv._.js +1 -1
  716. package/dist/.next/server/chunks/ssr/src_lib_i18n_dictionaries_en_profile_json_[json]_cjs_0fq~bfk._.js +1 -1
  717. package/dist/.next/server/chunks/ssr/src_lib_i18n_dictionaries_es_profile_json_[json]_cjs_0x04ai6._.js +1 -1
  718. package/dist/.next/server/middleware-build-manifest.js +6 -6
  719. package/dist/.next/server/middleware.js +2 -2
  720. package/dist/.next/server/pages/404.html +1 -1
  721. package/dist/.next/server/pages/500.html +1 -1
  722. package/dist/.next/server/server-reference-manifest.js +1 -1
  723. package/dist/.next/server/server-reference-manifest.json +448 -178
  724. package/dist/.next/static/chunks/{0ocda-9d9t06n.js → 0-.2w.r.qbyxh.js} +1 -1
  725. package/dist/.next/static/chunks/01lwva-nto8jr.js +1 -0
  726. package/dist/.next/static/chunks/{130.5q5w_51-k.js → 05motg~dk9exd.js} +1 -1
  727. package/dist/.next/static/chunks/0d5njxct3o-0e.js +1 -0
  728. package/dist/.next/static/chunks/{173vca.zo8od~.js → 0gfubdpl2-_6..js} +1 -1
  729. package/dist/.next/static/chunks/{0akf3s~t_6vg7.js → 0h1jok_3p~tov.js} +1 -1
  730. package/dist/.next/static/chunks/0jag03phm47nb.js +1 -0
  731. package/dist/.next/static/chunks/0jiz239_9337c.css +3 -0
  732. package/dist/.next/static/chunks/0ob9ncnj.i~pr.js +1 -0
  733. package/dist/.next/static/chunks/{0os5rnxrkcjja.js → 0ql49co.cgb-6.js} +1 -1
  734. package/dist/.next/static/chunks/0rvajo28np3og.js +1 -0
  735. package/dist/.next/static/chunks/0z5qgi03n50zx.js +1 -0
  736. package/dist/.next/static/chunks/0~_urpr.p5fsg.js +3 -0
  737. package/dist/.next/static/chunks/12h.-dzk4mq7e.js +1 -0
  738. package/dist/.next/static/chunks/{15yjdtaoi6jho.js → 15l91tk5_1zt..js} +1 -1
  739. package/dist/.next/static/chunks/{0s~qod3-mze-a.js → 16uo5t_-6qm9b.js} +1 -1
  740. package/dist/.next/static/chunks/17lvd-1dh8nb8.js +2 -0
  741. package/dist/.next/static/chunks/187jspc2d6.0_.js +1 -0
  742. package/dist/.next/static/chunks/{turbopack-0a6i~p0ly9qsv.js → turbopack-0pm132gv35tgq.js} +1 -1
  743. package/dist/migrations/002_add_profile_image_to_users.sql +2 -0
  744. package/dist/next.config.ts +7 -0
  745. package/dist/package.json +1 -1
  746. package/dist/runtime/cli.mjs +24 -2
  747. package/dist/runtime/commands/init.mjs +18 -9
  748. package/dist/server.js +1 -1
  749. package/dist/src/actions/delete.ts +5 -0
  750. package/dist/src/actions/profile.ts +98 -0
  751. package/dist/src/actions/scan-series.ts +5 -0
  752. package/dist/src/actions/users.ts +0 -54
  753. package/dist/src/app/[lang]/manga/[series]/page.tsx +7 -6
  754. package/dist/src/app/[lang]/manga/volume/[slug]/page.tsx +2 -4
  755. package/dist/src/app/[lang]/profile/update/page.tsx +1 -1
  756. package/dist/src/app/api/admin/scan-manga/extract-cover/route.ts +3 -0
  757. package/dist/src/app/api/admin/scan-manga/extract-meta/route.ts +2 -0
  758. package/dist/src/app/api/admin/scan-manga/index-library/route.ts +3 -0
  759. package/dist/src/app/api/admin/scan-manga/start/route.ts +2 -0
  760. package/dist/src/app/api/admin/upload/confirm/route.ts +5 -0
  761. package/dist/src/app/api/admin/upload/library/chunk/route.ts +3 -0
  762. package/dist/src/app/api/profile/[file]/route.ts +20 -0
  763. package/dist/src/components/home/manga/HeroKeepRead.tsx +2 -3
  764. package/dist/src/components/home/manga/RowNewVols.tsx +2 -3
  765. package/dist/src/components/library/manga/grid/SeriesIndex.tsx +3 -6
  766. package/dist/src/components/library/manga/grid/SeriesIndexFav.tsx +3 -4
  767. package/dist/src/components/library/manga/grid/VolumesIndex.tsx +2 -5
  768. package/dist/src/components/library/manga/grid/VolumesIndexFav.tsx +2 -3
  769. package/dist/src/components/library/manga/grid/WantToRead.tsx +2 -5
  770. package/dist/src/components/library/manga/row/HeroKeepRead.tsx +2 -3
  771. package/dist/src/components/library/manga/row/NewVols.tsx +2 -3
  772. package/dist/src/components/library/manga/row/NextVol.tsx +2 -3
  773. package/dist/src/components/library/manga/row/RecentlyRead.tsx +2 -3
  774. package/dist/src/components/profile/ProfileForm.tsx +91 -5
  775. package/dist/src/components/profile/UserAvatar.tsx +9 -14
  776. package/dist/src/components/sidebar/FooterNav.tsx +4 -4
  777. package/dist/src/components/sidebar/SecondNav.tsx +1 -1
  778. package/dist/src/components/ui/Avatar.tsx +50 -0
  779. package/dist/src/components/ui/Pagination.tsx +20 -11
  780. package/dist/src/lib/db/library.ts +154 -32
  781. package/dist/src/lib/db/migrations/002_add_profile_image_to_users.sql +2 -0
  782. package/dist/src/lib/db/types.ts +2 -0
  783. package/dist/src/lib/db/users.ts +16 -4
  784. package/dist/src/lib/i18n/dictionaries/en/profile.json +3 -0
  785. package/dist/src/lib/i18n/dictionaries/es/profile.json +3 -0
  786. package/dist/src/lib/mangaCover.ts +35 -0
  787. package/dist/src/lib/mangaLibraryCache.ts +7 -0
  788. package/dist/src/lib/profileImage.ts +141 -0
  789. package/dist/src/lib/profileImageUrl.ts +4 -0
  790. package/dist/src/lib/types/auth.ts +1 -0
  791. package/dist/src/lib/versionInfo.ts +1 -1
  792. package/package.json +1 -1
  793. package/runtime/cli.mjs +24 -2
  794. package/runtime/commands/init.mjs +18 -9
  795. package/dist/.next/server/chunks/[externals]__04m39l7._.js +0 -3
  796. package/dist/.next/server/chunks/[externals]__0symfmt._.js +0 -3
  797. package/dist/.next/server/chunks/[externals]__11f43d8._.js +0 -3
  798. package/dist/.next/server/chunks/[root-of-the-server]__0-ezjjh._.js +0 -3
  799. package/dist/.next/server/chunks/[root-of-the-server]__01u.4rs._.js +0 -3
  800. package/dist/.next/server/chunks/[root-of-the-server]__03w8pu~._.js +0 -5
  801. package/dist/.next/server/chunks/[root-of-the-server]__07exd-_._.js +0 -3
  802. package/dist/.next/server/chunks/[root-of-the-server]__0_i9nx4._.js +0 -3
  803. package/dist/.next/server/chunks/[root-of-the-server]__0dxmwb2._.js +0 -3
  804. package/dist/.next/server/chunks/[root-of-the-server]__0h1-y1u._.js +0 -3
  805. package/dist/.next/server/chunks/[root-of-the-server]__0o.c~2l._.js +0 -3
  806. package/dist/.next/server/chunks/[root-of-the-server]__0s26iaa._.js +0 -3
  807. package/dist/.next/server/chunks/[root-of-the-server]__0ykh8n7._.js +0 -3
  808. package/dist/.next/server/chunks/[root-of-the-server]__12fdpoj._.js +0 -5
  809. package/dist/.next/server/chunks/_0o2famo._.js +0 -219
  810. package/dist/.next/server/chunks/_0p05.ug._.js +0 -159
  811. package/dist/.next/server/chunks/_0wmxnqz._.js +0 -219
  812. package/dist/.next/server/chunks/ssr/0xn0_next_0i4c_5k._.js +0 -10
  813. package/dist/.next/server/chunks/ssr/0xn0_next_dist_0e~0kfn._.js +0 -3
  814. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0-op14l._.js +0 -3
  815. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0.6l1gu._.js +0 -127
  816. package/dist/.next/server/chunks/ssr/[root-of-the-server]__04rf-mb._.js +0 -14
  817. package/dist/.next/server/chunks/ssr/[root-of-the-server]__051wvkc._.js +0 -289
  818. package/dist/.next/server/chunks/ssr/[root-of-the-server]__06u2vz6._.js +0 -11
  819. package/dist/.next/server/chunks/ssr/[root-of-the-server]__07ufuic._.js +0 -3
  820. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0ckbz4m._.js +0 -127
  821. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0dzdqpg._.js +0 -160
  822. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0g7b1.f._.js +0 -11
  823. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0gqwm5-._.js +0 -165
  824. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0h4pts7._.js +0 -3
  825. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0hl9kxb._.js +0 -160
  826. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0l1tsri._.js +0 -165
  827. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0o-bi_~._.js +0 -3
  828. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0r9qdr9._.js +0 -138
  829. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0sb2bdq._.js +0 -127
  830. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0s~uegx._.js +0 -127
  831. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0u0d7tm._.js +0 -165
  832. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0umo466._.js +0 -3
  833. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0wvq4b6._.js +0 -3
  834. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0~-1xvk._.js +0 -3
  835. package/dist/.next/server/chunks/ssr/[root-of-the-server]__136hhiw._.js +0 -3
  836. package/dist/.next/server/chunks/ssr/_0-a2~22._.js +0 -198
  837. package/dist/.next/server/chunks/ssr/_040iqz4._.js +0 -165
  838. package/dist/.next/server/chunks/ssr/_06sgwry._.js +0 -198
  839. package/dist/.next/server/chunks/ssr/_07p7svd._.js +0 -230
  840. package/dist/.next/server/chunks/ssr/_0b.571z._.js +0 -165
  841. package/dist/.next/server/chunks/ssr/_0mw_qhe._.js +0 -165
  842. package/dist/.next/server/chunks/ssr/_0pxm47s._.js +0 -5
  843. package/dist/.next/server/chunks/ssr/_0q-n0ab._.js +0 -20
  844. package/dist/.next/server/chunks/ssr/_0rdv9ta._.js +0 -3
  845. package/dist/.next/server/chunks/ssr/_0s8v6hg._.js +0 -45
  846. package/dist/.next/server/chunks/ssr/node_modules__pnpm_0g.lh7t._.js +0 -3
  847. package/dist/.next/server/chunks/ssr/src_0hpe~0j._.js +0 -6
  848. package/dist/.next/server/chunks/ssr/src_components_profile_ProfileForm_tsx_01m8xja._.js +0 -3
  849. package/dist/.next/server/chunks/ssr/src_components_profile_SubscriptionsTable_tsx_0lnukp1._.js +0 -3
  850. package/dist/.next/static/chunks/00-eu6nq2.2b1.js +0 -2
  851. package/dist/.next/static/chunks/01gbodpgo16if.js +0 -1
  852. package/dist/.next/static/chunks/03.wb.p2t~nc8.js +0 -1
  853. package/dist/.next/static/chunks/05pp4vfmhgj7j.js +0 -1
  854. package/dist/.next/static/chunks/085lcw1uodr6t.css +0 -3
  855. package/dist/.next/static/chunks/09ky2h2y4mhat.js +0 -1
  856. package/dist/.next/static/chunks/0_4~nhzj45_2v.js +0 -1
  857. package/dist/.next/static/chunks/0lx9~duy814wd.js +0 -1
  858. package/dist/.next/static/chunks/0qbe3qotai28y.js +0 -3
  859. package/dist/.next/static/chunks/0so2hc2~pq2al.js +0 -1
  860. package/dist/.next/static/chunks/0zb6339bo0w-~.js +0 -1
  861. package/dist/.next/static/chunks/0~qxck6n49xw-.js +0 -1
  862. /package/dist/.next/static/{F5ZMyhGgcQofdDO0GXsdD → PWw2Oo50QJHfYm7Z43WyV}/_buildManifest.js +0 -0
  863. /package/dist/.next/static/{F5ZMyhGgcQofdDO0GXsdD → PWw2Oo50QJHfYm7Z43WyV}/_clientMiddlewareManifest.js +0 -0
  864. /package/dist/.next/static/{F5ZMyhGgcQofdDO0GXsdD → PWw2Oo50QJHfYm7Z43WyV}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/034.po9-x_6e_.js","static/chunks/17mf9df0ge8d_.js","static/chunks/0_4~nhzj45_2v.js","static/chunks/0m58q2exkjk_h.js","static/chunks/094kqvfb6hqi1.js","static/chunks/00-eu6nq2.2b1.js"],runtimeModuleIds:[7634]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function k(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let j=Symbol("turbopack queues"),v=Symbol("turbopack exports"),U=Symbol("turbopack error");function _(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=k(),u=Object.assign(s,{[v]:r.exports,[j]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[v]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(j in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[v]:{},[j]:e=>e(t)};return e.then(e=>{r[v]=e,_(t)},e=>{r[U]=e,_(t)}),r}}return{[v]:e,[j]:()=>{}}}),r=()=>t.map(e=>{if(e[U])throw e[U];return e[v]}),{promise:i,resolve:l}=k(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[j](u)),s.queueCount?i:r()},function(e){e?l(u[U]=e):i(u[v]),_(n)}),n&&-1===n.status&&(n.status=0)};let C=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function P(e,t){throw Error(`Invariant: ${t(e)}`)}C.prototype=URL.prototype,u.U=C,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let R=s.prototype,S=new Map;u.M=S;let $=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,q(r));let o=r.included||[],i=o.map(e=>!!S.has(e)||$.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,q(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,q(r.path)),l))E.has(o)||E.set(o,n)}for(let e of o)$.has(e)||$.set(e,n);await n}R.l=function(e){return T(i.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=x.get(o);if(void 0===l){let e=x.set.bind(x,o,A);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:P(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(o,l)}return l}function q(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}R.L=function(e){return M(i.Parent,this.m.id,e)},R.R=function(e){let t=this.r(e);return t?.default??t},R.P=function(e){return`/ROOT/${e??""}`},R.q=function(e,t){m.call(this,`${e}${r}`,t)},R.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>q(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(q(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let N=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,i.Parent,t.id)};function W(e,t,r){let n=S.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:P(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,S)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?q(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(q("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(N.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(N.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(q(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(q(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/034.po9-x_6e_.js","static/chunks/17mf9df0ge8d_.js","static/chunks/01lwva-nto8jr.js","static/chunks/0m58q2exkjk_h.js","static/chunks/17lvd-1dh8nb8.js","static/chunks/094kqvfb6hqi1.js"],runtimeModuleIds:[7634]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function k(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let j=Symbol("turbopack queues"),v=Symbol("turbopack exports"),U=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=k(),u=Object.assign(s,{[v]:r.exports,[j]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[v]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(j in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[v]:{},[j]:e=>e(t)};return e.then(e=>{r[v]=e,C(t)},e=>{r[U]=e,C(t)}),r}}return{[v]:e,[j]:()=>{}}}),r=()=>t.map(e=>{if(e[U])throw e[U];return e[v]}),{promise:i,resolve:l}=k(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[j](u)),s.queueCount?i:r()},function(e){e?l(u[U]=e):i(u[v]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function _(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let R=s.prototype,S=new Map;u.M=S;let $=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,q(r));let o=r.included||[],i=o.map(e=>!!S.has(e)||$.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,q(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,q(r.path)),l))E.has(o)||E.set(o,n)}for(let e of o)$.has(e)||$.set(e,n);await n}R.l=function(e){return T(i.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=x.get(o);if(void 0===l){let e=x.set.bind(x,o,A);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:_(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(o,l)}return l}function q(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}R.L=function(e){return M(i.Parent,this.m.id,e)},R.R=function(e){let t=this.r(e);return t?.default??t},R.P=function(e){return`/ROOT/${e??""}`},R.q=function(e,t){m.call(this,`${e}${r}`,t)},R.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>q(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(q(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let N=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,i.Parent,t.id)};function W(e,t,r){let n=S.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:_(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,S)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?q(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(q("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(N.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(N.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(q(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(q(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
@@ -0,0 +1,2 @@
1
+ ALTER TABLE users
2
+ ADD COLUMN IF NOT EXISTS profile_image TEXT;
@@ -3,6 +3,13 @@ import type { NextConfig } from "next";
3
3
  const nextConfig: NextConfig = {
4
4
  cacheComponents: true,
5
5
  output: "standalone",
6
+ images: {
7
+ localPatterns: [
8
+ {
9
+ pathname: "/**",
10
+ },
11
+ ],
12
+ },
6
13
  experimental: {
7
14
  serverActions: {
8
15
  bodySizeLimit: "5gb",
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itsmrtr/bunkoshelf",
3
- "version": "1.0.2",
3
+ "version": "1.1.1",
4
4
  "description": "Self-hosted personal manga library.",
5
5
  "keywords": [
6
6
  "bunko",
@@ -1,9 +1,30 @@
1
1
  const [, , command, ...args] = process.argv;
2
2
 
3
+ function parseInitArgs(rawArgs) {
4
+ const options = {
5
+ cloud: false,
6
+ };
7
+ let projectName;
8
+
9
+ for (const arg of rawArgs) {
10
+ if (arg === "--cloud") {
11
+ options.cloud = true;
12
+ continue;
13
+ }
14
+
15
+ if (!projectName) {
16
+ projectName = arg;
17
+ }
18
+ }
19
+
20
+ return { projectName, options };
21
+ }
22
+
3
23
  switch (command) {
4
24
  case "init": {
5
25
  const { init } = await import("./commands/init.mjs");
6
- await init(args[0]);
26
+ const { projectName, options } = parseInitArgs(args);
27
+ await init(projectName, options);
7
28
  break;
8
29
  }
9
30
  case "start": {
@@ -19,7 +40,8 @@ switch (command) {
19
40
  default:
20
41
  if (command && !command.startsWith("-")) {
21
42
  const { init } = await import("./commands/init.mjs");
22
- await init(command);
43
+ const { options } = parseInitArgs(args);
44
+ await init(command, options);
23
45
  } else {
24
46
  console.error("Usage: bunkoshelf <init|start|update> [project-name|version]");
25
47
  process.exit(1);
@@ -15,17 +15,25 @@ function generateSecret() {
15
15
  return randomBytes(32).toString("hex");
16
16
  }
17
17
 
18
- function buildEnv(jwtSecret) {
19
- return [
18
+ export function buildEnv(jwtSecret, provider = "local") {
19
+ const lines = [
20
20
  "DATABASE_URL=postgresql://user:password@localhost:5432/bunkoshelf",
21
21
  `JWT_SECRET=${jwtSecret}`,
22
22
  `PORT=${DEFAULT_PORT}`,
23
23
  `SITE_URL=http://localhost:${DEFAULT_PORT}`,
24
- "LIB_PROVIDER=local",
25
- "VAPID_PUBLIC_KEY=",
26
- "PUSH_SERVER_URL=",
27
- "PUSH_API_KEY=",
28
- ].join("\n") + "\n";
24
+ `LIB_PROVIDER=${provider}`,
25
+ ];
26
+
27
+ if (provider === "cloud") {
28
+ lines.push(
29
+ "R2_ENDPOINT=",
30
+ "R2_ACCESS_KEY_ID=",
31
+ "R2_SECRET_ACCESS_KEY=",
32
+ "R2_BUCKET_NAME=bunko-shelf "
33
+ );
34
+ }
35
+
36
+ return lines.join("\n") + "\n";
29
37
  }
30
38
 
31
39
  function buildPackageJson(name) {
@@ -43,8 +51,9 @@ function buildPackageJson(name) {
43
51
  };
44
52
  }
45
53
 
46
- export async function init(projectName) {
54
+ export async function init(projectName, options = {}) {
47
55
  intro(chalk.bold("▲ Bunko Shelf"));
56
+ const provider = options.cloud ? "cloud" : "local";
48
57
 
49
58
  const useCurrentDir = projectName === ".";
50
59
  let name = useCurrentDir ? undefined : projectName;
@@ -88,7 +97,7 @@ export async function init(projectName) {
88
97
 
89
98
  progress.start("Creating project...");
90
99
  await fs.ensureDir(projectDir);
91
- await fs.writeFile(join(projectDir, ".env"), buildEnv(generateSecret()));
100
+ await fs.writeFile(join(projectDir, ".env"), buildEnv(generateSecret(), provider));
92
101
  await fs.writeJson(join(projectDir, "package.json"), buildPackageJson(name), {
93
102
  spaces: 2,
94
103
  });
package/dist/server.js CHANGED
@@ -9,7 +9,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
9
9
  const hostname = process.env.HOSTNAME || '0.0.0.0'
10
10
 
11
11
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
12
- const nextConfig = {"env":{},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/bunkoshelf/bunkoshelf","enablePrerenderSourceMaps":true,"cacheComponents":true,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":true,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":true,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","serverActions":{"bodySizeLimit":"5gb"},"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/bunkoshelf/bunkoshelf"},"distDirRoot":".next","_originalRedirects":[{"source":"/favicon.ico","destination":"/favicon.png","permanent":true}]}
12
+ const nextConfig = {"env":{},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"/**"},{"pathname":"/_next/static/media/**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/bunkoshelf/bunkoshelf","enablePrerenderSourceMaps":true,"cacheComponents":true,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":true,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":true,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","serverActions":{"bodySizeLimit":"5gb"},"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/bunkoshelf/bunkoshelf"},"distDirRoot":".next","_originalRedirects":[{"source":"/favicon.ico","destination":"/favicon.png","permanent":true}]}
13
13
 
14
14
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
15
15
 
@@ -18,6 +18,7 @@ import {
18
18
  findVolumeBySlugBasic,
19
19
  listVolumeMetadataIdsBySeriesId,
20
20
  } from "@/lib/db/ingestion";
21
+ import { revalidateMangaLibraryCache } from "@/lib/mangaLibraryCache";
21
22
 
22
23
  const LIB_PROVIDER: StorageProvider = (process.env.LIB_PROVIDER as StorageProvider) || "local";
23
24
 
@@ -93,6 +94,8 @@ export async function deleteSeries({ slug }: DeleteBySlugParams): Promise<Delete
93
94
  await deleteFileChecksumsByPrefix(normalized);
94
95
  }
95
96
 
97
+ revalidateMangaLibraryCache();
98
+
96
99
  return { ok: true };
97
100
  } catch (error) {
98
101
  _err = error as Error;
@@ -175,6 +178,8 @@ export async function deleteVolume({ slug }: DeleteBySlugParams): Promise<Delete
175
178
  }
176
179
  }
177
180
 
181
+ revalidateMangaLibraryCache();
182
+
178
183
  return { ok: true };
179
184
  } catch (error) {
180
185
  _err = error as Error;
@@ -0,0 +1,98 @@
1
+ "use server";
2
+
3
+ import { hash } from "bcryptjs";
4
+ import { revalidatePath } from "next/cache";
5
+ import { verifySession } from "@/lib/auth/verifySession";
6
+ import { findUserSessionById, updateUserRecord } from "@/lib/db/users";
7
+ import { log } from "@/lib/logger";
8
+ import {
9
+ deleteProfileImage,
10
+ saveProfileImage,
11
+ validateProfileImage,
12
+ } from "@/lib/profileImage";
13
+
14
+ interface UpdateProfileResult {
15
+ success?: boolean;
16
+ error?: string;
17
+ status?: number;
18
+ }
19
+
20
+ export async function updateProfile(
21
+ formData: FormData,
22
+ lang: string
23
+ ): Promise<UpdateProfileResult> {
24
+ try {
25
+ const session = await verifySession();
26
+ if (!session) {
27
+ return { error: "Unauthorized", status: 401 };
28
+ }
29
+
30
+ const name = formData.get("name");
31
+ const lastname = formData.get("lastname");
32
+ const password = formData.get("password");
33
+ const profileImageInput = formData.get("profileImage");
34
+ const removeProfileImage = formData.get("removeProfileImage") === "true";
35
+
36
+ const start = Date.now();
37
+ const user = await findUserSessionById(session.id);
38
+ let nextProfileImage = removeProfileImage ? null : user?.profileImage;
39
+ let uploadedProfileImage: string | null = null;
40
+
41
+ if (profileImageInput instanceof File && profileImageInput.size > 0) {
42
+ const validationError = validateProfileImage(profileImageInput);
43
+
44
+ if (validationError) {
45
+ return { error: validationError, status: 400 };
46
+ }
47
+
48
+ uploadedProfileImage = await saveProfileImage(profileImageInput, session.id);
49
+ nextProfileImage = uploadedProfileImage;
50
+ }
51
+
52
+ try {
53
+ await updateUserRecord(session.id, {
54
+ name: typeof name === "string" ? name : undefined,
55
+ lastname: typeof lastname === "string" ? lastname : undefined,
56
+ profileImage: nextProfileImage,
57
+ ...(typeof password === "string" && password.length > 0
58
+ ? { password: await hash(password, 10) }
59
+ : {}),
60
+ });
61
+ } catch (error) {
62
+ if (uploadedProfileImage) {
63
+ await deleteProfileImage(uploadedProfileImage);
64
+ }
65
+ throw error;
66
+ }
67
+
68
+ if (
69
+ user?.profileImage &&
70
+ (removeProfileImage || (uploadedProfileImage && user.profileImage !== uploadedProfileImage))
71
+ ) {
72
+ await deleteProfileImage(user.profileImage);
73
+ }
74
+
75
+ const duration = Date.now() - start;
76
+
77
+ log({
78
+ event: "User update",
79
+ category: "USERS",
80
+ duration,
81
+ meta: {
82
+ userId: session.id,
83
+ username: user?.username || "unknown",
84
+ passwordUpdated: typeof password === "string" && password.length > 0,
85
+ profileImageUpdated: !!uploadedProfileImage,
86
+ profileImageRemoved: removeProfileImage,
87
+ },
88
+ });
89
+
90
+ revalidatePath(`/${lang}/profile`);
91
+ revalidatePath(`/${lang}/profile/update`);
92
+
93
+ return { success: true };
94
+ } catch (error) {
95
+ console.error("Update profile error:", error);
96
+ return { error: "Database error", status: 500 };
97
+ }
98
+ }
@@ -20,6 +20,7 @@ import {
20
20
  upsertVolumeMetadataRecord,
21
21
  upsertVolumeRecord,
22
22
  } from "@/lib/db/ingestion";
23
+ import { revalidateMangaLibraryCache } from "@/lib/mangaLibraryCache";
23
24
 
24
25
  const LIB_PROVIDER: StorageProvider = (process.env.LIB_PROVIDER as StorageProvider) || "local";
25
26
  const TEMP_PATH = path.resolve(process.cwd(), "../temp");
@@ -183,6 +184,8 @@ export async function scanSeries(seriesId: string): Promise<ScanResult | undefin
183
184
  errors += result.errors;
184
185
  }
185
186
 
187
+ revalidateMangaLibraryCache();
188
+
186
189
  return {
187
190
  success: true,
188
191
  coversUpdated,
@@ -216,6 +219,8 @@ export async function scanVolume(volumeId: string): Promise<ScanResult | undefin
216
219
 
217
220
  const result = await processVolumeScan(volume, volume.seriesPath!);
218
221
 
222
+ revalidateMangaLibraryCache();
223
+
219
224
  return {
220
225
  success: true,
221
226
  coversUpdated: result.coversUpdated,
@@ -31,18 +31,6 @@ interface CreateUserResult {
31
31
  status?: number;
32
32
  }
33
33
 
34
- interface UpdateUserParams {
35
- name?: string;
36
- lastname?: string;
37
- password?: string;
38
- }
39
-
40
- interface UpdateUserResult {
41
- success?: boolean;
42
- error?: string;
43
- status?: number;
44
- }
45
-
46
34
  interface AdminUpdateUserParams {
47
35
  id: string;
48
36
  username: string;
@@ -136,48 +124,6 @@ export async function createUser({
136
124
  }
137
125
  }
138
126
 
139
- export async function updateUser({
140
- name,
141
- lastname,
142
- password,
143
- }: UpdateUserParams): Promise<UpdateUserResult> {
144
- try {
145
- const session = await verifySession();
146
- if (!session) {
147
- return { error: "Unauthorized", status: 401 };
148
- }
149
-
150
- const start = Date.now();
151
- const user = await findUserSessionById(session.id);
152
-
153
- await updateUserRecord(session.id, {
154
- name,
155
- lastname,
156
- ...(password && password.length > 0
157
- ? { password: await hash(password, 10) }
158
- : {}),
159
- });
160
-
161
- const duration = Date.now() - start;
162
-
163
- log({
164
- event: "User update",
165
- category: "USERS",
166
- duration,
167
- meta: {
168
- userId: session.id,
169
- username: user?.username || "unknown",
170
- passwordUpdated: !!password,
171
- },
172
- });
173
-
174
- return { success: true };
175
- } catch (error) {
176
- console.error("Update error:", error);
177
- return { error: "Database error", status: 500 };
178
- }
179
- }
180
-
181
127
  export async function adminUpdateUser({
182
128
  id,
183
129
  username,
@@ -7,6 +7,7 @@ import {
7
7
  findSeriesBySlug,
8
8
  type LibraryVolumeMetadata,
9
9
  } from "@/lib/db/library";
10
+ import { getMangaCoverUrl } from "@/lib/mangaCover";
10
11
  import { sortByPaddedTitle } from "@/lib/utils";
11
12
  import type { Locale } from "@/lib/types";
12
13
 
@@ -93,9 +94,11 @@ async function SeriesMangaPageContent({
93
94
 
94
95
  const normalizedSerie = {
95
96
  ...serie,
96
- coverImage: serie.volumes?.[0]?.coverImage
97
- ? `/api/library/manga/cover/${serie.volumes[0].slug}/${serie.volumes[0].coverImage}`
98
- : null,
97
+ coverImage: getMangaCoverUrl({
98
+ slug: serie.volumes?.[0]?.slug ?? "",
99
+ coverImage: serie.volumes?.[0]?.coverImage ?? null,
100
+ updatedAt: serie.volumes?.[0]?.updatedAt,
101
+ }),
99
102
  volumes:
100
103
  serie.volumes?.map((vol) => {
101
104
  const meta = {
@@ -113,9 +116,7 @@ async function SeriesMangaPageContent({
113
116
  };
114
117
  return {
115
118
  ...vol,
116
- coverImage: vol.coverImage
117
- ? `/api/library/manga/cover/${vol.slug}/${vol.coverImage}`
118
- : null,
119
+ coverImage: getMangaCoverUrl(vol),
119
120
  meta,
120
121
  };
121
122
  }) ?? [],
@@ -7,6 +7,7 @@ import {
7
7
  } from "@/lib/db/reading";
8
8
  import { getDictionary } from "@/lib/i18n/Dictionary";
9
9
  import { findVolumeBySlug } from "@/lib/db/library";
10
+ import { getMangaCoverUrl } from "@/lib/mangaCover";
10
11
  import type { Locale } from "@/lib/types";
11
12
 
12
13
  interface VolumeMangaPageProps {
@@ -38,7 +39,6 @@ async function VolumeMangaPageContent({ params }: VolumeMangaPageProps) {
38
39
 
39
40
  const volumeEntry = await findVolumeBySlug({
40
41
  slug,
41
- userId: user?.id ?? null,
42
42
  includeGenres: true,
43
43
  includeTags: true,
44
44
  });
@@ -67,9 +67,7 @@ async function VolumeMangaPageContent({ params }: VolumeMangaPageProps) {
67
67
 
68
68
  const normalizedVolume = {
69
69
  ...volumeEntry,
70
- coverImage: volumeEntry.coverImage
71
- ? `/api/library/manga/cover/${volumeEntry.slug}/${volumeEntry.coverImage}`
72
- : null,
70
+ coverImage: getMangaCoverUrl(volumeEntry),
73
71
  meta,
74
72
  };
75
73
 
@@ -34,7 +34,7 @@ async function UpdateProfileContent({ params }: UpdateProfilePageProps) {
34
34
  <UserRoundPenIcon size={28} className="mr-2" />
35
35
  {profile.updateProfile as string}
36
36
  </h2>
37
- <ProfileForm user={user} intl={intl} />
37
+ <ProfileForm lang={lang} user={user} intl={intl} />
38
38
  </>
39
39
  );
40
40
  }
@@ -13,6 +13,7 @@ import {
13
13
  listVolumesForPaths,
14
14
  upsertVolumeRecord,
15
15
  } from "@/lib/db/ingestion";
16
+ import { revalidateMangaLibraryCache } from "@/lib/mangaLibraryCache";
16
17
 
17
18
  const LIB_PROVIDER = (process.env.LIB_PROVIDER || "local") as StorageProvider;
18
19
  const TEMP_PATH = path.resolve(process.cwd(), "../temp");
@@ -153,6 +154,8 @@ export async function POST(request: NextRequest) {
153
154
  }
154
155
  }
155
156
 
157
+ revalidateMangaLibraryCache();
158
+
156
159
  return NextResponse.json({
157
160
  ok: true,
158
161
  message: "Extracción de portadas completada",
@@ -15,6 +15,7 @@ import {
15
15
  upsertVolumeMetadataRecord,
16
16
  linkVolumeMetadata,
17
17
  } from "@/lib/db/ingestion";
18
+ import { revalidateMangaLibraryCache } from "@/lib/mangaLibraryCache";
18
19
 
19
20
  const LIB_PROVIDER = (process.env.LIB_PROVIDER || "local") as StorageProvider;
20
21
  const CHECKSUM_STATUS_PATH = path.join(
@@ -115,6 +116,7 @@ export async function POST(request: NextRequest) {
115
116
  }
116
117
 
117
118
  await cleanupOrphanedGenresAndTags();
119
+ revalidateMangaLibraryCache();
118
120
 
119
121
  return NextResponse.json({
120
122
  message: "Metadatos procesados correctamente.",
@@ -12,6 +12,7 @@ import {
12
12
  upsertSeriesRecord,
13
13
  upsertVolumeRecord,
14
14
  } from "@/lib/db/ingestion";
15
+ import { revalidateMangaLibraryCache } from "@/lib/mangaLibraryCache";
15
16
 
16
17
  const LIBRARY_PATH = path.resolve(process.cwd(), "../library/manga");
17
18
  const LIB_PROVIDER = process.env.LIB_PROVIDER || "local";
@@ -221,6 +222,8 @@ export async function POST(request: NextRequest) {
221
222
  }
222
223
  }
223
224
 
225
+ revalidateMangaLibraryCache();
226
+
224
227
  return NextResponse.json({
225
228
  ok: true,
226
229
  message: "Biblioteca indexada correctamente",
@@ -3,6 +3,7 @@ import { verifySession } from "@/lib/auth/verifySession";
3
3
 
4
4
  import { mainJob } from "@/lib/jobs/scan/manga/mainJob";
5
5
  import { log } from "@/lib/logger";
6
+ import { revalidateMangaLibraryCache } from "@/lib/mangaLibraryCache";
6
7
  import fs from "fs/promises";
7
8
  import path from "path";
8
9
  import { ListObjectsV2Command, GetObjectCommand } from "@aws-sdk/client-s3";
@@ -309,6 +310,7 @@ export async function POST() {
309
310
  }
310
311
 
311
312
  await runBackgroundJob();
313
+ revalidateMangaLibraryCache();
312
314
 
313
315
  log({
314
316
  event: "Library scan completed",
@@ -8,6 +8,7 @@ import { log } from "@/lib/logger";
8
8
  import crypto from "crypto";
9
9
  import { indexUploadedVolume } from "@/lib/uploadIndexer";
10
10
  import { upsertFileChecksumRecord } from "@/lib/db/ingestion";
11
+ import { revalidateMangaLibraryCache } from "@/lib/mangaLibraryCache";
11
12
  import type { ComicMetadata } from "@/lib/types/manga";
12
13
 
13
14
  function generateChecksum(): string {
@@ -93,6 +94,10 @@ export async function POST(request: NextRequest) {
93
94
  }
94
95
  }
95
96
 
97
+ if (libraryType === "manga") {
98
+ revalidateMangaLibraryCache();
99
+ }
100
+
96
101
  log({
97
102
  event: "Files uploaded to library",
98
103
  category: "LIBRARY",
@@ -10,6 +10,7 @@ import { PutObjectCommand } from "@aws-sdk/client-s3";
10
10
  import r2Client, { R2_BUCKET } from "@/lib/r2";
11
11
  import { indexUploadedVolume } from "@/lib/uploadIndexer";
12
12
  import { upsertFileChecksumRecord } from "@/lib/db/ingestion";
13
+ import { revalidateMangaLibraryCache } from "@/lib/mangaLibraryCache";
13
14
  import type { ComicMetadata } from "@/lib/types/manga";
14
15
 
15
16
  export const maxDuration = 300;
@@ -173,6 +174,7 @@ export async function POST(request: NextRequest) {
173
174
  tags: volumeMeta?.tags || [],
174
175
  fileSize: fileBuffer.length,
175
176
  });
177
+ revalidateMangaLibraryCache();
176
178
  }
177
179
 
178
180
  await fs.unlink(tempFilePath);
@@ -232,6 +234,7 @@ export async function POST(request: NextRequest) {
232
234
  tags: volumeMeta?.tags || [],
233
235
  fileSize: fileBuffer.length,
234
236
  });
237
+ revalidateMangaLibraryCache();
235
238
  }
236
239
 
237
240
  await fs.unlink(tempFilePath);
@@ -0,0 +1,20 @@
1
+ import { readProfileImage } from "@/lib/profileImage";
2
+
3
+ export async function GET(
4
+ _request: Request,
5
+ context: { params: Promise<{ file: string }> }
6
+ ) {
7
+ const { file } = await context.params;
8
+
9
+ if (!file || file.includes("/") || file.includes("\\")) {
10
+ return new Response("Not found", { status: 404 });
11
+ }
12
+
13
+ const response = await readProfileImage(file);
14
+
15
+ if (!response) {
16
+ return new Response("Not found", { status: 404 });
17
+ }
18
+
19
+ return response;
20
+ }