@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,3 +1,5 @@
1
+ import { cacheLife, cacheTag } from "next/cache";
2
+ import { MANGA_LIBRARY_TAG } from "@/lib/mangaLibraryCache";
1
3
  import { query, queryOne } from "./query";
2
4
 
3
5
  export interface GenreFilter {
@@ -98,6 +100,39 @@ export interface LibrarySeriesWithVolumes extends LibrarySeries {
98
100
  volumes: LibraryVolume[];
99
101
  }
100
102
 
103
+ interface SharedVolumeQueryOptions {
104
+ includeGenres?: boolean;
105
+ includeTags?: boolean;
106
+ genreNames?: string[];
107
+ tagNames?: string[];
108
+ seriesIds?: string[];
109
+ volumeIds?: string[];
110
+ }
111
+
112
+ interface VolumeQueryOptions extends SharedVolumeQueryOptions {
113
+ userId?: string | null;
114
+ onlyUnreadForUser?: boolean;
115
+ }
116
+
117
+ interface SharedSeriesQueryOptions {
118
+ genreNames?: string[];
119
+ tagNames?: string[];
120
+ seriesIds?: string[];
121
+ includeGenres?: boolean;
122
+ includeTags?: boolean;
123
+ }
124
+
125
+ interface FindSeriesOptions {
126
+ slug: string;
127
+ includeGenres?: boolean;
128
+ includeTags?: boolean;
129
+ }
130
+
131
+ interface FindVolumeOptions extends SharedVolumeQueryOptions {
132
+ slug: string;
133
+ userId?: string | null;
134
+ }
135
+
101
136
  interface VolumeRow {
102
137
  volume_id: string;
103
138
  volume_slug: string;
@@ -406,7 +441,7 @@ function buildVolumeFilterSql(
406
441
  return conditions;
407
442
  }
408
443
 
409
- export async function listLibraryFilters(): Promise<{
444
+ async function listLibraryFiltersRaw(): Promise<{
410
445
  genres: GenreFilter[];
411
446
  tags: TagFilter[];
412
447
  }> {
@@ -430,16 +465,25 @@ export async function listLibraryFilters(): Promise<{
430
465
  return { genres, tags };
431
466
  }
432
467
 
433
- export async function listVolumes(options?: {
434
- userId?: string | null;
435
- includeGenres?: boolean;
436
- includeTags?: boolean;
437
- genreNames?: string[];
438
- tagNames?: string[];
439
- seriesIds?: string[];
440
- volumeIds?: string[];
441
- onlyUnreadForUser?: boolean;
442
- }): Promise<LibraryVolume[]> {
468
+ async function listLibraryFiltersCached() {
469
+ "use cache";
470
+
471
+ cacheLife("max");
472
+ cacheTag(MANGA_LIBRARY_TAG);
473
+
474
+ return listLibraryFiltersRaw();
475
+ }
476
+
477
+ export async function listLibraryFilters(): Promise<{
478
+ genres: GenreFilter[];
479
+ tags: TagFilter[];
480
+ }> {
481
+ return listLibraryFiltersCached();
482
+ }
483
+
484
+ async function listVolumesRaw(
485
+ options?: VolumeQueryOptions
486
+ ): Promise<LibraryVolume[]> {
443
487
  const params: unknown[] = [];
444
488
  const progressJoin =
445
489
  options?.userId
@@ -550,14 +594,36 @@ export async function listVolumes(options?: {
550
594
  });
551
595
  }
552
596
 
553
- export async function listSeriesWithVolumes(options?: {
554
- genreNames?: string[];
555
- tagNames?: string[];
556
- seriesIds?: string[];
557
- includeGenres?: boolean;
558
- includeTags?: boolean;
559
- }): Promise<LibrarySeriesWithVolumes[]> {
560
- const volumes = await listVolumes({
597
+ async function listVolumesCached(options: SharedVolumeQueryOptions = {}) {
598
+ "use cache";
599
+
600
+ cacheLife("max");
601
+ cacheTag(MANGA_LIBRARY_TAG);
602
+
603
+ return listVolumesRaw(options);
604
+ }
605
+
606
+ export async function listVolumes(
607
+ options?: VolumeQueryOptions
608
+ ): Promise<LibraryVolume[]> {
609
+ if (options?.userId || options?.onlyUnreadForUser) {
610
+ return listVolumesRaw(options);
611
+ }
612
+
613
+ return listVolumesCached({
614
+ includeGenres: options?.includeGenres,
615
+ includeTags: options?.includeTags,
616
+ genreNames: options?.genreNames,
617
+ tagNames: options?.tagNames,
618
+ seriesIds: options?.seriesIds,
619
+ volumeIds: options?.volumeIds,
620
+ });
621
+ }
622
+
623
+ async function listSeriesWithVolumesRaw(
624
+ options?: SharedSeriesQueryOptions
625
+ ): Promise<LibrarySeriesWithVolumes[]> {
626
+ const volumes = await listVolumesRaw({
561
627
  includeGenres: options?.includeGenres,
562
628
  includeTags: options?.includeTags,
563
629
  genreNames: options?.genreNames,
@@ -584,6 +650,29 @@ export async function listSeriesWithVolumes(options?: {
584
650
  return [...seriesMap.values()];
585
651
  }
586
652
 
653
+ async function listSeriesWithVolumesCached(
654
+ options: SharedSeriesQueryOptions = {}
655
+ ) {
656
+ "use cache";
657
+
658
+ cacheLife("max");
659
+ cacheTag(MANGA_LIBRARY_TAG);
660
+
661
+ return listSeriesWithVolumesRaw(options);
662
+ }
663
+
664
+ export async function listSeriesWithVolumes(
665
+ options?: SharedSeriesQueryOptions
666
+ ): Promise<LibrarySeriesWithVolumes[]> {
667
+ return listSeriesWithVolumesCached({
668
+ genreNames: options?.genreNames,
669
+ tagNames: options?.tagNames,
670
+ seriesIds: options?.seriesIds,
671
+ includeGenres: options?.includeGenres,
672
+ includeTags: options?.includeTags,
673
+ });
674
+ }
675
+
587
676
  export async function listSeries(): Promise<LibrarySeries[]> {
588
677
  return query<{
589
678
  id: string;
@@ -616,11 +705,9 @@ export async function listSeries(): Promise<LibrarySeries[]> {
616
705
  );
617
706
  }
618
707
 
619
- export async function findSeriesBySlug(options: {
620
- slug: string;
621
- includeGenres?: boolean;
622
- includeTags?: boolean;
623
- }): Promise<LibrarySeriesWithVolumes | null> {
708
+ async function findSeriesBySlugRaw(
709
+ options: FindSeriesOptions
710
+ ): Promise<LibrarySeriesWithVolumes | null> {
624
711
  const row = await queryOne<{ id: string }>(
625
712
  `
626
713
  SELECT id
@@ -635,7 +722,7 @@ export async function findSeriesBySlug(options: {
635
722
  return null;
636
723
  }
637
724
 
638
- const series = await listSeriesWithVolumes({
725
+ const series = await listSeriesWithVolumesRaw({
639
726
  seriesIds: [row.id],
640
727
  includeGenres: options.includeGenres,
641
728
  includeTags: options.includeTags,
@@ -644,12 +731,24 @@ export async function findSeriesBySlug(options: {
644
731
  return series[0] ?? null;
645
732
  }
646
733
 
647
- export async function findVolumeBySlug(options: {
648
- slug: string;
649
- userId?: string | null;
650
- includeGenres?: boolean;
651
- includeTags?: boolean;
652
- }): Promise<LibraryVolume | null> {
734
+ async function findSeriesBySlugCached(options: FindSeriesOptions) {
735
+ "use cache";
736
+
737
+ cacheLife("max");
738
+ cacheTag(MANGA_LIBRARY_TAG);
739
+
740
+ return findSeriesBySlugRaw(options);
741
+ }
742
+
743
+ export async function findSeriesBySlug(
744
+ options: FindSeriesOptions
745
+ ): Promise<LibrarySeriesWithVolumes | null> {
746
+ return findSeriesBySlugCached(options);
747
+ }
748
+
749
+ async function findVolumeBySlugRaw(
750
+ options: FindVolumeOptions
751
+ ): Promise<LibraryVolume | null> {
653
752
  const row = await queryOne<{ id: string }>(
654
753
  `
655
754
  SELECT id
@@ -664,7 +763,7 @@ export async function findVolumeBySlug(options: {
664
763
  return null;
665
764
  }
666
765
 
667
- const volumes = await listVolumes({
766
+ const volumes = await listVolumesRaw({
668
767
  volumeIds: [row.id],
669
768
  userId: options.userId,
670
769
  includeGenres: options.includeGenres,
@@ -674,6 +773,29 @@ export async function findVolumeBySlug(options: {
674
773
  return volumes[0] ?? null;
675
774
  }
676
775
 
776
+ async function findVolumeBySlugCached(options: FindSeriesOptions) {
777
+ "use cache";
778
+
779
+ cacheLife("max");
780
+ cacheTag(MANGA_LIBRARY_TAG);
781
+
782
+ return findVolumeBySlugRaw(options);
783
+ }
784
+
785
+ export async function findVolumeBySlug(
786
+ options: FindVolumeOptions
787
+ ): Promise<LibraryVolume | null> {
788
+ if (options.userId) {
789
+ return findVolumeBySlugRaw(options);
790
+ }
791
+
792
+ return findVolumeBySlugCached({
793
+ slug: options.slug,
794
+ includeGenres: options.includeGenres,
795
+ includeTags: options.includeTags,
796
+ });
797
+ }
798
+
677
799
  export async function findVolumePageCountById(
678
800
  volumeId: string
679
801
  ): Promise<number | null> {
@@ -0,0 +1,2 @@
1
+ ALTER TABLE users
2
+ ADD COLUMN IF NOT EXISTS profile_image TEXT;
@@ -10,6 +10,7 @@ export interface UserRow {
10
10
  name: string | null;
11
11
  lastname: string | null;
12
12
  birth_year: number | null;
13
+ profile_image: string | null;
13
14
  }
14
15
 
15
16
  export interface PublicUser {
@@ -20,4 +21,5 @@ export interface PublicUser {
20
21
  name: string | null;
21
22
  lastname: string | null;
22
23
  birthYear: number | null;
24
+ profileImage: string | null;
23
25
  }
@@ -11,6 +11,7 @@ function mapUser(row: UserRow): PublicUser {
11
11
  name: row.name,
12
12
  lastname: row.lastname,
13
13
  birthYear: row.birth_year,
14
+ profileImage: row.profile_image,
14
15
  };
15
16
  }
16
17
 
@@ -31,6 +32,7 @@ export async function findUserByUsername(
31
32
  const row = await queryOne<UserRow>(
32
33
  `
33
34
  SELECT id, created_at, username, password, is_admin, role, name, lastname, birth_year
35
+ , profile_image
34
36
  FROM users
35
37
  WHERE username = $1
36
38
  LIMIT 1
@@ -45,6 +47,7 @@ export async function findUserSessionById(id: string): Promise<PublicUser | null
45
47
  const row = await queryOne<UserRow>(
46
48
  `
47
49
  SELECT id, created_at, username, password, is_admin, role, name, lastname, birth_year
50
+ , profile_image
48
51
  FROM users
49
52
  WHERE id = $1
50
53
  LIMIT 1
@@ -58,6 +61,7 @@ export async function findUserSessionById(id: string): Promise<PublicUser | null
58
61
  export async function listUsers(): Promise<PublicUser[]> {
59
62
  const rows = await query<UserRow>(`
60
63
  SELECT id, created_at, username, password, is_admin, role, name, lastname, birth_year
64
+ , profile_image
61
65
  FROM users
62
66
  ORDER BY COALESCE(name, username) ASC, username ASC
63
67
  `);
@@ -119,10 +123,11 @@ export async function createUserRecord(
119
123
  role,
120
124
  name,
121
125
  lastname,
122
- birth_year
126
+ birth_year,
127
+ profile_image
123
128
  )
124
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
125
- RETURNING id, created_at, username, password, is_admin, role, name, lastname, birth_year
129
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
130
+ RETURNING id, created_at, username, password, is_admin, role, name, lastname, birth_year, profile_image
126
131
  `,
127
132
  [
128
133
  crypto.randomUUID(),
@@ -133,6 +138,7 @@ export async function createUserRecord(
133
138
  input.name ?? null,
134
139
  input.lastname ?? null,
135
140
  input.birthYear ?? null,
141
+ null,
136
142
  ]
137
143
  );
138
144
 
@@ -153,6 +159,7 @@ export async function updateUserRecord(
153
159
  birthYear?: number | null;
154
160
  isAdmin?: boolean;
155
161
  role?: Role;
162
+ profileImage?: string | null;
156
163
  }
157
164
  ): Promise<PublicUser | null> {
158
165
  const assignments: string[] = [];
@@ -193,6 +200,11 @@ export async function updateUserRecord(
193
200
  assignments.push(`role = $${values.length}`);
194
201
  }
195
202
 
203
+ if (input.profileImage !== undefined) {
204
+ values.push(input.profileImage);
205
+ assignments.push(`profile_image = $${values.length}`);
206
+ }
207
+
196
208
  if (assignments.length === 0) {
197
209
  return findUserSessionById(id);
198
210
  }
@@ -204,7 +216,7 @@ export async function updateUserRecord(
204
216
  UPDATE users
205
217
  SET ${assignments.join(", ")}
206
218
  WHERE id = $${values.length}
207
- RETURNING id, created_at, username, password, is_admin, role, name, lastname, birth_year
219
+ RETURNING id, created_at, username, password, is_admin, role, name, lastname, birth_year, profile_image
208
220
  `,
209
221
  values
210
222
  );
@@ -5,6 +5,9 @@
5
5
  "name": "Name",
6
6
  "lastname": "Lastname",
7
7
  "password": "New Password",
8
+ "picture": "Profile picture",
9
+ "pictureHelp": "PNG, JPG or WEBP. Max 5MB.",
10
+ "removePicture": "Remove profile picture",
8
11
  "save": "Save Changes",
9
12
  "greeting": "Hi,",
10
13
  "updateProfile": "Update Profile",
@@ -5,6 +5,9 @@
5
5
  "name": "Nombre",
6
6
  "lastname": "Apellido",
7
7
  "password": "Nueva contraseña",
8
+ "picture": "Foto de perfil",
9
+ "pictureHelp": "PNG, JPG o WEBP. Máximo 5MB.",
10
+ "removePicture": "Eliminar foto de perfil",
8
11
  "save": "Guardar cambios",
9
12
  "greeting": "Hola,",
10
13
  "updateProfile": "Actualizar perfil",
@@ -0,0 +1,35 @@
1
+ interface MangaCoverInput {
2
+ slug: string;
3
+ coverImage: string | null;
4
+ updatedAt?: Date | string | null;
5
+ }
6
+
7
+ function getVersion(updatedAt?: Date | string | null): string | null {
8
+ if (!updatedAt) {
9
+ return null;
10
+ }
11
+
12
+ const date = updatedAt instanceof Date ? updatedAt : new Date(updatedAt);
13
+ const timestamp = date.getTime();
14
+
15
+ if (Number.isNaN(timestamp)) {
16
+ return null;
17
+ }
18
+
19
+ return String(timestamp);
20
+ }
21
+
22
+ export function getMangaCoverUrl({
23
+ slug,
24
+ coverImage,
25
+ updatedAt,
26
+ }: MangaCoverInput): string | null {
27
+ if (!coverImage) {
28
+ return null;
29
+ }
30
+
31
+ const version = getVersion(updatedAt);
32
+ const query = version ? `?v=${version}` : "";
33
+
34
+ return `/api/library/manga/cover/${slug}/${coverImage}${query}`;
35
+ }
@@ -0,0 +1,7 @@
1
+ import { revalidateTag } from "next/cache";
2
+
3
+ export const MANGA_LIBRARY_TAG = "manga-library";
4
+
5
+ export function revalidateMangaLibraryCache() {
6
+ revalidateTag(MANGA_LIBRARY_TAG, "max");
7
+ }
@@ -0,0 +1,141 @@
1
+ import path from "path";
2
+ import fs from "fs/promises";
3
+ import {
4
+ DeleteObjectCommand,
5
+ GetObjectCommand,
6
+ PutObjectCommand,
7
+ } from "@aws-sdk/client-s3";
8
+ import r2Client, { R2_BUCKET } from "@/lib/r2";
9
+ const LIB_PROVIDER = process.env.LIB_PROVIDER || "local";
10
+ const PROFILE_ROOT_DIR = "profile";
11
+ const PROFILE_LOCAL_DIR = path.resolve(process.cwd(), "..", PROFILE_ROOT_DIR);
12
+ const PROFILE_MAX_SIZE_BYTES = 5 * 1024 * 1024;
13
+
14
+ const PROFILE_MIME_TYPES: Record<string, string> = {
15
+ "image/jpeg": ".jpg",
16
+ "image/png": ".png",
17
+ "image/webp": ".webp",
18
+ };
19
+
20
+ export function validateProfileImage(file: File): string | null {
21
+ if (!(file.type in PROFILE_MIME_TYPES)) {
22
+ return "Invalid image type";
23
+ }
24
+
25
+ if (file.size > PROFILE_MAX_SIZE_BYTES) {
26
+ return "Image too large";
27
+ }
28
+
29
+ return null;
30
+ }
31
+
32
+ function getProfileImageExtension(file: File): string {
33
+ const extensionFromMime = PROFILE_MIME_TYPES[file.type];
34
+
35
+ if (extensionFromMime) {
36
+ return extensionFromMime;
37
+ }
38
+
39
+ const extensionFromName = path.extname(file.name).toLowerCase();
40
+ return extensionFromName || ".jpg";
41
+ }
42
+
43
+ function buildProfileImageFilename(userId: string, file: File): string {
44
+ const extension = getProfileImageExtension(file);
45
+ return `${userId}-${crypto.randomUUID()}${extension}`;
46
+ }
47
+
48
+ function buildProfileImageKey(filename: string): string {
49
+ return `${PROFILE_ROOT_DIR}/${filename}`;
50
+ }
51
+
52
+ export async function saveProfileImage(file: File, userId: string): Promise<string> {
53
+ const filename = buildProfileImageFilename(userId, file);
54
+ const key = buildProfileImageKey(filename);
55
+ const buffer = Buffer.from(await file.arrayBuffer());
56
+
57
+ if (LIB_PROVIDER === "cloud") {
58
+ await r2Client.send(
59
+ new PutObjectCommand({
60
+ Bucket: R2_BUCKET,
61
+ Key: key,
62
+ Body: buffer,
63
+ ContentType: file.type,
64
+ })
65
+ );
66
+
67
+ return filename;
68
+ }
69
+
70
+ await fs.mkdir(PROFILE_LOCAL_DIR, { recursive: true });
71
+ await fs.writeFile(path.join(PROFILE_LOCAL_DIR, filename), buffer);
72
+
73
+ return filename;
74
+ }
75
+
76
+ export async function deleteProfileImage(filename: string | null | undefined): Promise<void> {
77
+ if (!filename) return;
78
+
79
+ if (LIB_PROVIDER === "cloud") {
80
+ await r2Client.send(
81
+ new DeleteObjectCommand({
82
+ Bucket: R2_BUCKET,
83
+ Key: buildProfileImageKey(filename),
84
+ })
85
+ );
86
+ return;
87
+ }
88
+
89
+ await fs.rm(path.join(PROFILE_LOCAL_DIR, filename), { force: true });
90
+ }
91
+
92
+ export async function readProfileImage(filename: string): Promise<Response | null> {
93
+ try {
94
+ if (LIB_PROVIDER === "cloud") {
95
+ const response = await r2Client.send(
96
+ new GetObjectCommand({
97
+ Bucket: R2_BUCKET,
98
+ Key: buildProfileImageKey(filename),
99
+ })
100
+ );
101
+
102
+ const bytes = await response.Body?.transformToByteArray();
103
+
104
+ if (!bytes) return null;
105
+
106
+ return new Response(Buffer.from(bytes), {
107
+ headers: {
108
+ "Content-Type": response.ContentType || getContentType(filename),
109
+ "Cache-Control": "public, max-age=31536000, immutable",
110
+ },
111
+ });
112
+ }
113
+
114
+ const file = await fs.readFile(path.join(PROFILE_LOCAL_DIR, filename));
115
+
116
+ return new Response(file, {
117
+ headers: {
118
+ "Content-Type": getContentType(filename),
119
+ "Cache-Control": "public, max-age=31536000, immutable",
120
+ },
121
+ });
122
+ } catch {
123
+ return null;
124
+ }
125
+ }
126
+
127
+ function getContentType(filePath: string): string {
128
+ const ext = path.extname(filePath).toLowerCase();
129
+
130
+ switch (ext) {
131
+ case ".jpg":
132
+ case ".jpeg":
133
+ return "image/jpeg";
134
+ case ".png":
135
+ return "image/png";
136
+ case ".webp":
137
+ return "image/webp";
138
+ default:
139
+ return "application/octet-stream";
140
+ }
141
+ }
@@ -0,0 +1,4 @@
1
+ export function getProfileImageUrl(filename: string | null | undefined): string | null {
2
+ if (!filename) return null;
3
+ return `/api/profile/${encodeURIComponent(filename)}`;
4
+ }
@@ -8,6 +8,7 @@ export interface Session {
8
8
  name: string | null;
9
9
  lastname: string | null;
10
10
  birthYear: number | null;
11
+ profileImage: string | null;
11
12
  }
12
13
 
13
14
  export type Permission =
@@ -4,7 +4,7 @@ const PACKAGE_NAME = "@itsmrtr/bunkoshelf";
4
4
  const REPOSITORY_URL = "https://github.com/martirale/bunkoshelf";
5
5
  const RELEASES_URL = `${REPOSITORY_URL}/releases`;
6
6
  const REGISTRY_URL = `https://registry.npmjs.org/${encodeURIComponent(PACKAGE_NAME)}/latest`;
7
- const CACHE_TTL_MS = 24 * 60 * 60 * 1000;
7
+ const CACHE_TTL_MS = 6 * 60 * 60 * 1000;
8
8
 
9
9
  export interface VersionInfo {
10
10
  currentVersion: string;
package/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",
package/runtime/cli.mjs CHANGED
@@ -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
  });