@phosart/devtool 0.2.35 → 0.2.36

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 (298) hide show
  1. package/build/client/_app/immutable/chunks/BC5AZBzH.js +1 -0
  2. package/build/client/_app/immutable/chunks/BC5AZBzH.js.br +2 -0
  3. package/build/client/_app/immutable/chunks/BC5AZBzH.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{CqY3AcBN.js → BElq_XEq.js} +1 -1
  5. package/build/client/_app/immutable/chunks/BElq_XEq.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BElq_XEq.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{Ufa143ku.js → BMqq69yj.js} +1 -1
  8. package/build/client/_app/immutable/chunks/BMqq69yj.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/BMqq69yj.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/BX0yqstD.js +1 -0
  11. package/build/client/_app/immutable/chunks/BX0yqstD.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/BX0yqstD.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{C5h3_Ot-.js → BapUyEEz.js} +1 -1
  14. package/build/client/_app/immutable/chunks/BapUyEEz.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/BapUyEEz.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{ZoU2KXpG.js → BgqBztR4.js} +1 -1
  17. package/build/client/_app/immutable/chunks/BgqBztR4.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/BgqBztR4.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/BkPVleVI.js +1 -0
  20. package/build/client/_app/immutable/chunks/BkPVleVI.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/BkPVleVI.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{6A-1YxbO.js → C1WHYk-w.js} +1 -1
  23. package/build/client/_app/immutable/chunks/C1WHYk-w.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/C1WHYk-w.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/D4zO2klv.js +2 -0
  26. package/build/client/_app/immutable/chunks/D4zO2klv.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/D4zO2klv.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/D8ahK2hV.js +1 -0
  29. package/build/client/_app/immutable/chunks/D8ahK2hV.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/D8ahK2hV.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/DEphipGc.js +5 -0
  32. package/build/client/_app/immutable/chunks/DEphipGc.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/DEphipGc.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/DGwW4Vhm.js +12 -0
  35. package/build/client/_app/immutable/chunks/DGwW4Vhm.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/DGwW4Vhm.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/{OQPjhzqD.js → DaodlIRi.js} +1 -1
  38. package/build/client/_app/immutable/chunks/DaodlIRi.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/DaodlIRi.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/{UNrzuVQp.js → DnCB-Z04.js} +1 -1
  41. package/build/client/_app/immutable/chunks/DnCB-Z04.js.br +3 -0
  42. package/build/client/_app/immutable/chunks/DnCB-Z04.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/Dv54ua4y.js +1 -0
  44. package/build/client/_app/immutable/chunks/Dv54ua4y.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/Dv54ua4y.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/LqcT1mfj.js +1 -0
  47. package/build/client/_app/immutable/chunks/LqcT1mfj.js.br +0 -0
  48. package/build/client/_app/immutable/chunks/LqcT1mfj.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/{DW2Pu8pP.js → RS5wembv.js} +1 -1
  50. package/build/client/_app/immutable/chunks/RS5wembv.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/RS5wembv.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/q7Q3DzpZ.js +2 -0
  53. package/build/client/_app/immutable/chunks/q7Q3DzpZ.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/q7Q3DzpZ.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/whcYMTRi.js +1 -0
  56. package/build/client/_app/immutable/chunks/whcYMTRi.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/whcYMTRi.js.gz +0 -0
  58. package/build/client/_app/immutable/entry/app.CazHxxo7.js +2 -0
  59. package/build/client/_app/immutable/entry/app.CazHxxo7.js.br +0 -0
  60. package/build/client/_app/immutable/entry/app.CazHxxo7.js.gz +0 -0
  61. package/build/client/_app/immutable/entry/start.BSpLL2hH.js +1 -0
  62. package/build/client/_app/immutable/entry/start.BSpLL2hH.js.br +2 -0
  63. package/build/client/_app/immutable/entry/start.BSpLL2hH.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/0.Cc8-o-kb.js +1 -0
  65. package/build/client/_app/immutable/nodes/0.Cc8-o-kb.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/0.Cc8-o-kb.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/1.jm-lpixt.js +1 -0
  68. package/build/client/_app/immutable/nodes/1.jm-lpixt.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/1.jm-lpixt.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/2.C42ZVqhw.js +1 -0
  71. package/build/client/_app/immutable/nodes/2.C42ZVqhw.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/2.C42ZVqhw.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/3.MjSjwkh-.js +1 -0
  74. package/build/client/_app/immutable/nodes/3.MjSjwkh-.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/3.MjSjwkh-.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/4.BTUdNQQ_.js +1 -0
  77. package/build/client/_app/immutable/nodes/4.BTUdNQQ_.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/4.BTUdNQQ_.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/5.mQmEJ5W-.js +1 -0
  80. package/build/client/_app/immutable/nodes/5.mQmEJ5W-.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/5.mQmEJ5W-.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/6._0JXYqRv.js +1 -0
  83. package/build/client/_app/immutable/nodes/6._0JXYqRv.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/6._0JXYqRv.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/7.B5agaVcR.js +1 -0
  86. package/build/client/_app/immutable/nodes/7.B5agaVcR.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/7.B5agaVcR.js.gz +0 -0
  88. package/build/client/_app/version.json +1 -1
  89. package/build/client/_app/version.json.br +0 -0
  90. package/build/client/_app/version.json.gz +0 -0
  91. package/build/server/chunks/{0-Db-3CVz6.js → 0-DsKgJFvw.js} +4 -25
  92. package/build/server/chunks/0-DsKgJFvw.js.map +1 -0
  93. package/build/server/chunks/1-BWeJIc1A.js +9 -0
  94. package/build/server/chunks/{1-DuB9Tb7M.js.map → 1-BWeJIc1A.js.map} +1 -1
  95. package/build/server/chunks/{2-DWuX-HYe.js → 2-BeBpG3Gt.js} +10 -32
  96. package/build/server/chunks/2-BeBpG3Gt.js.map +1 -0
  97. package/build/server/chunks/{3-Dk00WOvb.js → 3-DVjLhEJX.js} +4 -13
  98. package/build/server/chunks/3-DVjLhEJX.js.map +1 -0
  99. package/build/server/chunks/4-BoArdYfQ.js +31 -0
  100. package/build/server/chunks/4-BoArdYfQ.js.map +1 -0
  101. package/build/server/chunks/5-Cb9j38_o.js +34 -0
  102. package/build/server/chunks/5-Cb9j38_o.js.map +1 -0
  103. package/build/server/chunks/{6-WSd-31h6.js → 6-C3Culhtq.js} +6 -9
  104. package/build/server/chunks/6-C3Culhtq.js.map +1 -0
  105. package/build/server/chunks/7-llyQrrbn.js +35 -0
  106. package/build/server/chunks/7-llyQrrbn.js.map +1 -0
  107. package/build/server/chunks/{TextBox-D09ycG7i.js → TextBox-C3S0hJ__.js} +3 -3
  108. package/build/server/chunks/TextBox-C3S0hJ__.js.map +1 -0
  109. package/build/server/chunks/{_page.svelte-DEoZetlD.js → _page.svelte-BiWeMBAp.js} +10 -5
  110. package/build/server/chunks/_page.svelte-BiWeMBAp.js.map +1 -0
  111. package/build/server/chunks/{_page.svelte-BKgp53kc.js → _page.svelte-CKA-D5y9.js} +7 -2
  112. package/build/server/chunks/_page.svelte-CKA-D5y9.js.map +1 -0
  113. package/build/server/chunks/{_page.svelte-DqMBIEYR.js → _page.svelte-Ccoblq6A.js} +9 -4
  114. package/build/server/chunks/_page.svelte-Ccoblq6A.js.map +1 -0
  115. package/build/server/chunks/{_page.svelte-CX3ypdy4.js → _page.svelte-CfgccuHr.js} +22 -26
  116. package/build/server/chunks/_page.svelte-CfgccuHr.js.map +1 -0
  117. package/build/server/chunks/{_page.svelte-DWtiWgQo.js → _page.svelte-CfumsQWR.js} +7 -2
  118. package/build/server/chunks/_page.svelte-CfumsQWR.js.map +1 -0
  119. package/build/server/chunks/{_page.svelte-Cx14LXUf.js → _page.svelte-DmuKCwzv.js} +251 -241
  120. package/build/server/chunks/_page.svelte-DmuKCwzv.js.map +1 -0
  121. package/build/server/chunks/{_server.ts-C5MDZCgG.js → _server.ts-BX9EOCce.js} +15 -33
  122. package/build/server/chunks/_server.ts-BX9EOCce.js.map +1 -0
  123. package/build/server/chunks/{_server.ts-PEmL6kUs.js → _server.ts-Bt1PHziR.js} +11 -12
  124. package/build/server/chunks/_server.ts-Bt1PHziR.js.map +1 -0
  125. package/build/server/chunks/{_server.ts-xRxSzZ-g.js → _server.ts-Bt49rhYj.js} +6 -7
  126. package/build/server/chunks/_server.ts-Bt49rhYj.js.map +1 -0
  127. package/build/server/chunks/{_server.ts-CrtaC0hY.js → _server.ts-C4VM2PrZ.js} +12 -27
  128. package/build/server/chunks/_server.ts-C4VM2PrZ.js.map +1 -0
  129. package/build/server/chunks/_server.ts-CUahXWhE.js +15 -0
  130. package/build/server/chunks/_server.ts-CUahXWhE.js.map +1 -0
  131. package/build/server/chunks/{_server.ts-EAlB0_5W.js → _server.ts-CihRXpfp.js} +4 -19
  132. package/build/server/chunks/_server.ts-CihRXpfp.js.map +1 -0
  133. package/build/server/chunks/{_server.ts-DfjuHXS5.js → _server.ts-D3Kn7ITK.js} +2 -10
  134. package/build/server/chunks/_server.ts-D3Kn7ITK.js.map +1 -0
  135. package/build/server/chunks/{_server.ts-CS23SeUt.js → _server.ts-DKllrQ92.js} +4 -11
  136. package/build/server/chunks/_server.ts-DKllrQ92.js.map +1 -0
  137. package/build/server/chunks/{_server.ts-Bh3p907P.js → _server.ts-DPK-3jbk.js} +6 -7
  138. package/build/server/chunks/_server.ts-DPK-3jbk.js.map +1 -0
  139. package/build/server/chunks/{_server.ts-2Ft5JVtj.js → _server.ts-DScwtPDh.js} +4 -8
  140. package/build/server/chunks/_server.ts-DScwtPDh.js.map +1 -0
  141. package/build/server/chunks/{_server.ts-B_dOpyal.js → _server.ts-DVV4aYkL.js} +5 -24
  142. package/build/server/chunks/_server.ts-DVV4aYkL.js.map +1 -0
  143. package/build/server/chunks/{_server.ts-COposMXg.js → _server.ts-Dwpa1EV2.js} +8 -21
  144. package/build/server/chunks/_server.ts-Dwpa1EV2.js.map +1 -0
  145. package/build/server/chunks/{_server.ts-Dqv7yDcz.js → _server.ts-Lbj9p5U5.js} +4 -11
  146. package/build/server/chunks/{_server.ts-Dqv7yDcz.js.map → _server.ts-Lbj9p5U5.js.map} +1 -1
  147. package/build/server/chunks/{_server.ts-DxeSnWDg.js → _server.ts-YPQyENjN.js} +5 -6
  148. package/build/server/chunks/_server.ts-YPQyENjN.js.map +1 -0
  149. package/build/server/chunks/{cache-BNAVbmcu.js → cache-BUlT0Syl.js} +3 -3
  150. package/build/server/chunks/cache-BUlT0Syl.js.map +1 -0
  151. package/build/server/chunks/{fileutil-CQgueTPh.js → fileutil-Ckv64WTK.js} +7 -7
  152. package/build/server/chunks/fileutil-Ckv64WTK.js.map +1 -0
  153. package/build/server/chunks/{galleryutil-BJIRuqer.js → galleryutil-BkuoU13t.js} +4 -4
  154. package/build/server/chunks/galleryutil-BkuoU13t.js.map +1 -0
  155. package/build/server/chunks/paths-LWMPXYU2.js +11 -0
  156. package/build/server/chunks/paths-LWMPXYU2.js.map +1 -0
  157. package/build/server/chunks/{util3-tN3TRq5K.js → util-tN3TRq5K.js} +1 -1
  158. package/build/server/chunks/util-tN3TRq5K.js.map +1 -0
  159. package/build/server/index.js +1 -1
  160. package/build/server/index.js.map +1 -1
  161. package/build/server/manifest.js +23 -23
  162. package/build/server/manifest.js.map +1 -1
  163. package/package.json +1 -1
  164. package/build/client/_app/immutable/chunks/6A-1YxbO.js.br +0 -0
  165. package/build/client/_app/immutable/chunks/6A-1YxbO.js.gz +0 -0
  166. package/build/client/_app/immutable/chunks/8DN0m2PX.js +0 -1
  167. package/build/client/_app/immutable/chunks/8DN0m2PX.js.br +0 -0
  168. package/build/client/_app/immutable/chunks/8DN0m2PX.js.gz +0 -0
  169. package/build/client/_app/immutable/chunks/B_LQs9wL.js +0 -2
  170. package/build/client/_app/immutable/chunks/B_LQs9wL.js.br +0 -0
  171. package/build/client/_app/immutable/chunks/B_LQs9wL.js.gz +0 -0
  172. package/build/client/_app/immutable/chunks/Be6d8HVb.js +0 -2
  173. package/build/client/_app/immutable/chunks/Be6d8HVb.js.br +0 -0
  174. package/build/client/_app/immutable/chunks/Be6d8HVb.js.gz +0 -0
  175. package/build/client/_app/immutable/chunks/Bef2gKm2.js +0 -1
  176. package/build/client/_app/immutable/chunks/Bef2gKm2.js.br +0 -0
  177. package/build/client/_app/immutable/chunks/Bef2gKm2.js.gz +0 -0
  178. package/build/client/_app/immutable/chunks/C5h3_Ot-.js.br +0 -0
  179. package/build/client/_app/immutable/chunks/C5h3_Ot-.js.gz +0 -0
  180. package/build/client/_app/immutable/chunks/CqY3AcBN.js.br +0 -0
  181. package/build/client/_app/immutable/chunks/CqY3AcBN.js.gz +0 -0
  182. package/build/client/_app/immutable/chunks/DIN7OHhp.js +0 -1
  183. package/build/client/_app/immutable/chunks/DIN7OHhp.js.br +0 -0
  184. package/build/client/_app/immutable/chunks/DIN7OHhp.js.gz +0 -0
  185. package/build/client/_app/immutable/chunks/DL-ZACyf.js +0 -1
  186. package/build/client/_app/immutable/chunks/DL-ZACyf.js.br +0 -0
  187. package/build/client/_app/immutable/chunks/DL-ZACyf.js.gz +0 -0
  188. package/build/client/_app/immutable/chunks/DNNtt9F0.js +0 -5
  189. package/build/client/_app/immutable/chunks/DNNtt9F0.js.br +0 -0
  190. package/build/client/_app/immutable/chunks/DNNtt9F0.js.gz +0 -0
  191. package/build/client/_app/immutable/chunks/DW2Pu8pP.js.br +0 -0
  192. package/build/client/_app/immutable/chunks/DW2Pu8pP.js.gz +0 -0
  193. package/build/client/_app/immutable/chunks/DZ9N6dCE.js +0 -1
  194. package/build/client/_app/immutable/chunks/DZ9N6dCE.js.br +0 -0
  195. package/build/client/_app/immutable/chunks/DZ9N6dCE.js.gz +0 -0
  196. package/build/client/_app/immutable/chunks/OQPjhzqD.js.br +0 -0
  197. package/build/client/_app/immutable/chunks/OQPjhzqD.js.gz +0 -0
  198. package/build/client/_app/immutable/chunks/P3QnGgP5.js +0 -1
  199. package/build/client/_app/immutable/chunks/P3QnGgP5.js.br +0 -0
  200. package/build/client/_app/immutable/chunks/P3QnGgP5.js.gz +0 -0
  201. package/build/client/_app/immutable/chunks/Tj8iQEiI.js +0 -1
  202. package/build/client/_app/immutable/chunks/Tj8iQEiI.js.br +0 -2
  203. package/build/client/_app/immutable/chunks/Tj8iQEiI.js.gz +0 -0
  204. package/build/client/_app/immutable/chunks/UNrzuVQp.js.br +0 -1
  205. package/build/client/_app/immutable/chunks/UNrzuVQp.js.gz +0 -0
  206. package/build/client/_app/immutable/chunks/Ufa143ku.js.br +0 -0
  207. package/build/client/_app/immutable/chunks/Ufa143ku.js.gz +0 -0
  208. package/build/client/_app/immutable/chunks/ZoU2KXpG.js.br +0 -0
  209. package/build/client/_app/immutable/chunks/ZoU2KXpG.js.gz +0 -0
  210. package/build/client/_app/immutable/chunks/dnIQExd9.js +0 -12
  211. package/build/client/_app/immutable/chunks/dnIQExd9.js.br +0 -0
  212. package/build/client/_app/immutable/chunks/dnIQExd9.js.gz +0 -0
  213. package/build/client/_app/immutable/entry/app.CYlT5fhH.js +0 -2
  214. package/build/client/_app/immutable/entry/app.CYlT5fhH.js.br +0 -0
  215. package/build/client/_app/immutable/entry/app.CYlT5fhH.js.gz +0 -0
  216. package/build/client/_app/immutable/entry/start.Dg4PVBdr.js +0 -1
  217. package/build/client/_app/immutable/entry/start.Dg4PVBdr.js.br +0 -2
  218. package/build/client/_app/immutable/entry/start.Dg4PVBdr.js.gz +0 -0
  219. package/build/client/_app/immutable/nodes/0.CJnYDRau.js +0 -1
  220. package/build/client/_app/immutable/nodes/0.CJnYDRau.js.br +0 -0
  221. package/build/client/_app/immutable/nodes/0.CJnYDRau.js.gz +0 -0
  222. package/build/client/_app/immutable/nodes/1.CN2FJ_rB.js +0 -1
  223. package/build/client/_app/immutable/nodes/1.CN2FJ_rB.js.br +0 -0
  224. package/build/client/_app/immutable/nodes/1.CN2FJ_rB.js.gz +0 -0
  225. package/build/client/_app/immutable/nodes/2.CatNs93x.js +0 -1
  226. package/build/client/_app/immutable/nodes/2.CatNs93x.js.br +0 -0
  227. package/build/client/_app/immutable/nodes/2.CatNs93x.js.gz +0 -0
  228. package/build/client/_app/immutable/nodes/3.ACYrA_cl.js +0 -1
  229. package/build/client/_app/immutable/nodes/3.ACYrA_cl.js.br +0 -0
  230. package/build/client/_app/immutable/nodes/3.ACYrA_cl.js.gz +0 -0
  231. package/build/client/_app/immutable/nodes/4.Lj5NPz8d.js +0 -1
  232. package/build/client/_app/immutable/nodes/4.Lj5NPz8d.js.br +0 -0
  233. package/build/client/_app/immutable/nodes/4.Lj5NPz8d.js.gz +0 -0
  234. package/build/client/_app/immutable/nodes/5.Cnbwt0Yf.js +0 -1
  235. package/build/client/_app/immutable/nodes/5.Cnbwt0Yf.js.br +0 -0
  236. package/build/client/_app/immutable/nodes/5.Cnbwt0Yf.js.gz +0 -0
  237. package/build/client/_app/immutable/nodes/6.DenFMpHj.js +0 -1
  238. package/build/client/_app/immutable/nodes/6.DenFMpHj.js.br +0 -0
  239. package/build/client/_app/immutable/nodes/6.DenFMpHj.js.gz +0 -0
  240. package/build/client/_app/immutable/nodes/7.Cju636h3.js +0 -1
  241. package/build/client/_app/immutable/nodes/7.Cju636h3.js.br +0 -0
  242. package/build/client/_app/immutable/nodes/7.Cju636h3.js.gz +0 -0
  243. package/build/server/chunks/0-Db-3CVz6.js.map +0 -1
  244. package/build/server/chunks/1-DuB9Tb7M.js +0 -9
  245. package/build/server/chunks/2-DWuX-HYe.js.map +0 -1
  246. package/build/server/chunks/3-Dk00WOvb.js.map +0 -1
  247. package/build/server/chunks/4-Diy7Za7p.js +0 -48
  248. package/build/server/chunks/4-Diy7Za7p.js.map +0 -1
  249. package/build/server/chunks/5-ALUQvS-h.js +0 -59
  250. package/build/server/chunks/5-ALUQvS-h.js.map +0 -1
  251. package/build/server/chunks/6-WSd-31h6.js.map +0 -1
  252. package/build/server/chunks/7-BIDGS9J9.js +0 -57
  253. package/build/server/chunks/7-BIDGS9J9.js.map +0 -1
  254. package/build/server/chunks/Artist-DO_o4cdV.js +0 -19
  255. package/build/server/chunks/Artist-DO_o4cdV.js.map +0 -1
  256. package/build/server/chunks/TextBox-D09ycG7i.js.map +0 -1
  257. package/build/server/chunks/_page.svelte-BKgp53kc.js.map +0 -1
  258. package/build/server/chunks/_page.svelte-CX3ypdy4.js.map +0 -1
  259. package/build/server/chunks/_page.svelte-Cx14LXUf.js.map +0 -1
  260. package/build/server/chunks/_page.svelte-DEoZetlD.js.map +0 -1
  261. package/build/server/chunks/_page.svelte-DWtiWgQo.js.map +0 -1
  262. package/build/server/chunks/_page.svelte-DqMBIEYR.js.map +0 -1
  263. package/build/server/chunks/_server.ts-2Ft5JVtj.js.map +0 -1
  264. package/build/server/chunks/_server.ts-B_dOpyal.js.map +0 -1
  265. package/build/server/chunks/_server.ts-Bh3p907P.js.map +0 -1
  266. package/build/server/chunks/_server.ts-C5MDZCgG.js.map +0 -1
  267. package/build/server/chunks/_server.ts-COposMXg.js.map +0 -1
  268. package/build/server/chunks/_server.ts-CS23SeUt.js.map +0 -1
  269. package/build/server/chunks/_server.ts-CrtaC0hY.js.map +0 -1
  270. package/build/server/chunks/_server.ts-D_j0gH9R.js +0 -41
  271. package/build/server/chunks/_server.ts-D_j0gH9R.js.map +0 -1
  272. package/build/server/chunks/_server.ts-DfjuHXS5.js.map +0 -1
  273. package/build/server/chunks/_server.ts-DxeSnWDg.js.map +0 -1
  274. package/build/server/chunks/_server.ts-EAlB0_5W.js.map +0 -1
  275. package/build/server/chunks/_server.ts-PEmL6kUs.js.map +0 -1
  276. package/build/server/chunks/_server.ts-xRxSzZ-g.js.map +0 -1
  277. package/build/server/chunks/artist2-CxkL2s89.js +0 -27
  278. package/build/server/chunks/artist2-CxkL2s89.js.map +0 -1
  279. package/build/server/chunks/cache-BNAVbmcu.js.map +0 -1
  280. package/build/server/chunks/character-BiUPL14p.js +0 -75
  281. package/build/server/chunks/character-BiUPL14p.js.map +0 -1
  282. package/build/server/chunks/directories-MyCzDoxa.js +0 -41
  283. package/build/server/chunks/directories-MyCzDoxa.js.map +0 -1
  284. package/build/server/chunks/fileutil-CQgueTPh.js.map +0 -1
  285. package/build/server/chunks/gallery-DaCm2MYV.js +0 -6817
  286. package/build/server/chunks/gallery-DaCm2MYV.js.map +0 -1
  287. package/build/server/chunks/galleryutil-BJIRuqer.js.map +0 -1
  288. package/build/server/chunks/imageprocess-CXFT4aVl.js +0 -278
  289. package/build/server/chunks/imageprocess-CXFT4aVl.js.map +0 -1
  290. package/build/server/chunks/pack-Bk3t1T7h.js +0 -30
  291. package/build/server/chunks/pack-Bk3t1T7h.js.map +0 -1
  292. package/build/server/chunks/paths-Bv7gDCfT.js +0 -11
  293. package/build/server/chunks/paths-Bv7gDCfT.js.map +0 -1
  294. package/build/server/chunks/schema-Xy3yc0Rx.js +0 -178
  295. package/build/server/chunks/schema-Xy3yc0Rx.js.map +0 -1
  296. package/build/server/chunks/util-FQbl4xCz.js +0 -69
  297. package/build/server/chunks/util-FQbl4xCz.js.map +0 -1
  298. package/build/server/chunks/util3-tN3TRq5K.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"galleryutil-BJIRuqer.js","sources":["../../../.svelte-kit/adapter-node/chunks/galleryutil.js"],"sourcesContent":["import path__default from \"node:path\";\nfunction normalizeGalleryPath(path) {\n return (path ?? \"\").replaceAll(path__default.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}\nexport {\n isBaseGallery as a,\n getGalleryName as b,\n createNewPiece as c,\n getGalleryDir as g,\n isExtendsGallery as i,\n normalizeGalleryPath as n\n};\n"],"names":["path__default"],"mappings":";;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE;AACpC,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,UAAU,CAACA,sBAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;AAChF;AACA,SAAS,aAAa,CAAC,WAAW,EAAE;AACpC,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AACtC,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC;AACA,SAAS,cAAc,CAAC,WAAW,EAAE;AACrC,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AACtC,EAAE,OAAO,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC;AACA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,EAAE,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnC;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,EAAE,OAAO,CAAC,CAAC,OAAO,IAAI,UAAU,IAAI,OAAO;AAC3C;AACA,SAAS,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE;AACxE,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK;AACtE,EAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACrC,IAAI,IAAI,IAAI,OAAO;AACnB,EAAE;AACF,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,GAAG,EAAE,EAAE;AACX,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AACtC,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI;AACpB,IAAI,KAAK,EAAE,EAAE;AACb,IAAI,IAAI;AACR,IAAI,IAAI,EAAE,EAAE;AACZ,IAAI,IAAI,EAAE,EAAE;AACZ,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,QAAQ,EAAE,MAAM;AACpB,IAAI,KAAK,EAAE;AACX,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACtC,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AACrD,IAAI,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;AACjC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,KAAK,GAAG,QAAQ;AAC1B,EAAE;AACF,EAAE,OAAO,KAAK;AACd;;;;"}
@@ -1,278 +0,0 @@
1
- import { z } from 'zod';
2
- import sharp from 'sharp';
3
- import { Logger } from 'tslog';
4
- import * as fs from 'node:fs/promises';
5
- import { stat } from 'node:fs/promises';
6
- import * as path__default from 'node:path';
7
- import path__default__default from 'node:path';
8
- import { g as getLogLevel, d as hashUrl } from './util-FQbl4xCz.js';
9
- import { a as $PUBLIC, $ as $DATA } from './directories-MyCzDoxa.js';
10
- import { r as readPack, w as writePack } from './pack-Bk3t1T7h.js';
11
- import sharpPhash from 'sharp-phash';
12
- import { Sema } from 'async-sema';
13
- import os from 'node:os';
14
-
15
- const Source = z.object({
16
- src: z.string(),
17
- w: z.number(),
18
- h: z.number()
19
- });
20
- const Image = z.object({
21
- sources: z.record(z.string(), z.array(Source)),
22
- fallback: Source,
23
- lqip: Source,
24
- sha256: z.string()
25
- });
26
- const Picture = z.object({
27
- full: Image,
28
- thumbnail: Image,
29
- phash: z.string()
30
- });
31
- const FastcacheLogger = new Logger({ minLevel: getLogLevel() });
32
- const $FASTCACHEPATH = () => path__default__default.join($DATA(), ".fastcache.pack.gz");
33
- async function getFastHash(fc, fullpath, relpath) {
34
- const cacheinfo = fc[relpath];
35
- if (!cacheinfo)
36
- return [null, null];
37
- const fstat = await stat(fullpath);
38
- const mtime = fstat.mtimeMs;
39
- if (mtime !== cacheinfo.mtime) {
40
- return [null, mtime];
41
- }
42
- return [cacheinfo.hash, mtime];
43
- }
44
- async function updateFastCache(fc, fullpath, relpath, hash, premtime) {
45
- const mtime = premtime ?? (await stat(fullpath)).mtimeMs;
46
- fc[relpath] = {
47
- mtime,
48
- hash
49
- };
50
- }
51
- async function flushFastCache(fc) {
52
- try {
53
- await writePack($FASTCACHEPATH(), fc);
54
- } catch (err) {
55
- FastcacheLogger.warn("Failed to write fastcache", err);
56
- }
57
- }
58
- async function readFastCache() {
59
- try {
60
- return await readPack($FASTCACHEPATH());
61
- } catch (err) {
62
- FastcacheLogger.warn("Failed to read fastcache", err);
63
- return {};
64
- }
65
- }
66
- const ImageProcessLog = new Logger({ minLevel: getLogLevel() });
67
- const sema = new Sema(os.cpus().length, { capacity: 1e3 });
68
- const phash = sharpPhash;
69
- let processedHashes = /* @__PURE__ */ new Set();
70
- const LQIP_WIDTH = 64;
71
- const FORMATS = ["avif", "webp"];
72
- const WIDTHS = [640, 960, 1280, 1920, 3840];
73
- const THUMBS = [160, 320];
74
- function clearProcessedHashes() {
75
- processedHashes = /* @__PURE__ */ new Set();
76
- }
77
- async function getUnusedHashes() {
78
- const eligible = /* @__PURE__ */ new Set();
79
- const pubdir = await fs.readdir($PUBLIC(), { withFileTypes: true, recursive: false });
80
- await Promise.all(pubdir.map(async (dirent) => {
81
- if (!dirent.isDirectory()) {
82
- return;
83
- }
84
- const ents = await fs.readdir(path__default.resolve(path__default.join($PUBLIC(), dirent.name)));
85
- if (!ents.includes(".keep.mark")) {
86
- eligible.add(dirent.name);
87
- }
88
- }));
89
- return eligible.difference(processedHashes);
90
- }
91
- async function deleteHashes(unused) {
92
- if (unused.size === 0) {
93
- return;
94
- }
95
- ImageProcessLog.warn("Cleaning up generated directory:", unused.size, "unused folders found...");
96
- const respub = path__default.resolve($PUBLIC());
97
- for (const hash of unused) {
98
- const resolved = path__default.resolve(path__default.join($PUBLIC(), hash));
99
- if (!resolved.startsWith(respub)) {
100
- ImageProcessLog.warn("Tried to clean hash at path", resolved, "which is not a subdirectory of public", respub, "??");
101
- } else {
102
- ImageProcessLog.debug("Deleting", resolved, "...");
103
- await fs.rm(resolved, { recursive: true, force: true });
104
- ImageProcessLog.info("Deleted unused generated directory", resolved, "...");
105
- }
106
- }
107
- }
108
- async function cleanUnusedHashes() {
109
- await deleteHashes(await getUnusedHashes());
110
- }
111
- async function getPictureDetails(h) {
112
- try {
113
- return JSON.parse(await fs.readFile(path__default.join($PUBLIC(), h, "details.json"), { encoding: "utf-8" }));
114
- } catch {
115
- return null;
116
- }
117
- }
118
- async function processVideoFastcache(fc, fullpath, relpath, name, processOptions = {}) {
119
- const [prehash, mtime] = await getFastHash(fc, fullpath, relpath);
120
- const [path2, hash] = await doProcessVideo(fullpath, name, prehash, processOptions);
121
- if (!prehash) {
122
- await updateFastCache(fc, fullpath, relpath, hash, mtime);
123
- }
124
- return path2;
125
- }
126
- async function doProcessVideo(url, name, prehash, processOptions = {}) {
127
- const h = prehash ?? await hashUrl(url);
128
- processedHashes.add(h);
129
- name = name + path__default.extname(url);
130
- const outputDir = path__default.join($PUBLIC(), h);
131
- await fs.mkdir(outputDir, { recursive: true });
132
- await fs.copyFile(url, path__default.join(outputDir, name));
133
- if (processOptions?.forceKeep) {
134
- await fs.writeFile(path__default.join(outputDir, ".keep.mark"), "");
135
- }
136
- return [`/_/${h}/${name}`, h];
137
- }
138
- async function processImageFastcache(fc, fullpath, relpath, processOptions = {}) {
139
- const [prehash, mtime] = await getFastHash(fc, fullpath, relpath);
140
- const [image, hash] = await doProcessImage(fullpath, prehash, processOptions);
141
- if (!prehash) {
142
- await updateFastCache(fc, fullpath, relpath, hash, mtime);
143
- }
144
- return image;
145
- }
146
- async function doProcessImage(url, prehash, processOptions = {}) {
147
- const h = prehash ?? await hashUrl(url);
148
- processedHashes.add(h);
149
- ImageProcessLog.silly("[IMAGE] Got image with hash", h);
150
- const cached = await getPictureDetails(h);
151
- if (cached) {
152
- ImageProcessLog.debug("[IMAGE] Found cached details for", url, h);
153
- return [cached, h];
154
- }
155
- const tok = await sema.acquire();
156
- try {
157
- ImageProcessLog.debug("[IMAGE] Starting to process", url);
158
- const image = sharp(url, { animated: true });
159
- const details = await _doProcessImage(url, image, h, processOptions);
160
- ImageProcessLog.info("[IMAGE] Finished processing", url, details);
161
- return [details, h];
162
- } finally {
163
- sema.release(tok);
164
- }
165
- }
166
- function removeDuplicates(images) {
167
- for (let i = images.length - 1; i >= 0; i--) {
168
- const me = images[i];
169
- if (images.findIndex((v) => v.format === me.format && v.h === me.h && v.w === me.w && v.src === me.src) !== i) {
170
- images.splice(i, 1);
171
- }
172
- }
173
- return images;
174
- }
175
- async function _doProcessImage(url, image, hash, processOptions = {}) {
176
- const meta = await image.metadata();
177
- const fullTransformations = meta.format === "gif" ? [
178
- { format: "gif", width: meta.width },
179
- { format: "webp", width: meta.width }
180
- ] : FORMATS.flatMap((format) => WIDTHS.flatMap((width) => ({ format, width, position: processOptions?.position })));
181
- const thumbnailTransformations = (meta.format === "gif" ? ["gif", "webp"] : FORMATS).flatMap((format) => THUMBS.flatMap((width) => ({
182
- format,
183
- width,
184
- height: width,
185
- position: processOptions?.position
186
- })));
187
- const fulls = Promise.all(fullTransformations.map((tf) => doSaveImage(url, hash, doTransformImage(image, tf), tf, meta.pages ?? 1))).then(removeDuplicates);
188
- const thumbs = Promise.all(thumbnailTransformations.map((tf) => doSaveImage(url, hash, doTransformImage(image, tf), tf, meta.pages ?? 1))).then(removeDuplicates);
189
- const phPromise = phash(url);
190
- const fullLqip = doLQIP(image, {
191
- width: LQIP_WIDTH,
192
- position: processOptions?.position
193
- });
194
- const thumbLqip = doLQIP(image, {
195
- width: LQIP_WIDTH,
196
- height: LQIP_WIDTH,
197
- position: processOptions?.position
198
- });
199
- const data = {
200
- phash: await phPromise,
201
- full: {
202
- sha256: hash,
203
- lqip: await fullLqip,
204
- sources: (await fulls).reduce((all, cur) => ({
205
- ...all,
206
- [cur.format]: [...all[cur.format] ?? [], cur]
207
- }), {}),
208
- fallback: (await fulls).reduce((best, cur) => cur.format === "webp" && cur.w > best.w ? cur : best, (await fulls)[0])
209
- },
210
- thumbnail: {
211
- sha256: hash,
212
- lqip: await thumbLqip,
213
- sources: (await thumbs).reduce((all, cur) => ({
214
- ...all,
215
- [cur.format]: [...all[cur.format] ?? [], cur]
216
- }), {}),
217
- fallback: (await thumbs).reduce((best, cur) => cur.format === "webp" && cur.w > best.w ? cur : best, (await thumbs)[0])
218
- }
219
- };
220
- await fs.writeFile(path__default.join($PUBLIC(), hash, "details.json"), JSON.stringify(data, null, 4), {
221
- encoding: "utf-8"
222
- });
223
- if (processOptions?.forceKeep) {
224
- await fs.writeFile(path__default.join($PUBLIC(), hash, ".keep.mark"), "");
225
- }
226
- ImageProcessLog.info("[IMAGE] Processed image ", hash);
227
- return data;
228
- }
229
- async function doSaveImage(url, hash, image, tf, pages) {
230
- const base = path__default.join($PUBLIC(), hash);
231
- await fs.mkdir(base, { recursive: true });
232
- ImageProcessLog.silly("[IMAGE] Starting transformation of", url, "to", tf);
233
- return await new Promise((resolve, reject) => image.toBuffer(async (err, buf, info) => {
234
- if (err)
235
- return void reject(err);
236
- if (info.format === "heif")
237
- info.format = "avif";
238
- const name = `${info.width}x${info.height / pages}.${info.format}`;
239
- const output = path__default.join(base, name);
240
- await fs.writeFile(output, buf);
241
- ImageProcessLog.debug("[IMAGE] Saved new image", output, "for transformation of", url, tf);
242
- resolve({
243
- src: `/_/${hash}/${name}`,
244
- w: info.width,
245
- h: info.height / pages,
246
- format: info.format
247
- });
248
- }));
249
- }
250
- function doTransformImage(image, { format, width, height = -1, position = "north" }) {
251
- return image.clone().resize({
252
- width,
253
- height: height === -1 ? void 0 : height,
254
- position,
255
- withoutEnlargement: true
256
- }).toFormat(format);
257
- }
258
- async function doLQIP(image, { width, height = -1, position = "north" }) {
259
- return await new Promise((resolve, reject) => image.clone().resize({
260
- width,
261
- height: height === -1 ? void 0 : height,
262
- position,
263
- withoutEnlargement: true
264
- }).toFormat("webp", { quality: 20 }).toBuffer((err, buffer, info) => {
265
- if (err)
266
- return void reject(err);
267
- const dataUrl = `data:image/webp;base64,${buffer.toString("base64")}`;
268
- resolve({
269
- format: "webp",
270
- w: info.width,
271
- h: info.height,
272
- src: dataUrl
273
- });
274
- }));
275
- }
276
-
277
- export { Picture as P, clearProcessedHashes as a, processVideoFastcache as b, cleanUnusedHashes as c, flushFastCache as f, processImageFastcache as p, readFastCache as r };
278
- //# sourceMappingURL=imageprocess-CXFT4aVl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"imageprocess-CXFT4aVl.js","sources":["../../../.svelte-kit/adapter-node/chunks/imageprocess.js"],"sourcesContent":["import { z } from \"zod\";\nimport sharp from \"sharp\";\nimport { Logger } from \"tslog\";\nimport * as fs from \"node:fs/promises\";\nimport { stat } from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport path__default from \"node:path\";\nimport { b as getLogLevel, d as hashUrl } from \"./util.js\";\nimport { $ as $DATA, a as $PUBLIC } from \"./directories.js\";\nimport { r as readPack, w as writePack } from \"./pack.js\";\nimport sharpPhash from \"sharp-phash\";\nimport { Sema } from \"async-sema\";\nimport os from \"node:os\";\nconst Source = z.object({\n src: z.string(),\n w: z.number(),\n h: z.number()\n});\nconst Image = z.object({\n sources: z.record(z.string(), z.array(Source)),\n fallback: Source,\n lqip: Source,\n sha256: z.string()\n});\nconst Picture = z.object({\n full: Image,\n thumbnail: Image,\n phash: z.string()\n});\nconst FastcacheLogger = new Logger({ minLevel: getLogLevel() });\nconst $FASTCACHEPATH = () => path__default.join($DATA(), \".fastcache.pack.gz\");\nasync function getFastHash(fc, fullpath, relpath) {\n const cacheinfo = fc[relpath];\n if (!cacheinfo)\n return [null, null];\n const fstat = await stat(fullpath);\n const mtime = fstat.mtimeMs;\n if (mtime !== cacheinfo.mtime) {\n return [null, mtime];\n }\n return [cacheinfo.hash, mtime];\n}\nasync function updateFastCache(fc, fullpath, relpath, hash, premtime) {\n const mtime = premtime ?? (await stat(fullpath)).mtimeMs;\n fc[relpath] = {\n mtime,\n hash\n };\n}\nasync function flushFastCache(fc) {\n try {\n await writePack($FASTCACHEPATH(), fc);\n } catch (err) {\n FastcacheLogger.warn(\"Failed to write fastcache\", err);\n }\n}\nasync function readFastCache() {\n try {\n return await readPack($FASTCACHEPATH());\n } catch (err) {\n FastcacheLogger.warn(\"Failed to read fastcache\", err);\n return {};\n }\n}\nconst ImageProcessLog = new Logger({ minLevel: getLogLevel() });\nconst sema = new Sema(os.cpus().length, { capacity: 1e3 });\nconst phash = sharpPhash;\nlet processedHashes = /* @__PURE__ */ new Set();\nconst LQIP_WIDTH = 64;\nconst FORMATS = [\"avif\", \"webp\"];\nconst WIDTHS = [640, 960, 1280, 1920, 3840];\nconst THUMBS = [160, 320];\nfunction clearProcessedHashes() {\n processedHashes = /* @__PURE__ */ new Set();\n}\nasync function getUnusedHashes() {\n const eligible = /* @__PURE__ */ new Set();\n const pubdir = await fs.readdir($PUBLIC(), { withFileTypes: true, recursive: false });\n await Promise.all(pubdir.map(async (dirent) => {\n if (!dirent.isDirectory()) {\n return;\n }\n const ents = await fs.readdir(path.resolve(path.join($PUBLIC(), dirent.name)));\n if (!ents.includes(\".keep.mark\")) {\n eligible.add(dirent.name);\n }\n }));\n return eligible.difference(processedHashes);\n}\nasync function deleteHashes(unused) {\n if (unused.size === 0) {\n return;\n }\n ImageProcessLog.warn(\"Cleaning up generated directory:\", unused.size, \"unused folders found...\");\n const respub = path.resolve($PUBLIC());\n for (const hash of unused) {\n const resolved = path.resolve(path.join($PUBLIC(), hash));\n if (!resolved.startsWith(respub)) {\n ImageProcessLog.warn(\"Tried to clean hash at path\", resolved, \"which is not a subdirectory of public\", respub, \"??\");\n } else {\n ImageProcessLog.debug(\"Deleting\", resolved, \"...\");\n await fs.rm(resolved, { recursive: true, force: true });\n ImageProcessLog.info(\"Deleted unused generated directory\", resolved, \"...\");\n }\n }\n}\nasync function cleanUnusedHashes() {\n await deleteHashes(await getUnusedHashes());\n}\nasync function getPictureDetails(h) {\n try {\n return JSON.parse(await fs.readFile(path.join($PUBLIC(), h, \"details.json\"), { encoding: \"utf-8\" }));\n } catch {\n return null;\n }\n}\nasync function processVideoFastcache(fc, fullpath, relpath, name, processOptions = {}) {\n const [prehash, mtime] = await getFastHash(fc, fullpath, relpath);\n const [path2, hash] = await doProcessVideo(fullpath, name, prehash, processOptions);\n if (!prehash) {\n await updateFastCache(fc, fullpath, relpath, hash, mtime);\n }\n return path2;\n}\nasync function doProcessVideo(url, name, prehash, processOptions = {}) {\n const h = prehash ?? await hashUrl(url);\n processedHashes.add(h);\n name = name + path.extname(url);\n const outputDir = path.join($PUBLIC(), h);\n await fs.mkdir(outputDir, { recursive: true });\n await fs.copyFile(url, path.join(outputDir, name));\n if (processOptions?.forceKeep) {\n await fs.writeFile(path.join(outputDir, \".keep.mark\"), \"\");\n }\n return [`/_/${h}/${name}`, h];\n}\nasync function processImageFastcache(fc, fullpath, relpath, processOptions = {}) {\n const [prehash, mtime] = await getFastHash(fc, fullpath, relpath);\n const [image, hash] = await doProcessImage(fullpath, prehash, processOptions);\n if (!prehash) {\n await updateFastCache(fc, fullpath, relpath, hash, mtime);\n }\n return image;\n}\nasync function doProcessImage(url, prehash, processOptions = {}) {\n const h = prehash ?? await hashUrl(url);\n processedHashes.add(h);\n ImageProcessLog.silly(\"[IMAGE] Got image with hash\", h);\n const cached = await getPictureDetails(h);\n if (cached) {\n ImageProcessLog.debug(\"[IMAGE] Found cached details for\", url, h);\n return [cached, h];\n }\n const tok = await sema.acquire();\n try {\n ImageProcessLog.debug(\"[IMAGE] Starting to process\", url);\n const image = sharp(url, { animated: true });\n const details = await _doProcessImage(url, image, h, processOptions);\n ImageProcessLog.info(\"[IMAGE] Finished processing\", url, details);\n return [details, h];\n } finally {\n sema.release(tok);\n }\n}\nfunction removeDuplicates(images) {\n for (let i = images.length - 1; i >= 0; i--) {\n const me = images[i];\n if (images.findIndex((v) => v.format === me.format && v.h === me.h && v.w === me.w && v.src === me.src) !== i) {\n images.splice(i, 1);\n }\n }\n return images;\n}\nasync function _doProcessImage(url, image, hash, processOptions = {}) {\n const meta = await image.metadata();\n const fullTransformations = meta.format === \"gif\" ? [\n { format: \"gif\", width: meta.width },\n { format: \"webp\", width: meta.width }\n ] : FORMATS.flatMap((format) => WIDTHS.flatMap((width) => ({ format, width, position: processOptions?.position })));\n const thumbnailTransformations = (meta.format === \"gif\" ? [\"gif\", \"webp\"] : FORMATS).flatMap((format) => THUMBS.flatMap((width) => ({\n format,\n width,\n height: width,\n position: processOptions?.position\n })));\n const fulls = Promise.all(fullTransformations.map((tf) => doSaveImage(url, hash, doTransformImage(image, tf), tf, meta.pages ?? 1))).then(removeDuplicates);\n const thumbs = Promise.all(thumbnailTransformations.map((tf) => doSaveImage(url, hash, doTransformImage(image, tf), tf, meta.pages ?? 1))).then(removeDuplicates);\n const phPromise = phash(url);\n const fullLqip = doLQIP(image, {\n width: LQIP_WIDTH,\n position: processOptions?.position\n });\n const thumbLqip = doLQIP(image, {\n width: LQIP_WIDTH,\n height: LQIP_WIDTH,\n position: processOptions?.position\n });\n const data = {\n phash: await phPromise,\n full: {\n sha256: hash,\n lqip: await fullLqip,\n sources: (await fulls).reduce((all, cur) => ({\n ...all,\n [cur.format]: [...all[cur.format] ?? [], cur]\n }), {}),\n fallback: (await fulls).reduce((best, cur) => cur.format === \"webp\" && cur.w > best.w ? cur : best, (await fulls)[0])\n },\n thumbnail: {\n sha256: hash,\n lqip: await thumbLqip,\n sources: (await thumbs).reduce((all, cur) => ({\n ...all,\n [cur.format]: [...all[cur.format] ?? [], cur]\n }), {}),\n fallback: (await thumbs).reduce((best, cur) => cur.format === \"webp\" && cur.w > best.w ? cur : best, (await thumbs)[0])\n }\n };\n await fs.writeFile(path.join($PUBLIC(), hash, \"details.json\"), JSON.stringify(data, null, 4), {\n encoding: \"utf-8\"\n });\n if (processOptions?.forceKeep) {\n await fs.writeFile(path.join($PUBLIC(), hash, \".keep.mark\"), \"\");\n }\n ImageProcessLog.info(\"[IMAGE] Processed image \", hash);\n return data;\n}\nasync function doSaveImage(url, hash, image, tf, pages) {\n const base = path.join($PUBLIC(), hash);\n await fs.mkdir(base, { recursive: true });\n ImageProcessLog.silly(\"[IMAGE] Starting transformation of\", url, \"to\", tf);\n return await new Promise((resolve, reject) => image.toBuffer(async (err, buf, info) => {\n if (err)\n return void reject(err);\n if (info.format === \"heif\")\n info.format = \"avif\";\n const name = `${info.width}x${info.height / pages}.${info.format}`;\n const output = path.join(base, name);\n await fs.writeFile(output, buf);\n ImageProcessLog.debug(\"[IMAGE] Saved new image\", output, \"for transformation of\", url, tf);\n resolve({\n src: `/_/${hash}/${name}`,\n w: info.width,\n h: info.height / pages,\n format: info.format\n });\n }));\n}\nfunction doTransformImage(image, { format, width, height = -1, position = \"north\" }) {\n return image.clone().resize({\n width,\n height: height === -1 ? void 0 : height,\n position,\n withoutEnlargement: true\n }).toFormat(format);\n}\nasync function doLQIP(image, { width, height = -1, position = \"north\" }) {\n return await new Promise((resolve, reject) => image.clone().resize({\n width,\n height: height === -1 ? void 0 : height,\n position,\n withoutEnlargement: true\n }).toFormat(\"webp\", { quality: 20 }).toBuffer((err, buffer, info) => {\n if (err)\n return void reject(err);\n const dataUrl = `data:image/webp;base64,${buffer.toString(\"base64\")}`;\n resolve({\n format: \"webp\",\n w: info.width,\n h: info.height,\n src: dataUrl\n });\n }));\n}\nexport {\n Picture as P,\n clearProcessedHashes as a,\n processVideoFastcache as b,\n cleanUnusedHashes as c,\n flushFastCache as f,\n processImageFastcache as p,\n readFastCache as r\n};\n"],"names":["path__default","path"],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import { UnpackrStream, PackrStream } from 'msgpackr';
2
- import { randomInt } from 'node:crypto';
3
- import { createReadStream, createWriteStream } from 'node:fs';
4
- import { rename } from 'node:fs/promises';
5
- import { pipeline } from 'node:stream/promises';
6
- import { createGunzip, createGzip } from 'node:zlib';
7
-
8
- async function writePack(path, data) {
9
- const tmp = path + ".tmp." + Date.now() + "." + randomInt(16777216);
10
- const ws = createWriteStream(tmp);
11
- const gz = createGzip({ level: 9 });
12
- const packr = new PackrStream();
13
- const p = pipeline(packr, gz, ws);
14
- packr.end(data);
15
- await p;
16
- await rename(tmp, path);
17
- }
18
- async function readPack(path) {
19
- const gunzip = createGunzip();
20
- const unpackr = new UnpackrStream();
21
- const rs = createReadStream(path);
22
- const data = new Promise((resolve) => {
23
- unpackr.once("data", resolve);
24
- });
25
- await pipeline(rs, gunzip, unpackr);
26
- return await data;
27
- }
28
-
29
- export { readPack as r, writePack as w };
30
- //# sourceMappingURL=pack-Bk3t1T7h.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pack-Bk3t1T7h.js","sources":["../../../.svelte-kit/adapter-node/chunks/pack.js"],"sourcesContent":["import { UnpackrStream, PackrStream } from \"msgpackr\";\nimport { randomInt } from \"node:crypto\";\nimport { createReadStream, createWriteStream } from \"node:fs\";\nimport { rename } from \"node:fs/promises\";\nimport { pipeline } from \"node:stream/promises\";\nimport { createGunzip, createGzip } from \"node:zlib\";\nasync function writePack(path, data) {\n const tmp = path + \".tmp.\" + Date.now() + \".\" + randomInt(16777216);\n const ws = createWriteStream(tmp);\n const gz = createGzip({ level: 9 });\n const packr = new PackrStream();\n const p = pipeline(packr, gz, ws);\n packr.end(data);\n await p;\n await rename(tmp, path);\n}\nasync function readPack(path) {\n const gunzip = createGunzip();\n const unpackr = new UnpackrStream();\n const rs = createReadStream(path);\n const data = new Promise((resolve) => {\n unpackr.once(\"data\", resolve);\n });\n await pipeline(rs, gunzip, unpackr);\n return await data;\n}\nexport {\n readPack as r,\n writePack as w\n};\n"],"names":[],"mappings":";;;;;;;AAMA,eAAe,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;AACrC,EAAE,MAAM,GAAG,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;AACrE,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC;AACnC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACrC,EAAE,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE;AACjC,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;AACnC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACjB,EAAE,MAAM,CAAC;AACT,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;AACzB;AACA,eAAe,QAAQ,CAAC,IAAI,EAAE;AAC9B,EAAE,MAAM,MAAM,GAAG,YAAY,EAAE;AAC/B,EAAE,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE;AACrC,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACnC,EAAE,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACxC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AACjC,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC;AACrC,EAAE,OAAO,MAAM,IAAI;AACnB;;;;"}
@@ -1,11 +0,0 @@
1
- import path__default__default from 'node:path';
2
- import { $ as $DATA } from './directories-MyCzDoxa.js';
3
-
4
- const $CACHEDIR = () => path__default__default.join($DATA(), "..", "..", ".cache", "bluesky");
5
- const $CACHEFILE = () => path__default__default.join($CACHEDIR(), ".posts.pack.gz");
6
- const $FILESET = () => path__default__default.join($CACHEDIR(), ".imgset2.pack.gz");
7
- const $SKIPSET = () => path__default__default.join($CACHEDIR(), ".skipset.pack.gz");
8
- const $IMGDIR = () => path__default__default.join($CACHEDIR(), "images");
9
-
10
- export { $IMGDIR as $, $CACHEFILE as a, $SKIPSET as b, $CACHEDIR as c, $FILESET as d };
11
- //# sourceMappingURL=paths-Bv7gDCfT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths-Bv7gDCfT.js","sources":["../../../.svelte-kit/adapter-node/chunks/paths.js"],"sourcesContent":["import path__default from \"node:path\";\nimport { $ as $DATA } from \"./directories.js\";\nconst $CACHEDIR = () => path__default.join($DATA(), \"..\", \"..\", \".cache\", \"bluesky\");\nconst $CACHEFILE = () => path__default.join($CACHEDIR(), \".posts.pack.gz\");\nconst $FILESET = () => path__default.join($CACHEDIR(), \".imgset2.pack.gz\");\nconst $SKIPSET = () => path__default.join($CACHEDIR(), \".skipset.pack.gz\");\nconst $IMGDIR = () => path__default.join($CACHEDIR(), \"images\");\nexport {\n $IMGDIR as $,\n $CACHEFILE as a,\n $SKIPSET as b,\n $CACHEDIR as c,\n $FILESET as d\n};\n"],"names":["path__default"],"mappings":";;;AAEK,MAAC,SAAS,GAAG,MAAMA,sBAAa,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS;AAC9E,MAAC,UAAU,GAAG,MAAMA,sBAAa,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,gBAAgB;AACpE,MAAC,QAAQ,GAAG,MAAMA,sBAAa,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,kBAAkB;AACpE,MAAC,QAAQ,GAAG,MAAMA,sBAAa,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,kBAAkB;AACpE,MAAC,OAAO,GAAG,MAAMA,sBAAa,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ;;;;"}
@@ -1,178 +0,0 @@
1
- import { writeFileSync } from 'node:fs';
2
- import { writeFile, readFile } from 'node:fs/promises';
3
- import path__default__default from 'node:path';
4
- import z from 'zod';
5
- import { $ as $DATA } from './directories-MyCzDoxa.js';
6
- import { stringify, parse } from 'yaml';
7
- import { Logger } from 'tslog';
8
- import { g as getLogLevel } from './util-FQbl4xCz.js';
9
-
10
- const ThemeLogger = new Logger({ minLevel: getLogLevel() });
11
- const $THEMESCHEMA = () => path__default__default.resolve($DATA(), ".theme-schema.json");
12
- const $TYPE = () => path__default__default.resolve($DATA(), "generated-schema.ts");
13
- const $THEMECONFIG = () => path__default__default.resolve($DATA(), "theme-config.yaml");
14
- const BLANK = `{
15
- "$schema": "https://raw.githubusercontent.com/PhosphoriteArt/phosart-common/refs/heads/main/settings.schema.json"
16
- }`;
17
- const ZColorOption = z.object({ type: z.literal("color") });
18
- const ZSelectionOption = z.object({
19
- type: z.literal("selection"),
20
- options: z.array(z.string()),
21
- multi: z.literal(false).optional()
22
- });
23
- const ZMultiSelectionOption = z.object({
24
- type: z.literal("selection"),
25
- options: z.array(z.string()),
26
- multi: z.literal(true)
27
- });
28
- const ZStringOption = z.object({ type: z.literal("string") });
29
- const ZTagsOption = z.object({ type: z.literal("tag-list") });
30
- const ZStringList = z.object({ type: z.literal("string-list") });
31
- const ZThemeSettingsSchema = z.record(z.string(), z.union([
32
- ZColorOption,
33
- ZSelectionOption,
34
- ZMultiSelectionOption,
35
- ZTagsOption,
36
- ZStringList,
37
- ZStringOption
38
- ]));
39
- const builtinSettings = {
40
- defaultArtist: { type: "string" }
41
- };
42
- async function readThemeSchema() {
43
- let text;
44
- try {
45
- text = await readFile($THEMESCHEMA(), { encoding: "utf-8" });
46
- } catch (err) {
47
- ThemeLogger.warn("Error reading theme file:", err, "recreating");
48
- await writeFile($THEMESCHEMA(), BLANK, { encoding: "utf-8" });
49
- text = BLANK;
50
- }
51
- try {
52
- const data = JSON.parse(text);
53
- if (typeof data === "object") {
54
- delete data["$schema"];
55
- }
56
- const settings = await ZThemeSettingsSchema.parseAsync(data);
57
- await writeGeneratedSchema(settings);
58
- return settings;
59
- } catch (err) {
60
- ThemeLogger.warn("Error parsing theme file:", err);
61
- throw err;
62
- }
63
- }
64
- function escape(token) {
65
- return token.replaceAll("\\", "\\\\").replaceAll('"', '\\"');
66
- }
67
- async function writeGeneratedSchema(schema) {
68
- let ts = `export interface ThemeSchema {`;
69
- for (const [k, v] of Object.entries(schema)) {
70
- switch (v.type) {
71
- case "color":
72
- ts += `
73
- "${escape(k)}": \`#\${string}\`;`;
74
- break;
75
- case "selection": {
76
- const opts = v.options.map(escape).map((k2) => `"${k2}"`).join(" | ");
77
- const typ = v.multi ? `Array<${opts}>` : opts;
78
- ts += `
79
- "${escape(k)}": ` + typ + ";";
80
- break;
81
- }
82
- case "string":
83
- ts += `
84
- "${escape(k)}": string;`;
85
- break;
86
- case "string-list":
87
- case "tag-list":
88
- ts += `
89
- "${escape(k)}": string[]`;
90
- break;
91
- }
92
- }
93
- if (Object.keys(schema).length === 0) {
94
- ts = "export type ThemeSchema = Record<string, never>;\n";
95
- } else {
96
- ts += "\n}\n";
97
- }
98
- await writeFile($TYPE(), ts, { encoding: "utf-8" });
99
- }
100
- function validateSchema(schema, doc) {
101
- return doValidateSchema(Object.assign({}, builtinSettings, schema), doc);
102
- }
103
- function doValidateSchema(schema, doc) {
104
- if (typeof doc !== "object" || !doc) {
105
- throw new Error("document '" + JSON.stringify(doc) + "' is not a truthy object and thus cannot conform to schema " + JSON.stringify(schema));
106
- }
107
- const cast = doc;
108
- for (const [k, v] of Object.entries(schema)) {
109
- if (k in cast) {
110
- const docval = cast[k];
111
- switch (v.type) {
112
- case "color":
113
- if (typeof docval !== "string" || !docval.startsWith("#")) {
114
- throw new Error("document '" + JSON.stringify(doc) + "' @ key '" + k + "' does not have type color (instead has value '" + v + "') and thus does not conform to schema " + JSON.stringify(schema));
115
- }
116
- break;
117
- case "selection":
118
- if (v.multi) {
119
- if (!Array.isArray(docval) || docval.some((item) => typeof item !== "string" || !v.options.includes(item))) {
120
- throw new Error("document '" + JSON.stringify(doc) + "' @ key '" + k + "' does not have a valid selection list at that key (instead has value '" + v + "') and thus does not conform to schema " + JSON.stringify(schema));
121
- }
122
- break;
123
- }
124
- if (typeof docval !== "string" || !v.options.includes(docval)) {
125
- throw new Error("document '" + JSON.stringify(doc) + "' @ key '" + k + "' does not have a valid selection at that key (instead has value '" + v + "') and thus does not conform to schema " + JSON.stringify(schema));
126
- }
127
- break;
128
- case "string":
129
- if (typeof docval !== "string") {
130
- throw new Error("document '" + JSON.stringify(doc) + "' @ key '" + k + "' does not have a valid string at that key (instead has value '" + v + "') and thus does not conform to schema " + JSON.stringify(schema));
131
- }
132
- break;
133
- case "string-list":
134
- case "tag-list":
135
- if (!Array.isArray(docval) || docval.some((item) => typeof item !== "string")) {
136
- throw new Error("document '" + JSON.stringify(doc) + "' @ key '" + k + "' does not have a valid string list at that key (instead has value '" + v + "') and thus does not conform to schema " + JSON.stringify(schema));
137
- }
138
- }
139
- }
140
- }
141
- return true;
142
- }
143
- async function readThemeConfig(schema) {
144
- let text;
145
- try {
146
- text = await readFile($THEMECONFIG(), { encoding: "utf-8" });
147
- } catch (err) {
148
- ThemeLogger.warn("Error reading theme file:", err, "recreating");
149
- await writeFile($THEMECONFIG(), "", { encoding: "utf-8" });
150
- text = "";
151
- }
152
- try {
153
- const doc = parse(text) ?? {};
154
- if (validateSchema(schema, doc)) {
155
- return doc;
156
- }
157
- throw new Error("unreachable");
158
- } catch (err) {
159
- ThemeLogger.warn("Error parsing theme file:", err);
160
- throw err;
161
- }
162
- }
163
- async function writeThemeConfig(schema, config) {
164
- if (validateSchema(schema, config)) {
165
- await writeFile($THEMECONFIG(), stringify(config), { encoding: "utf-8" });
166
- }
167
- }
168
- function writeJsonSchema() {
169
- const p = path__default__default.resolve(path__default__default.join(import.meta.dirname, "../../../settings.schema.json"));
170
- writeFileSync(p, JSON.stringify(z.intersection(z.object({ $schema: z.string() }), ZThemeSettingsSchema).toJSONSchema(), null, 2), { encoding: "utf-8" });
171
- console.log("Wrote jsonschema to " + p);
172
- }
173
- if (process.env.WRITE_SCHEMA) {
174
- writeJsonSchema();
175
- }
176
-
177
- export { readThemeConfig as a, readThemeSchema as r, writeThemeConfig as w };
178
- //# sourceMappingURL=schema-Xy3yc0Rx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-Xy3yc0Rx.js","sources":["../../../.svelte-kit/adapter-node/chunks/schema.js"],"sourcesContent":["import { writeFileSync } from \"node:fs\";\nimport { writeFile, readFile } from \"node:fs/promises\";\nimport path__default from \"node:path\";\nimport z from \"zod\";\nimport { $ as $DATA } from \"./directories.js\";\nimport { stringify, parse } from \"yaml\";\nimport { Logger } from \"tslog\";\nimport { b as getLogLevel } from \"./util.js\";\nconst ThemeLogger = new Logger({ minLevel: getLogLevel() });\nconst $THEMESCHEMA = () => path__default.resolve($DATA(), \".theme-schema.json\");\nconst $TYPE = () => path__default.resolve($DATA(), \"generated-schema.ts\");\nconst $THEMECONFIG = () => path__default.resolve($DATA(), \"theme-config.yaml\");\nconst BLANK = `{\n \"$schema\": \"https://raw.githubusercontent.com/PhosphoriteArt/phosart-common/refs/heads/main/settings.schema.json\"\n}`;\nconst ZColorOption = z.object({ type: z.literal(\"color\") });\nconst ZSelectionOption = z.object({\n type: z.literal(\"selection\"),\n options: z.array(z.string()),\n multi: z.literal(false).optional()\n});\nconst ZMultiSelectionOption = z.object({\n type: z.literal(\"selection\"),\n options: z.array(z.string()),\n multi: z.literal(true)\n});\nconst ZStringOption = z.object({ type: z.literal(\"string\") });\nconst ZTagsOption = z.object({ type: z.literal(\"tag-list\") });\nconst ZStringList = z.object({ type: z.literal(\"string-list\") });\nconst ZThemeSettingsSchema = z.record(z.string(), z.union([\n ZColorOption,\n ZSelectionOption,\n ZMultiSelectionOption,\n ZTagsOption,\n ZStringList,\n ZStringOption\n]));\nconst builtinSettings = {\n defaultArtist: { type: \"string\" }\n};\nasync function readThemeSchema() {\n let text;\n try {\n text = await readFile($THEMESCHEMA(), { encoding: \"utf-8\" });\n } catch (err) {\n ThemeLogger.warn(\"Error reading theme file:\", err, \"recreating\");\n await writeFile($THEMESCHEMA(), BLANK, { encoding: \"utf-8\" });\n text = BLANK;\n }\n try {\n const data = JSON.parse(text);\n if (typeof data === \"object\") {\n delete data[\"$schema\"];\n }\n const settings = await ZThemeSettingsSchema.parseAsync(data);\n await writeGeneratedSchema(settings);\n return settings;\n } catch (err) {\n ThemeLogger.warn(\"Error parsing theme file:\", err);\n throw err;\n }\n}\nfunction escape(token) {\n return token.replaceAll(\"\\\\\", \"\\\\\\\\\").replaceAll('\"', '\\\\\"');\n}\nasync function writeGeneratedSchema(schema) {\n let ts = `export interface ThemeSchema {`;\n for (const [k, v] of Object.entries(schema)) {\n switch (v.type) {\n case \"color\":\n ts += `\n \"${escape(k)}\": \\`#\\${string}\\`;`;\n break;\n case \"selection\": {\n const opts = v.options.map(escape).map((k2) => `\"${k2}\"`).join(\" | \");\n const typ = v.multi ? `Array<${opts}>` : opts;\n ts += `\n \"${escape(k)}\": ` + typ + \";\";\n break;\n }\n case \"string\":\n ts += `\n \"${escape(k)}\": string;`;\n break;\n case \"string-list\":\n case \"tag-list\":\n ts += `\n \"${escape(k)}\": string[]`;\n break;\n }\n }\n if (Object.keys(schema).length === 0) {\n ts = \"export type ThemeSchema = Record<string, never>;\\n\";\n } else {\n ts += \"\\n}\\n\";\n }\n await writeFile($TYPE(), ts, { encoding: \"utf-8\" });\n}\nfunction validateSchema(schema, doc) {\n return doValidateSchema(Object.assign({}, builtinSettings, schema), doc);\n}\nfunction doValidateSchema(schema, doc) {\n if (typeof doc !== \"object\" || !doc) {\n throw new Error(\"document '\" + JSON.stringify(doc) + \"' is not a truthy object and thus cannot conform to schema \" + JSON.stringify(schema));\n }\n const cast = doc;\n for (const [k, v] of Object.entries(schema)) {\n if (k in cast) {\n const docval = cast[k];\n switch (v.type) {\n case \"color\":\n if (typeof docval !== \"string\" || !docval.startsWith(\"#\")) {\n throw new Error(\"document '\" + JSON.stringify(doc) + \"' @ key '\" + k + \"' does not have type color (instead has value '\" + v + \"') and thus does not conform to schema \" + JSON.stringify(schema));\n }\n break;\n case \"selection\":\n if (v.multi) {\n if (!Array.isArray(docval) || docval.some((item) => typeof item !== \"string\" || !v.options.includes(item))) {\n throw new Error(\"document '\" + JSON.stringify(doc) + \"' @ key '\" + k + \"' does not have a valid selection list at that key (instead has value '\" + v + \"') and thus does not conform to schema \" + JSON.stringify(schema));\n }\n break;\n }\n if (typeof docval !== \"string\" || !v.options.includes(docval)) {\n throw new Error(\"document '\" + JSON.stringify(doc) + \"' @ key '\" + k + \"' does not have a valid selection at that key (instead has value '\" + v + \"') and thus does not conform to schema \" + JSON.stringify(schema));\n }\n break;\n case \"string\":\n if (typeof docval !== \"string\") {\n throw new Error(\"document '\" + JSON.stringify(doc) + \"' @ key '\" + k + \"' does not have a valid string at that key (instead has value '\" + v + \"') and thus does not conform to schema \" + JSON.stringify(schema));\n }\n break;\n case \"string-list\":\n case \"tag-list\":\n if (!Array.isArray(docval) || docval.some((item) => typeof item !== \"string\")) {\n throw new Error(\"document '\" + JSON.stringify(doc) + \"' @ key '\" + k + \"' does not have a valid string list at that key (instead has value '\" + v + \"') and thus does not conform to schema \" + JSON.stringify(schema));\n }\n }\n }\n }\n return true;\n}\nasync function readThemeConfig(schema) {\n let text;\n try {\n text = await readFile($THEMECONFIG(), { encoding: \"utf-8\" });\n } catch (err) {\n ThemeLogger.warn(\"Error reading theme file:\", err, \"recreating\");\n await writeFile($THEMECONFIG(), \"\", { encoding: \"utf-8\" });\n text = \"\";\n }\n try {\n const doc = parse(text) ?? {};\n if (validateSchema(schema, doc)) {\n return doc;\n }\n throw new Error(\"unreachable\");\n } catch (err) {\n ThemeLogger.warn(\"Error parsing theme file:\", err);\n throw err;\n }\n}\nasync function writeThemeConfig(schema, config) {\n if (validateSchema(schema, config)) {\n await writeFile($THEMECONFIG(), stringify(config), { encoding: \"utf-8\" });\n }\n}\nfunction writeJsonSchema() {\n const p = path__default.resolve(path__default.join(import.meta.dirname, \"../../../settings.schema.json\"));\n writeFileSync(p, JSON.stringify(z.intersection(z.object({ $schema: z.string() }), ZThemeSettingsSchema).toJSONSchema(), null, 2), { encoding: \"utf-8\" });\n console.log(\"Wrote jsonschema to \" + p);\n}\nif (process.env.WRITE_SCHEMA) {\n writeJsonSchema();\n}\nexport {\n readThemeConfig as a,\n readThemeSchema as r,\n writeThemeConfig as w\n};\n"],"names":["path__default"],"mappings":"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"}