@phosart/devtool 0.2.39 → 0.2.40

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 (250) hide show
  1. package/build/client/editor/_app/immutable/chunks/{BmapHj57.js → 42r0DWvu.js} +1 -1
  2. package/build/client/editor/_app/immutable/chunks/42r0DWvu.js.br +0 -0
  3. package/build/client/editor/_app/immutable/chunks/42r0DWvu.js.gz +0 -0
  4. package/build/client/editor/_app/immutable/chunks/4GcV8-CP.js +1 -0
  5. package/build/client/editor/_app/immutable/chunks/4GcV8-CP.js.br +0 -0
  6. package/build/client/editor/_app/immutable/chunks/4GcV8-CP.js.gz +0 -0
  7. package/build/client/editor/_app/immutable/chunks/5A0nIMAQ.js +3 -0
  8. package/build/client/editor/_app/immutable/chunks/5A0nIMAQ.js.br +0 -0
  9. package/build/client/editor/_app/immutable/chunks/5A0nIMAQ.js.gz +0 -0
  10. package/build/client/editor/_app/immutable/chunks/{DqFxWrM4.js → 7-WP23CK.js} +1 -1
  11. package/build/client/editor/_app/immutable/chunks/7-WP23CK.js.br +0 -0
  12. package/build/client/editor/_app/immutable/chunks/7-WP23CK.js.gz +0 -0
  13. package/build/client/editor/_app/immutable/chunks/BGivpE9U.js +1 -0
  14. package/build/client/editor/_app/immutable/chunks/BGivpE9U.js.br +0 -0
  15. package/build/client/editor/_app/immutable/chunks/BGivpE9U.js.gz +0 -0
  16. package/build/client/editor/_app/immutable/chunks/BSn3NNWV.js +1 -0
  17. package/build/client/editor/_app/immutable/chunks/BSn3NNWV.js.br +0 -0
  18. package/build/client/editor/_app/immutable/chunks/BSn3NNWV.js.gz +0 -0
  19. package/build/client/editor/_app/immutable/chunks/Bjmj_fjv.js +1 -0
  20. package/build/client/editor/_app/immutable/chunks/Bjmj_fjv.js.br +0 -0
  21. package/build/client/editor/_app/immutable/chunks/Bjmj_fjv.js.gz +0 -0
  22. package/build/client/editor/_app/immutable/chunks/BoeGdwOa.js +1 -0
  23. package/build/client/editor/_app/immutable/chunks/BoeGdwOa.js.br +0 -0
  24. package/build/client/editor/_app/immutable/chunks/BoeGdwOa.js.gz +0 -0
  25. package/build/client/editor/_app/immutable/chunks/Bsdd0iEV.js +1 -0
  26. package/build/client/editor/_app/immutable/chunks/Bsdd0iEV.js.br +0 -0
  27. package/build/client/editor/_app/immutable/chunks/Bsdd0iEV.js.gz +0 -0
  28. package/build/client/editor/_app/immutable/chunks/CW00K0_e.js +1 -0
  29. package/build/client/editor/_app/immutable/chunks/CW00K0_e.js.br +2 -0
  30. package/build/client/editor/_app/immutable/chunks/CW00K0_e.js.gz +0 -0
  31. package/build/client/editor/_app/immutable/chunks/DQfcrQAO.js +1 -0
  32. package/build/client/editor/_app/immutable/chunks/DQfcrQAO.js.br +0 -0
  33. package/build/client/editor/_app/immutable/chunks/DQfcrQAO.js.gz +0 -0
  34. package/build/client/editor/_app/immutable/chunks/DRvHbUd7.js +1 -0
  35. package/build/client/editor/_app/immutable/chunks/DRvHbUd7.js.br +0 -0
  36. package/build/client/editor/_app/immutable/chunks/DRvHbUd7.js.gz +0 -0
  37. package/build/client/editor/_app/immutable/chunks/{CbAv_EyC.js → DXksldsr.js} +1 -1
  38. package/build/client/editor/_app/immutable/chunks/DXksldsr.js.br +0 -0
  39. package/build/client/editor/_app/immutable/chunks/DXksldsr.js.gz +0 -0
  40. package/build/client/editor/_app/immutable/chunks/DoCbZWLO.js +12 -0
  41. package/build/client/editor/_app/immutable/chunks/DoCbZWLO.js.br +0 -0
  42. package/build/client/editor/_app/immutable/chunks/DoCbZWLO.js.gz +0 -0
  43. package/build/client/editor/_app/immutable/chunks/L4YI7OnJ.js +22 -0
  44. package/build/client/editor/_app/immutable/chunks/L4YI7OnJ.js.br +0 -0
  45. package/build/client/editor/_app/immutable/chunks/L4YI7OnJ.js.gz +0 -0
  46. package/build/client/editor/_app/immutable/chunks/{BwHeJh_l.js → XFabZs4n.js} +1 -1
  47. package/build/client/editor/_app/immutable/chunks/XFabZs4n.js.br +0 -0
  48. package/build/client/editor/_app/immutable/chunks/XFabZs4n.js.gz +0 -0
  49. package/build/client/editor/_app/immutable/chunks/YFxre41u.js +5 -0
  50. package/build/client/editor/_app/immutable/chunks/YFxre41u.js.br +0 -0
  51. package/build/client/editor/_app/immutable/chunks/YFxre41u.js.gz +0 -0
  52. package/build/client/editor/_app/immutable/chunks/{DEuJX0Kw.js → _PT6Fap7.js} +1 -1
  53. package/build/client/editor/_app/immutable/chunks/_PT6Fap7.js.br +0 -0
  54. package/build/client/editor/_app/immutable/chunks/_PT6Fap7.js.gz +0 -0
  55. package/build/client/editor/_app/immutable/chunks/{TuU_UmXF.js → chkjhUXG.js} +2 -2
  56. package/build/client/editor/_app/immutable/chunks/chkjhUXG.js.br +0 -0
  57. package/build/client/editor/_app/immutable/chunks/chkjhUXG.js.gz +0 -0
  58. package/build/client/editor/_app/immutable/chunks/pILfBOEZ.js +2 -0
  59. package/build/client/editor/_app/immutable/chunks/pILfBOEZ.js.br +0 -0
  60. package/build/client/editor/_app/immutable/chunks/pILfBOEZ.js.gz +0 -0
  61. package/build/client/editor/_app/immutable/entry/app.B8-G0MJp.js +2 -0
  62. package/build/client/editor/_app/immutable/entry/app.B8-G0MJp.js.br +0 -0
  63. package/build/client/editor/_app/immutable/entry/app.B8-G0MJp.js.gz +0 -0
  64. package/build/client/editor/_app/immutable/entry/start.BFJCv8XH.js +1 -0
  65. package/build/client/editor/_app/immutable/entry/start.BFJCv8XH.js.br +2 -0
  66. package/build/client/editor/_app/immutable/entry/start.BFJCv8XH.js.gz +0 -0
  67. package/build/client/editor/_app/immutable/nodes/0.BRMo2YfQ.js +1 -0
  68. package/build/client/editor/_app/immutable/nodes/0.BRMo2YfQ.js.br +0 -0
  69. package/build/client/editor/_app/immutable/nodes/0.BRMo2YfQ.js.gz +0 -0
  70. package/build/client/editor/_app/immutable/nodes/1.BRomZobH.js +1 -0
  71. package/build/client/editor/_app/immutable/nodes/1.BRomZobH.js.br +0 -0
  72. package/build/client/editor/_app/immutable/nodes/1.BRomZobH.js.gz +0 -0
  73. package/build/client/editor/_app/immutable/nodes/2.ltMYKR86.js +1 -0
  74. package/build/client/editor/_app/immutable/nodes/2.ltMYKR86.js.br +0 -0
  75. package/build/client/editor/_app/immutable/nodes/2.ltMYKR86.js.gz +0 -0
  76. package/build/client/editor/_app/immutable/nodes/3.DSRyKNuq.js +1 -0
  77. package/build/client/editor/_app/immutable/nodes/3.DSRyKNuq.js.br +0 -0
  78. package/build/client/editor/_app/immutable/nodes/3.DSRyKNuq.js.gz +0 -0
  79. package/build/client/editor/_app/immutable/nodes/4.CYSyUS6J.js +1 -0
  80. package/build/client/editor/_app/immutable/nodes/4.CYSyUS6J.js.br +0 -0
  81. package/build/client/editor/_app/immutable/nodes/4.CYSyUS6J.js.gz +0 -0
  82. package/build/client/editor/_app/immutable/nodes/{5.CJJCY1eL.js → 5.Cg3FhXfu.js} +1 -1
  83. package/build/client/editor/_app/immutable/nodes/5.Cg3FhXfu.js.br +0 -0
  84. package/build/client/editor/_app/immutable/nodes/5.Cg3FhXfu.js.gz +0 -0
  85. package/build/client/editor/_app/immutable/nodes/6.C6chAd02.js +1 -0
  86. package/build/client/editor/_app/immutable/nodes/6.C6chAd02.js.br +0 -0
  87. package/build/client/editor/_app/immutable/nodes/6.C6chAd02.js.gz +0 -0
  88. package/build/client/editor/_app/immutable/nodes/{7.CvKW7Bc_.js → 7.B9MWXVkb.js} +1 -1
  89. package/build/client/editor/_app/immutable/nodes/7.B9MWXVkb.js.br +0 -0
  90. package/build/client/editor/_app/immutable/nodes/7.B9MWXVkb.js.gz +0 -0
  91. package/build/client/editor/_app/version.json +1 -1
  92. package/build/client/editor/_app/version.json.br +0 -0
  93. package/build/client/editor/_app/version.json.gz +0 -0
  94. package/build/server/chunks/{0-DVxv0pN2.js → 0-Sg2Pk-Pf.js} +7 -4
  95. package/build/server/chunks/0-Sg2Pk-Pf.js.map +1 -0
  96. package/build/server/chunks/1-DHYJ5uvL.js +9 -0
  97. package/build/server/chunks/{1-DLAv7zUp.js.map → 1-DHYJ5uvL.js.map} +1 -1
  98. package/build/server/chunks/{2-CXQjo2KJ.js → 2-BnoWxi5m.js} +10 -6
  99. package/build/server/chunks/2-BnoWxi5m.js.map +1 -0
  100. package/build/server/chunks/{3-CkxCrxkd.js → 3-uZo4DiN5.js} +3 -3
  101. package/build/server/chunks/{3-CkxCrxkd.js.map → 3-uZo4DiN5.js.map} +1 -1
  102. package/build/server/chunks/{4-dfmp9D7Q.js → 4-BOeCVf0K.js} +3 -3
  103. package/build/server/chunks/4-BOeCVf0K.js.map +1 -0
  104. package/build/server/chunks/{5-BiPB8QCd.js → 5-nxtVrcnh.js} +3 -3
  105. package/build/server/chunks/5-nxtVrcnh.js.map +1 -0
  106. package/build/server/chunks/{6-C8te3i1r.js → 6-Baddm4c4.js} +6 -6
  107. package/build/server/chunks/6-Baddm4c4.js.map +1 -0
  108. package/build/server/chunks/{7-DFJTEzDX.js → 7-Db_yq7O-.js} +3 -3
  109. package/build/server/chunks/7-Db_yq7O-.js.map +1 -0
  110. package/build/server/chunks/{TextInput-CI0YQsi8.js → SearchInput-DAIoHpf3.js} +50 -5
  111. package/build/server/chunks/SearchInput-DAIoHpf3.js.map +1 -0
  112. package/build/server/chunks/{TagEdit-CPvm35aH.js → TagEdit-DvOIqxjk.js} +3 -3
  113. package/build/server/chunks/TagEdit-DvOIqxjk.js.map +1 -0
  114. package/build/server/chunks/{TextBox-N5uJQMFh.js → TextBox-AWO1YDgm.js} +3 -4
  115. package/build/server/chunks/{TextBox-N5uJQMFh.js.map → TextBox-AWO1YDgm.js.map} +1 -1
  116. package/build/server/chunks/{_layout.svelte-B5zISDM2.js → _layout.svelte-BtSXmOs2.js} +3 -3
  117. package/build/server/chunks/{_layout.svelte-B5zISDM2.js.map → _layout.svelte-BtSXmOs2.js.map} +1 -1
  118. package/build/server/chunks/{_page.svelte-CUQgprcj.js → _page.svelte-Bb-IDoPh.js} +2 -3
  119. package/build/server/chunks/{_page.svelte-CUQgprcj.js.map → _page.svelte-Bb-IDoPh.js.map} +1 -1
  120. package/build/server/chunks/{_page.svelte-ClKOeEWs.js → _page.svelte-CSTIeC_m.js} +3 -4
  121. package/build/server/chunks/_page.svelte-CSTIeC_m.js.map +1 -0
  122. package/build/server/chunks/{_page.svelte-DZIxV1wc.js → _page.svelte-CU_C-uH5.js} +82 -20
  123. package/build/server/chunks/_page.svelte-CU_C-uH5.js.map +1 -0
  124. package/build/server/chunks/{_page.svelte-DFajLADj.js → _page.svelte-CbtjHbxa.js} +100 -35
  125. package/build/server/chunks/_page.svelte-CbtjHbxa.js.map +1 -0
  126. package/build/server/chunks/{_page.svelte-CqwFUF2N.js → _page.svelte-DF60mDV1.js} +100 -13
  127. package/build/server/chunks/_page.svelte-DF60mDV1.js.map +1 -0
  128. package/build/server/chunks/{_page.svelte-A15IM8Ct.js → _page.svelte-Dbrd3ndI.js} +35 -8
  129. package/build/server/chunks/_page.svelte-Dbrd3ndI.js.map +1 -0
  130. package/build/server/chunks/{_server.ts-BX9EOCce.js → _server.ts-BxeMXP1a.js} +5 -2
  131. package/build/server/chunks/{_server.ts-BX9EOCce.js.map → _server.ts-BxeMXP1a.js.map} +1 -1
  132. package/build/server/chunks/{_server.ts-C4VM2PrZ.js → _server.ts-DrH-oZMv.js} +5 -2
  133. package/build/server/chunks/_server.ts-DrH-oZMv.js.map +1 -0
  134. package/build/server/chunks/{_server.ts-DPK-3jbk.js → _server.ts-Ds6dyXi4.js} +5 -2
  135. package/build/server/chunks/{_server.ts-DPK-3jbk.js.map → _server.ts-Ds6dyXi4.js.map} +1 -1
  136. package/build/server/chunks/{_server.ts-DVV4aYkL.js → _server.ts-DwYgPNwZ.js} +9 -3
  137. package/build/server/chunks/_server.ts-DwYgPNwZ.js.map +1 -0
  138. package/build/server/chunks/{_server.ts-Bt1PHziR.js → _server.ts-fomxq4EP.js} +5 -2
  139. package/build/server/chunks/{_server.ts-Bt1PHziR.js.map → _server.ts-fomxq4EP.js.map} +1 -1
  140. package/build/server/chunks/galleryutil-DznhV1Pd.js +120 -0
  141. package/build/server/chunks/galleryutil-DznhV1Pd.js.map +1 -0
  142. package/build/server/chunks/{util-DFt6Yctw.js → util-Cfqr4aAv.js} +25 -3
  143. package/build/server/chunks/util-Cfqr4aAv.js.map +1 -0
  144. package/build/server/index.js +1 -1
  145. package/build/server/index.js.map +1 -1
  146. package/build/server/manifest.js +14 -14
  147. package/build/server/manifest.js.map +1 -1
  148. package/package.json +3 -2
  149. package/build/client/editor/_app/immutable/chunks/6o7Debw0.js +0 -3
  150. package/build/client/editor/_app/immutable/chunks/6o7Debw0.js.br +0 -0
  151. package/build/client/editor/_app/immutable/chunks/6o7Debw0.js.gz +0 -0
  152. package/build/client/editor/_app/immutable/chunks/7gAmW7UE.js +0 -1
  153. package/build/client/editor/_app/immutable/chunks/7gAmW7UE.js.br +0 -0
  154. package/build/client/editor/_app/immutable/chunks/7gAmW7UE.js.gz +0 -0
  155. package/build/client/editor/_app/immutable/chunks/BZ2EEWtE.js +0 -1
  156. package/build/client/editor/_app/immutable/chunks/BZ2EEWtE.js.br +0 -0
  157. package/build/client/editor/_app/immutable/chunks/BZ2EEWtE.js.gz +0 -0
  158. package/build/client/editor/_app/immutable/chunks/BmapHj57.js.br +0 -0
  159. package/build/client/editor/_app/immutable/chunks/BmapHj57.js.gz +0 -0
  160. package/build/client/editor/_app/immutable/chunks/BwHeJh_l.js.br +0 -0
  161. package/build/client/editor/_app/immutable/chunks/BwHeJh_l.js.gz +0 -0
  162. package/build/client/editor/_app/immutable/chunks/ByQY8ln1.js +0 -2
  163. package/build/client/editor/_app/immutable/chunks/ByQY8ln1.js.br +0 -0
  164. package/build/client/editor/_app/immutable/chunks/ByQY8ln1.js.gz +0 -0
  165. package/build/client/editor/_app/immutable/chunks/CLt57AbL.js +0 -1
  166. package/build/client/editor/_app/immutable/chunks/CLt57AbL.js.br +0 -0
  167. package/build/client/editor/_app/immutable/chunks/CLt57AbL.js.gz +0 -0
  168. package/build/client/editor/_app/immutable/chunks/CN_z_8wH.js +0 -1
  169. package/build/client/editor/_app/immutable/chunks/CN_z_8wH.js.br +0 -2
  170. package/build/client/editor/_app/immutable/chunks/CN_z_8wH.js.gz +0 -0
  171. package/build/client/editor/_app/immutable/chunks/CbAv_EyC.js.br +0 -0
  172. package/build/client/editor/_app/immutable/chunks/CbAv_EyC.js.gz +0 -0
  173. package/build/client/editor/_app/immutable/chunks/D1NJb98h.js +0 -1
  174. package/build/client/editor/_app/immutable/chunks/D1NJb98h.js.br +0 -0
  175. package/build/client/editor/_app/immutable/chunks/D1NJb98h.js.gz +0 -0
  176. package/build/client/editor/_app/immutable/chunks/DEuJX0Kw.js.br +0 -0
  177. package/build/client/editor/_app/immutable/chunks/DEuJX0Kw.js.gz +0 -0
  178. package/build/client/editor/_app/immutable/chunks/Dg3UMdbC.js +0 -1
  179. package/build/client/editor/_app/immutable/chunks/Dg3UMdbC.js.br +0 -0
  180. package/build/client/editor/_app/immutable/chunks/Dg3UMdbC.js.gz +0 -0
  181. package/build/client/editor/_app/immutable/chunks/DqFxWrM4.js.br +0 -0
  182. package/build/client/editor/_app/immutable/chunks/DqFxWrM4.js.gz +0 -0
  183. package/build/client/editor/_app/immutable/chunks/Dw7fRo4f.js +0 -12
  184. package/build/client/editor/_app/immutable/chunks/Dw7fRo4f.js.br +0 -0
  185. package/build/client/editor/_app/immutable/chunks/Dw7fRo4f.js.gz +0 -0
  186. package/build/client/editor/_app/immutable/chunks/JOEBmHft.js +0 -22
  187. package/build/client/editor/_app/immutable/chunks/JOEBmHft.js.br +0 -0
  188. package/build/client/editor/_app/immutable/chunks/JOEBmHft.js.gz +0 -0
  189. package/build/client/editor/_app/immutable/chunks/OAXHpz2m.js +0 -5
  190. package/build/client/editor/_app/immutable/chunks/OAXHpz2m.js.br +0 -0
  191. package/build/client/editor/_app/immutable/chunks/OAXHpz2m.js.gz +0 -0
  192. package/build/client/editor/_app/immutable/chunks/TuU_UmXF.js.br +0 -0
  193. package/build/client/editor/_app/immutable/chunks/TuU_UmXF.js.gz +0 -0
  194. package/build/client/editor/_app/immutable/chunks/bnFJskpn.js +0 -1
  195. package/build/client/editor/_app/immutable/chunks/bnFJskpn.js.br +0 -2
  196. package/build/client/editor/_app/immutable/chunks/bnFJskpn.js.gz +0 -0
  197. package/build/client/editor/_app/immutable/chunks/gwr1akGj.js +0 -1
  198. package/build/client/editor/_app/immutable/chunks/gwr1akGj.js.br +0 -0
  199. package/build/client/editor/_app/immutable/chunks/gwr1akGj.js.gz +0 -0
  200. package/build/client/editor/_app/immutable/entry/app.CGWGpYEx.js +0 -2
  201. package/build/client/editor/_app/immutable/entry/app.CGWGpYEx.js.br +0 -0
  202. package/build/client/editor/_app/immutable/entry/app.CGWGpYEx.js.gz +0 -0
  203. package/build/client/editor/_app/immutable/entry/start.kb42cPdT.js +0 -1
  204. package/build/client/editor/_app/immutable/entry/start.kb42cPdT.js.br +0 -2
  205. package/build/client/editor/_app/immutable/entry/start.kb42cPdT.js.gz +0 -0
  206. package/build/client/editor/_app/immutable/nodes/0.CgQGVwQy.js +0 -1
  207. package/build/client/editor/_app/immutable/nodes/0.CgQGVwQy.js.br +0 -0
  208. package/build/client/editor/_app/immutable/nodes/0.CgQGVwQy.js.gz +0 -0
  209. package/build/client/editor/_app/immutable/nodes/1.Clv1q2Lb.js +0 -1
  210. package/build/client/editor/_app/immutable/nodes/1.Clv1q2Lb.js.br +0 -0
  211. package/build/client/editor/_app/immutable/nodes/1.Clv1q2Lb.js.gz +0 -0
  212. package/build/client/editor/_app/immutable/nodes/2.BQsuvx4V.js +0 -1
  213. package/build/client/editor/_app/immutable/nodes/2.BQsuvx4V.js.br +0 -0
  214. package/build/client/editor/_app/immutable/nodes/2.BQsuvx4V.js.gz +0 -0
  215. package/build/client/editor/_app/immutable/nodes/3.C6sWHRJz.js +0 -1
  216. package/build/client/editor/_app/immutable/nodes/3.C6sWHRJz.js.br +0 -0
  217. package/build/client/editor/_app/immutable/nodes/3.C6sWHRJz.js.gz +0 -0
  218. package/build/client/editor/_app/immutable/nodes/4.DZS4NCiF.js +0 -1
  219. package/build/client/editor/_app/immutable/nodes/4.DZS4NCiF.js.br +0 -0
  220. package/build/client/editor/_app/immutable/nodes/4.DZS4NCiF.js.gz +0 -0
  221. package/build/client/editor/_app/immutable/nodes/5.CJJCY1eL.js.br +0 -0
  222. package/build/client/editor/_app/immutable/nodes/5.CJJCY1eL.js.gz +0 -0
  223. package/build/client/editor/_app/immutable/nodes/6.DWF34OYk.js +0 -1
  224. package/build/client/editor/_app/immutable/nodes/6.DWF34OYk.js.br +0 -0
  225. package/build/client/editor/_app/immutable/nodes/6.DWF34OYk.js.gz +0 -0
  226. package/build/client/editor/_app/immutable/nodes/7.CvKW7Bc_.js.br +0 -0
  227. package/build/client/editor/_app/immutable/nodes/7.CvKW7Bc_.js.gz +0 -0
  228. package/build/server/chunks/0-DVxv0pN2.js.map +0 -1
  229. package/build/server/chunks/1-DLAv7zUp.js +0 -9
  230. package/build/server/chunks/2-CXQjo2KJ.js.map +0 -1
  231. package/build/server/chunks/4-dfmp9D7Q.js.map +0 -1
  232. package/build/server/chunks/5-BiPB8QCd.js.map +0 -1
  233. package/build/server/chunks/6-C8te3i1r.js.map +0 -1
  234. package/build/server/chunks/7-DFJTEzDX.js.map +0 -1
  235. package/build/server/chunks/SearchInput-CSyQyxOt.js +0 -43
  236. package/build/server/chunks/SearchInput-CSyQyxOt.js.map +0 -1
  237. package/build/server/chunks/TagEdit-CPvm35aH.js.map +0 -1
  238. package/build/server/chunks/TextInput-CI0YQsi8.js.map +0 -1
  239. package/build/server/chunks/_page.svelte-A15IM8Ct.js.map +0 -1
  240. package/build/server/chunks/_page.svelte-ClKOeEWs.js.map +0 -1
  241. package/build/server/chunks/_page.svelte-CqwFUF2N.js.map +0 -1
  242. package/build/server/chunks/_page.svelte-DFajLADj.js.map +0 -1
  243. package/build/server/chunks/_page.svelte-DZIxV1wc.js.map +0 -1
  244. package/build/server/chunks/_server.ts-C4VM2PrZ.js.map +0 -1
  245. package/build/server/chunks/_server.ts-DVV4aYkL.js.map +0 -1
  246. package/build/server/chunks/galleryutil-BkuoU13t.js +0 -50
  247. package/build/server/chunks/galleryutil-BkuoU13t.js.map +0 -1
  248. package/build/server/chunks/server2--i02zbDo.js +0 -23
  249. package/build/server/chunks/server2--i02zbDo.js.map +0 -1
  250. package/build/server/chunks/util-DFt6Yctw.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DrH-oZMv.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/bluesky/sync/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { a as readCache, b as readPerceptualHashCache, c as writeCache, f as flushPerceptualHashCache } from \"../../../../../chunks/cache.js\";\nimport { galleries, rawGalleries } from \"@phosart/common/server\";\nimport crypto from \"node:crypto\";\nimport { rename, readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport phash from \"sharp-phash\";\nimport dist from \"sharp-phash/distance.js\";\nimport { c as createLogger } from \"../../../../../chunks/log.js\";\nimport { mkdir, stat } from \"fs/promises\";\nimport { createWriteStream } from \"node:fs\";\nimport { pipeline } from \"node:stream/promises\";\nimport https from \"node:https\";\nimport { $ as $IMGDIR, a as $CACHEFILE } from \"../../../../../chunks/paths.js\";\nimport { RateLimit } from \"async-sema\";\nimport { i as isExtendsGallery } from \"../../../../../chunks/galleryutil.js\";\nimport { AtpAgent, Agent } from \"@atproto/api\";\nconst DEFAULT_AGE_MS = 1e3 * 60 * 10;\nconst DEFAULT_MAX_POSTS_FROM_BSKY = 50;\nclass PostsClient {\n #agent;\n #backend;\n #maxAgeMs;\n #did;\n #didLogIn = false;\n #config;\n constructor(config) {\n this.#agent = new AtpAgent({\n service: \"https://bsky.social\"\n });\n this.#config = config;\n this.#backend = config.cache?.backend ?? null;\n this.#maxAgeMs = config.cache?.maxAgeMs ?? DEFAULT_AGE_MS;\n this.#did = config.bskyDid;\n }\n async getPosts(limit = DEFAULT_MAX_POSTS_FROM_BSKY) {\n if (!this.#didLogIn) {\n await this.#agent.login({\n identifier: this.#config.bskyUsername,\n password: this.#config.bskyPassword\n });\n }\n let cached = [];\n if (this.#backend) {\n cached = await this.#backend.getCachedPosts(limit);\n const lastCachedAt = await this.#backend.postsLastCachedAt();\n if (Date.now() - lastCachedAt.getTime() < this.#maxAgeMs) {\n return cached;\n }\n }\n const out = [];\n const mostRecent = cached[0] ?? null;\n let cursor = void 0;\n do {\n const resp = await this.#agent.getAuthorFeed({\n actor: this.#did,\n filter: \"posts_no_replies\",\n limit: 50,\n cursor\n });\n cursor = resp.data.cursor ?? void 0;\n console.log(resp.data.feed[0]);\n const next = this.#transformFeed(resp.data.feed);\n const toAdd = next.filter((nx) => !mostRecent || nx.date.localeCompare(mostRecent.date) > 0);\n out.splice(0, 0, ...toAdd);\n if (next.length !== toAdd.length) {\n break;\n }\n } while (cursor);\n if (this.#backend) {\n await this.#backend.cachePosts(out);\n }\n return [...out, ...cached].sort((p1, p2) => p2.date.localeCompare(p1.date)).slice(0, limit);\n }\n #transformFeed(fvps) {\n return fvps.filter((fvp) => fvp.post.author.did === this.#did && fvp.reason?.$type !== \"app.bsky.feed.defs#reasonRepost\" && !fvp.reply && (fvp.post.embed?.$type?.startsWith(\"app.bsky.embed.images#view\") || fvp.post.embed?.$type.startsWith(\"app.bsky.embed.video#view\"))).map((fvp) => ({\n uri: fvp.post.uri,\n date: fvp.post.indexedAt,\n text: fvp.post.record.text,\n likes: fvp.post.likeCount || 0,\n reposts: fvp.post.repostCount || 0,\n image_details: fvp.post.embed?.images?.map((img) => ({\n full_url: img.fullsize,\n alt_text: img.alt,\n thumb_url: img.thumb\n })) ?? [],\n video_thumb_url: fvp.post.embed?.thumbnail ?? null\n }));\n }\n}\nconst logger$2 = createLogger();\nconst sema = RateLimit(3);\nasync function downloadAndWrite(h, uri) {\n await sema();\n await mkdir($IMGDIR(), { recursive: true });\n const p = path.join($IMGDIR(), h + \".jpg\");\n const tmp = p + \".tmp.\" + Date.now();\n const ws = createWriteStream(tmp);\n logger$2.debug(\"Downloading image\", h, \"@\", uri, \"to\", p, \"...\");\n await new Promise((resolve, reject) => {\n https.get(uri, (res) => {\n res.on(\"error\", (err) => {\n logger$2.warn(\"Download failed; error:\", err);\n reject(err);\n });\n const pipe = pipeline(res, ws);\n pipe.then((_) => {\n if (res.statusCode && res.statusCode > 299) {\n logger$2.warn(\"Download failed; bluesky responded with status\", res.statusCode);\n reject(res.statusCode);\n } else {\n resolve(_);\n }\n }).catch(reject);\n });\n });\n logger$2.info(\"Finished downloading image\", h, \"@\", uri);\n await rename(tmp, p);\n}\nconst logger$1 = createLogger();\nasync function findMatches(posts) {\n logger$1.debug(\"Finding matches for\", posts.length, \"posts...\");\n const gcache = await galleries();\n const rgcache = await rawGalleries();\n const matches = posts.map((p) => findMatch(p, gcache, rgcache));\n const numMatches = matches.flatMap((p) => p.image_details).flatMap((d) => d.matches).length;\n logger$1.silly(\"Found\", numMatches, \"matches\");\n return matches;\n}\nfunction matchesForPhash(postPhash, galleries2, rawGalleries2, threshold) {\n const matches = [];\n for (const [galpath, gallery] of Object.entries(galleries2)) {\n if (isExtendsGallery(rawGalleries2[galpath])) {\n continue;\n }\n for (const piece of gallery.pieces) {\n const d = dist(piece.image.phash, postPhash);\n if (d <= threshold) {\n matches.push([{ gallery: galpath, piece: piece.slug }, d]);\n }\n for (const alt of piece.alts ?? []) {\n const d2 = dist(alt.image.phash, postPhash);\n if (d2 <= threshold) {\n matches.push([\n { gallery: galpath, piece: piece.slug, alt: alt.name },\n dist(alt.image.phash, postPhash)\n ]);\n }\n }\n }\n }\n return matches.toSorted(([, d1], [, d2]) => d1 - d2).map(([up]) => up);\n}\nfunction findMatch(post, galleries2, rawGalleries2, threshold = 5) {\n return {\n ...post,\n image_details: post.image_details.map((v) => ({\n ...v,\n matches: matchesForPhash(v.phash, galleries2, rawGalleries2, threshold)\n }))\n };\n}\nasync function getImages(posts, fileset) {\n logger$1.debug(\"Getting images for\", posts.length, \"posts...\");\n const withImages = (await Promise.all(\n posts.map(async (post) => {\n try {\n return await getImage(post, fileset);\n } catch (e) {\n console.warn(\"getting image failed: \", e);\n return null;\n }\n })\n )).filter((p) => !!p);\n logger$1.debug(\"Finished getting images\");\n return withImages;\n}\nasync function phashImage(h) {\n const p = path.join($IMGDIR(), h + \".jpg\");\n return await phash(await readFile(p));\n}\nasync function getImage(post, fileset) {\n return {\n ...post,\n image_details: await Promise.all(\n post.image_details.map(\n (v) => doPhashImage(v.full_url, fileset).then((phash2) => ({\n ...v,\n phash: phash2,\n id: imageId(v.full_url)\n }))\n )\n )\n };\n}\nasync function doPhashImage(uri, fileset) {\n const id = imageId(uri);\n if (id in fileset) {\n return fileset[id];\n }\n let hash;\n try {\n hash = await phashImage(id);\n } catch (e) {\n logger$1.debug(\n \"Failed to hash image\",\n id,\n \"trying to download the image then will hash again. Error:\",\n e\n );\n await downloadAndWrite(id, uri);\n hash = await phashImage(id);\n }\n fileset[id] = hash;\n return hash;\n}\nfunction imageId(uri) {\n const h = crypto.createHash(\"md5\");\n h.update(uri);\n return h.digest(\"base64url\");\n}\nfunction mergePosts(cache, posts) {\n for (const post of posts) {\n if (!cache.find((p) => p.uri === post.uri)) {\n cache.push(post);\n }\n }\n cache.sort((a, b) => b.date.localeCompare(a.date));\n return cache;\n}\nconst logger = createLogger();\nasync function sync(cfg) {\n logger.info(\"Syncing bluesky posts & images...\");\n try {\n const [cache, fileset] = await Promise.all([readCache(), readPerceptualHashCache()]);\n const bskyDid = process.env.BSKY_DID ?? cfg?.bskyDid ?? (cfg?.bskyUsername ? await getDid(cfg.bskyUsername) : void 0);\n const bskyPassword = process.env.BSKY_PASSWORD ?? cfg?.bskyPassword;\n const bskyUsername = process.env.BSKY_LOGIN ?? cfg?.bskyUsername;\n if (!bskyDid || !bskyPassword || !bskyUsername) {\n const errTxt = `Can't sync bluesky; missing information. Missing username? ${!bskyUsername} password? ${!bskyPassword} did? ${!bskyDid}`;\n logger.warn(errTxt);\n return error(400, \"Failed... \" + errTxt);\n }\n const client = new PostsClient({\n bskyDid,\n bskyPassword,\n bskyUsername,\n cache: {\n backend: {\n async cachePosts(posts) {\n await writeCache(mergePosts(cache, posts));\n },\n async getCachedPosts(_limit) {\n return cache;\n },\n async postsLastCachedAt() {\n try {\n return (await stat($CACHEFILE())).mtime;\n } catch {\n return /* @__PURE__ */ new Date(0);\n }\n }\n }\n }\n });\n const allPosts = mergePosts(cache, await client.getPosts(void 0));\n const withImages = await getImages(allPosts, fileset);\n await flushPerceptualHashCache(fileset);\n if (withImages.length !== allPosts.length) {\n return error(\n 500,\n `Failed to load ${allPosts.length - withImages.length} image(s); try again`\n );\n }\n const matches = await findMatches(withImages);\n logger.info(\"Done syncing\");\n return matches;\n } catch (err) {\n logger.warn(\"Failed to sync bluesky posts:\", err);\n throw err;\n }\n}\nasync function getDid(username) {\n const agent = new Agent({ service: \"https://bsky.social\" });\n const res = await agent.resolveHandle({ handle: username });\n return res.data.did;\n}\nconst POST = async ({ request }) => {\n const result = await sync(await request.json());\n if (Array.isArray(result)) {\n return json(result);\n }\n return result;\n};\nexport {\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import { $ART } from '@phosart/common/server';
2
2
  import path from 'node:path';
3
3
  import { e as error, j as json } from './index-CoD1IJuy.js';
4
- import { n as normalizeGalleryPath } from './galleryutil-BkuoU13t.js';
4
+ import { n as normalizeGalleryPath } from './galleryutil-DznhV1Pd.js';
5
5
  import { mkdir } from 'node:fs/promises';
6
6
  import { c as createLogger } from './log-Dgdg632G.js';
7
7
  import { r as resolveWithinArt } from './fileutil-Ckv64WTK.js';
8
+ import './util-Cfqr4aAv.js';
9
+ import './routing-C4Egnc9A.js';
10
+ import './event-ByDKS2H7.js';
8
11
  import 'tslog';
9
12
  import 'node:stream';
10
13
 
@@ -23,4 +26,4 @@ const PATCH = async ({ params }) => {
23
26
  };
24
27
 
25
28
  export { PATCH };
26
- //# sourceMappingURL=_server.ts-DPK-3jbk.js.map
29
+ //# sourceMappingURL=_server.ts-Ds6dyXi4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-DPK-3jbk.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/folder/_...folderpath_/_server.ts.js"],"sourcesContent":["import { $ART } from \"@phosart/common/server\";\nimport path from \"node:path\";\nimport { error, json } from \"@sveltejs/kit\";\nimport { n as normalizeGalleryPath } from \"../../../../../chunks/galleryutil.js\";\nimport { mkdir } from \"node:fs/promises\";\nimport { c as createLogger } from \"../../../../../chunks/log.js\";\nimport { r as resolveWithinArt } from \"../../../../../chunks/fileutil.js\";\nconst logger = createLogger();\nconst PATCH = async ({ params }) => {\n const folderPath = normalizeGalleryPath(params.folderpath);\n const fullPath = resolveWithinArt(path.join($ART(), folderPath));\n if (!fullPath) {\n logger.warn(\"Refusing to create folder outside art root @\", folderPath);\n throw error(400, \"invalid folder path\");\n }\n logger.debug(\"Creating folder @\", fullPath, \"...\");\n await mkdir(fullPath, { recursive: true });\n logger.info(\"Created folder @\", fullPath);\n return json({ ok: true });\n};\nexport {\n PATCH\n};\n"],"names":[],"mappings":";;;;;;;;;;AAOA,MAAM,MAAM,GAAG,YAAY,EAAE;AACxB,MAAC,KAAK,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACpC,EAAE,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5D,EAAE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;AAClE,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,IAAI,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE,UAAU,CAAC;AAC3E,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,qBAAqB,CAAC;AAC3C,EAAE;AACF,EAAE,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAC;AACpD,EAAE,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC5C,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC;AAC3C,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC3B;;;;"}
1
+ {"version":3,"file":"_server.ts-Ds6dyXi4.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/folder/_...folderpath_/_server.ts.js"],"sourcesContent":["import { $ART } from \"@phosart/common/server\";\nimport path from \"node:path\";\nimport { error, json } from \"@sveltejs/kit\";\nimport { n as normalizeGalleryPath } from \"../../../../../chunks/galleryutil.js\";\nimport { mkdir } from \"node:fs/promises\";\nimport { c as createLogger } from \"../../../../../chunks/log.js\";\nimport { r as resolveWithinArt } from \"../../../../../chunks/fileutil.js\";\nconst logger = createLogger();\nconst PATCH = async ({ params }) => {\n const folderPath = normalizeGalleryPath(params.folderpath);\n const fullPath = resolveWithinArt(path.join($ART(), folderPath));\n if (!fullPath) {\n logger.warn(\"Refusing to create folder outside art root @\", folderPath);\n throw error(400, \"invalid folder path\");\n }\n logger.debug(\"Creating folder @\", fullPath, \"...\");\n await mkdir(fullPath, { recursive: true });\n logger.info(\"Created folder @\", fullPath);\n return json({ ok: true });\n};\nexport {\n PATCH\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAOA,MAAM,MAAM,GAAG,YAAY,EAAE;AACxB,MAAC,KAAK,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACpC,EAAE,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5D,EAAE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;AAClE,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,IAAI,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE,UAAU,CAAC;AAC3E,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,qBAAqB,CAAC;AAC3C,EAAE;AACF,EAAE,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAC;AACpD,EAAE,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC5C,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC;AAC3C,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC3B;;;;"}
@@ -1,11 +1,15 @@
1
1
  import { open } from 'node:fs/promises';
2
2
  import { a as asWebStream } from './fileutil-Ckv64WTK.js';
3
- import { n as normalizeGalleryPath, a as isBaseGallery, g as getGalleryDir } from './galleryutil-BkuoU13t.js';
3
+ import { n as normalizeGalleryPath, a as isBaseGallery, g as getGalleryDir } from './galleryutil-DznhV1Pd.js';
4
4
  import { join } from 'node:path';
5
5
  import { rawGalleries, $ART } from '@phosart/common/server';
6
6
  import { e as error } from './index-CoD1IJuy.js';
7
7
  import { c as createLogger } from './log-Dgdg632G.js';
8
+ import mime from 'mime';
8
9
  import 'node:stream';
10
+ import './util-Cfqr4aAv.js';
11
+ import './routing-C4Egnc9A.js';
12
+ import './event-ByDKS2H7.js';
9
13
  import 'tslog';
10
14
 
11
15
  const logger$1 = createLogger();
@@ -90,9 +94,11 @@ const GET = async ({ params, url }) => {
90
94
  const file = await open(path);
91
95
  return new Response(asWebStream(file.createReadStream({ autoClose: true })), {
92
96
  status: 200,
93
- headers: {}
97
+ headers: {
98
+ "Content-Type": mime.getType(path) ?? "application/octet-stream"
99
+ }
94
100
  });
95
101
  };
96
102
 
97
103
  export { GET };
98
- //# sourceMappingURL=_server.ts-DVV4aYkL.js.map
104
+ //# sourceMappingURL=_server.ts-DwYgPNwZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DwYgPNwZ.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/gallery/_...gallerypath_/_piece_/original-image/_server.ts.js"],"sourcesContent":["import { open } from \"node:fs/promises\";\nimport { a as asWebStream } from \"../../../../../../../chunks/fileutil.js\";\nimport { a as isBaseGallery, g as getGalleryDir, n as normalizeGalleryPath } from \"../../../../../../../chunks/galleryutil.js\";\nimport { join } from \"node:path\";\nimport { rawGalleries, $ART } from \"@phosart/common/server\";\nimport { error } from \"@sveltejs/kit\";\nimport { c as createLogger } from \"../../../../../../../chunks/log.js\";\nimport mime from \"mime\";\nconst logger$1 = createLogger();\nasync function getOriginalImagePath(galleryPath, pieceSlug, {\n video,\n thumb,\n alt,\n altIndex\n} = {}) {\n const gallery = (await rawGalleries())[galleryPath];\n if (!isBaseGallery(gallery)) {\n logger$1.warn(\"Gallery not found for original image @\", galleryPath);\n return error(404, \"gallery not found\");\n }\n const piece = gallery.pieces.find((p) => p.slug === pieceSlug);\n if (!piece) {\n logger$1.warn(\"Piece not found for original image @\", galleryPath, \"piece\", pieceSlug);\n return error(404, \"piece not found\");\n }\n const getResource = (resource) => {\n if (!video) {\n return resource.image;\n }\n return (thumb ? resource.video?.thumb ?? resource.video?.full : resource.video?.full) ?? null;\n };\n let resourceUrl = getResource(piece);\n if (!resourceUrl) {\n logger$1.warn(\"Resource not found for original image @\", galleryPath, \"piece\", pieceSlug);\n return error(404, \"resource not found pt. 1\");\n }\n if (alt || (altIndex ?? -1) >= 0) {\n const altPei = piece?.alts?.find((a) => a.name === alt) ?? piece?.alts?.[altIndex ?? -1];\n if (!altPei) {\n logger$1.warn(\"Alt not found for original image @\", galleryPath, \"piece\", pieceSlug);\n return error(404, \"alt not found\");\n }\n resourceUrl = getResource(altPei);\n }\n if (!resourceUrl) {\n logger$1.warn(\"Resource not found for original image @\", galleryPath, \"piece\", pieceSlug);\n return error(404, \"resourceUrl not found pt 2.\");\n }\n const fullPath = join($ART(), getGalleryDir(galleryPath), resourceUrl);\n logger$1.silly(\"Resolved original image @\", fullPath);\n return fullPath;\n}\nconst logger = createLogger();\nconst GET = async ({ params, url }) => {\n const galleryPath = normalizeGalleryPath(params.gallerypath);\n const pieceSlug = params.piece;\n const video = url.searchParams.get(\"video\") === \"true\";\n const thumb = url.searchParams.get(\"thumb\") === \"true\";\n const alt = url.searchParams.get(\"alt\") ?? void 0;\n let altIndex = -1;\n const altIndexS = url.searchParams.get(\"altIndex\");\n if (altIndexS) {\n try {\n altIndex = parseInt(altIndexS);\n } catch {\n }\n }\n logger.silly(\n \"Fetching original image\",\n \"gallery\",\n galleryPath,\n \"piece\",\n pieceSlug,\n \"video?\",\n video,\n \"thumb?\",\n thumb,\n \"alt?\",\n alt ?? \"none\",\n \"altIndex\",\n altIndex\n );\n const path = await getOriginalImagePath(galleryPath, pieceSlug, { video, thumb, alt, altIndex });\n if (typeof path !== \"string\") {\n return path;\n }\n logger.silly(\"Serving original image @\", path);\n const file = await open(path);\n return new Response(asWebStream(file.createReadStream({ autoClose: true })), {\n status: 200,\n headers: {\n \"Content-Type\": mime.getType(path) ?? \"application/octet-stream\"\n }\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":"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"}
@@ -2,13 +2,16 @@ import { e as error, j as json } from './index-CoD1IJuy.js';
2
2
  import path from 'node:path';
3
3
  import { $ART } from '@phosart/common/server';
4
4
  import { writeFile } from 'node:fs/promises';
5
- import { n as normalizeGalleryPath, g as getGalleryDir, b as getGalleryName } from './galleryutil-BkuoU13t.js';
5
+ import { n as normalizeGalleryPath, g as getGalleryDir, b as getGalleryName } from './galleryutil-DznhV1Pd.js';
6
6
  import { g as getImageExtension } from './fileutil2-CRs5tSRN.js';
7
7
  import { r as resolveWithinArt, b as asNodeStream } from './fileutil-Ckv64WTK.js';
8
8
  import { spawn } from 'node:child_process';
9
9
  import { path as path$1 } from '@ffmpeg-installer/ffmpeg';
10
10
  import { c as createLogger } from './log-Dgdg632G.js';
11
11
  import { randomInt } from 'node:crypto';
12
+ import './util-Cfqr4aAv.js';
13
+ import './routing-C4Egnc9A.js';
14
+ import './event-ByDKS2H7.js';
12
15
  import 'node:stream';
13
16
  import 'tslog';
14
17
 
@@ -88,4 +91,4 @@ function relpath(galleryPath, fname, ftype, rand) {
88
91
  }
89
92
 
90
93
  export { POST };
91
- //# sourceMappingURL=_server.ts-Bt1PHziR.js.map
94
+ //# sourceMappingURL=_server.ts-fomxq4EP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-Bt1PHziR.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/gallery/_...gallerypath_/upload-image/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport path from \"node:path\";\nimport { $ART } from \"@phosart/common/server\";\nimport { writeFile } from \"node:fs/promises\";\nimport { n as normalizeGalleryPath, g as getGalleryDir, b as getGalleryName } from \"../../../../../../chunks/galleryutil.js\";\nimport { g as getImageExtension } from \"../../../../../../chunks/fileutil2.js\";\nimport { r as resolveWithinArt, b as asNodeStream } from \"../../../../../../chunks/fileutil.js\";\nimport { spawn } from \"node:child_process\";\nimport { path as path$1 } from \"@ffmpeg-installer/ffmpeg\";\nimport { c as createLogger } from \"../../../../../../chunks/log.js\";\nimport { randomInt } from \"node:crypto\";\nconst logger = createLogger();\nconst POST = async ({ request, params }) => {\n const galleryPath = normalizeGalleryPath(params.gallerypath);\n const data = await request.formData();\n const f = data.get(\"file\");\n const fname = data.get(\"filename\");\n const ftype = data.get(\"filetype\");\n logger.info(\"Uploading gallery image\", fname, \"to\", galleryPath, \"with type\", ftype);\n const rand = String(Date.now()).slice(-5) + String(randomInt(4096));\n await uploadImage(galleryPath, f, fname, ftype, rand);\n if (ftype.startsWith(\"video\")) {\n logger.info(\"Generating thumbnail for video\", fname, \"@\", galleryPath, \"...\");\n const ffmpegInput = resolveWithinArt(\n path.join($ART(), getGalleryDir(galleryPath), relpath(galleryPath, fname, ftype, rand))\n );\n const ffmpegOutput = resolveWithinArt(\n path.join(\n $ART(),\n getGalleryDir(galleryPath),\n relpath(galleryPath, fname + \"_thumb\", \"image/jpeg\", rand)\n )\n );\n if (!ffmpegInput || !ffmpegOutput) {\n logger.warn(\"Refusing to write video thumbnail outside art root @\", galleryPath);\n throw error(400, \"invalid gallery path\");\n }\n const ffmpeg = spawn(path$1, [\n \"-i\",\n ffmpegInput,\n \"-vf\",\n \"select=eq(n\\\\,0)\",\n \"-vf\",\n \"scale=320:-2\",\n \"-q:v\",\n \"3\",\n ffmpegOutput,\n \"-y\"\n ]);\n try {\n await new Promise((resolve, reject) => {\n ffmpeg.once(\"close\", resolve);\n ffmpeg.on(\"error\", (err) => {\n reject(err);\n });\n });\n } catch (e) {\n logger.warn(\"Failed to generate video thumbnail:\", e);\n }\n }\n logger.info(\"Uploaded gallery image\", fname, \"to\", galleryPath);\n return json({\n fname: \"./\" + relpath(galleryPath, fname, ftype, rand),\n tname: \"./\" + relpath(galleryPath, fname + \"_thumb\", \"image/jpeg\", rand)\n });\n};\nasync function uploadImage(galleryPath, image, fname, ftype, rand) {\n const galleryDir = getGalleryDir(galleryPath);\n const fp = resolveWithinArt(\n path.join($ART(), galleryDir, relpath(galleryPath, fname, ftype, rand))\n );\n if (!fp) {\n logger.warn(\"Refusing to write gallery image outside art root @\", galleryPath);\n throw error(400, \"invalid gallery path\");\n }\n logger.silly(\"Writing gallery image @\", fp, \"for\", fname, \"...\");\n await writeFile(fp, asNodeStream(image.stream()), { encoding: \"utf-8\" });\n logger.debug(\"Wrote gallery image @\", fp);\n}\nfunction relpath(galleryPath, fname, ftype, rand) {\n const galleryName = getGalleryName(galleryPath);\n const safeName = fname.replaceAll(/[^A-Za-z0-9-_]|\\.\\./g, \"\");\n const ext = getImageExtension(ftype);\n return `${galleryName}_${safeName}_${rand}.${ext}`;\n}\nexport {\n POST\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts-fomxq4EP.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/gallery/_...gallerypath_/upload-image/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport path from \"node:path\";\nimport { $ART } from \"@phosart/common/server\";\nimport { writeFile } from \"node:fs/promises\";\nimport { n as normalizeGalleryPath, g as getGalleryDir, b as getGalleryName } from \"../../../../../../chunks/galleryutil.js\";\nimport { g as getImageExtension } from \"../../../../../../chunks/fileutil2.js\";\nimport { r as resolveWithinArt, b as asNodeStream } from \"../../../../../../chunks/fileutil.js\";\nimport { spawn } from \"node:child_process\";\nimport { path as path$1 } from \"@ffmpeg-installer/ffmpeg\";\nimport { c as createLogger } from \"../../../../../../chunks/log.js\";\nimport { randomInt } from \"node:crypto\";\nconst logger = createLogger();\nconst POST = async ({ request, params }) => {\n const galleryPath = normalizeGalleryPath(params.gallerypath);\n const data = await request.formData();\n const f = data.get(\"file\");\n const fname = data.get(\"filename\");\n const ftype = data.get(\"filetype\");\n logger.info(\"Uploading gallery image\", fname, \"to\", galleryPath, \"with type\", ftype);\n const rand = String(Date.now()).slice(-5) + String(randomInt(4096));\n await uploadImage(galleryPath, f, fname, ftype, rand);\n if (ftype.startsWith(\"video\")) {\n logger.info(\"Generating thumbnail for video\", fname, \"@\", galleryPath, \"...\");\n const ffmpegInput = resolveWithinArt(\n path.join($ART(), getGalleryDir(galleryPath), relpath(galleryPath, fname, ftype, rand))\n );\n const ffmpegOutput = resolveWithinArt(\n path.join(\n $ART(),\n getGalleryDir(galleryPath),\n relpath(galleryPath, fname + \"_thumb\", \"image/jpeg\", rand)\n )\n );\n if (!ffmpegInput || !ffmpegOutput) {\n logger.warn(\"Refusing to write video thumbnail outside art root @\", galleryPath);\n throw error(400, \"invalid gallery path\");\n }\n const ffmpeg = spawn(path$1, [\n \"-i\",\n ffmpegInput,\n \"-vf\",\n \"select=eq(n\\\\,0)\",\n \"-vf\",\n \"scale=320:-2\",\n \"-q:v\",\n \"3\",\n ffmpegOutput,\n \"-y\"\n ]);\n try {\n await new Promise((resolve, reject) => {\n ffmpeg.once(\"close\", resolve);\n ffmpeg.on(\"error\", (err) => {\n reject(err);\n });\n });\n } catch (e) {\n logger.warn(\"Failed to generate video thumbnail:\", e);\n }\n }\n logger.info(\"Uploaded gallery image\", fname, \"to\", galleryPath);\n return json({\n fname: \"./\" + relpath(galleryPath, fname, ftype, rand),\n tname: \"./\" + relpath(galleryPath, fname + \"_thumb\", \"image/jpeg\", rand)\n });\n};\nasync function uploadImage(galleryPath, image, fname, ftype, rand) {\n const galleryDir = getGalleryDir(galleryPath);\n const fp = resolveWithinArt(\n path.join($ART(), galleryDir, relpath(galleryPath, fname, ftype, rand))\n );\n if (!fp) {\n logger.warn(\"Refusing to write gallery image outside art root @\", galleryPath);\n throw error(400, \"invalid gallery path\");\n }\n logger.silly(\"Writing gallery image @\", fp, \"for\", fname, \"...\");\n await writeFile(fp, asNodeStream(image.stream()), { encoding: \"utf-8\" });\n logger.debug(\"Wrote gallery image @\", fp);\n}\nfunction relpath(galleryPath, fname, ftype, rand) {\n const galleryName = getGalleryName(galleryPath);\n const safeName = fname.replaceAll(/[^A-Za-z0-9-_]|\\.\\./g, \"\");\n const ext = getImageExtension(ftype);\n return `${galleryName}_${safeName}_${rand}.${ext}`;\n}\nexport {\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import { t as truthy, r as resolve, a as uploadImage } from './util-Cfqr4aAv.js';
2
+ import path from 'node:path';
3
+
4
+ function normalizeGalleryPath(path$1) {
5
+ return (path$1 ?? "").replaceAll(path.sep, "/").replaceAll(/^\/*/g, "");
6
+ }
7
+ function getGalleryDir(galleryPath) {
8
+ const parts = galleryPath.split("/");
9
+ return parts.slice(0, -1).join("/");
10
+ }
11
+ function getGalleryName(galleryPath) {
12
+ const parts = galleryPath.split("/");
13
+ return parts.at(-1).split(".")[0];
14
+ }
15
+ function isBaseGallery(gallery) {
16
+ return !isExtendsGallery(gallery);
17
+ }
18
+ function isExtendsGallery(gallery) {
19
+ return !!gallery && "$extends" in gallery;
20
+ }
21
+ function createNewPiece(image, filePath, index, identifiers, thumbPath) {
22
+ let slug = image.name.replaceAll(/[^A-Za-z0-9]/g, "-") + "-" + index;
23
+ while (identifiers.includes(slug)) {
24
+ slug += " copy";
25
+ }
26
+ const piece = {
27
+ id: slug,
28
+ alt: "",
29
+ characters: [],
30
+ date: new Date(image.lastModified),
31
+ name: image.name,
32
+ image: "",
33
+ slug,
34
+ tags: [],
35
+ alts: [],
36
+ artist: void 0,
37
+ description: "",
38
+ position: void 0,
39
+ video: void 0
40
+ };
41
+ if (image.type.startsWith("video")) {
42
+ piece.video = { full: filePath, thumb: filePath };
43
+ piece.image = thumbPath ?? "";
44
+ } else {
45
+ piece.image = filePath;
46
+ }
47
+ return piece;
48
+ }
49
+ function getImageUrls(galleryPath, piece, epoch) {
50
+ return {
51
+ image: resolve(`/api/gallery/${galleryPath}/${piece.slug}/original-image?epoch=${""}`),
52
+ alts: Object.fromEntries(
53
+ piece.alts?.map((alt, i) => {
54
+ return [
55
+ alt.name,
56
+ {
57
+ image: resolve(
58
+ `/api/gallery/${galleryPath}/${piece.slug}/original-image?epoch=${""}&alt=${alt.name}&altIndex=${i}`
59
+ ),
60
+ video: {
61
+ full: alt.video?.full ? resolve(
62
+ `/api/gallery/${galleryPath}/${piece.slug}/original-image?epoch=${""}&alt=${alt.name}&altIndex=${i}&video=true`
63
+ ) : void 0,
64
+ thumb: alt.video?.thumb ? resolve(
65
+ `/api/gallery/${galleryPath}/${piece.slug}/original-image?epoch=${""}&alt=${alt.name}&altIndex=${i}&video=true&thumb=true`
66
+ ) : void 0
67
+ }
68
+ }
69
+ ];
70
+ }) ?? []
71
+ ),
72
+ video: {
73
+ full: piece.video?.full ? resolve(
74
+ `/api/gallery/${galleryPath}/${piece.slug}/original-image?video=true&epoch=${""}`
75
+ ) : void 0,
76
+ thumb: piece.video?.thumb ? resolve(
77
+ `/api/gallery/${galleryPath}/${piece.slug}/original-image?video=true&thumb=true&epoch=${""}`
78
+ ) : void 0
79
+ }
80
+ };
81
+ }
82
+ async function copyPiece(piece, srcGalleryPath, targetGalleryPath) {
83
+ const urls = getImageUrls(srcGalleryPath, piece);
84
+ const newPiece = {
85
+ ...piece,
86
+ id: "copy-" + (piece.id ?? piece.slug) + Date.now() + Math.floor(Math.random() * 4096)
87
+ };
88
+ async function upload(path2) {
89
+ return (await uploadImage(
90
+ { gallery: targetGalleryPath, piece: "" },
91
+ await fetch(path2).then((r) => r.blob()),
92
+ piece.name
93
+ )).filename;
94
+ }
95
+ newPiece.image = await upload(urls.image);
96
+ newPiece.alts = newPiece.alts ? await Promise.all(
97
+ newPiece.alts.map(async (alt) => {
98
+ const aurls = urls.alts[alt.name];
99
+ if (!aurls) return null;
100
+ return {
101
+ ...alt,
102
+ image: await upload(aurls.image),
103
+ video: aurls.video.full && aurls.video.thumb ? {
104
+ full: await upload(aurls.video.full),
105
+ thumb: await upload(aurls.video.thumb)
106
+ } : void 0
107
+ };
108
+ })
109
+ ).then((p) => p.filter(truthy)) : void 0;
110
+ if (urls.video.full && urls.video.thumb) {
111
+ newPiece.video = { full: await upload(urls.video.full), thumb: await upload(urls.video.thumb) };
112
+ }
113
+ return newPiece;
114
+ }
115
+ async function copyPieces(pieces, srcGalleryPath, targetGalleryPath) {
116
+ return await Promise.all(pieces.map((p) => copyPiece(p, srcGalleryPath, targetGalleryPath)));
117
+ }
118
+
119
+ export { isBaseGallery as a, getGalleryName as b, copyPieces as c, createNewPiece as d, getGalleryDir as g, isExtendsGallery as i, normalizeGalleryPath as n };
120
+ //# sourceMappingURL=galleryutil-DznhV1Pd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"galleryutil-DznhV1Pd.js","sources":["../../../.svelte-kit/adapter-node/chunks/galleryutil.js"],"sourcesContent":["import { r as resolve } from \"./server2.js\";\nimport path from \"node:path\";\nimport { t as truthy, u as uploadImage } from \"./util.js\";\nfunction normalizeGalleryPath(path$1) {\n return (path$1 ?? \"\").replaceAll(path.sep, \"/\").replaceAll(/^\\/*/g, \"\");\n}\nfunction getGalleryDir(galleryPath) {\n const parts = galleryPath.split(\"/\");\n return parts.slice(0, -1).join(\"/\");\n}\nfunction getGalleryName(galleryPath) {\n const parts = galleryPath.split(\"/\");\n return parts.at(-1).split(\".\")[0];\n}\nfunction isBaseGallery(gallery) {\n return !isExtendsGallery(gallery);\n}\nfunction isExtendsGallery(gallery) {\n return !!gallery && \"$extends\" in gallery;\n}\nfunction createNewPiece(image, filePath, index, identifiers, thumbPath) {\n let slug = image.name.replaceAll(/[^A-Za-z0-9]/g, \"-\") + \"-\" + index;\n while (identifiers.includes(slug)) {\n slug += \" copy\";\n }\n const piece = {\n id: slug,\n alt: \"\",\n characters: [],\n date: new Date(image.lastModified),\n name: image.name,\n image: \"\",\n slug,\n tags: [],\n alts: [],\n artist: void 0,\n description: \"\",\n position: void 0,\n video: void 0\n };\n if (image.type.startsWith(\"video\")) {\n piece.video = { full: filePath, thumb: filePath };\n piece.image = thumbPath ?? \"\";\n } else {\n piece.image = filePath;\n }\n return piece;\n}\nfunction getImageUrls(galleryPath, piece, epoch) {\n return {\n image: resolve(`/api/gallery/${galleryPath}/${piece.slug}/original-image?epoch=${\"\"}`),\n alts: Object.fromEntries(\n piece.alts?.map((alt, i) => {\n return [\n alt.name,\n {\n image: resolve(\n `/api/gallery/${galleryPath}/${piece.slug}/original-image?epoch=${\"\"}&alt=${alt.name}&altIndex=${i}`\n ),\n video: {\n full: alt.video?.full ? resolve(\n `/api/gallery/${galleryPath}/${piece.slug}/original-image?epoch=${\"\"}&alt=${alt.name}&altIndex=${i}&video=true`\n ) : void 0,\n thumb: alt.video?.thumb ? resolve(\n `/api/gallery/${galleryPath}/${piece.slug}/original-image?epoch=${\"\"}&alt=${alt.name}&altIndex=${i}&video=true&thumb=true`\n ) : void 0\n }\n }\n ];\n }) ?? []\n ),\n video: {\n full: piece.video?.full ? resolve(\n `/api/gallery/${galleryPath}/${piece.slug}/original-image?video=true&epoch=${\"\"}`\n ) : void 0,\n thumb: piece.video?.thumb ? resolve(\n `/api/gallery/${galleryPath}/${piece.slug}/original-image?video=true&thumb=true&epoch=${\"\"}`\n ) : void 0\n }\n };\n}\nasync function copyPiece(piece, srcGalleryPath, targetGalleryPath) {\n const urls = getImageUrls(srcGalleryPath, piece);\n const newPiece = {\n ...piece,\n id: \"copy-\" + (piece.id ?? piece.slug) + Date.now() + Math.floor(Math.random() * 4096)\n };\n async function upload(path2) {\n return (await uploadImage(\n { gallery: targetGalleryPath, piece: \"\" },\n await fetch(path2).then((r) => r.blob()),\n piece.name\n )).filename;\n }\n newPiece.image = await upload(urls.image);\n newPiece.alts = newPiece.alts ? await Promise.all(\n newPiece.alts.map(async (alt) => {\n const aurls = urls.alts[alt.name];\n if (!aurls) return null;\n return {\n ...alt,\n image: await upload(aurls.image),\n video: aurls.video.full && aurls.video.thumb ? {\n full: await upload(aurls.video.full),\n thumb: await upload(aurls.video.thumb)\n } : void 0\n };\n })\n ).then((p) => p.filter(truthy)) : void 0;\n if (urls.video.full && urls.video.thumb) {\n newPiece.video = { full: await upload(urls.video.full), thumb: await upload(urls.video.thumb) };\n }\n return newPiece;\n}\nasync function copyPieces(pieces, srcGalleryPath, targetGalleryPath) {\n return await Promise.all(pieces.map((p) => copyPiece(p, srcGalleryPath, targetGalleryPath)));\n}\nexport {\n isBaseGallery as a,\n getGalleryName as b,\n copyPieces as c,\n createNewPiece as d,\n getGalleryDir as g,\n isExtendsGallery as i,\n normalizeGalleryPath as n\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,24 @@
1
1
  import { c as createLogger } from './log-Dgdg632G.js';
2
- import { r as resolve } from './server2--i02zbDo.js';
2
+ import { f as resolve_route, i as initial_base, b as base } from './routing-C4Egnc9A.js';
3
+ import { t as try_get_request_store } from './event-ByDKS2H7.js';
4
+
5
+ function resolve(id, params) {
6
+ const resolved = resolve_route(
7
+ id,
8
+ /** @type {Record<string, string>} */
9
+ params
10
+ );
11
+ {
12
+ const store = try_get_request_store();
13
+ if (store && !store.state.prerendering?.fallback) {
14
+ const after_base = store.event.url.pathname.slice(initial_base.length);
15
+ const segments = after_base.split("/").slice(2);
16
+ const prefix = segments.map(() => "..").join("/") || ".";
17
+ return prefix + resolved;
18
+ }
19
+ }
20
+ return base + resolved;
21
+ }
3
22
 
4
23
  const logger = createLogger();
5
24
  function unique(arr) {
@@ -35,6 +54,9 @@ async function uploadImage(path, f, name) {
35
54
  `return value from image upload did not contain expected filename: ${JSON.stringify(json)}`
36
55
  );
37
56
  }
57
+ function truthy(t) {
58
+ return !!t;
59
+ }
38
60
 
39
- export { uploadImage as a, unique as u };
40
- //# sourceMappingURL=util-DFt6Yctw.js.map
61
+ export { uploadImage as a, resolve as r, truthy as t, unique as u };
62
+ //# sourceMappingURL=util-Cfqr4aAv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util-Cfqr4aAv.js","sources":["../../../.svelte-kit/adapter-node/chunks/server2.js","../../../.svelte-kit/adapter-node/chunks/util.js"],"sourcesContent":["import { i as initial_base, b as base } from \"./server.js\";\nimport { r as resolve_route } from \"./routing.js\";\nimport { try_get_request_store } from \"@sveltejs/kit/internal/server\";\nfunction resolve(id, params) {\n const resolved = resolve_route(\n id,\n /** @type {Record<string, string>} */\n params\n );\n {\n const store = try_get_request_store();\n if (store && !store.state.prerendering?.fallback) {\n const after_base = store.event.url.pathname.slice(initial_base.length);\n const segments = after_base.split(\"/\").slice(2);\n const prefix = segments.map(() => \"..\").join(\"/\") || \".\";\n return prefix + resolved;\n }\n }\n return base + resolved;\n}\nexport {\n resolve as r\n};\n","import { c as createLogger } from \"./log.js\";\nimport { r as resolve } from \"./server2.js\";\nconst logger = createLogger();\nfunction unique(arr) {\n return [...new Set(arr)];\n}\nasync function uploadImage(path, f, name) {\n logger.debug(\"Uploading image from blob\", name, \"to\", path);\n const formData = new FormData();\n formData.append(\"file\", f);\n formData.append(\"filename\", name);\n formData.append(\"filetype\", f.type);\n let reqpath;\n if (path.character !== void 0) {\n reqpath = resolve(`/api/characters/upload-image?for=${path.for}`);\n } else {\n reqpath = resolve(\"/api/gallery/[...gallerypath]/upload-image\", { gallerypath: path.gallery });\n }\n const res = await fetch(reqpath, {\n method: \"POST\",\n body: formData\n });\n const json = await res.json();\n let thumbnail = void 0;\n if (typeof json === \"object\" && \"tname\" in json && typeof json.tname === \"string\") {\n thumbnail = json.tname;\n }\n if (typeof json === \"object\" && \"fname\" in json && typeof json.fname === \"string\") {\n const ret = { filename: json.fname, thumbnail };\n logger.debug(\"Upload complete:\", ret);\n return ret;\n }\n throw new Error(\n `return value from image upload did not contain expected filename: ${JSON.stringify(json)}`\n );\n}\nfunction truthy(t) {\n return !!t;\n}\nexport {\n unique as a,\n truthy as t,\n uploadImage as u\n};\n"],"names":[],"mappings":"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"}
@@ -3430,7 +3430,7 @@ const options = {
3430
3430
  <div class="error">
3431
3431
  <span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
3432
3432
  },
3433
- version_hash: "29asfr"
3433
+ version_hash: "18icq2i"
3434
3434
  };
3435
3435
  async function get_hooks() {
3436
3436
  let handle;