most-box 0.1.0 → 0.1.2

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 (390) hide show
  1. package/README.md +24 -16
  2. package/electron/main.js +72 -8
  3. package/electron/preload.js +6 -0
  4. package/out/404/index.html +2 -2
  5. package/out/404.html +2 -2
  6. package/out/__next.__PAGE__.txt +6 -6
  7. package/out/__next._full.txt +23 -20
  8. package/out/__next._head.txt +3 -3
  9. package/out/__next._index.txt +8 -6
  10. package/out/__next._tree.txt +6 -4
  11. package/out/_next/static/chunks/0-n3pg7th.zza.js +1 -0
  12. package/out/_next/static/chunks/0.4j.0k5a64vg.js +1 -0
  13. package/out/_next/static/chunks/0.e2avjgna_b2.js +1 -0
  14. package/out/_next/static/chunks/0.ozi1_x2.m.~.js +1 -0
  15. package/out/_next/static/chunks/0.t5wlt51zou5.js +1 -0
  16. package/out/_next/static/chunks/0.w4hkvap~bva.js +1 -0
  17. package/out/_next/static/chunks/00d9h1tddnnnd.js +1 -0
  18. package/out/_next/static/chunks/00tkdqwxch-3s.js +1 -0
  19. package/out/_next/static/chunks/01l3o90g~1z42.js +1 -0
  20. package/out/_next/static/chunks/01mfky9camw6i.js +1 -0
  21. package/out/_next/static/chunks/01r.v-pqs1vrm.js +1 -0
  22. package/out/_next/static/chunks/03edqrb4zdj~g.js +31 -0
  23. package/out/_next/static/chunks/03h_6oo-gqkhz.js +1 -0
  24. package/out/_next/static/chunks/{0ho~log~~-jwp.css → 03h~nhgj0hv3p.css} +1 -1
  25. package/out/_next/static/chunks/04hcgsanv1hhu.js +1 -0
  26. package/out/_next/static/chunks/05g2q0w5b34.g.js +1 -0
  27. package/out/_next/static/chunks/05of77xycbt8~.js +1 -0
  28. package/out/_next/static/chunks/05zwemzfjx3sh.js +1 -0
  29. package/out/_next/static/chunks/06dpc5df94.v1.js +1 -0
  30. package/out/_next/static/chunks/06e1~1-z_ic9a.js +1 -0
  31. package/out/_next/static/chunks/075s7sn.ns~u5.js +1 -0
  32. package/out/_next/static/chunks/07dynrbvd3.f4.js +1 -0
  33. package/out/_next/static/chunks/07p~uva5pwgwe.js +1 -0
  34. package/out/_next/static/chunks/07r9nn-pzlgg1.js +1 -0
  35. package/out/_next/static/chunks/07td.jq7xff84.css +1 -0
  36. package/out/_next/static/chunks/08.72abkgwy9g.js +1 -0
  37. package/out/_next/static/chunks/08576xhv~~jck.js +1 -0
  38. package/out/_next/static/chunks/08u211~k~qu52.js +1 -0
  39. package/out/_next/static/chunks/098.p.2-zm4p7.js +1 -0
  40. package/out/_next/static/chunks/09ngvtajm7e5y.js +1 -0
  41. package/out/_next/static/chunks/09ps~-43n5qyo.js +1 -0
  42. package/out/_next/static/chunks/09v7_0gclxr46.js +1 -0
  43. package/out/_next/static/chunks/09yql86dir9c4.js +1 -0
  44. package/out/_next/static/chunks/09zmlfljowj1~.js +1 -0
  45. package/out/_next/static/chunks/0_s~ebb-7b2hr.js +1 -0
  46. package/out/_next/static/chunks/0_w-0-2z5oqd_.js +1 -0
  47. package/out/_next/static/chunks/0adx~d-j05c9d.css +24 -0
  48. package/out/_next/static/chunks/0ao1lbi4b.sfa.js +1 -0
  49. package/out/_next/static/chunks/0aq.rc9woa2nz.js +1 -0
  50. package/out/_next/static/chunks/0bld2u_ld~va2.js +1 -0
  51. package/out/_next/static/chunks/0bliugh5lxw55.js +1 -0
  52. package/out/_next/static/chunks/0cn9a7aimbdzq.js +1 -0
  53. package/out/_next/static/chunks/0d3f-nk3c.2re.js +1 -0
  54. package/out/_next/static/chunks/0dtohpf7~3d12.js +1 -0
  55. package/out/_next/static/chunks/0e-3e8h7g99yf.js +1 -0
  56. package/out/_next/static/chunks/0e531nije_ln2.js +1 -0
  57. package/out/_next/static/chunks/0e5zvj_rh0z3m.js +1 -0
  58. package/out/_next/static/chunks/0etes81d_cihn.js +1 -0
  59. package/out/_next/static/chunks/0f4y~rkk-n81e.js +1 -0
  60. package/out/_next/static/chunks/0fk~0~p7ivfn1.js +1 -0
  61. package/out/_next/static/chunks/0fw6juc~lsj3z.js +1 -0
  62. package/out/_next/static/chunks/0g0u7785a73vo.js +1 -0
  63. package/out/_next/static/chunks/0g_a~e050bgzg.css +1 -0
  64. package/out/_next/static/chunks/0g_fpgh7drfda.js +1 -0
  65. package/out/_next/static/chunks/{0n~dq4kpx9xxx.js → 0gcsdf57gcm6h.js} +1 -1
  66. package/out/_next/static/chunks/0gwian.hp3-92.js +1 -0
  67. package/out/_next/static/chunks/0gze5uso1mbe9.js +1 -0
  68. package/out/_next/static/chunks/0h4r.qtmpa6eh.js +1 -0
  69. package/out/_next/static/chunks/0hf.aosc-7172.js +1 -0
  70. package/out/_next/static/chunks/0hgz35c1ejbs9.js +1 -0
  71. package/out/_next/static/chunks/0hpev4am9jpmu.css +1 -0
  72. package/out/_next/static/chunks/0hrw-r.xmvmsq.js +1 -0
  73. package/out/_next/static/chunks/0hzg4al.v~8~m.js +1 -0
  74. package/out/_next/static/chunks/0ip9xrols_83o.js +1 -0
  75. package/out/_next/static/chunks/0j4-d0qf.v~kn.js +1 -0
  76. package/out/_next/static/chunks/0jhdeq.j9_02m.js +1 -0
  77. package/out/_next/static/chunks/0jy63h3i-y69i.js +1 -0
  78. package/out/_next/static/chunks/0kdnx_u-60k9s.js +1 -0
  79. package/out/_next/static/chunks/0kq~edq42o1-c.js +1 -0
  80. package/out/_next/static/chunks/0l5_.uqb-uqb8.js +1 -0
  81. package/out/_next/static/chunks/0l682p362d-5w.js +1 -0
  82. package/out/_next/static/chunks/0m68p9txef5rs.js +1 -0
  83. package/out/_next/static/chunks/0mex8svsiv-2l.js +1 -0
  84. package/out/_next/static/chunks/0mme-fm5d2oz2.js +1 -0
  85. package/out/_next/static/chunks/0myp4sjagr~h0.js +1 -0
  86. package/out/_next/static/chunks/0myq9gs8szydh.js +1 -0
  87. package/out/_next/static/chunks/0n.qlfk~z7o.6.js +1 -0
  88. package/out/_next/static/chunks/0n4t80gjc3q5h.js +1 -0
  89. package/out/_next/static/chunks/0o9ce4cyf76by.js +736 -0
  90. package/out/_next/static/chunks/0oz3yl6_-716p.js +1 -0
  91. package/out/_next/static/chunks/0p0sv~fuddvgr.js +1 -0
  92. package/out/_next/static/chunks/0pt.5cg1t09qs.js +1 -0
  93. package/out/_next/static/chunks/0q0ksgxg98xgd.js +1 -0
  94. package/out/_next/static/chunks/0qgx9t4jx16ua.css +1 -0
  95. package/out/_next/static/chunks/0qqupeexg83u7.js +1 -0
  96. package/out/_next/static/chunks/0rb-ri481.kc9.js +1 -0
  97. package/out/_next/static/chunks/0rsnmahfd.59p.js +1 -0
  98. package/out/_next/static/chunks/0rt6rgnvr-s_p.js +1 -0
  99. package/out/_next/static/chunks/0runh28p_gg6..js +1 -0
  100. package/out/_next/static/chunks/0shy.t1fwqcev.js +1 -0
  101. package/out/_next/static/chunks/{0d3shmwh5_nmn.js → 0t2xr05rlu96l.js} +1 -1
  102. package/out/_next/static/chunks/0t6h56rhg1y5i.js +1 -0
  103. package/out/_next/static/chunks/0tdqd1zunusgk.js +1 -0
  104. package/out/_next/static/chunks/0ujbnp38x63ek.js +1 -0
  105. package/out/_next/static/chunks/0ukyg~tkm~h2m.css +1 -0
  106. package/out/_next/static/chunks/0v68pdrp54lb-.js +1 -0
  107. package/out/_next/static/chunks/0vsm0m5sxrb.3.js +1 -0
  108. package/out/_next/static/chunks/0vzlz.iboqo3c.js +1 -0
  109. package/out/_next/static/chunks/0w87vbpkf-ogd.js +1 -0
  110. package/out/_next/static/chunks/0wtf0xsiicxx6.js +1 -0
  111. package/out/_next/static/chunks/0xdwau5k2augv.css +4 -0
  112. package/out/_next/static/chunks/0xgg0~kmf3gd-.js +1 -0
  113. package/out/_next/static/chunks/0xj24-70ptdzp.js +1 -0
  114. package/out/_next/static/chunks/0xxlx772fr3x4.js +1 -0
  115. package/out/_next/static/chunks/0y.li-~3oybew.js +1 -0
  116. package/out/_next/static/chunks/0yl2t7cs-n_ng.js +1 -0
  117. package/out/_next/static/chunks/0yq3kh.hchtm_.js +1 -0
  118. package/out/_next/static/chunks/0ys0l5au.9c2c.js +1 -0
  119. package/out/_next/static/chunks/0z48pmi6buytt.js +1 -0
  120. package/out/_next/static/chunks/0zapnvgy89mg..js +1 -0
  121. package/out/_next/static/chunks/0~.-vxi5oc.r0.js +1 -0
  122. package/out/_next/static/chunks/0~3ik-hfp9s-7.js +1 -0
  123. package/out/_next/static/chunks/0~4f5p6tvn1lq.js +1 -0
  124. package/out/_next/static/chunks/0~_0ys.2whxbw.js +1 -0
  125. package/out/_next/static/chunks/0~_ui9l7.2sxf.js +1 -0
  126. package/out/_next/static/chunks/1037jlyw5~7ht.js +1 -0
  127. package/out/_next/static/chunks/1045hfzu533z0.js +1 -0
  128. package/out/_next/static/chunks/104e5nmc.c-pl.js +1 -0
  129. package/out/_next/static/chunks/109taw1pbh-0b.js +1 -0
  130. package/out/_next/static/chunks/10x7~onqwp338.js +1 -0
  131. package/out/_next/static/chunks/10ynz1dy483wf.js +1 -0
  132. package/out/_next/static/chunks/11hds.mg~4_r-.js +1 -0
  133. package/out/_next/static/chunks/11ibzaklcauw~.js +1 -0
  134. package/out/_next/static/chunks/11z.0s6.42b.p.js +1 -0
  135. package/out/_next/static/chunks/12-9n56l0y3yr.js +1 -0
  136. package/out/_next/static/chunks/126enaq~f7scl.js +1 -0
  137. package/out/_next/static/chunks/12nr19.nnn6s3.js +5 -0
  138. package/out/_next/static/chunks/{0qub_r0x_r-e9.css → 12pep-2t-qg4n.css} +1 -1
  139. package/out/_next/static/chunks/1380op_pfk.qo.js +1 -0
  140. package/out/_next/static/chunks/146oiw1bggtn4.js +1 -0
  141. package/out/_next/static/chunks/14_inksek_rth.js +2 -0
  142. package/out/_next/static/chunks/14_po2rb_arn4.js +1 -0
  143. package/out/_next/static/chunks/14a4fwbiq.l3z.js +1 -0
  144. package/out/_next/static/chunks/14cowsqn95m1k.js +1 -0
  145. package/out/_next/static/chunks/14dtd3l03v.kx.js +1 -0
  146. package/out/_next/static/chunks/14tm3qa-v9o-4.js +1 -0
  147. package/out/_next/static/chunks/15-o4kb-evqd7.js +1 -0
  148. package/out/_next/static/chunks/153-sz7s.qml2.js +1 -0
  149. package/out/_next/static/chunks/157z7bowux3xj.js +1 -0
  150. package/out/_next/static/chunks/15m1_677az2cm.js +1 -0
  151. package/out/_next/static/chunks/15v.~.ne6ogkk.js +1 -0
  152. package/out/_next/static/chunks/16i.qbk8t8gf_.js +1 -0
  153. package/out/_next/static/chunks/16u9f35gylw8l.js +1 -0
  154. package/out/_next/static/chunks/16xls5tt_68lx.js +1 -0
  155. package/out/_next/static/chunks/17ajyb5ogk5yj.js +1 -0
  156. package/out/_next/static/chunks/17dyfxbq8yz8n.js +1 -0
  157. package/out/_next/static/chunks/180zln9pcq9ih.js +1 -0
  158. package/out/_next/static/chunks/1814izi5gh.kp.js +1 -0
  159. package/out/_next/static/chunks/turbopack-0xta0kqwzkf28.js +1 -0
  160. package/out/_next/static/media/KaTeX_AMS-Regular.0b~8ki5y928w2.woff +0 -0
  161. package/out/_next/static/media/KaTeX_AMS-Regular.0p1vbqd84i2~o.woff2 +0 -0
  162. package/out/_next/static/media/KaTeX_AMS-Regular.173t6ktr7uf-w.ttf +0 -0
  163. package/out/_next/static/media/KaTeX_Caligraphic-Bold.01-pzluls4zgb.woff2 +0 -0
  164. package/out/_next/static/media/KaTeX_Caligraphic-Bold.0x2v1lwn~880f.woff +0 -0
  165. package/out/_next/static/media/KaTeX_Caligraphic-Bold.16zv5fax0h0ka.ttf +0 -0
  166. package/out/_next/static/media/KaTeX_Caligraphic-Regular.02i3z7wig438t.ttf +0 -0
  167. package/out/_next/static/media/KaTeX_Caligraphic-Regular.0rysu1t-ncjq8.woff2 +0 -0
  168. package/out/_next/static/media/KaTeX_Caligraphic-Regular.10927swgekwun.woff +0 -0
  169. package/out/_next/static/media/KaTeX_Fraktur-Bold.0e-16u10iuyyf.woff +0 -0
  170. package/out/_next/static/media/KaTeX_Fraktur-Bold.0et27v~3~4uhe.ttf +0 -0
  171. package/out/_next/static/media/KaTeX_Fraktur-Bold.0w23i72~hprpq.woff2 +0 -0
  172. package/out/_next/static/media/KaTeX_Fraktur-Regular.0b.riegzdfue2.woff +0 -0
  173. package/out/_next/static/media/KaTeX_Fraktur-Regular.0rekyoa-52fj_.woff2 +0 -0
  174. package/out/_next/static/media/KaTeX_Fraktur-Regular.0vjwa15znhk~4.ttf +0 -0
  175. package/out/_next/static/media/KaTeX_Main-Bold.09i7~607shf-h.ttf +0 -0
  176. package/out/_next/static/media/KaTeX_Main-Bold.09lmynrorhcbw.woff +0 -0
  177. package/out/_next/static/media/KaTeX_Main-Bold.16pfc63_du6mx.woff2 +0 -0
  178. package/out/_next/static/media/KaTeX_Main-BoldItalic.0cp37g7x1q8h6.woff +0 -0
  179. package/out/_next/static/media/KaTeX_Main-BoldItalic.0d54rk08rx11s.woff2 +0 -0
  180. package/out/_next/static/media/KaTeX_Main-BoldItalic.15j6k~hix2t_0.ttf +0 -0
  181. package/out/_next/static/media/KaTeX_Main-Italic.0382gqciexmbu.woff +0 -0
  182. package/out/_next/static/media/KaTeX_Main-Italic.06o5nq0_91v60.woff2 +0 -0
  183. package/out/_next/static/media/KaTeX_Main-Italic.0su4i6mm18-wo.ttf +0 -0
  184. package/out/_next/static/media/KaTeX_Main-Regular.08zh8z.7shijf.ttf +0 -0
  185. package/out/_next/static/media/KaTeX_Main-Regular.0diheg01zyoph.woff +0 -0
  186. package/out/_next/static/media/KaTeX_Main-Regular.0kaf-ag2_wkm-.woff2 +0 -0
  187. package/out/_next/static/media/KaTeX_Math-BoldItalic.0ajzxypnbx1h1.ttf +0 -0
  188. package/out/_next/static/media/KaTeX_Math-BoldItalic.0ck1myuerwyqw.woff +0 -0
  189. package/out/_next/static/media/KaTeX_Math-BoldItalic.0ja97dn.cpc87.woff2 +0 -0
  190. package/out/_next/static/media/KaTeX_Math-Italic.09xkhecjcn5r9.woff +0 -0
  191. package/out/_next/static/media/KaTeX_Math-Italic.0x23a-bmp-5tg.ttf +0 -0
  192. package/out/_next/static/media/KaTeX_Math-Italic.0zrha2c4sl2je.woff2 +0 -0
  193. package/out/_next/static/media/KaTeX_SansSerif-Bold.05a9.pc1j_zx9.woff2 +0 -0
  194. package/out/_next/static/media/KaTeX_SansSerif-Bold.0jcl-ayi1uun0.woff +0 -0
  195. package/out/_next/static/media/KaTeX_SansSerif-Bold.0re8y.dm7.mt5.ttf +0 -0
  196. package/out/_next/static/media/KaTeX_SansSerif-Italic.0a0234dc3s62j.woff2 +0 -0
  197. package/out/_next/static/media/KaTeX_SansSerif-Italic.0judofdln9731.woff +0 -0
  198. package/out/_next/static/media/KaTeX_SansSerif-Italic.10z1iap9pfus8.ttf +0 -0
  199. package/out/_next/static/media/KaTeX_SansSerif-Regular.0h9yjlugq4q_e.woff +0 -0
  200. package/out/_next/static/media/KaTeX_SansSerif-Regular.0v6gcj32-czft.woff2 +0 -0
  201. package/out/_next/static/media/KaTeX_SansSerif-Regular.0zm18kga42ebc.ttf +0 -0
  202. package/out/_next/static/media/KaTeX_Script-Regular.0c4.h-mer83d_.woff2 +0 -0
  203. package/out/_next/static/media/KaTeX_Script-Regular.0q14y6zkzlpob.ttf +0 -0
  204. package/out/_next/static/media/KaTeX_Script-Regular.0ze6v4r_-99oy.woff +0 -0
  205. package/out/_next/static/media/KaTeX_Size1-Regular.013x6a4ierotp.woff2 +0 -0
  206. package/out/_next/static/media/KaTeX_Size1-Regular.0kidw0oi.m68o.woff +0 -0
  207. package/out/_next/static/media/KaTeX_Size1-Regular.0m6y-i6wfokni.ttf +0 -0
  208. package/out/_next/static/media/KaTeX_Size2-Regular.0blpmluwilgbg.woff +0 -0
  209. package/out/_next/static/media/KaTeX_Size2-Regular.0d5inmyp-tyv3.woff2 +0 -0
  210. package/out/_next/static/media/KaTeX_Size2-Regular.0wnhnvj-.k9d5.ttf +0 -0
  211. package/out/_next/static/media/KaTeX_Size3-Regular.01h0xm_sfctj3.woff +0 -0
  212. package/out/_next/static/media/KaTeX_Size3-Regular.0iukctyhw5j56.woff2 +0 -0
  213. package/out/_next/static/media/KaTeX_Size3-Regular.0jl8mqyf4gzpn.ttf +0 -0
  214. package/out/_next/static/media/KaTeX_Size4-Regular.0w3.rb_c4stzk.woff2 +0 -0
  215. package/out/_next/static/media/KaTeX_Size4-Regular.0wr_9l81-mu06.ttf +0 -0
  216. package/out/_next/static/media/KaTeX_Size4-Regular.12tvaesf3.zl3.woff +0 -0
  217. package/out/_next/static/media/KaTeX_Typewriter-Regular.0c4zdxz~8frhm.woff2 +0 -0
  218. package/out/_next/static/media/KaTeX_Typewriter-Regular.0cgrzn5l3kao5.woff +0 -0
  219. package/out/_next/static/media/KaTeX_Typewriter-Regular.128~qc3858otl.ttf +0 -0
  220. package/out/_not-found/__next._full.txt +21 -19
  221. package/out/_not-found/__next._head.txt +3 -3
  222. package/out/_not-found/__next._index.txt +8 -6
  223. package/out/_not-found/__next._not-found.__PAGE__.txt +4 -4
  224. package/out/_not-found/__next._not-found.txt +3 -3
  225. package/out/_not-found/__next._tree.txt +3 -2
  226. package/out/_not-found/index.html +2 -2
  227. package/out/_not-found/index.txt +21 -19
  228. package/out/admin/__next._full.txt +23 -0
  229. package/out/admin/__next._head.txt +5 -0
  230. package/out/admin/__next._index.txt +9 -0
  231. package/out/admin/__next._tree.txt +5 -0
  232. package/out/admin/__next.admin.__PAGE__.txt +9 -0
  233. package/out/admin/__next.admin.txt +5 -0
  234. package/out/admin/index.html +15 -0
  235. package/out/admin/index.txt +23 -0
  236. package/out/app/__next._full.txt +15 -13
  237. package/out/app/__next._head.txt +3 -3
  238. package/out/app/__next._index.txt +8 -6
  239. package/out/app/__next._tree.txt +4 -2
  240. package/out/app/__next.app.__PAGE__.txt +4 -4
  241. package/out/app/__next.app.txt +3 -4
  242. package/out/app/index.html +2 -2
  243. package/out/app/index.txt +15 -13
  244. package/out/chat/__next._full.txt +16 -14
  245. package/out/chat/__next._head.txt +3 -3
  246. package/out/chat/__next._index.txt +8 -6
  247. package/out/chat/__next._tree.txt +5 -3
  248. package/out/chat/__next.chat.__PAGE__.txt +4 -4
  249. package/out/chat/__next.chat.txt +4 -5
  250. package/out/chat/index.html +2 -2
  251. package/out/chat/index.txt +16 -14
  252. package/out/chat/join/__next._full.txt +25 -0
  253. package/out/chat/join/__next._head.txt +5 -0
  254. package/out/chat/join/__next._index.txt +9 -0
  255. package/out/chat/join/__next._tree.txt +5 -0
  256. package/out/chat/join/__next.chat.join.__PAGE__.txt +9 -0
  257. package/out/chat/join/__next.chat.join.txt +5 -0
  258. package/out/chat/join/__next.chat.txt +5 -0
  259. package/out/chat/join/index.html +15 -0
  260. package/out/chat/join/index.txt +25 -0
  261. package/out/download/__next._full.txt +34 -33
  262. package/out/download/__next._head.txt +3 -3
  263. package/out/download/__next._index.txt +8 -6
  264. package/out/download/__next._tree.txt +6 -4
  265. package/out/download/__next.download.__PAGE__.txt +13 -14
  266. package/out/download/__next.download.txt +3 -3
  267. package/out/download/index.html +2 -2
  268. package/out/download/index.txt +34 -33
  269. package/out/index.html +2 -2
  270. package/out/index.txt +23 -20
  271. package/out/note/__next._full.txt +24 -0
  272. package/out/{changelog → note}/__next._head.txt +3 -3
  273. package/out/note/__next._index.txt +9 -0
  274. package/out/note/__next._tree.txt +4 -0
  275. package/out/note/__next.note.__PAGE__.txt +9 -0
  276. package/out/note/__next.note.txt +5 -0
  277. package/out/note/index.html +15 -0
  278. package/out/note/index.txt +24 -0
  279. package/out/ping/__next._full.txt +23 -20
  280. package/out/ping/__next._head.txt +3 -3
  281. package/out/ping/__next._index.txt +8 -6
  282. package/out/ping/__next._tree.txt +6 -4
  283. package/out/ping/__next.ping.__PAGE__.txt +5 -5
  284. package/out/ping/__next.ping.txt +4 -4
  285. package/out/ping/index.html +2 -2
  286. package/out/ping/index.txt +23 -20
  287. package/out/web3/__next._full.txt +16 -14
  288. package/out/web3/__next._head.txt +3 -3
  289. package/out/web3/__next._index.txt +8 -6
  290. package/out/web3/__next._tree.txt +5 -3
  291. package/out/web3/__next.web3.__PAGE__.txt +4 -4
  292. package/out/web3/__next.web3.txt +4 -5
  293. package/out/web3/ed25519/__next._full.txt +14 -12
  294. package/out/web3/ed25519/__next._head.txt +3 -3
  295. package/out/web3/ed25519/__next._index.txt +8 -6
  296. package/out/web3/ed25519/__next._tree.txt +5 -3
  297. package/out/web3/ed25519/__next.web3.ed25519.__PAGE__.txt +2 -2
  298. package/out/web3/ed25519/__next.web3.ed25519.txt +3 -3
  299. package/out/web3/ed25519/__next.web3.txt +4 -5
  300. package/out/web3/ed25519/index.html +1 -1
  301. package/out/web3/ed25519/index.txt +14 -12
  302. package/out/web3/index.html +2 -2
  303. package/out/web3/index.txt +16 -14
  304. package/out/web3/tools/__next._full.txt +14 -12
  305. package/out/web3/tools/__next._head.txt +3 -3
  306. package/out/web3/tools/__next._index.txt +8 -6
  307. package/out/web3/tools/__next._tree.txt +5 -3
  308. package/out/web3/tools/__next.web3.tools.__PAGE__.txt +2 -2
  309. package/out/web3/tools/__next.web3.tools.txt +3 -3
  310. package/out/web3/tools/__next.web3.txt +4 -5
  311. package/out/web3/tools/index.html +1 -1
  312. package/out/web3/tools/index.txt +14 -12
  313. package/package.json +30 -13
  314. package/server/index.js +188 -901
  315. package/server/src/config.js +5 -1
  316. package/server/src/core/channelAttachment.js +68 -0
  317. package/server/src/core/cid.js +6 -71
  318. package/server/src/core/cidTopic.js +29 -0
  319. package/server/src/core/mostLink.js +88 -0
  320. package/server/src/http/access.js +123 -0
  321. package/server/src/http/app.js +1095 -0
  322. package/server/src/http/errors.js +35 -0
  323. package/server/src/http/nodeLogs.js +53 -0
  324. package/server/src/http/nodeStatus.js +146 -0
  325. package/server/src/http/staticFiles.js +84 -0
  326. package/server/src/http/uploads.js +114 -0
  327. package/server/src/index.js +1539 -301
  328. package/server/src/node/config.js +191 -0
  329. package/server/src/node/logs.js +94 -0
  330. package/server/src/utils/api.js +359 -8
  331. package/server/src/utils/auth.js +63 -0
  332. package/server/src/utils/dateTime.js +30 -0
  333. package/server/src/utils/downloadMessages.js +89 -0
  334. package/server/src/utils/errors.js +14 -0
  335. package/server/src/utils/mostWallet.js +185 -1
  336. package/server/src/utils/mp.js +2 -26
  337. package/server/src/utils/noteBackup.js +116 -0
  338. package/server/src/utils/noteUtils.js +128 -0
  339. package/server/src/utils/userIdentity.js +8 -61
  340. package/out/_next/static/chunks/003jnm.v5tzw5.js +0 -1
  341. package/out/_next/static/chunks/00re8v.gbcywn.js +0 -1
  342. package/out/_next/static/chunks/00s106sbq8t9v.js +0 -1
  343. package/out/_next/static/chunks/012hi627qrdnn.js +0 -1
  344. package/out/_next/static/chunks/0174xh3wfsjm1.js +0 -2
  345. package/out/_next/static/chunks/02~o2nmo5pmy1.js +0 -1
  346. package/out/_next/static/chunks/07t.dhhokszz5.css +0 -1
  347. package/out/_next/static/chunks/0_wia9ofmsi1c.css +0 -2
  348. package/out/_next/static/chunks/0ah8fihozo2_u.js +0 -5
  349. package/out/_next/static/chunks/0bzupvr5gt3k9.js +0 -31
  350. package/out/_next/static/chunks/0e_h0d3ekzks8.css +0 -1
  351. package/out/_next/static/chunks/0gdluj423gso1.js +0 -1
  352. package/out/_next/static/chunks/0gmoiq06srjay.css +0 -1
  353. package/out/_next/static/chunks/0imkasy7kb67u.js +0 -1
  354. package/out/_next/static/chunks/0jjc_b9q_ldi2.js +0 -1
  355. package/out/_next/static/chunks/0jl~j62iz2uvr.js +0 -1
  356. package/out/_next/static/chunks/0lqslm813wk_h.js +0 -1
  357. package/out/_next/static/chunks/0q782fxxd0lx~.js +0 -1
  358. package/out/_next/static/chunks/0slwj0c46k5cu.js +0 -1
  359. package/out/_next/static/chunks/0sorqk.oc6b7j.css +0 -1
  360. package/out/_next/static/chunks/0tapzqc6hgvx-.js +0 -1
  361. package/out/_next/static/chunks/0xsc7z5x8n7wg.js +0 -1
  362. package/out/_next/static/chunks/0zm~gys2jwl0g.js +0 -1
  363. package/out/_next/static/chunks/turbopack-0a_g3u0ud~jb8.js +0 -1
  364. package/out/changelog/__next._full.txt +0 -22
  365. package/out/changelog/__next._index.txt +0 -7
  366. package/out/changelog/__next._tree.txt +0 -3
  367. package/out/changelog/__next.changelog.__PAGE__.txt +0 -10
  368. package/out/changelog/__next.changelog.txt +0 -5
  369. package/out/changelog/index.html +0 -15
  370. package/out/changelog/index.txt +0 -22
  371. package/out/docs/__next._full.txt +0 -22
  372. package/out/docs/__next._head.txt +0 -5
  373. package/out/docs/__next._index.txt +0 -7
  374. package/out/docs/__next._tree.txt +0 -3
  375. package/out/docs/__next.docs.__PAGE__.txt +0 -10
  376. package/out/docs/__next.docs.txt +0 -5
  377. package/out/docs/getting-started/__next._full.txt +0 -22
  378. package/out/docs/getting-started/__next._head.txt +0 -5
  379. package/out/docs/getting-started/__next._index.txt +0 -7
  380. package/out/docs/getting-started/__next._tree.txt +0 -3
  381. package/out/docs/getting-started/__next.docs.getting-started.__PAGE__.txt +0 -10
  382. package/out/docs/getting-started/__next.docs.getting-started.txt +0 -5
  383. package/out/docs/getting-started/__next.docs.txt +0 -5
  384. package/out/docs/getting-started/index.html +0 -15
  385. package/out/docs/getting-started/index.txt +0 -22
  386. package/out/docs/index.html +0 -15
  387. package/out/docs/index.txt +0 -22
  388. /package/out/_next/static/{iOB2EBwOGZ0iYW7Lbg9u_ → t7ZIeQpVvjz4a7-5Tt-VK}/_buildManifest.js +0 -0
  389. /package/out/_next/static/{iOB2EBwOGZ0iYW7Lbg9u_ → t7ZIeQpVvjz4a7-5Tt-VK}/_clientMiddlewareManifest.js +0 -0
  390. /package/out/_next/static/{iOB2EBwOGZ0iYW7Lbg9u_ → t7ZIeQpVvjz4a7-5Tt-VK}/_ssgManifest.js +0 -0
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  // 文件大小限制
6
- export const MAX_FILE_SIZE = 100 * 1024 * 1024 * 1024 // 100 GB
6
+ export const MAX_FILE_SIZE = 10 * 1024 * 1024 * 1024 // 10 GB
7
7
 
8
8
  // 网络超时(毫秒)
9
9
  export const CONNECTION_TIMEOUT = 120000
@@ -28,6 +28,10 @@ export const DOWNLOAD_POLL_INTERVAL_MIN = 500
28
28
  export const DOWNLOAD_POLL_INTERVAL_MAX = 2000
29
29
  export const DRIVE_UPDATE_INTERVAL = 2000
30
30
 
31
+ // 启动时恢复做种 topic 的后台批处理
32
+ export const HOLDING_REJOIN_BATCH_SIZE = 16
33
+ export const HOLDING_REJOIN_BATCH_DELAY = 25
34
+
31
35
  // 进度更新节流间隔(毫秒)
32
36
  export const PROGRESS_THROTTLE = 500
33
37
 
@@ -0,0 +1,68 @@
1
+ import { parseMostLink, validateCidString } from './cid.js'
2
+ import { sanitizeFilename } from '../utils/security.js'
3
+ import { ValidationError } from '../utils/errors.js'
4
+
5
+ const CHANNEL_ATTACHMENT_KINDS = new Set([
6
+ 'image',
7
+ 'video',
8
+ 'audio',
9
+ 'text',
10
+ 'file',
11
+ ])
12
+
13
+ export function normalizeChannelAttachment(input) {
14
+ if (input === undefined || input === null) return null
15
+ if (typeof input !== 'object' || Array.isArray(input)) {
16
+ throw new ValidationError('attachment must be an object')
17
+ }
18
+
19
+ const kind = String(input.kind || '').trim()
20
+ if (!CHANNEL_ATTACHMENT_KINDS.has(kind)) {
21
+ throw new ValidationError('Invalid attachment kind')
22
+ }
23
+
24
+ const cid = String(input.cid || '').trim()
25
+ const cidValidation = validateCidString(cid)
26
+ if (!cidValidation.valid) {
27
+ throw new ValidationError(cidValidation.error)
28
+ }
29
+
30
+ const fileName = sanitizeFilename(String(input.fileName || ''))
31
+ if (!fileName || fileName === 'unnamed_file') {
32
+ throw new ValidationError('attachment fileName is required')
33
+ }
34
+
35
+ const parsed = parseMostLink(String(input.link || '').trim())
36
+ if (parsed.error) {
37
+ throw new ValidationError(parsed.error)
38
+ }
39
+ if (parsed.cid !== cid) {
40
+ throw new ValidationError('attachment link CID mismatch')
41
+ }
42
+
43
+ const linkFileName = sanitizeFilename(parsed.fileName)
44
+ if (linkFileName !== fileName) {
45
+ throw new ValidationError('attachment link filename mismatch')
46
+ }
47
+
48
+ const attachment = {
49
+ kind,
50
+ cid,
51
+ fileName,
52
+ link: `most://${cid}?filename=${encodeURIComponent(fileName)}`,
53
+ }
54
+
55
+ if (typeof input.mimeType === 'string' && input.mimeType.length <= 100) {
56
+ attachment.mimeType = input.mimeType
57
+ }
58
+
59
+ if (input.size !== undefined && input.size !== null) {
60
+ const size = Number(input.size)
61
+ if (!Number.isFinite(size) || size < 0) {
62
+ throw new ValidationError('attachment size must be a non-negative number')
63
+ }
64
+ attachment.size = Math.floor(size)
65
+ }
66
+
67
+ return attachment
68
+ }
@@ -7,6 +7,8 @@ import fs from 'node:fs'
7
7
  import { Readable } from 'node:stream'
8
8
  import { importer } from 'ipfs-unixfs-importer'
9
9
 
10
+ export { validateCidString, parseMostLink } from './mostLink.js'
11
+
10
12
  /**
11
13
  * 用于 CID 计算的虚拟 Blockstore
12
14
  * 不存储任何数据,仅用于流式 CID 计算
@@ -26,19 +28,13 @@ function createDummyBlockstore() {
26
28
  * 使用流式方法高效处理大文件
27
29
  *
28
30
  * @param {string|Buffer|AsyncIterable} content - 文件路径(字符串)、Buffer 或异步迭代器
29
- * @param {object} options - 计算选项
30
- * @param {boolean} [options.rawLeaves=true] - 使用原始叶子节点以支持现代 CID
31
- * @param {number} [options.cidVersion=1] - CID 版本(0 或 1)
32
- * @param {number} [options.size] - 总字节数(可选,自动检测)
33
31
  * @returns {Promise<{cid: import('multiformats/cid').CID, size: number}>}
34
32
  */
35
- export async function calculateCid(content, options = {}) {
36
- const { rawLeaves = true, cidVersion = 1, size: providedSize } = options
37
-
33
+ export async function calculateCid(content) {
38
34
  const blockstore = createDummyBlockstore()
39
35
 
40
36
  let rootCid = null
41
- let totalSize = providedSize || 0
37
+ let totalSize = 0
42
38
 
43
39
  let source
44
40
 
@@ -75,8 +71,8 @@ export async function calculateCid(content, options = {}) {
75
71
 
76
72
  try {
77
73
  for await (const entry of importer(source, blockstore, {
78
- cidVersion,
79
- rawLeaves,
74
+ cidVersion: 1,
75
+ rawLeaves: true,
80
76
  wrapWithDirectory: false,
81
77
  })) {
82
78
  rootCid = entry.cid
@@ -94,64 +90,3 @@ export async function calculateCid(content, options = {}) {
94
90
  size: totalSize,
95
91
  }
96
92
  }
97
-
98
- /**
99
- * 验证 CID 字符串
100
- * @param {string} cidString - 要验证的 CID 字符串
101
- * @returns {{ valid: boolean, error?: string }}
102
- */
103
- export function validateCidString(cidString) {
104
- if (!cidString || typeof cidString !== 'string') {
105
- return { valid: false, error: 'CID must be a non-empty string' }
106
- }
107
-
108
- if (!cidString.startsWith('b')) {
109
- return {
110
- valid: false,
111
- error: 'Invalid CID format: CID v1 must start with "b"',
112
- }
113
- }
114
-
115
- return { valid: true }
116
- }
117
-
118
- /**
119
- * 解析 most:// 链接并提取 CID
120
- * @param {string} link - most://<cid> 格式的链接
121
- * @returns {{ cid: string, error?: string }}
122
- */
123
- export function parseMostLink(link) {
124
- if (!link || typeof link !== 'string') {
125
- return { cid: '', error: 'Link must be a non-empty string' }
126
- }
127
-
128
- let cidString = link
129
-
130
- if (link.startsWith('most://')) {
131
- cidString = link.replace('most://', '')
132
- }
133
-
134
- // 移除尾部斜杠和空白
135
- cidString = cidString.trim().replace(/\/+$/, '')
136
-
137
- // 移除 query string,提取 filename
138
- let fileName = null
139
- if (cidString.includes('?')) {
140
- const [cidPart, queryPart] = cidString.split('?')
141
- cidString = cidPart
142
- const params = new URLSearchParams(queryPart)
143
- fileName = params.get('filename')
144
- }
145
-
146
- // 处理可能的额外路径的 URL 解析
147
- if (cidString.includes('/')) {
148
- cidString = cidString.split('/')[0]
149
- }
150
-
151
- const validation = validateCidString(cidString)
152
- if (!validation.valid) {
153
- return { cid: '', error: validation.error }
154
- }
155
-
156
- return { cid: cidString, fileName }
157
- }
@@ -0,0 +1,29 @@
1
+ import b4a from 'b4a'
2
+ import { CID } from 'multiformats/cid'
3
+ import { validateCidString } from './cid.js'
4
+ import { ValidationError } from '../utils/errors.js'
5
+
6
+ export function getCidInfo(cid) {
7
+ try {
8
+ const validation = validateCidString(cid)
9
+ if (!validation.valid) {
10
+ throw new ValidationError(validation.error)
11
+ }
12
+ const parsedCid = CID.parse(cid)
13
+ const topic = b4a.from(parsedCid.multihash.digest)
14
+ if (topic.length !== 32) {
15
+ throw new ValidationError('CID digest must be 32 bytes')
16
+ }
17
+ const topicHex = b4a.toString(topic, 'hex')
18
+ return {
19
+ topic,
20
+ topicHex,
21
+ driveName: `drive-${topicHex}`,
22
+ }
23
+ } catch (err) {
24
+ if (err instanceof ValidationError) {
25
+ throw err
26
+ }
27
+ throw new ValidationError('Invalid CID format')
28
+ }
29
+ }
@@ -0,0 +1,88 @@
1
+ import { CID } from 'multiformats/cid'
2
+
3
+ /**
4
+ * 验证 CID 字符串
5
+ * @param {string} cidString - 要验证的 CID 字符串
6
+ * @returns {{ valid: boolean, error?: string }}
7
+ */
8
+ export function validateCidString(cidString) {
9
+ if (!cidString || typeof cidString !== 'string') {
10
+ return { valid: false, error: 'CID must be a non-empty string' }
11
+ }
12
+
13
+ let parsed
14
+ try {
15
+ parsed = CID.parse(cidString)
16
+ } catch {
17
+ return {
18
+ valid: false,
19
+ error: 'Invalid CID format',
20
+ }
21
+ }
22
+
23
+ if (parsed.version !== 1) {
24
+ return {
25
+ valid: false,
26
+ error: 'Invalid CID format: CID v1 required',
27
+ }
28
+ }
29
+
30
+ if (parsed.multihash.digest.length !== 32) {
31
+ return {
32
+ valid: false,
33
+ error: 'CID digest must be 32 bytes',
34
+ }
35
+ }
36
+
37
+ return { valid: true }
38
+ }
39
+
40
+ /**
41
+ * 解析 most:// 链接并提取 CID 与用户可见文件名
42
+ * @param {string} link - most://<cid>?filename=... 格式的链接
43
+ * @returns {{ cid: string, fileName?: string, error?: string }}
44
+ */
45
+ export function parseMostLink(link) {
46
+ if (!link || typeof link !== 'string') {
47
+ return { cid: '', error: 'Link must be a non-empty string' }
48
+ }
49
+
50
+ let url
51
+ try {
52
+ url = new URL(link)
53
+ } catch {
54
+ return { cid: '', error: 'Link must be a valid most:// URL' }
55
+ }
56
+
57
+ if (url.protocol !== 'most:') {
58
+ return { cid: '', error: 'Link must use most:// protocol' }
59
+ }
60
+
61
+ if (url.pathname && url.pathname !== '/') {
62
+ return { cid: '', error: 'Link path is not supported' }
63
+ }
64
+
65
+ const cidString = url.hostname
66
+ const fileName = url.searchParams.get('filename')
67
+ const unsupportedParam = [...url.searchParams.keys()].find(
68
+ key => key !== 'filename'
69
+ )
70
+
71
+ const validation = validateCidString(cidString)
72
+ if (!validation.valid) {
73
+ return { cid: '', error: validation.error }
74
+ }
75
+
76
+ if (!fileName) {
77
+ return { cid: '', error: 'filename is required' }
78
+ }
79
+
80
+ if (unsupportedParam) {
81
+ return {
82
+ cid: '',
83
+ error: `Unsupported query parameter: ${unsupportedParam}`,
84
+ }
85
+ }
86
+
87
+ return { cid: cidString, fileName }
88
+ }
@@ -0,0 +1,123 @@
1
+ const DEFAULT_ALLOWED_ORIGINS = [
2
+ 'http://localhost:3000',
3
+ 'http://127.0.0.1:3000',
4
+ 'https://most.box',
5
+ 'https://most-people.com',
6
+ ]
7
+
8
+ export function getAllowedOrigins(appPort) {
9
+ return [
10
+ ...new Set([
11
+ ...DEFAULT_ALLOWED_ORIGINS,
12
+ `http://localhost:${appPort}`,
13
+ `http://127.0.0.1:${appPort}`,
14
+ ]),
15
+ ]
16
+ }
17
+
18
+ export function getRequestPath(c) {
19
+ return new URL(c.req.url).pathname
20
+ }
21
+
22
+ function extractHostname(value) {
23
+ const input = String(value || '').trim()
24
+ if (!input) return ''
25
+
26
+ try {
27
+ return new URL(input.includes('://') ? input : `http://${input}`).hostname
28
+ } catch {
29
+ return ''
30
+ }
31
+ }
32
+
33
+ function isLocalHostname(hostname) {
34
+ const value = String(hostname || '')
35
+ .trim()
36
+ .toLowerCase()
37
+ return ['localhost', '127.0.0.1', '::1', '[::1]'].includes(value)
38
+ }
39
+
40
+ export function isPublicListenHost(listenHost) {
41
+ const hostname = extractHostname(listenHost)
42
+ if (!hostname) return false
43
+ const value = hostname.toLowerCase()
44
+ return value === '0.0.0.0' || value === '::' || !isLocalHostname(value)
45
+ }
46
+
47
+ function isExternalOrigin(origin) {
48
+ if (!origin) return false
49
+ const hostname = extractHostname(origin)
50
+ if (!hostname) {
51
+ return true
52
+ }
53
+ return !isLocalHostname(hostname)
54
+ }
55
+
56
+ function isLocalRequestHost(hostHeader) {
57
+ const hostname = extractHostname(hostHeader)
58
+ if (!hostname) {
59
+ return false
60
+ }
61
+ return isLocalHostname(hostname)
62
+ }
63
+
64
+ export function isLoopbackRemoteAddress(address) {
65
+ const value = String(address || '')
66
+ .trim()
67
+ .toLowerCase()
68
+ return (
69
+ value === 'localhost' ||
70
+ value === '::1' ||
71
+ value === '::ffff:localhost' ||
72
+ value === '127.0.0.1' ||
73
+ value === '::ffff:127.0.0.1' ||
74
+ value.startsWith('127.') ||
75
+ value.startsWith('::ffff:127.')
76
+ )
77
+ }
78
+
79
+ export function isLocalRequest(c) {
80
+ const host = c.req.header('host')
81
+ if (host) {
82
+ return isLocalRequestHost(host)
83
+ }
84
+ const clientIp =
85
+ c.req.header('x-forwarded-for') ||
86
+ c.env?.incoming?.socket?.remoteAddress ||
87
+ ''
88
+ return isLoopbackRemoteAddress(clientIp)
89
+ }
90
+
91
+ export function isLocalUpgradeRequest(req) {
92
+ if (req.headers.host) {
93
+ return isLocalRequestHost(req.headers.host)
94
+ }
95
+ return isLoopbackRemoteAddress(req.socket?.remoteAddress)
96
+ }
97
+
98
+ export function isRemoteAccessRequest({ invite, origin, listenHost, local }) {
99
+ return (
100
+ Boolean(invite) ||
101
+ isExternalOrigin(origin) ||
102
+ (isPublicListenHost(listenHost) && !local)
103
+ )
104
+ }
105
+
106
+ export function remoteInviteConfigured(inviteSet) {
107
+ return inviteSet.size > 0
108
+ }
109
+
110
+ export function hasValidInvite(inviteSet, invite) {
111
+ const code = String(invite || '').trim()
112
+ return remoteInviteConfigured(inviteSet) && code && inviteSet.has(code)
113
+ }
114
+
115
+ export function getInvalidInviteResponse(c) {
116
+ return c.json(
117
+ {
118
+ error: 'Remote node invite required',
119
+ code: 'INVALID_INVITE',
120
+ },
121
+ 403
122
+ )
123
+ }