@selvajs/selva 4.6.1 → 4.6.3

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 (232) hide show
  1. package/build/client/_app/immutable/chunks/{CpG0Drvc.js → 0lrM6Mba.js} +1 -1
  2. package/build/client/_app/immutable/chunks/0lrM6Mba.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/0lrM6Mba.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{C78kFeb_.js → Cb6Kmy9P.js} +1 -1
  5. package/build/client/_app/immutable/chunks/Cb6Kmy9P.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/Cb6Kmy9P.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{DratyCsz.js → D1rPdv8r.js} +1 -1
  8. package/build/client/_app/immutable/chunks/D1rPdv8r.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/D1rPdv8r.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{CkCtbFiD.js → DRNVpYJy.js} +1 -1
  11. package/build/client/_app/immutable/chunks/DRNVpYJy.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/DRNVpYJy.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{C09zQKpt.js → FLBqkADw.js} +1 -1
  14. package/build/client/_app/immutable/chunks/FLBqkADw.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/FLBqkADw.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{oxLLzYjR.js → c2tvcOKZ.js} +2 -2
  17. package/build/client/_app/immutable/chunks/c2tvcOKZ.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/c2tvcOKZ.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{9HY6WY44.js → j93hmZ-0.js} +1 -1
  20. package/build/client/_app/immutable/chunks/j93hmZ-0.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/j93hmZ-0.js.gz +0 -0
  22. package/build/client/_app/immutable/entry/{app.BuRdIZOQ.js → app.IjBiMm9p.js} +2 -2
  23. package/build/client/_app/immutable/entry/app.IjBiMm9p.js.br +0 -0
  24. package/build/client/_app/immutable/entry/app.IjBiMm9p.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/start.Dm-nCkUQ.js +1 -0
  26. package/build/client/_app/immutable/entry/start.Dm-nCkUQ.js.br +2 -0
  27. package/build/client/_app/immutable/entry/start.Dm-nCkUQ.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/{1.DOBPqhlR.js → 1.BgFhJKPe.js} +1 -1
  29. package/build/client/_app/immutable/nodes/1.BgFhJKPe.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/1.BgFhJKPe.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{11.ujEuLS2O.js → 11.BSptERIn.js} +1 -1
  32. package/build/client/_app/immutable/nodes/11.BSptERIn.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/11.BSptERIn.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/{13.B_xDd6Uy.js → 13.B4C6nFJe.js} +1 -1
  35. package/build/client/_app/immutable/nodes/13.B4C6nFJe.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/13.B4C6nFJe.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{14.Chsd0OoI.js → 14.hOllBZyO.js} +1 -1
  38. package/build/client/_app/immutable/nodes/14.hOllBZyO.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/14.hOllBZyO.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{15.BblFO--0.js → 15.CGkCrbCe.js} +1 -1
  41. package/build/client/_app/immutable/nodes/15.CGkCrbCe.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/15.CGkCrbCe.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{16.Viw6zmPA.js → 16.Cr7AW5PN.js} +1 -1
  44. package/build/client/_app/immutable/nodes/16.Cr7AW5PN.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/16.Cr7AW5PN.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{17.CDhTNsyV.js → 17.C2YwYTqu.js} +1 -1
  47. package/build/client/_app/immutable/nodes/17.C2YwYTqu.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/17.C2YwYTqu.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/{19.Cbp1paON.js → 19.DnKRNO0E.js} +1 -1
  50. package/build/client/_app/immutable/nodes/19.DnKRNO0E.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/19.DnKRNO0E.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{2.C-gHZYwt.js → 2.BsBnDzDp.js} +1 -1
  53. package/build/client/_app/immutable/nodes/2.BsBnDzDp.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/2.BsBnDzDp.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{20.Z_-DinA0.js → 20.DIdtt_3-.js} +57 -57
  56. package/build/client/_app/immutable/nodes/20.DIdtt_3-.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/20.DIdtt_3-.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{21.BZHMTYK3.js → 21.Y17KMzb1.js} +1 -1
  59. package/build/client/_app/immutable/nodes/21.Y17KMzb1.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/21.Y17KMzb1.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{23.BQPxRSVN.js → 23.a1Dmm3Pr.js} +1 -1
  62. package/build/client/_app/immutable/nodes/23.a1Dmm3Pr.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/23.a1Dmm3Pr.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/{24.BcXB86Iq.js → 24.vneE4GRe.js} +1 -1
  65. package/build/client/_app/immutable/nodes/24.vneE4GRe.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/24.vneE4GRe.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{27.CZFwtrmd.js → 27.BqE4M_8b.js} +1 -1
  68. package/build/client/_app/immutable/nodes/27.BqE4M_8b.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/27.BqE4M_8b.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/{28.CcCJ29U1.js → 28.Bm2mngao.js} +1 -1
  71. package/build/client/_app/immutable/nodes/28.Bm2mngao.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/28.Bm2mngao.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/{29.BIRGR5YI.js → 29.oRB0IXGB.js} +1 -1
  74. package/build/client/_app/immutable/nodes/29.oRB0IXGB.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/29.oRB0IXGB.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{3.DYxxVfIY.js → 3.C_92Rg4N.js} +1 -1
  77. package/build/client/_app/immutable/nodes/3.C_92Rg4N.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/3.C_92Rg4N.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{30.DJKZS6xg.js → 30.D8ebFyQt.js} +1 -1
  80. package/build/client/_app/immutable/nodes/30.D8ebFyQt.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/30.D8ebFyQt.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/{5.ydvn0DlC.js → 5.BWwZyD5N.js} +1 -1
  83. package/build/client/_app/immutable/nodes/5.BWwZyD5N.js.br +2 -0
  84. package/build/client/_app/immutable/nodes/5.BWwZyD5N.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/{6.5b6WuEeg.js → 6.S-xzrYBX.js} +1 -1
  86. package/build/client/_app/immutable/nodes/6.S-xzrYBX.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/6.S-xzrYBX.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/{7.BePGtom3.js → 7.BVnTiBC6.js} +1 -1
  89. package/build/client/_app/immutable/nodes/7.BVnTiBC6.js.br +0 -0
  90. package/build/client/_app/immutable/nodes/7.BVnTiBC6.js.gz +0 -0
  91. package/build/client/_app/immutable/nodes/{8.DUhCMLQ8.js → 8.BU14Iv3_.js} +1 -1
  92. package/build/client/_app/immutable/nodes/8.BU14Iv3_.js.br +0 -0
  93. package/build/client/_app/immutable/nodes/8.BU14Iv3_.js.gz +0 -0
  94. package/build/client/_app/immutable/nodes/{9.Io3h0BI-.js → 9.D8pR-5Cb.js} +1 -1
  95. package/build/client/_app/immutable/nodes/9.D8pR-5Cb.js.br +0 -0
  96. package/build/client/_app/immutable/nodes/9.D8pR-5Cb.js.gz +0 -0
  97. package/build/client/_app/version.json +1 -1
  98. package/build/client/_app/version.json.br +0 -0
  99. package/build/client/_app/version.json.gz +0 -0
  100. package/build/handler.js +4 -4
  101. package/build/index.js +4 -4
  102. package/build/server/chunks/chunks/{internal.js-ygQzH1ZO.js → internal.js-Dcw2kdmH.js} +2 -2
  103. package/build/server/chunks/chunks/{internal.js-ygQzH1ZO.js.map → internal.js-Dcw2kdmH.js.map} +1 -1
  104. package/build/server/chunks/chunks/{package.js-BKafpnBH.js → package.js-BH4hEgM_.js} +2 -2
  105. package/build/server/chunks/chunks/{package.js-BKafpnBH.js.map → package.js-BH4hEgM_.js.map} +1 -1
  106. package/build/server/chunks/entries/endpoints/api/compute/{_server.ts.js-D_9YzrC7.js → _server.ts.js-7u0huA7V.js} +18 -4
  107. package/build/server/chunks/entries/endpoints/api/compute/_server.ts.js-7u0huA7V.js.map +1 -0
  108. package/build/server/chunks/entries/pages/admin/{_page.server.ts.js-xV1aLIlx.js → _page.server.ts.js-vwLdirZz.js} +2 -2
  109. package/build/server/chunks/entries/pages/admin/{_page.server.ts.js-xV1aLIlx.js.map → _page.server.ts.js-vwLdirZz.js.map} +1 -1
  110. package/build/server/chunks/entries/pages/admin/system/{_page.server.ts.js-B1v99a9p.js → _page.server.ts.js-lJcimOGV.js} +2 -2
  111. package/build/server/chunks/entries/pages/admin/system/{_page.server.ts.js-B1v99a9p.js.map → _page.server.ts.js-lJcimOGV.js.map} +1 -1
  112. package/build/server/chunks/entries/pages/library/_guid_/{_page.svelte.js-BKgJcySA.js → _page.svelte.js-CuMVFfMV.js} +41 -3
  113. package/build/server/chunks/entries/pages/library/_guid_/{_page.svelte.js-BKgJcySA.js.map → _page.svelte.js-CuMVFfMV.js.map} +1 -1
  114. package/build/server/chunks/{handler-CIfYOlGM.js → handler-BgC_Dqcj.js} +3 -3
  115. package/build/server/chunks/{handler-CIfYOlGM.js.map → handler-BgC_Dqcj.js.map} +1 -1
  116. package/build/server/chunks/{index.js-DFJ2nKrZ.js → index.js-DUtBWxr2.js} +2 -2
  117. package/build/server/chunks/{index.js-DFJ2nKrZ.js.map → index.js-DUtBWxr2.js.map} +1 -1
  118. package/build/server/chunks/{manifest.js-6ZmE-R1H.js → manifest.js-BQ-f1DGc.js} +26 -26
  119. package/build/server/chunks/{manifest.js-6ZmE-R1H.js.map → manifest.js-BQ-f1DGc.js.map} +1 -1
  120. package/build/server/chunks/nodes/{1.js-DjN2qTfJ.js → 1.js-BKR2SXMe.js} +2 -2
  121. package/build/server/chunks/nodes/{1.js-DjN2qTfJ.js.map → 1.js-BKR2SXMe.js.map} +1 -1
  122. package/build/server/chunks/nodes/{11.js-DOXf13kE.js → 11.js-Cfn2qDrO.js} +2 -2
  123. package/build/server/chunks/nodes/{11.js-DOXf13kE.js.map → 11.js-Cfn2qDrO.js.map} +1 -1
  124. package/build/server/chunks/nodes/{13.js-Bt0Cb2qz.js → 13.js-TGkheX-Y.js} +2 -2
  125. package/build/server/chunks/nodes/{13.js-Bt0Cb2qz.js.map → 13.js-TGkheX-Y.js.map} +1 -1
  126. package/build/server/chunks/nodes/{14.js-jGowHFUf.js → 14.js-C9bI-V4v.js} +2 -2
  127. package/build/server/chunks/nodes/{14.js-jGowHFUf.js.map → 14.js-C9bI-V4v.js.map} +1 -1
  128. package/build/server/chunks/nodes/{15.js-BJm-NISR.js → 15.js-UnVLkp0T.js} +4 -4
  129. package/build/server/chunks/nodes/{15.js-BJm-NISR.js.map → 15.js-UnVLkp0T.js.map} +1 -1
  130. package/build/server/chunks/nodes/{16.js-BJRndz1J.js → 16.js-gKMJHzY8.js} +2 -2
  131. package/build/server/chunks/nodes/{16.js-BJRndz1J.js.map → 16.js-gKMJHzY8.js.map} +1 -1
  132. package/build/server/chunks/nodes/{17.js-D7alTcvy.js → 17.js-Ck_-DZkN.js} +2 -2
  133. package/build/server/chunks/nodes/{17.js-D7alTcvy.js.map → 17.js-Ck_-DZkN.js.map} +1 -1
  134. package/build/server/chunks/nodes/{19.js-DwxW0UEO.js → 19.js-D9DLAaDS.js} +2 -2
  135. package/build/server/chunks/nodes/{19.js-DwxW0UEO.js.map → 19.js-D9DLAaDS.js.map} +1 -1
  136. package/build/server/chunks/nodes/{2.js-DxeXJpRS.js → 2.js-DOSEejkQ.js} +2 -2
  137. package/build/server/chunks/nodes/{2.js-DxeXJpRS.js.map → 2.js-DOSEejkQ.js.map} +1 -1
  138. package/build/server/chunks/nodes/{20.js-CMDMUGWe.js → 20.js-DySdwsnp.js} +3 -3
  139. package/build/server/chunks/nodes/{20.js-CMDMUGWe.js.map → 20.js-DySdwsnp.js.map} +1 -1
  140. package/build/server/chunks/nodes/{21.js-DC8u0yyk.js → 21.js-Dhwwm5Hv.js} +2 -2
  141. package/build/server/chunks/nodes/{21.js-DC8u0yyk.js.map → 21.js-Dhwwm5Hv.js.map} +1 -1
  142. package/build/server/chunks/nodes/{23.js-zOI5F-YM.js → 23.js-Bdx9jUxD.js} +2 -2
  143. package/build/server/chunks/nodes/{23.js-zOI5F-YM.js.map → 23.js-Bdx9jUxD.js.map} +1 -1
  144. package/build/server/chunks/nodes/{24.js-Ci_eNef5.js → 24.js-CiL5buX4.js} +2 -2
  145. package/build/server/chunks/nodes/{24.js-Ci_eNef5.js.map → 24.js-CiL5buX4.js.map} +1 -1
  146. package/build/server/chunks/nodes/{27.js-B6hIXgA3.js → 27.js-DXGEbzS0.js} +2 -2
  147. package/build/server/chunks/nodes/{27.js-B6hIXgA3.js.map → 27.js-DXGEbzS0.js.map} +1 -1
  148. package/build/server/chunks/nodes/{28.js-DrQCyu0k.js → 28.js-CUHARruq.js} +2 -2
  149. package/build/server/chunks/nodes/{28.js-DrQCyu0k.js.map → 28.js-CUHARruq.js.map} +1 -1
  150. package/build/server/chunks/nodes/{29.js-BHx34EVq.js → 29.js-fVcWNusW.js} +2 -2
  151. package/build/server/chunks/nodes/{29.js-BHx34EVq.js.map → 29.js-fVcWNusW.js.map} +1 -1
  152. package/build/server/chunks/nodes/{3.js-Hp1wzbSo.js → 3.js-aS5tJ2va.js} +2 -2
  153. package/build/server/chunks/nodes/{3.js-Hp1wzbSo.js.map → 3.js-aS5tJ2va.js.map} +1 -1
  154. package/build/server/chunks/nodes/{30.js-Bx8s2RoG.js → 30.js-DhbxT527.js} +2 -2
  155. package/build/server/chunks/nodes/{30.js-Bx8s2RoG.js.map → 30.js-DhbxT527.js.map} +1 -1
  156. package/build/server/chunks/nodes/{5.js-Dpgmn_GA.js → 5.js-D9d_B-w3.js} +2 -2
  157. package/build/server/chunks/nodes/{5.js-Dpgmn_GA.js.map → 5.js-D9d_B-w3.js.map} +1 -1
  158. package/build/server/chunks/nodes/{6.js-CccYExp_.js → 6.js-DefCRSwS.js} +2 -2
  159. package/build/server/chunks/nodes/{6.js-CccYExp_.js.map → 6.js-DefCRSwS.js.map} +1 -1
  160. package/build/server/chunks/nodes/{7.js-Xdo3iRGi.js → 7.js-DxzbTr24.js} +2 -2
  161. package/build/server/chunks/nodes/{7.js-Xdo3iRGi.js.map → 7.js-DxzbTr24.js.map} +1 -1
  162. package/build/server/chunks/nodes/{8.js-DumYFD1j.js → 8.js-CpQ445IJ.js} +2 -2
  163. package/build/server/chunks/nodes/{8.js-DumYFD1j.js.map → 8.js-CpQ445IJ.js.map} +1 -1
  164. package/build/server/chunks/nodes/{9.js-VAZy_0K8.js → 9.js-BDmKqlg6.js} +4 -4
  165. package/build/server/chunks/nodes/{9.js-VAZy_0K8.js.map → 9.js-BDmKqlg6.js.map} +1 -1
  166. package/package.json +1 -1
  167. package/build/client/_app/immutable/chunks/9HY6WY44.js.br +0 -0
  168. package/build/client/_app/immutable/chunks/9HY6WY44.js.gz +0 -0
  169. package/build/client/_app/immutable/chunks/C09zQKpt.js.br +0 -0
  170. package/build/client/_app/immutable/chunks/C09zQKpt.js.gz +0 -0
  171. package/build/client/_app/immutable/chunks/C78kFeb_.js.br +0 -0
  172. package/build/client/_app/immutable/chunks/C78kFeb_.js.gz +0 -0
  173. package/build/client/_app/immutable/chunks/CkCtbFiD.js.br +0 -0
  174. package/build/client/_app/immutable/chunks/CkCtbFiD.js.gz +0 -0
  175. package/build/client/_app/immutable/chunks/CpG0Drvc.js.br +0 -0
  176. package/build/client/_app/immutable/chunks/CpG0Drvc.js.gz +0 -0
  177. package/build/client/_app/immutable/chunks/DratyCsz.js.br +0 -0
  178. package/build/client/_app/immutable/chunks/DratyCsz.js.gz +0 -0
  179. package/build/client/_app/immutable/chunks/oxLLzYjR.js.br +0 -0
  180. package/build/client/_app/immutable/chunks/oxLLzYjR.js.gz +0 -0
  181. package/build/client/_app/immutable/entry/app.BuRdIZOQ.js.br +0 -0
  182. package/build/client/_app/immutable/entry/app.BuRdIZOQ.js.gz +0 -0
  183. package/build/client/_app/immutable/entry/start.BWJhki94.js +0 -1
  184. package/build/client/_app/immutable/entry/start.BWJhki94.js.br +0 -2
  185. package/build/client/_app/immutable/entry/start.BWJhki94.js.gz +0 -0
  186. package/build/client/_app/immutable/nodes/1.DOBPqhlR.js.br +0 -0
  187. package/build/client/_app/immutable/nodes/1.DOBPqhlR.js.gz +0 -0
  188. package/build/client/_app/immutable/nodes/11.ujEuLS2O.js.br +0 -0
  189. package/build/client/_app/immutable/nodes/11.ujEuLS2O.js.gz +0 -0
  190. package/build/client/_app/immutable/nodes/13.B_xDd6Uy.js.br +0 -0
  191. package/build/client/_app/immutable/nodes/13.B_xDd6Uy.js.gz +0 -0
  192. package/build/client/_app/immutable/nodes/14.Chsd0OoI.js.br +0 -0
  193. package/build/client/_app/immutable/nodes/14.Chsd0OoI.js.gz +0 -0
  194. package/build/client/_app/immutable/nodes/15.BblFO--0.js.br +0 -0
  195. package/build/client/_app/immutable/nodes/15.BblFO--0.js.gz +0 -0
  196. package/build/client/_app/immutable/nodes/16.Viw6zmPA.js.br +0 -0
  197. package/build/client/_app/immutable/nodes/16.Viw6zmPA.js.gz +0 -0
  198. package/build/client/_app/immutable/nodes/17.CDhTNsyV.js.br +0 -0
  199. package/build/client/_app/immutable/nodes/17.CDhTNsyV.js.gz +0 -0
  200. package/build/client/_app/immutable/nodes/19.Cbp1paON.js.br +0 -0
  201. package/build/client/_app/immutable/nodes/19.Cbp1paON.js.gz +0 -0
  202. package/build/client/_app/immutable/nodes/2.C-gHZYwt.js.br +0 -0
  203. package/build/client/_app/immutable/nodes/2.C-gHZYwt.js.gz +0 -0
  204. package/build/client/_app/immutable/nodes/20.Z_-DinA0.js.br +0 -0
  205. package/build/client/_app/immutable/nodes/20.Z_-DinA0.js.gz +0 -0
  206. package/build/client/_app/immutable/nodes/21.BZHMTYK3.js.br +0 -0
  207. package/build/client/_app/immutable/nodes/21.BZHMTYK3.js.gz +0 -0
  208. package/build/client/_app/immutable/nodes/23.BQPxRSVN.js.br +0 -0
  209. package/build/client/_app/immutable/nodes/23.BQPxRSVN.js.gz +0 -0
  210. package/build/client/_app/immutable/nodes/24.BcXB86Iq.js.br +0 -0
  211. package/build/client/_app/immutable/nodes/24.BcXB86Iq.js.gz +0 -0
  212. package/build/client/_app/immutable/nodes/27.CZFwtrmd.js.br +0 -0
  213. package/build/client/_app/immutable/nodes/27.CZFwtrmd.js.gz +0 -0
  214. package/build/client/_app/immutable/nodes/28.CcCJ29U1.js.br +0 -0
  215. package/build/client/_app/immutable/nodes/28.CcCJ29U1.js.gz +0 -0
  216. package/build/client/_app/immutable/nodes/29.BIRGR5YI.js.br +0 -0
  217. package/build/client/_app/immutable/nodes/29.BIRGR5YI.js.gz +0 -0
  218. package/build/client/_app/immutable/nodes/3.DYxxVfIY.js.br +0 -0
  219. package/build/client/_app/immutable/nodes/3.DYxxVfIY.js.gz +0 -0
  220. package/build/client/_app/immutable/nodes/30.DJKZS6xg.js.br +0 -0
  221. package/build/client/_app/immutable/nodes/30.DJKZS6xg.js.gz +0 -0
  222. package/build/client/_app/immutable/nodes/5.ydvn0DlC.js.br +0 -1
  223. package/build/client/_app/immutable/nodes/5.ydvn0DlC.js.gz +0 -0
  224. package/build/client/_app/immutable/nodes/6.5b6WuEeg.js.br +0 -0
  225. package/build/client/_app/immutable/nodes/6.5b6WuEeg.js.gz +0 -0
  226. package/build/client/_app/immutable/nodes/7.BePGtom3.js.br +0 -0
  227. package/build/client/_app/immutable/nodes/7.BePGtom3.js.gz +0 -0
  228. package/build/client/_app/immutable/nodes/8.DUhCMLQ8.js.br +0 -0
  229. package/build/client/_app/immutable/nodes/8.DUhCMLQ8.js.gz +0 -0
  230. package/build/client/_app/immutable/nodes/9.Io3h0BI-.js.br +0 -0
  231. package/build/client/_app/immutable/nodes/9.Io3h0BI-.js.gz +0 -0
  232. package/build/server/chunks/entries/endpoints/api/compute/_server.ts.js-D_9YzrC7.js.map +0 -1
@@ -1 +1 @@
1
- import"../chunks/DsnmJJEf.js";import{p as le,f,d as i,t as E,c as U,r as P,g as n,h as T,n as ee,a as de,s as oe,u as R,e as ve,$ as ge}from"../chunks/BtOVeLcI.js";import{d as he,s as H,a as pe}from"../chunks/BNpXeuQ_.js";import{c as te,a as r,t as _e,f as c}from"../chunks/BoLtD6vo.js";import{i as J}from"../chunks/DAQN5y4A.js";import{a as Z,e as xe}from"../chunks/22C0ZkpD.js";import{s as O,r as re,c as x,b as $e}from"../chunks/ChEZL1UP.js";import{h as we}from"../chunks/CTTkX-27.js";import{p as be}from"../chunks/9HY6WY44.js";import{S as ye}from"../chunks/DLMu-EPf.js";import{i as ie}from"../chunks/oxLLzYjR.js";import{C as ce,a as me}from"../chunks/CY6l1SkO.js";import{B as ae}from"../chunks/3KyAYBE4.js";import{C as ue,a as fe}from"../chunks/BawNisij.js";import{B as ne}from"../chunks/mlApEF2J.js";import{I as se}from"../chunks/BuC_QZkR.js";import{C as Pe}from"../chunks/C0Xb3vka.js";import{T as Ce}from"../chunks/BuBobyR7.js";import{t as y}from"../chunks/DTLLn7uD.js";import{S as Se}from"../chunks/Bixcgta2.js";import{U as ke}from"../chunks/BYQ2KYuV.js";import{S as Ae}from"../chunks/BRHPfB44.js";function Ge(v,e){let l=re(e,["$$slots","$$events","$$legacy"]);const s=[["path",{d:"M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21"}],["path",{d:"m14 19.5 3-3 3 3"}],["path",{d:"M17 22v-5.5"}],["circle",{cx:"9",cy:"9",r:"2"}]];se(v,O({name:"image-up"},()=>l,{get iconNode(){return s}}))}function Ie(v,e){let l=re(e,["$$slots","$$events","$$legacy"]);const s=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1"}]];se(v,O({name:"layout-dashboard"},()=>l,{get iconNode(){return s}}))}function Ue(v,e){let l=re(e,["$$slots","$$events","$$legacy"]);const s=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"}],["path",{d:"M12 22V12"}],["polyline",{points:"3.29 7 12 12 20.71 7"}],["path",{d:"m7.5 4.27 9 5.15"}]];se(v,O({name:"package"},()=>l,{get iconNode(){return s}}))}var Ne=c("<!> ",1),je=c("<!> <!>",1),Me=c('<img class="h-full w-full object-contain"/>'),ze=c("<!> ",1),Be=c("<!> Remove",1),Te=c('<div class="flex items-center gap-4"><div class="bg-muted/40 flex h-20 w-20 shrink-0 items-center justify-center overflow-hidden rounded-lg border"><!></div> <div class="flex flex-col gap-2"><p class="text-muted-foreground text-xs">PNG, JPG, WebP, GIF, or SVG. Stored at up to 1200px as WebP.</p> <div class="flex gap-2"><input type="file" class="hidden"/> <!> <!></div></div></div>'),Ee=c("<!> <!>",1);function Fe(v,e){le(e,!0);const l="image/png,image/jpeg,image/webp,image/gif,image/svg+xml",s=10*1024*1024,F=R(()=>`/admin/api/orgs/${e.orgId}/assets/${e.kind}`);let C=oe(null),m=oe(!1);async function M(t){const u=t.target,$=u.files?.[0];if(u.value="",!!$){if(!l.split(",").includes($.type)){y.error("Unsupported image type. Use PNG, JPG, WebP, GIF, or SVG.");return}if($.size>s){y.error(`Image too large. Max ${s/(1024*1024)} MB.`);return}T(m,!0);try{const D=new FormData;D.append("image",$);const g=await fetch(n(F),{method:"POST",body:D});if(g.ok)y.success(`${e.title} updated`),await ie();else{const w=await g.json().catch(()=>({}));y.error(w.message||w.error||`Upload failed (${g.status})`)}}catch{y.error("Failed to upload")}finally{T(m,!1)}}}async function V(){T(m,!0);try{const t=await fetch(n(F),{method:"DELETE"});t.ok?(y.success(`${e.title} removed`),await ie()):y.error(`Remove failed (${t.status})`)}catch{y.error("Failed to remove")}finally{T(m,!1)}}var W=te(),X=f(W);x(X,()=>fe,(t,u)=>{u(t,{children:($,D)=>{var g=Ee(),w=f(g);x(w,()=>ce,(S,k)=>{k(S,{children:(A,q)=>{var o=je(),d=f(o);x(d,()=>me,(h,b)=>{b(h,{class:"flex items-center gap-2 text-sm font-medium",children:(p,_)=>{var I=Ne(),N=f(I);ae(N,{class:"text-muted-foreground h-4 w-4"});var L=i(N);E(()=>H(L,` ${e.title??""}`)),r(p,I)},$$slots:{default:!0}})});var G=i(d,2);{var z=h=>{var b=te(),p=f(b);x(p,()=>Pe,(_,I)=>{I(_,{children:(N,L)=>{ee();var a=_e();E(()=>H(a,e.description)),r(N,a)},$$slots:{default:!0}})}),r(h,b)};J(G,h=>{e.description&&h(z)})}r(A,o)},$$slots:{default:!0}})});var Y=i(w,2);x(Y,()=>ue,(S,k)=>{k(S,{children:(A,q)=>{var o=Te(),d=U(o),G=U(d);{var z=a=>{var j=Me();E(()=>{Z(j,"src",e.url),Z(j,"alt",e.title)}),r(a,j)},h=a=>{ae(a,{class:"text-muted-foreground/50 h-8 w-8"})};J(G,a=>{e.url?a(z):a(h,-1)})}P(d);var b=i(d,2),p=i(U(b),2),_=U(p);Z(_,"accept",l),$e(_,a=>T(C,a),()=>n(C));var I=i(_,2);ne(I,{variant:"outline",size:"sm",get disabled(){return n(m)},onclick:()=>n(C)?.click(),class:"h-8",children:(a,j)=>{var K=ze(),B=f(K);Ge(B,{class:"mr-1.5 h-3.5 w-3.5"});var Q=i(B);E(()=>H(Q,` ${n(m)?"Working…":e.url?"Replace":"Upload"}`)),r(a,K)},$$slots:{default:!0}});var N=i(I,2);{var L=a=>{ne(a,{variant:"ghost",size:"sm",get disabled(){return n(m)},onclick:V,class:"text-destructive hover:text-destructive h-8",children:(j,K)=>{var B=Be(),Q=f(B);Ce(Q,{class:"mr-1.5 h-3.5 w-3.5"}),ee(),r(j,B)},$$slots:{default:!0}})};J(N,a=>{e.url&&a(L)})}P(p),P(b),P(o),pe("change",_,M),r(A,o)},$$slots:{default:!0}})}),r($,g)},$$slots:{default:!0}})}),r(v,W),de()}he(["change"]);var Ve=c("<!> Installed version",1),We=c('<div class="flex flex-wrap items-baseline gap-x-3 gap-y-1"><code class="text-foreground font-mono text-xs">@selvajs/selva</code> <span class="text-muted-foreground text-xs"> </span></div>'),De=c("<!> <!>",1),Le=c('<div class="space-y-6"><!> <div class="grid gap-3 sm:grid-cols-2 lg:grid-cols-3"></div> <!> <!></div>');function ut(v,e){le(e,!0);const l=R(()=>be.data.branding.name),s=t=>e.data.platformPermissions.includes("instance_admin")||e.data.platformPermissions.includes(t),F=R(()=>[{href:"/admin/users",icon:ke,value:e.data.stats.users??"—",label:e.data.stats.users===null?"User store unavailable":`User${e.data.stats.users===1?"":"s"}`,show:s("manage_instance_users")},{href:"/admin/organizations",icon:ae,value:"Organizations",label:"All orgs on this instance",show:s("instance_admin")},{href:"/admin/compute",icon:Ae,value:"Compute",label:"Servers, status & config",show:s("manage_compute")},{href:"/projects",icon:Ie,value:"Content",label:"Definitions & projects",show:s("instance_admin")}].filter(t=>t.show));var C=Le();we("1jef3w8",t=>{ve(()=>{ge.title="Admin · General"})});var m=U(C);Se(m,{eyebrow:"Admin",title:"General",get description(){return`At-a-glance health of this ${n(l)??""} instance — users, compute, and content.`}});var M=i(m,2);xe(M,21,()=>n(F),t=>t.href,(t,u)=>{ye(t,O(()=>n(u)))}),P(M);var V=i(M,2);{var W=t=>{{let u=R(()=>e.data.org.assets.logo??null);Fe(t,{get orgId(){return e.data.org.id},kind:"logo",get url(){return n(u)},title:"Company logo",get description(){return`Upload a logo to reuse across ${n(l)??""}. Shown in the viewer header; more surfaces will pick it up.`}})}};J(V,t=>{e.data.org&&t(W)})}var X=i(V,2);x(X,()=>fe,(t,u)=>{u(t,{children:($,D)=>{var g=De(),w=f(g);x(w,()=>ce,(S,k)=>{k(S,{children:(A,q)=>{var o=te(),d=f(o);x(d,()=>me,(G,z)=>{z(G,{class:"flex items-center gap-2 text-sm font-medium",children:(h,b)=>{var p=Ve(),_=f(p);Ue(_,{class:"text-muted-foreground h-4 w-4"}),ee(),r(h,p)},$$slots:{default:!0}})}),r(A,o)},$$slots:{default:!0}})});var Y=i(w,2);x(Y,()=>ue,(S,k)=>{k(S,{children:(A,q)=>{var o=We(),d=i(U(o),2),G=U(d);P(d),P(o),E(()=>H(G,`v${e.data.version??""}`)),r(A,o)},$$slots:{default:!0}})}),r($,g)},$$slots:{default:!0}})}),P(C),r(v,C),de()}export{ut as component};
1
+ import"../chunks/DsnmJJEf.js";import{p as le,f,d as i,t as E,c as U,r as P,g as n,h as T,n as ee,a as de,s as oe,u as R,e as ve,$ as ge}from"../chunks/BtOVeLcI.js";import{d as he,s as H,a as pe}from"../chunks/BNpXeuQ_.js";import{c as te,a as r,t as _e,f as c}from"../chunks/BoLtD6vo.js";import{i as J}from"../chunks/DAQN5y4A.js";import{a as Z,e as xe}from"../chunks/22C0ZkpD.js";import{s as O,r as re,c as x,b as $e}from"../chunks/ChEZL1UP.js";import{h as we}from"../chunks/CTTkX-27.js";import{p as be}from"../chunks/j93hmZ-0.js";import{S as ye}from"../chunks/DLMu-EPf.js";import{i as ie}from"../chunks/c2tvcOKZ.js";import{C as ce,a as me}from"../chunks/CY6l1SkO.js";import{B as ae}from"../chunks/3KyAYBE4.js";import{C as ue,a as fe}from"../chunks/BawNisij.js";import{B as ne}from"../chunks/mlApEF2J.js";import{I as se}from"../chunks/BuC_QZkR.js";import{C as Pe}from"../chunks/C0Xb3vka.js";import{T as Ce}from"../chunks/BuBobyR7.js";import{t as y}from"../chunks/DTLLn7uD.js";import{S as Se}from"../chunks/Bixcgta2.js";import{U as ke}from"../chunks/BYQ2KYuV.js";import{S as Ae}from"../chunks/BRHPfB44.js";function Ge(v,e){let l=re(e,["$$slots","$$events","$$legacy"]);const s=[["path",{d:"M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21"}],["path",{d:"m14 19.5 3-3 3 3"}],["path",{d:"M17 22v-5.5"}],["circle",{cx:"9",cy:"9",r:"2"}]];se(v,O({name:"image-up"},()=>l,{get iconNode(){return s}}))}function Ie(v,e){let l=re(e,["$$slots","$$events","$$legacy"]);const s=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1"}]];se(v,O({name:"layout-dashboard"},()=>l,{get iconNode(){return s}}))}function Ue(v,e){let l=re(e,["$$slots","$$events","$$legacy"]);const s=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"}],["path",{d:"M12 22V12"}],["polyline",{points:"3.29 7 12 12 20.71 7"}],["path",{d:"m7.5 4.27 9 5.15"}]];se(v,O({name:"package"},()=>l,{get iconNode(){return s}}))}var Ne=c("<!> ",1),je=c("<!> <!>",1),Me=c('<img class="h-full w-full object-contain"/>'),ze=c("<!> ",1),Be=c("<!> Remove",1),Te=c('<div class="flex items-center gap-4"><div class="bg-muted/40 flex h-20 w-20 shrink-0 items-center justify-center overflow-hidden rounded-lg border"><!></div> <div class="flex flex-col gap-2"><p class="text-muted-foreground text-xs">PNG, JPG, WebP, GIF, or SVG. Stored at up to 1200px as WebP.</p> <div class="flex gap-2"><input type="file" class="hidden"/> <!> <!></div></div></div>'),Ee=c("<!> <!>",1);function Fe(v,e){le(e,!0);const l="image/png,image/jpeg,image/webp,image/gif,image/svg+xml",s=10*1024*1024,F=R(()=>`/admin/api/orgs/${e.orgId}/assets/${e.kind}`);let C=oe(null),m=oe(!1);async function M(t){const u=t.target,$=u.files?.[0];if(u.value="",!!$){if(!l.split(",").includes($.type)){y.error("Unsupported image type. Use PNG, JPG, WebP, GIF, or SVG.");return}if($.size>s){y.error(`Image too large. Max ${s/(1024*1024)} MB.`);return}T(m,!0);try{const D=new FormData;D.append("image",$);const g=await fetch(n(F),{method:"POST",body:D});if(g.ok)y.success(`${e.title} updated`),await ie();else{const w=await g.json().catch(()=>({}));y.error(w.message||w.error||`Upload failed (${g.status})`)}}catch{y.error("Failed to upload")}finally{T(m,!1)}}}async function V(){T(m,!0);try{const t=await fetch(n(F),{method:"DELETE"});t.ok?(y.success(`${e.title} removed`),await ie()):y.error(`Remove failed (${t.status})`)}catch{y.error("Failed to remove")}finally{T(m,!1)}}var W=te(),X=f(W);x(X,()=>fe,(t,u)=>{u(t,{children:($,D)=>{var g=Ee(),w=f(g);x(w,()=>ce,(S,k)=>{k(S,{children:(A,q)=>{var o=je(),d=f(o);x(d,()=>me,(h,b)=>{b(h,{class:"flex items-center gap-2 text-sm font-medium",children:(p,_)=>{var I=Ne(),N=f(I);ae(N,{class:"text-muted-foreground h-4 w-4"});var L=i(N);E(()=>H(L,` ${e.title??""}`)),r(p,I)},$$slots:{default:!0}})});var G=i(d,2);{var z=h=>{var b=te(),p=f(b);x(p,()=>Pe,(_,I)=>{I(_,{children:(N,L)=>{ee();var a=_e();E(()=>H(a,e.description)),r(N,a)},$$slots:{default:!0}})}),r(h,b)};J(G,h=>{e.description&&h(z)})}r(A,o)},$$slots:{default:!0}})});var Y=i(w,2);x(Y,()=>ue,(S,k)=>{k(S,{children:(A,q)=>{var o=Te(),d=U(o),G=U(d);{var z=a=>{var j=Me();E(()=>{Z(j,"src",e.url),Z(j,"alt",e.title)}),r(a,j)},h=a=>{ae(a,{class:"text-muted-foreground/50 h-8 w-8"})};J(G,a=>{e.url?a(z):a(h,-1)})}P(d);var b=i(d,2),p=i(U(b),2),_=U(p);Z(_,"accept",l),$e(_,a=>T(C,a),()=>n(C));var I=i(_,2);ne(I,{variant:"outline",size:"sm",get disabled(){return n(m)},onclick:()=>n(C)?.click(),class:"h-8",children:(a,j)=>{var K=ze(),B=f(K);Ge(B,{class:"mr-1.5 h-3.5 w-3.5"});var Q=i(B);E(()=>H(Q,` ${n(m)?"Working…":e.url?"Replace":"Upload"}`)),r(a,K)},$$slots:{default:!0}});var N=i(I,2);{var L=a=>{ne(a,{variant:"ghost",size:"sm",get disabled(){return n(m)},onclick:V,class:"text-destructive hover:text-destructive h-8",children:(j,K)=>{var B=Be(),Q=f(B);Ce(Q,{class:"mr-1.5 h-3.5 w-3.5"}),ee(),r(j,B)},$$slots:{default:!0}})};J(N,a=>{e.url&&a(L)})}P(p),P(b),P(o),pe("change",_,M),r(A,o)},$$slots:{default:!0}})}),r($,g)},$$slots:{default:!0}})}),r(v,W),de()}he(["change"]);var Ve=c("<!> Installed version",1),We=c('<div class="flex flex-wrap items-baseline gap-x-3 gap-y-1"><code class="text-foreground font-mono text-xs">@selvajs/selva</code> <span class="text-muted-foreground text-xs"> </span></div>'),De=c("<!> <!>",1),Le=c('<div class="space-y-6"><!> <div class="grid gap-3 sm:grid-cols-2 lg:grid-cols-3"></div> <!> <!></div>');function ut(v,e){le(e,!0);const l=R(()=>be.data.branding.name),s=t=>e.data.platformPermissions.includes("instance_admin")||e.data.platformPermissions.includes(t),F=R(()=>[{href:"/admin/users",icon:ke,value:e.data.stats.users??"—",label:e.data.stats.users===null?"User store unavailable":`User${e.data.stats.users===1?"":"s"}`,show:s("manage_instance_users")},{href:"/admin/organizations",icon:ae,value:"Organizations",label:"All orgs on this instance",show:s("instance_admin")},{href:"/admin/compute",icon:Ae,value:"Compute",label:"Servers, status & config",show:s("manage_compute")},{href:"/projects",icon:Ie,value:"Content",label:"Definitions & projects",show:s("instance_admin")}].filter(t=>t.show));var C=Le();we("1jef3w8",t=>{ve(()=>{ge.title="Admin · General"})});var m=U(C);Se(m,{eyebrow:"Admin",title:"General",get description(){return`At-a-glance health of this ${n(l)??""} instance — users, compute, and content.`}});var M=i(m,2);xe(M,21,()=>n(F),t=>t.href,(t,u)=>{ye(t,O(()=>n(u)))}),P(M);var V=i(M,2);{var W=t=>{{let u=R(()=>e.data.org.assets.logo??null);Fe(t,{get orgId(){return e.data.org.id},kind:"logo",get url(){return n(u)},title:"Company logo",get description(){return`Upload a logo to reuse across ${n(l)??""}. Shown in the viewer header; more surfaces will pick it up.`}})}};J(V,t=>{e.data.org&&t(W)})}var X=i(V,2);x(X,()=>fe,(t,u)=>{u(t,{children:($,D)=>{var g=De(),w=f(g);x(w,()=>ce,(S,k)=>{k(S,{children:(A,q)=>{var o=te(),d=f(o);x(d,()=>me,(G,z)=>{z(G,{class:"flex items-center gap-2 text-sm font-medium",children:(h,b)=>{var p=Ve(),_=f(p);Ue(_,{class:"text-muted-foreground h-4 w-4"}),ee(),r(h,p)},$$slots:{default:!0}})}),r(A,o)},$$slots:{default:!0}})});var Y=i(w,2);x(Y,()=>ue,(S,k)=>{k(S,{children:(A,q)=>{var o=We(),d=i(U(o),2),G=U(d);P(d),P(o),E(()=>H(G,`v${e.data.version??""}`)),r(A,o)},$$slots:{default:!0}})}),r($,g)},$$slots:{default:!0}})}),P(C),r(v,C),de()}export{ut as component};
@@ -1 +1 @@
1
- {"version":"1783344718910"}
1
+ {"version":"1783348187378"}
Binary file
Binary file
package/build/handler.js CHANGED
@@ -2,10 +2,10 @@ import './shims.js';
2
2
  import 'node:fs';
3
3
  import 'node:path';
4
4
  import 'node:process';
5
- export { h as handler } from './server/chunks/handler-CIfYOlGM.js';
5
+ export { h as handler } from './server/chunks/handler-BgC_Dqcj.js';
6
6
  import '@sveltejs/kit/node';
7
- import './server/chunks/index.js-DFJ2nKrZ.js';
8
- import './server/chunks/manifest.js-6ZmE-R1H.js';
7
+ import './server/chunks/index.js-DUtBWxr2.js';
8
+ import './server/chunks/manifest.js-BQ-f1DGc.js';
9
9
  import './env.js';
10
10
  import '@sveltejs/kit/node/polyfills';
11
11
  import 'node:http';
@@ -24,7 +24,7 @@ import './server/chunks/chunks/exports.js-BZBK1HC9.js';
24
24
  import './server/chunks/chunks/index.js-CC8M6P-h.js';
25
25
  import './server/chunks/chunks/renderer.js-CtAppMtw.js';
26
26
  import './server/chunks/chunks/shared-server.js-DaWdgxVh.js';
27
- import './server/chunks/chunks/internal.js-ygQzH1ZO.js';
27
+ import './server/chunks/chunks/internal.js-Dcw2kdmH.js';
28
28
  import './server/chunks/chunks/root.js-BKNoOlLU.js';
29
29
  import './server/chunks/chunks/events.js-CzuTO9ni.js';
30
30
  //# sourceMappingURL=handler.js.map
package/build/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import http from 'node:http';
2
2
  import fs__default from 'node:fs';
3
3
  import process from 'node:process';
4
- import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-CIfYOlGM.js';
4
+ import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-BgC_Dqcj.js';
5
5
  import { env, timeout_env } from './env.js';
6
6
  import { rm } from 'node:fs/promises';
7
7
  import './shims.js';
@@ -10,7 +10,7 @@ import 'node:path';
10
10
  import 'node:timers';
11
11
  import 'node:querystring';
12
12
  import '@sveltejs/kit/node';
13
- import './server/chunks/index.js-DFJ2nKrZ.js';
13
+ import './server/chunks/index.js-DUtBWxr2.js';
14
14
  import './server/chunks/chunks/utils.js-B8oGSXiQ.js';
15
15
  import './server/chunks/chunks/utils2.js-DGYJFmnf.js';
16
16
  import './server/chunks/chunks/render-context.js-CK-yhMaE.js';
@@ -23,10 +23,10 @@ import './server/chunks/chunks/exports.js-BZBK1HC9.js';
23
23
  import './server/chunks/chunks/index.js-CC8M6P-h.js';
24
24
  import './server/chunks/chunks/renderer.js-CtAppMtw.js';
25
25
  import './server/chunks/chunks/shared-server.js-DaWdgxVh.js';
26
- import './server/chunks/chunks/internal.js-ygQzH1ZO.js';
26
+ import './server/chunks/chunks/internal.js-Dcw2kdmH.js';
27
27
  import './server/chunks/chunks/root.js-BKNoOlLU.js';
28
28
  import './server/chunks/chunks/events.js-CzuTO9ni.js';
29
- import './server/chunks/manifest.js-6ZmE-R1H.js';
29
+ import './server/chunks/manifest.js-BQ-f1DGc.js';
30
30
  import 'node:url';
31
31
 
32
32
  const path = env('SOCKET_PATH', false);
@@ -94,7 +94,7 @@ const options = {
94
94
  <div class="error">
95
95
  <span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
96
96
  },
97
- version_hash: "1yknk9p"
97
+ version_hash: "1gf862d"
98
98
  };
99
99
  async function get_hooks() {
100
100
  let handle;
@@ -117,4 +117,4 @@ async function get_hooks() {
117
117
  }
118
118
 
119
119
  export { get_hooks as g, options as o, read_implementation as r, set_read_implementation as s };
120
- //# sourceMappingURL=internal.js-ygQzH1ZO.js.map
120
+ //# sourceMappingURL=internal.js-Dcw2kdmH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js-ygQzH1ZO.js","sources":["../../../../.svelte-kit/output/server/chunks/internal.js"],"sourcesContent":["import { r as root } from \"./root.js\";\nimport \"./environment.js\";\nimport \"./shared-server.js\";\nlet read_implementation = null;\nfunction set_read_implementation(fn) {\n read_implementation = fn;\n}\nfunction set_manifest(_) {\n}\nconst options = {\n app_template_contains_nonce: false,\n async: false,\n csp: { \"mode\": \"auto\", \"directives\": { \"upgrade-insecure-requests\": false, \"block-all-mixed-content\": false }, \"reportOnly\": { \"upgrade-insecure-requests\": false, \"block-all-mixed-content\": false } },\n csrf_check_origin: true,\n csrf_trusted_origins: [],\n embedded: false,\n env_public_prefix: \"PUBLIC_\",\n env_private_prefix: \"\",\n hash_routing: false,\n hooks: null,\n // added lazily, via `get_hooks`\n preload_strategy: \"modulepreload\",\n root,\n service_worker: false,\n service_worker_options: void 0,\n server_error_boundaries: false,\n templates: {\n app: ({ head, body, assets, nonce, env }) => '<!doctype html>\\n<html lang=\"en\">\\n\t<head>\\n\t\t<meta charset=\"utf-8\" />\\n\t\t<meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\\n\t\t<link rel=\"icon\" type=\"image/png\" href=\"/favicon/favicon-96x96.png\" sizes=\"96x96\" />\\n\t\t<link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon/favicon.svg\" />\\n\t\t<link rel=\"shortcut icon\" href=\"/favicon/favicon.ico\" />\\n\t\t<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/favicon/apple-touch-icon.png\" />\\n\t\t<meta name=\"apple-mobile-web-app-title\" content=\"Selva\" />\\n\t\t<link rel=\"manifest\" href=\"/favicon/site.webmanifest\" />\\n\t\t' + head + '\\n\t</head>\\n\t<body data-sveltekit-preload-data=\"hover\">\\n\t\t<div style=\"display: contents\">' + body + \"</div>\\n\t</body>\\n</html>\\n\",\n error: ({ status, message }) => '<!doctype html>\\n<html lang=\"en\">\\n\t<head>\\n\t\t<meta charset=\"utf-8\" />\\n\t\t<title>' + message + `</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">` + status + '</span>\\n\t\t\t<div class=\"message\">\\n\t\t\t\t<h1>' + message + \"</h1>\\n\t\t\t</div>\\n\t\t</div>\\n\t</body>\\n</html>\\n\"\n },\n version_hash: \"1yknk9p\"\n};\nasync function get_hooks() {\n let handle;\n let handleFetch;\n let handleError;\n let handleValidationError;\n let init;\n ({ handle, handleFetch, handleError, handleValidationError, init } = await import(\"../entries/hooks.server.js\"));\n let reroute;\n let transport;\n return {\n handle,\n handleFetch,\n handleError,\n handleValidationError,\n init,\n reroute,\n transport\n };\n}\nexport {\n set_manifest as a,\n get_hooks as g,\n options as o,\n read_implementation as r,\n set_read_implementation as s\n};\n"],"names":[],"mappings":";;AAGG,IAAC,mBAAmB,GAAG;AAC1B,SAAS,uBAAuB,CAAC,EAAE,EAAE;AACrC,EAAE,mBAAmB,GAAG,EAAE;AAC1B;AAGK,MAAC,OAAO,GAAG;AAChB,EAAE,2BAA2B,EAAE,KAAK;AACpC,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,2BAA2B,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,2BAA2B,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,EAAE;AACzM,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,oBAAoB,EAAE,EAAE;AAC1B,EAAE,QAAQ,EAAE,KAAK;AACjB,EAAE,iBAAiB,EAAE,SAAS;AAC9B,EAAE,kBAAkB,EAAE,EAAE;AACxB,EAAE,YAAY,EAAE,KAAK;AACrB,EAAE,KAAK,EAAE,IAAI;AACb;AACA,EAAE,gBAAgB,EAAE,eAAe;AACnC,EAAE,IAAI;AACN,EAAE,cAAc,EAAE,KAAK;AACvB,EAAE,sBAAsB,EAAE,MAAM;AAChC,EAAE,uBAAuB,EAAE,KAAK;AAChC,EAAE,SAAS,EAAE;AACb,IAAI,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,okBAAokB,GAAG,IAAI,GAAG,4FAA4F,GAAG,IAAI,GAAG,6BAA6B;AAClwB,IAAI,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,mFAAmF,GAAG,OAAO,GAAG,CAAC;;AAErI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,CAAC,GAAG,MAAM,GAAG,6CAA6C,GAAG,OAAO,GAAG;AAC/F,GAAG;AACH,EAAE,YAAY,EAAE;AAChB;AACA,eAAe,SAAS,GAAG;AAC3B,EAAE,IAAI,MAAM;AACZ,EAAE,IAAI,WAAW;AACjB,EAAE,IAAI,WAAW;AACjB,EAAE,IAAI,qBAAqB;AAC3B,EAAE,IAAI,IAAI;AACV,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,wCAA4B,CAAC;AACjH,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,SAAS;AACf,EAAE,OAAO;AACT,IAAI,MAAM;AACV,IAAI,WAAW;AACf,IAAI,WAAW;AACf,IAAI,qBAAqB;AACzB,IAAI,IAAI;AACR,IAAI,OAAO;AACX,IAAI;AACJ,GAAG;AACH;;;;"}
1
+ {"version":3,"file":"internal.js-Dcw2kdmH.js","sources":["../../../../.svelte-kit/output/server/chunks/internal.js"],"sourcesContent":["import { r as root } from \"./root.js\";\nimport \"./environment.js\";\nimport \"./shared-server.js\";\nlet read_implementation = null;\nfunction set_read_implementation(fn) {\n read_implementation = fn;\n}\nfunction set_manifest(_) {\n}\nconst options = {\n app_template_contains_nonce: false,\n async: false,\n csp: { \"mode\": \"auto\", \"directives\": { \"upgrade-insecure-requests\": false, \"block-all-mixed-content\": false }, \"reportOnly\": { \"upgrade-insecure-requests\": false, \"block-all-mixed-content\": false } },\n csrf_check_origin: true,\n csrf_trusted_origins: [],\n embedded: false,\n env_public_prefix: \"PUBLIC_\",\n env_private_prefix: \"\",\n hash_routing: false,\n hooks: null,\n // added lazily, via `get_hooks`\n preload_strategy: \"modulepreload\",\n root,\n service_worker: false,\n service_worker_options: void 0,\n server_error_boundaries: false,\n templates: {\n app: ({ head, body, assets, nonce, env }) => '<!doctype html>\\n<html lang=\"en\">\\n\t<head>\\n\t\t<meta charset=\"utf-8\" />\\n\t\t<meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\\n\t\t<link rel=\"icon\" type=\"image/png\" href=\"/favicon/favicon-96x96.png\" sizes=\"96x96\" />\\n\t\t<link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon/favicon.svg\" />\\n\t\t<link rel=\"shortcut icon\" href=\"/favicon/favicon.ico\" />\\n\t\t<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/favicon/apple-touch-icon.png\" />\\n\t\t<meta name=\"apple-mobile-web-app-title\" content=\"Selva\" />\\n\t\t<link rel=\"manifest\" href=\"/favicon/site.webmanifest\" />\\n\t\t' + head + '\\n\t</head>\\n\t<body data-sveltekit-preload-data=\"hover\">\\n\t\t<div style=\"display: contents\">' + body + \"</div>\\n\t</body>\\n</html>\\n\",\n error: ({ status, message }) => '<!doctype html>\\n<html lang=\"en\">\\n\t<head>\\n\t\t<meta charset=\"utf-8\" />\\n\t\t<title>' + message + `</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">` + status + '</span>\\n\t\t\t<div class=\"message\">\\n\t\t\t\t<h1>' + message + \"</h1>\\n\t\t\t</div>\\n\t\t</div>\\n\t</body>\\n</html>\\n\"\n },\n version_hash: \"1gf862d\"\n};\nasync function get_hooks() {\n let handle;\n let handleFetch;\n let handleError;\n let handleValidationError;\n let init;\n ({ handle, handleFetch, handleError, handleValidationError, init } = await import(\"../entries/hooks.server.js\"));\n let reroute;\n let transport;\n return {\n handle,\n handleFetch,\n handleError,\n handleValidationError,\n init,\n reroute,\n transport\n };\n}\nexport {\n set_manifest as a,\n get_hooks as g,\n options as o,\n read_implementation as r,\n set_read_implementation as s\n};\n"],"names":[],"mappings":";;AAGG,IAAC,mBAAmB,GAAG;AAC1B,SAAS,uBAAuB,CAAC,EAAE,EAAE;AACrC,EAAE,mBAAmB,GAAG,EAAE;AAC1B;AAGK,MAAC,OAAO,GAAG;AAChB,EAAE,2BAA2B,EAAE,KAAK;AACpC,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,2BAA2B,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,2BAA2B,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,EAAE;AACzM,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,oBAAoB,EAAE,EAAE;AAC1B,EAAE,QAAQ,EAAE,KAAK;AACjB,EAAE,iBAAiB,EAAE,SAAS;AAC9B,EAAE,kBAAkB,EAAE,EAAE;AACxB,EAAE,YAAY,EAAE,KAAK;AACrB,EAAE,KAAK,EAAE,IAAI;AACb;AACA,EAAE,gBAAgB,EAAE,eAAe;AACnC,EAAE,IAAI;AACN,EAAE,cAAc,EAAE,KAAK;AACvB,EAAE,sBAAsB,EAAE,MAAM;AAChC,EAAE,uBAAuB,EAAE,KAAK;AAChC,EAAE,SAAS,EAAE;AACb,IAAI,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,okBAAokB,GAAG,IAAI,GAAG,4FAA4F,GAAG,IAAI,GAAG,6BAA6B;AAClwB,IAAI,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,mFAAmF,GAAG,OAAO,GAAG,CAAC;;AAErI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,CAAC,GAAG,MAAM,GAAG,6CAA6C,GAAG,OAAO,GAAG;AAC/F,GAAG;AACH,EAAE,YAAY,EAAE;AAChB;AACA,eAAe,SAAS,GAAG;AAC3B,EAAE,IAAI,MAAM;AACZ,EAAE,IAAI,WAAW;AACjB,EAAE,IAAI,WAAW;AACjB,EAAE,IAAI,qBAAqB;AAC3B,EAAE,IAAI,IAAI;AACV,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,wCAA4B,CAAC;AACjH,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,SAAS;AACf,EAAE,OAAO;AACT,IAAI,MAAM;AACV,IAAI,WAAW;AACf,IAAI,WAAW;AACf,IAAI,qBAAqB;AACzB,IAAI,IAAI;AACR,IAAI,OAAO;AACX,IAAI;AACJ,GAAG;AACH;;;;"}
@@ -1,5 +1,5 @@
1
1
  const name = "@selvajs/selva";
2
- const version = "4.6.1";
2
+ const version = "4.6.3";
3
3
  const description = "Selva — self-contained Grasshopper-driven web app. Install, configure via .env, deploy.";
4
4
  const license = "MIT";
5
5
  const publishConfig = { "access": "public" };
@@ -26,4 +26,4 @@ const pkg = {
26
26
  };
27
27
 
28
28
  export { pkg as p };
29
- //# sourceMappingURL=package.js-BKafpnBH.js.map
29
+ //# sourceMappingURL=package.js-BH4hEgM_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package.js-BKafpnBH.js","sources":["../../../../.svelte-kit/output/server/chunks/package.js"],"sourcesContent":["const name = \"@selvajs/selva\";\nconst version = \"4.6.1\";\nconst description = \"Selva — self-contained Grasshopper-driven web app. Install, configure via .env, deploy.\";\nconst license = \"MIT\";\nconst publishConfig = { \"access\": \"public\" };\nconst type = \"module\";\nconst main = \"./build/index.js\";\nconst files = [\"build\", \"templates\"];\nconst engines = { \"node\": \">=20.6.0\" };\nconst scripts = { \"dev\": \"vite dev\", \"build\": \"rimraf build && vite build && node ./scripts/generate-templates.js\", \"preview\": \"vite preview\", \"start\": \"node build/index.js\", \"clean\": \"rimraf build templates\", \"prepare\": \"svelte-kit sync || echo ''\", \"check\": \"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json\", \"type-check\": \"tsc --noEmit\", \"test\": \"vitest run\", \"test:watch\": \"vitest\", \"test:e2e\": \"playwright test\" };\nconst dependencies = { \"@lucide/svelte\": \"catalog:\", \"@selvajs/compute\": \"catalog:\", \"@supabase/supabase-js\": \"^2.104.1\", \"@sveltejs/kit\": \"catalog:\", \"bits-ui\": \"^2.18.0\", \"clsx\": \"catalog:\", \"mode-watcher\": \"catalog:\", \"rhino3dm\": \"8.17.0\", \"sharp\": \"^0.34.5\", \"tailwind-merge\": \"catalog:\", \"tailwind-variants\": \"^3.2.2\", \"three\": \"catalog:\", \"zod\": \"^4.3.6\" };\nconst devDependencies = { \"@selvajs/config\": \"workspace:*\", \"@selvajs/header-auth-provider\": \"workspace:*\", \"@selvajs/local-provider\": \"workspace:*\", \"@selvajs/platform\": \"workspace:*\", \"@selvajs/schemas\": \"workspace:*\", \"@selvajs/supabase-provider\": \"workspace:*\", \"@selvajs/ui\": \"workspace:*\", \"@playwright/test\": \"catalog:\", \"@sveltejs/adapter-node\": \"^5.5.4\", \"@types/three\": \"catalog:\", \"rimraf\": \"catalog:\", \"tw-animate-css\": \"catalog:\", \"vitest\": \"catalog:\" };\nconst pkg = {\n name,\n version,\n description,\n license,\n publishConfig,\n type,\n main,\n files,\n engines,\n scripts,\n dependencies,\n devDependencies\n};\nexport {\n pkg as p\n};\n"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,gBAAgB;AAC7B,MAAM,OAAO,GAAG,OAAO;AACvB,MAAM,WAAW,GAAG,yFAAyF;AAC7G,MAAM,OAAO,GAAG,KAAK;AACrB,MAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC5C,MAAM,IAAI,GAAG,QAAQ;AACrB,MAAM,IAAI,GAAG,kBAAkB;AAC/B,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC;AACpC,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE;AACtC,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,oEAAoE,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,4BAA4B,EAAE,OAAO,EAAE,4DAA4D,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE;AAC7a,MAAM,YAAY,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,uBAAuB,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC1W,MAAM,eAAe,GAAG,EAAE,iBAAiB,EAAE,aAAa,EAAE,+BAA+B,EAAE,aAAa,EAAE,yBAAyB,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,4BAA4B,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,wBAAwB,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC7c,MAAC,GAAG,GAAG;AACZ,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,WAAW;AACb,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,YAAY;AACd,EAAE;AACF;;;;"}
1
+ {"version":3,"file":"package.js-BH4hEgM_.js","sources":["../../../../.svelte-kit/output/server/chunks/package.js"],"sourcesContent":["const name = \"@selvajs/selva\";\nconst version = \"4.6.3\";\nconst description = \"Selva — self-contained Grasshopper-driven web app. Install, configure via .env, deploy.\";\nconst license = \"MIT\";\nconst publishConfig = { \"access\": \"public\" };\nconst type = \"module\";\nconst main = \"./build/index.js\";\nconst files = [\"build\", \"templates\"];\nconst engines = { \"node\": \">=20.6.0\" };\nconst scripts = { \"dev\": \"vite dev\", \"build\": \"rimraf build && vite build && node ./scripts/generate-templates.js\", \"preview\": \"vite preview\", \"start\": \"node build/index.js\", \"clean\": \"rimraf build templates\", \"prepare\": \"svelte-kit sync || echo ''\", \"check\": \"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json\", \"type-check\": \"tsc --noEmit\", \"test\": \"vitest run\", \"test:watch\": \"vitest\", \"test:e2e\": \"playwright test\" };\nconst dependencies = { \"@lucide/svelte\": \"catalog:\", \"@selvajs/compute\": \"catalog:\", \"@supabase/supabase-js\": \"^2.104.1\", \"@sveltejs/kit\": \"catalog:\", \"bits-ui\": \"^2.18.0\", \"clsx\": \"catalog:\", \"mode-watcher\": \"catalog:\", \"rhino3dm\": \"8.17.0\", \"sharp\": \"^0.34.5\", \"tailwind-merge\": \"catalog:\", \"tailwind-variants\": \"^3.2.2\", \"three\": \"catalog:\", \"zod\": \"^4.3.6\" };\nconst devDependencies = { \"@selvajs/config\": \"workspace:*\", \"@selvajs/header-auth-provider\": \"workspace:*\", \"@selvajs/local-provider\": \"workspace:*\", \"@selvajs/platform\": \"workspace:*\", \"@selvajs/schemas\": \"workspace:*\", \"@selvajs/supabase-provider\": \"workspace:*\", \"@selvajs/ui\": \"workspace:*\", \"@playwright/test\": \"catalog:\", \"@sveltejs/adapter-node\": \"^5.5.4\", \"@types/three\": \"catalog:\", \"rimraf\": \"catalog:\", \"tw-animate-css\": \"catalog:\", \"vitest\": \"catalog:\" };\nconst pkg = {\n name,\n version,\n description,\n license,\n publishConfig,\n type,\n main,\n files,\n engines,\n scripts,\n dependencies,\n devDependencies\n};\nexport {\n pkg as p\n};\n"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,gBAAgB;AAC7B,MAAM,OAAO,GAAG,OAAO;AACvB,MAAM,WAAW,GAAG,yFAAyF;AAC7G,MAAM,OAAO,GAAG,KAAK;AACrB,MAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC5C,MAAM,IAAI,GAAG,QAAQ;AACrB,MAAM,IAAI,GAAG,kBAAkB;AAC/B,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC;AACpC,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE;AACtC,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,oEAAoE,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,4BAA4B,EAAE,OAAO,EAAE,4DAA4D,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE;AAC7a,MAAM,YAAY,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,uBAAuB,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC1W,MAAM,eAAe,GAAG,EAAE,iBAAiB,EAAE,aAAa,EAAE,+BAA+B,EAAE,aAAa,EAAE,yBAAyB,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,4BAA4B,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,wBAAwB,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC7c,MAAC,GAAG,GAAG;AACZ,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,WAAW;AACb,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,YAAY;AACd,EAAE;AACF;;;;"}
@@ -330,6 +330,7 @@ async function loadRemoteDefinition(url) {
330
330
  const POST = async ({ request, locals, url }) => {
331
331
  const storage = getStorageProvider();
332
332
  requireMaxBodySize(request, COMPUTE_REQUEST_MAX_BYTES);
333
+ const loadStart = performance.now();
333
334
  try {
334
335
  const body = await request.json();
335
336
  const { inputs, values } = body;
@@ -446,9 +447,12 @@ const POST = async ({ request, locals, url }) => {
446
447
  );
447
448
  }
448
449
  }
450
+ const defLoadMs = performance.now() - loadStart;
451
+ const treeBuildStart = performance.now();
449
452
  const inputTree = TreeBuilder.fromInputParams(
450
453
  inputs.filter((input) => input.paramType).map((input) => transformInputParameter(input, values[input.id]))
451
454
  );
455
+ const treeBuildMs = performance.now() - treeBuildStart;
452
456
  if (sharedAccess) {
453
457
  const next = await providers.data.shareLinks.tryIncrementSolveCount(
454
458
  solveCtx,
@@ -471,13 +475,15 @@ const POST = async ({ request, locals, url }) => {
471
475
  }
472
476
  const { scheduler } = await getClient(serverConfig);
473
477
  let solvedDefinition;
478
+ let solveMs = 0;
474
479
  const solveStart = performance.now();
475
480
  try {
476
481
  solvedDefinition = await scheduler.solve(definitionSource, inputTree, {
477
482
  signal: request.signal
478
483
  });
484
+ solveMs = performance.now() - solveStart;
479
485
  recordMetric("ok", {
480
- durationMs: performance.now() - solveStart,
486
+ durationMs: solveMs,
481
487
  errorCount: solvedDefinition.errors?.length ?? 0,
482
488
  warningCount: solvedDefinition.warnings?.length ?? 0
483
489
  });
@@ -508,6 +514,7 @@ const POST = async ({ request, locals, url }) => {
508
514
  throw err;
509
515
  }
510
516
  let serialized;
517
+ const serializeStart = performance.now();
511
518
  try {
512
519
  serialized = JSON.stringify(solvedDefinition);
513
520
  } catch (err) {
@@ -529,11 +536,18 @@ const POST = async ({ request, locals, url }) => {
529
536
  "Solve result is too large to return. This usually means a file output exceeds the supported size."
530
537
  );
531
538
  }
539
+ const serializeMs = performance.now() - serializeStart;
540
+ const serverTotalMs = performance.now() - loadStart;
532
541
  if (COMPUTE_DEBUG) {
533
- console.log(`[Compute/size] solve result = ${formatBytes(serialized.length)}`);
542
+ console.log(
543
+ `[Compute/server] load=${defLoadMs.toFixed(0)}ms tree=${treeBuildMs.toFixed(0)}ms solve=${solveMs.toFixed(0)}ms serialize=${serializeMs.toFixed(0)}ms total=${serverTotalMs.toFixed(0)}ms | result=${formatBytes(serialized.length)}`
544
+ );
534
545
  }
535
546
  return new Response(serialized, {
536
- headers: { "Content-Type": "application/json" }
547
+ headers: {
548
+ "Content-Type": "application/json",
549
+ "Server-Timing": `load;dur=${defLoadMs.toFixed(1)}, tree;dur=${treeBuildMs.toFixed(1)}, solve;dur=${solveMs.toFixed(1)}, serialize;dur=${serializeMs.toFixed(1)}, total;dur=${serverTotalMs.toFixed(1)}`
550
+ }
537
551
  });
538
552
  } catch (err) {
539
553
  if (isHttpError(err)) throw err;
@@ -550,4 +564,4 @@ const POST = async ({ request, locals, url }) => {
550
564
  };
551
565
 
552
566
  export { POST };
553
- //# sourceMappingURL=_server.ts.js-D_9YzrC7.js.map
567
+ //# sourceMappingURL=_server.ts.js-7u0huA7V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts.js-7u0huA7V.js","sources":["../../../../../../../.svelte-kit/output/server/entries/endpoints/api/compute/_server.ts.js"],"sourcesContent":["import { a as apiError, A as ApiErrorCode, r as resolveServerForOrg, f as fetchSchemaFromCompute, C as ComputeServerUnconfiguredError } from \"../../../../chunks/api-errors.js\";\nimport { processInput, enableDebugLogging, TreeBuilder, GrasshopperClient } from \"@selvajs/compute\";\nimport { b as private_env } from \"../../../../chunks/shared-server.js\";\nimport { isHttpError } from \"@sveltejs/kit\";\nimport { lookup } from \"node:dns/promises\";\nimport { isIP } from \"node:net\";\nimport { e as RATE_LIMIT_WINDOW_MS, d as RATE_LIMIT_MAX_REQUESTS, f as MAX_SOLVE_DURATION_MS, C as COMPUTE_RESPONSE_MAX_BYTES, D as DEFINITION_CACHE_TTL_MS, R as REMOTE_DEFINITION_FETCH_TIMEOUT_MS, a as REMOTE_DEFINITION_MAX_BYTES, g as COMPUTE_CACHE_ERRORED_SOLVES, h as COMPUTE_SERVER_CACHESOLVE, i as COMPUTE_REUSE_DEFINITION_CACHE, b as COMPUTE_REQUEST_MAX_BYTES } from \"../../../../chunks/computeLimits.js\";\nimport { r as requireMaxBodySize } from \"../../../../chunks/admin-auth.server.js\";\nimport { r as getStorageProvider, s as getSolveMetricSink, p as providers } from \"../../../../chunks/providers.server.js\";\nimport { i as requireCanEditDefinition, j as requireCanSolve } from \"../../../../chunks/access.server.js\";\nimport { t as tryResolveShareToken } from \"../../../../chunks/resolve.server.js\";\nfunction isBlockedIp(ip) {\n let addr = ip.toLowerCase();\n const mappedDotted = /^::ffff:(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})$/.exec(addr);\n if (mappedDotted) {\n addr = mappedDotted[1];\n } else {\n const mappedHex = /^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(addr);\n if (mappedHex) {\n const hi = parseInt(mappedHex[1], 16);\n const lo = parseInt(mappedHex[2], 16);\n addr = [hi >> 8 & 255, hi & 255, lo >> 8 & 255, lo & 255].join(\".\");\n }\n }\n if (isIP(addr) === 4) {\n const octets = addr.split(\".\").map(Number);\n if (octets.length !== 4 || octets.some((o) => o > 255)) return true;\n const [a, b] = octets;\n if (a === 0) return true;\n if (a === 127) return true;\n if (a === 10) return true;\n if (a === 192 && b === 168) return true;\n if (a === 172 && b >= 16 && b <= 31) return true;\n if (a === 169 && b === 254) return true;\n return false;\n }\n if (addr === \"::1\" || addr === \"::\") return true;\n if (/^(fc|fd)[0-9a-f]{0,2}:/.test(addr)) return true;\n if (/^fe[89ab][0-9a-f]:/.test(addr)) return true;\n return false;\n}\nfunction canonicalizeNumericIpv4(host) {\n if (isIP(host) === 4) return host;\n const rawParts = host.split(\".\");\n if (rawParts.length === 0 || rawParts.length > 4) return null;\n const parseUInt = (s) => {\n if (s === \"\") return null;\n let n;\n if (/^0x[0-9a-f]+$/i.test(s)) n = parseInt(s, 16);\n else if (/^0[0-7]+$/.test(s)) n = parseInt(s, 8);\n else if (/^[0-9]+$/.test(s)) n = parseInt(s, 10);\n else return null;\n return Number.isFinite(n) ? n : null;\n };\n const nums = rawParts.map(parseUInt);\n if (nums.some((n) => n === null)) return null;\n const parts = nums;\n let value;\n switch (parts.length) {\n case 1:\n value = parts[0];\n break;\n case 2:\n if (parts[0] > 255 || parts[1] > 16777215) return null;\n value = parts[0] << 24 | parts[1];\n break;\n case 3:\n if (parts[0] > 255 || parts[1] > 255 || parts[2] > 65535) return null;\n value = parts[0] << 24 | parts[1] << 16 | parts[2];\n break;\n default:\n if (parts.some((p) => p > 255)) return null;\n value = parts[0] << 24 | parts[1] << 16 | parts[2] << 8 | parts[3];\n }\n value = value >>> 0;\n if (value > 4294967295) return null;\n return [value >>> 24 & 255, value >>> 16 & 255, value >>> 8 & 255, value & 255].join(\n \".\"\n );\n}\nfunction isSafeRemoteDefinitionUrl(raw) {\n let parsed;\n try {\n parsed = new URL(raw);\n } catch {\n return false;\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") return false;\n let host = parsed.hostname.toLowerCase();\n if (!host) return false;\n if (host === \"localhost\" || host.endsWith(\".localhost\")) return false;\n const isBracketed = host.startsWith(\"[\") && host.endsWith(\"]\");\n if (isBracketed) host = host.slice(1, -1);\n if (isIP(host) === 6) return !isBlockedIp(host);\n const canonical = canonicalizeNumericIpv4(host);\n if (canonical) return !isBlockedIp(canonical);\n return true;\n}\nasync function assertSafeRemoteDefinitionUrl(raw) {\n if (!isSafeRemoteDefinitionUrl(raw)) {\n throw new Error(\"Remote definition URL is not allowed\");\n }\n const host = new URL(raw).hostname.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n if (isIP(host) !== 0 || canonicalizeNumericIpv4(host)) return raw;\n let resolved;\n try {\n resolved = await lookup(host, { all: true });\n } catch {\n throw new Error(\"Remote definition URL is not allowed\");\n }\n if (resolved.length === 0 || resolved.some((r) => isBlockedIp(r.address))) {\n throw new Error(\"Remote definition URL is not allowed\");\n }\n return raw;\n}\nconst WINDOW_MS = RATE_LIMIT_WINDOW_MS;\nconst MAX_PER_WINDOW = RATE_LIMIT_MAX_REQUESTS;\nconst buckets = /* @__PURE__ */ new Map();\nfunction checkComputeRateLimit(key) {\n const now = Date.now();\n const entry = buckets.get(key);\n if (!entry || now > entry.resetAt) {\n buckets.set(key, { count: 1, resetAt: now + WINDOW_MS });\n return { allowed: true };\n }\n if (entry.count >= MAX_PER_WINDOW) {\n return { allowed: false, retryAfter: Math.ceil((entry.resetAt - now) / 1e3) };\n }\n entry.count += 1;\n return { allowed: true };\n}\nfunction transformInputParameter(input, value) {\n const raw = {\n id: input.id,\n name: input.nickname,\n nickname: input.nickname || null,\n description: input.description || \"\",\n paramType: input.paramType,\n treeAccess: input.inputStructure === \"tree\",\n minimum: input.minimum ?? null,\n maximum: input.maximum ?? null,\n atLeast: 1,\n atMost: 1,\n stepSize: input.stepSize,\n // The user's selection wins; otherwise the schema default.\n default: value ?? input.default\n };\n return processInput(raw);\n}\nconst COMPUTE_DEBUG = [\"true\", \"1\", \"yes\"].includes(\n (private_env.SELVA_FLAG_COMPUTE_DEBUG ?? \"\").toLowerCase()\n);\nconst COMPUTE_DEBUG_VERBOSE = [\"true\", \"1\", \"yes\"].includes(\n (private_env.SELVA_FLAG_COMPUTE_DEBUG_VERBOSE ?? \"\").toLowerCase()\n);\nif (COMPUTE_DEBUG_VERBOSE) enableDebugLogging();\nfunction formatBytes(bytes) {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;\n}\nconst definitionCache = /* @__PURE__ */ new Map();\nconst MAX_CACHED_CLIENTS = 16;\nconst clientCache = /* @__PURE__ */ new Map();\nfunction clientCacheKey(serverConfig) {\n return `${serverConfig.serverUrl}\\0${serverConfig.apiKey ?? \"\"}`;\n}\nasync function getClient(serverConfig) {\n const key = clientCacheKey(serverConfig);\n const existing = clientCache.get(key);\n if (existing) {\n clientCache.delete(key);\n clientCache.set(key, existing);\n return existing;\n }\n const client = await GrasshopperClient.create({\n serverUrl: serverConfig.serverUrl,\n apiKey: serverConfig.apiKey,\n // Lib-level debug is the verbose one (full payload logs); keep it on the\n // verbose flag so the concise cache logs can run without the noise.\n debug: COMPUTE_DEBUG_VERBOSE,\n // Ask Rhino.Compute to cache solve results and return them on identical\n // repeats (same definition + inputs), skipping the solve. Forwarded to both\n // the pointer and full-upload solve paths via applyOptionalComputeSettings.\n cachesolve: COMPUTE_SERVER_CACHESOLVE,\n // Opt-in: also cache solves that reported GH errors (errors-by-design\n // definitions still produce correct geometry). See COMPUTE_CACHE_ERRORED_SOLVES.\n cacheerroredsolves: COMPUTE_CACHE_ERRORED_SOLVES,\n // DEBUG (SELVA_FLAG_COMPUTE_DEBUG): the server's per-request timing breakdown,\n // which exposes the two SERVER-side caches at once:\n // • Definition cache (pointer reuse): `decode` = deserialize + LOAD\n // DEFINITION. A repeat solve loads the definition from the server's cache,\n // so `decode` drops to ~0; a full (re)upload shows a larger `decode`.\n // • Solve cache (cachesolve): when the server returns a CACHED RESULT it\n // skips the solve, so `solve` drops to ~0 while decode/encode still run.\n // We flag each below so the contrast is obvious in the logs.\n onServerTiming: COMPUTE_DEBUG ? (t) => {\n const decode = t.decode ?? 0;\n const solve = t.solve ?? 0;\n const encode = t.encode ?? 0;\n const defCache = decode <= 1 ? \"HIT (definition reused, no re-upload/parse)\" : \"miss (full parse)\";\n const solveCache = COMPUTE_SERVER_CACHESOLVE && solve <= 1 ? \"HIT (cached result, solve skipped)\" : COMPUTE_SERVER_CACHESOLVE ? \"miss (solved fresh)\" : \"off\";\n console.log(\n `[Compute/rhino-cache] decode=${decode}ms solve=${solve}ms encode=${encode}ms | definition-cache: ${defCache} | solve-cache (cachesolve): ${solveCache}`\n );\n } : void 0\n });\n const scheduler = client.createScheduler({\n mode: \"queue\",\n timeoutMs: MAX_SOLVE_DURATION_MS,\n cache: { maxEntries: 20, ttlMs: 5 * 6e4 },\n // Solve large definitions by server cache-key (pointer) instead of re-uploading\n // the full binary every solve. On a stale-pointer miss the client (@selvajs/compute\n // >= 2.4.0) transparently re-uploads; the miss is detected via the server's\n // `code: \"definition_not_cached\"` (VektorNode fork). Env-gated so a deployment on\n // an unknown compute server can disable it — see COMPUTE_REUSE_DEFINITION_CACHE.\n reuseServerDefinitionCache: COMPUTE_REUSE_DEFINITION_CACHE,\n // DEBUG (SELVA_FLAG_COMPUTE_DEBUG): observe the Selva in-process response\n // cache. `fromCache === true` means this solve was served from Selva's own\n // cache — Rhino.Compute was never called (you'll see NO [Compute/timing]\n // line for it). `false` means it went to the compute server.\n onSettle: COMPUTE_DEBUG ? (_ctx, result) => {\n if (result.status === \"success\") {\n console.log(\n `[Compute/selva-cache] ${result.fromCache ? \"HIT — served from Selva (no compute call)\" : \"miss — went to Rhino.Compute\"} (${Math.round(result.durationMs)}ms)`\n );\n if (!result.fromCache) {\n console.log(\n result.definitionReuploaded === true ? \"[Compute/def-cache] miss — definition RE-UPLOADED (pointer was cold/stale)\" : result.definitionReuploaded === false ? \"[Compute/def-cache] HIT — definition reused from server cache (no upload)\" : \"[Compute/def-cache] n/a — reuse disabled or non-reusable definition\"\n );\n }\n if (!result.fromCache) {\n const errs = result.response?.errors;\n const errCount = Array.isArray(errs) ? errs.length : 0;\n if (errCount > 0) {\n console.log(\n `[Compute/rhino-cache] ${errCount} GH error(s); not cacheable until fixed. First: ${JSON.stringify(errs[0])}`\n );\n }\n }\n }\n } : void 0\n });\n const entry = { client, scheduler };\n if (clientCache.size >= MAX_CACHED_CLIENTS) {\n const oldestKey = clientCache.keys().next().value;\n if (oldestKey !== void 0) {\n clientCache.get(oldestKey)?.scheduler.dispose();\n clientCache.delete(oldestKey);\n }\n }\n clientCache.set(key, entry);\n return entry;\n}\nasync function readBodyWithCap(response, maxBytes, controller) {\n if (!response.body) {\n const buffer = await response.arrayBuffer();\n if (buffer.byteLength > maxBytes) throw new Error(\"Remote definition exceeds size limit\");\n return new Uint8Array(buffer);\n }\n const reader = response.body.getReader();\n const chunks = [];\n let total = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n total += value.byteLength;\n if (total > maxBytes) {\n controller.abort();\n throw new Error(\"Remote definition exceeds size limit\");\n }\n chunks.push(value);\n }\n const out = new Uint8Array(total);\n let offset = 0;\n for (const chunk of chunks) {\n out.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return out;\n}\nasync function loadRemoteDefinition(url) {\n await assertSafeRemoteDefinitionUrl(url);\n const now = Date.now();\n const cached = definitionCache.get(url);\n if (cached && now - cached.fetchedAt < DEFINITION_CACHE_TTL_MS) {\n return cached.data;\n }\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), REMOTE_DEFINITION_FETCH_TIMEOUT_MS);\n let data;\n try {\n const response = await fetch(url, {\n signal: controller.signal,\n redirect: \"error\"\n });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n const declared = Number(response.headers.get(\"content-length\"));\n if (Number.isFinite(declared) && declared > REMOTE_DEFINITION_MAX_BYTES) {\n throw new Error(\"Remote definition exceeds size limit\");\n }\n data = await readBodyWithCap(response, REMOTE_DEFINITION_MAX_BYTES, controller);\n } finally {\n clearTimeout(timeout);\n }\n definitionCache.set(url, { data, fetchedAt: now });\n if (definitionCache.size > 50) {\n const entries = Array.from(definitionCache.entries());\n entries.sort((a, b) => a[1].fetchedAt - b[1].fetchedAt);\n for (let i = 0; i < 10; i++) {\n definitionCache.delete(entries[i][0]);\n }\n }\n return data;\n}\nconst POST = async ({ request, locals, url }) => {\n const storage = getStorageProvider();\n requireMaxBodySize(request, COMPUTE_REQUEST_MAX_BYTES);\n const loadStart = performance.now();\n try {\n const body = await request.json();\n const { inputs, values } = body;\n const definitionUrl = body.definitionUrl;\n const channel = body.channel ?? \"live\";\n const explicitVersionId = body.versionId ?? null;\n if (!inputs || !values || !definitionUrl) {\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n \"Missing required fields: inputs, values, or definitionUrl\"\n );\n }\n if (channel !== \"live\" && channel !== \"draft\") {\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n `Invalid channel: ${channel}. Must be 'live' or 'draft'.`\n );\n }\n let definitionSource;\n let localVersionForBackfill = null;\n let solveOrgId = null;\n let definitionPin = null;\n let metricDefinitionId = null;\n let metricVersionId = null;\n const isLocal = definitionUrl.startsWith(\"local:\");\n const guid = isLocal ? definitionUrl.substring(6) : null;\n const sharedAccess = isLocal && guid && !explicitVersionId ? await tryResolveShareToken(request, url, guid, channel, { requireSolve: true }) : null;\n if (!sharedAccess && (!locals.ctx || !locals.user)) {\n apiError(401, ApiErrorCode.UNAUTHORIZED, \"Unauthorized\");\n }\n const solveCtx = sharedAccess?.ctx ?? locals.ctx;\n const recordMetric = (failureKind, extra = {}) => {\n void getSolveMetricSink().record(solveCtx, {\n definitionUrl,\n definitionId: metricDefinitionId,\n versionId: metricVersionId,\n channel,\n orgId: solveOrgId,\n durationMs: extra.durationMs ?? 0,\n ok: failureKind === \"ok\",\n failureKind,\n errorCount: extra.errorCount ?? 0,\n warningCount: extra.warningCount ?? 0\n });\n };\n const rateLimitKey = sharedAccess ? `share:${sharedAccess.link.id}` : `user:${locals.user.id}`;\n const rateLimit = checkComputeRateLimit(rateLimitKey);\n if (!rateLimit.allowed) {\n recordMetric(\"rate_limited\");\n const retryAfter = rateLimit.retryAfter ?? 1;\n return new Response(\n JSON.stringify({\n message: `Too many compute requests. Retry in ${retryAfter}s.`,\n retryAfter\n }),\n {\n status: 429,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Retry-After\": String(retryAfter)\n }\n }\n );\n }\n if (isLocal && guid) {\n let record;\n try {\n record = await providers.data.definitions.get(solveCtx, guid);\n } catch (err) {\n console.error(`Failed to load local definition: ${guid}`, err);\n apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' not found`);\n }\n if (!record) apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' not found`);\n const project = await providers.data.projects.getProject(solveCtx, record.projectId);\n solveOrgId = project?.orgId ?? null;\n definitionPin = record.computeServerId ?? null;\n if (!sharedAccess) {\n if (channel === \"draft\" || explicitVersionId) {\n await requireCanEditDefinition(locals, record.projectId, guid);\n } else {\n await requireCanSolve(locals, record.projectId);\n }\n }\n const versionId = explicitVersionId ?? (channel === \"live\" ? record.liveVersionId : record.draftVersionId);\n if (!versionId) {\n apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' has no ${channel} version yet`);\n }\n const version = await providers.data.definitions.getVersion(solveCtx, versionId);\n if (!version || version.definitionId !== guid) {\n apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' version is missing`);\n }\n localVersionForBackfill = { id: version.id, hasSchema: version.schema !== void 0 };\n metricDefinitionId = guid;\n metricVersionId = version.id;\n try {\n const bytes = await storage.get(version.fileKey);\n if (!bytes) throw new Error(`Version blob missing: ${version.fileKey}`);\n definitionSource = bytes;\n } catch (err) {\n console.error(`Failed to load local definition blob: ${guid}`, err);\n apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' not found`);\n }\n } else {\n try {\n definitionSource = await loadRemoteDefinition(definitionUrl);\n } catch (err) {\n console.error(`Failed to fetch definition from ${definitionUrl}:`, err);\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n `Failed to load definition: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n }\n const defLoadMs = performance.now() - loadStart;\n const treeBuildStart = performance.now();\n const inputTree = TreeBuilder.fromInputParams(\n inputs.filter((input) => input.paramType).map((input) => transformInputParameter(input, values[input.id]))\n );\n const treeBuildMs = performance.now() - treeBuildStart;\n if (sharedAccess) {\n const next = await providers.data.shareLinks.tryIncrementSolveCount(\n solveCtx,\n sharedAccess.link.id\n );\n if (next === null) {\n recordMetric(\"share_cap\");\n apiError(429, ApiErrorCode.INTERNAL, \"Share link solve cap reached.\");\n }\n }\n const serverConfig = await resolveServerForOrg(solveCtx, solveOrgId, { definitionPin });\n if (localVersionForBackfill && !localVersionForBackfill.hasSchema) {\n const versionId = localVersionForBackfill.id;\n try {\n const schema = await fetchSchemaFromCompute(definitionSource, serverConfig);\n await providers.data.definitions.setVersionSchema(solveCtx, versionId, schema);\n } catch (err) {\n console.warn(`[API/Compute] Schema backfill failed for version ${versionId}:`, err);\n }\n }\n const { scheduler } = await getClient(serverConfig);\n let solvedDefinition;\n let solveMs = 0;\n const solveStart = performance.now();\n try {\n solvedDefinition = await scheduler.solve(definitionSource, inputTree, {\n signal: request.signal\n });\n solveMs = performance.now() - solveStart;\n recordMetric(\"ok\", {\n durationMs: solveMs,\n errorCount: solvedDefinition.errors?.length ?? 0,\n warningCount: solvedDefinition.warnings?.length ?? 0\n });\n if (metricDefinitionId) {\n providers.data.definitions.incrementSolveCount(solveCtx, metricDefinitionId).catch(\n (err) => console.warn(\n `[API/Compute] solveCount increment failed for ${metricDefinitionId}:`,\n err\n )\n );\n }\n } catch (err) {\n const isAbort = err instanceof Error && err.name === \"AbortError\";\n const timedOut = isAbort && !request.signal.aborted;\n recordMetric(timedOut ? \"timeout\" : isAbort ? \"client_abort\" : \"compute_error\", {\n durationMs: performance.now() - solveStart\n });\n if (isAbort) {\n if (request.signal.aborted) {\n apiError(499, ApiErrorCode.INTERNAL, \"Client closed request\");\n }\n apiError(\n 504,\n ApiErrorCode.INTERNAL,\n `Solve exceeded the ${Math.round(MAX_SOLVE_DURATION_MS / 1e3)}s deadline.`\n );\n }\n throw err;\n }\n let serialized;\n const serializeStart = performance.now();\n try {\n serialized = JSON.stringify(solvedDefinition);\n } catch (err) {\n if (err instanceof RangeError) {\n recordMetric(\"too_large\");\n apiError(\n 413,\n ApiErrorCode.INTERNAL,\n \"Solve result is too large to return. This usually means a file output exceeds the supported size.\"\n );\n }\n throw err;\n }\n if (serialized.length > COMPUTE_RESPONSE_MAX_BYTES) {\n recordMetric(\"too_large\");\n apiError(\n 413,\n ApiErrorCode.INTERNAL,\n \"Solve result is too large to return. This usually means a file output exceeds the supported size.\"\n );\n }\n const serializeMs = performance.now() - serializeStart;\n const serverTotalMs = performance.now() - loadStart;\n if (COMPUTE_DEBUG) {\n console.log(\n `[Compute/server] load=${defLoadMs.toFixed(0)}ms tree=${treeBuildMs.toFixed(0)}ms solve=${solveMs.toFixed(0)}ms serialize=${serializeMs.toFixed(0)}ms total=${serverTotalMs.toFixed(0)}ms | result=${formatBytes(serialized.length)}`\n );\n }\n return new Response(serialized, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"Server-Timing\": `load;dur=${defLoadMs.toFixed(1)}, tree;dur=${treeBuildMs.toFixed(1)}, solve;dur=${solveMs.toFixed(1)}, serialize;dur=${serializeMs.toFixed(1)}, total;dur=${serverTotalMs.toFixed(1)}`\n }\n });\n } catch (err) {\n if (isHttpError(err)) throw err;\n if (err instanceof ComputeServerUnconfiguredError) {\n apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message);\n }\n const message = err instanceof Error ? err.message : \"Unknown error\";\n console.error(\"[API/Compute] Error:\", message);\n if (err instanceof TypeError && message === \"fetch failed\") {\n apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, \"Compute server is unreachable\");\n }\n apiError(500, ApiErrorCode.INTERNAL, message);\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { g as getAuthProvider, d as getOrganizationProvider } from '../../../chunks/providers.server.js-Sbk117pY.js';
2
2
  import { h as hasPermission } from '../../../chunks/context.js-D8E0GFTw.js';
3
- import { p as pkg } from '../../../chunks/package.js-BKafpnBH.js';
3
+ import { p as pkg } from '../../../chunks/package.js-BH4hEgM_.js';
4
4
 
5
5
  async function loadAdminOrg(ctx) {
6
6
  if (!ctx) return null;
@@ -43,4 +43,4 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
43
43
  });
44
44
 
45
45
  export { _page_server_ts as _ };
46
- //# sourceMappingURL=_page.server.ts.js-xV1aLIlx.js.map
46
+ //# sourceMappingURL=_page.server.ts.js-vwLdirZz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_page.server.ts.js-xV1aLIlx.js","sources":["../../../../../../.svelte-kit/output/server/entries/pages/admin/_page.server.ts.js"],"sourcesContent":["import { g as getAuthProvider, c as getOrganizationProvider } from \"../../../chunks/providers.server.js\";\nimport { h as hasPermission } from \"../../../chunks/context.js\";\nimport { p as pkg } from \"../../../chunks/package.js\";\nasync function loadAdminOrg(ctx) {\n if (!ctx) return null;\n try {\n const page = await getOrganizationProvider().listOrgs(ctx, { limit: 1 });\n const org = page.items[0];\n return org ? { id: org.id, name: org.name, assets: org.assets ?? {} } : null;\n } catch (err) {\n console.error(\"Failed to load admin org for asset cards:\", err);\n return null;\n }\n}\nconst load = async ({ locals }) => {\n const ctx = locals.ctx;\n const canSeeUserStats = ctx ? hasPermission(ctx, \"manage_instance_users\") : false;\n const canManageOrg = ctx ? hasPermission(ctx, \"manage_org_members\") : false;\n const platformPermissions = ctx?.platformPermissions ?? [];\n const org = canManageOrg ? await loadAdminOrg(ctx) : null;\n if (!canSeeUserStats) {\n return { stats: { users: null }, platformPermissions, version: pkg.version, org };\n }\n try {\n const usersPage = await getAuthProvider().listUsers({ limit: 200 });\n return {\n stats: { users: usersPage?.items.length ?? null },\n platformPermissions,\n version: pkg.version,\n org\n };\n } catch (err) {\n if (err && typeof err === \"object\" && \"status\" in err) throw err;\n console.error(\"Failed to load admin dashboard:\", err);\n return { stats: { users: null }, platformPermissions, version: pkg.version, org };\n }\n};\nexport {\n load\n};\n"],"names":[],"mappings":";;;;AAGA,eAAe,YAAY,CAAC,GAAG,EAAE;AACjC,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI;AACvB,EAAE,IAAI;AACN,IAAI,MAAM,IAAI,GAAG,MAAM,uBAAuB,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC5E,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,IAAI,OAAO,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI;AAChF,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC;AACnE,IAAI,OAAO,IAAI;AACf,EAAE;AACF;AACA,MAAM,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACnC,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,MAAM,eAAe,GAAG,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,uBAAuB,CAAC,GAAG,KAAK;AACnF,EAAE,MAAM,YAAY,GAAG,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,KAAK;AAC7E,EAAE,MAAM,mBAAmB,GAAG,GAAG,EAAE,mBAAmB,IAAI,EAAE;AAC5D,EAAE,MAAM,GAAG,GAAG,YAAY,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;AAC3D,EAAE,IAAI,CAAC,eAAe,EAAE;AACxB,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;AACrF,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACvE,IAAI,OAAO;AACX,MAAM,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;AACvD,MAAM,mBAAmB;AACzB,MAAM,OAAO,EAAE,GAAG,CAAC,OAAO;AAC1B,MAAM;AACN,KAAK;AACL,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG,EAAE,MAAM,GAAG;AACpE,IAAI,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC;AACzD,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;AACrF,EAAE;AACF,CAAC;;;;;;;;;"}
1
+ {"version":3,"file":"_page.server.ts.js-vwLdirZz.js","sources":["../../../../../../.svelte-kit/output/server/entries/pages/admin/_page.server.ts.js"],"sourcesContent":["import { g as getAuthProvider, c as getOrganizationProvider } from \"../../../chunks/providers.server.js\";\nimport { h as hasPermission } from \"../../../chunks/context.js\";\nimport { p as pkg } from \"../../../chunks/package.js\";\nasync function loadAdminOrg(ctx) {\n if (!ctx) return null;\n try {\n const page = await getOrganizationProvider().listOrgs(ctx, { limit: 1 });\n const org = page.items[0];\n return org ? { id: org.id, name: org.name, assets: org.assets ?? {} } : null;\n } catch (err) {\n console.error(\"Failed to load admin org for asset cards:\", err);\n return null;\n }\n}\nconst load = async ({ locals }) => {\n const ctx = locals.ctx;\n const canSeeUserStats = ctx ? hasPermission(ctx, \"manage_instance_users\") : false;\n const canManageOrg = ctx ? hasPermission(ctx, \"manage_org_members\") : false;\n const platformPermissions = ctx?.platformPermissions ?? [];\n const org = canManageOrg ? await loadAdminOrg(ctx) : null;\n if (!canSeeUserStats) {\n return { stats: { users: null }, platformPermissions, version: pkg.version, org };\n }\n try {\n const usersPage = await getAuthProvider().listUsers({ limit: 200 });\n return {\n stats: { users: usersPage?.items.length ?? null },\n platformPermissions,\n version: pkg.version,\n org\n };\n } catch (err) {\n if (err && typeof err === \"object\" && \"status\" in err) throw err;\n console.error(\"Failed to load admin dashboard:\", err);\n return { stats: { users: null }, platformPermissions, version: pkg.version, org };\n }\n};\nexport {\n load\n};\n"],"names":[],"mappings":";;;;AAGA,eAAe,YAAY,CAAC,GAAG,EAAE;AACjC,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI;AACvB,EAAE,IAAI;AACN,IAAI,MAAM,IAAI,GAAG,MAAM,uBAAuB,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC5E,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,IAAI,OAAO,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI;AAChF,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC;AACnE,IAAI,OAAO,IAAI;AACf,EAAE;AACF;AACA,MAAM,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACnC,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,MAAM,eAAe,GAAG,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,uBAAuB,CAAC,GAAG,KAAK;AACnF,EAAE,MAAM,YAAY,GAAG,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,KAAK;AAC7E,EAAE,MAAM,mBAAmB,GAAG,GAAG,EAAE,mBAAmB,IAAI,EAAE;AAC5D,EAAE,MAAM,GAAG,GAAG,YAAY,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;AAC3D,EAAE,IAAI,CAAC,eAAe,EAAE;AACxB,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;AACrF,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACvE,IAAI,OAAO;AACX,MAAM,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;AACvD,MAAM,mBAAmB;AACzB,MAAM,OAAO,EAAE,GAAG,CAAC,OAAO;AAC1B,MAAM;AACN,KAAK;AACL,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG,EAAE,MAAM,GAAG;AACpE,IAAI,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC;AACzD,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;AACrF,EAAE;AACF,CAAC;;;;;;;;;"}
@@ -4,7 +4,7 @@ import { f as flag } from '../../../../chunks/providers.server.js-Sbk117pY.js';
4
4
  import { w as writeChannel, r as readChannel, c as checkForUpdate } from '../../../../chunks/updateCheck.server.js-DdReI2pF.js';
5
5
  import { d as requirePermission } from '../../../../chunks/access.server.js-x_KrjYJP.js';
6
6
  import { D as DEFINITION_CACHE_TTL_MS, R as REMOTE_DEFINITION_FETCH_TIMEOUT_MS, a as REMOTE_DEFINITION_MAX_BYTES, C as COMPUTE_RESPONSE_MAX_BYTES, b as COMPUTE_REQUEST_MAX_BYTES, M as MAX_IMAGE_FILE_SIZE, c as MAX_GH_FILE_SIZE, d as RATE_LIMIT_MAX_REQUESTS, e as RATE_LIMIT_WINDOW_MS, f as MAX_SOLVE_DURATION_MS } from '../../../../chunks/computeLimits.js-CVHW4MyF.js';
7
- import { p as pkg } from '../../../../chunks/package.js-BKafpnBH.js';
7
+ import { p as pkg } from '../../../../chunks/package.js-BH4hEgM_.js';
8
8
 
9
9
  const load = async ({ locals, fetch }) => {
10
10
  const ctx = locals.ctx;
@@ -69,4 +69,4 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
69
69
  });
70
70
 
71
71
  export { _page_server_ts as _ };
72
- //# sourceMappingURL=_page.server.ts.js-B1v99a9p.js.map
72
+ //# sourceMappingURL=_page.server.ts.js-lJcimOGV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_page.server.ts.js-B1v99a9p.js","sources":["../../../../../../../.svelte-kit/output/server/entries/pages/admin/system/_page.server.ts.js"],"sourcesContent":["import { fail } from \"@sveltejs/kit\";\nimport { h as hasPermission } from \"../../../../chunks/context.js\";\nimport { f as flag } from \"../../../../chunks/providers.server.js\";\nimport { w as writeChannel, r as readChannel, c as checkForUpdate } from \"../../../../chunks/updateCheck.server.js\";\nimport { d as requirePermission } from \"../../../../chunks/access.server.js\";\nimport { D as DEFINITION_CACHE_TTL_MS, R as REMOTE_DEFINITION_FETCH_TIMEOUT_MS, a as REMOTE_DEFINITION_MAX_BYTES, C as COMPUTE_RESPONSE_MAX_BYTES, b as COMPUTE_REQUEST_MAX_BYTES, M as MAX_IMAGE_FILE_SIZE, c as MAX_GH_FILE_SIZE, d as RATE_LIMIT_MAX_REQUESTS, e as RATE_LIMIT_WINDOW_MS, f as MAX_SOLVE_DURATION_MS } from \"../../../../chunks/computeLimits.js\";\nimport { p as pkg } from \"../../../../chunks/package.js\";\nconst load = async ({ locals, fetch }) => {\n const ctx = locals.ctx;\n const canManageUpdates = ctx ? hasPermission(ctx, \"manage_updates\") : false;\n const isInstanceAdmin = ctx ? hasPermission(ctx, \"instance_admin\") : false;\n const flags = {\n ALLOW_CROSS_ORG_PUBLIC: flag(\"ALLOW_CROSS_ORG_PUBLIC\"),\n ALLOW_ORG_COMPUTE_OVERRIDE: flag(\"ALLOW_ORG_COMPUTE_OVERRIDE\"),\n ALLOW_ORG_CREATION: flag(\"ALLOW_ORG_CREATION\"),\n ENABLE_PLATFORM_PROJECTS: flag(\"ENABLE_PLATFORM_PROJECTS\"),\n ENABLE_SHARING: flag(\"ENABLE_SHARING\")\n };\n const limits = {\n MAX_SOLVE_DURATION_MS,\n RATE_LIMIT_WINDOW_MS,\n RATE_LIMIT_MAX_REQUESTS,\n MAX_GH_FILE_SIZE,\n MAX_IMAGE_FILE_SIZE,\n COMPUTE_REQUEST_MAX_BYTES,\n COMPUTE_RESPONSE_MAX_BYTES,\n REMOTE_DEFINITION_MAX_BYTES,\n REMOTE_DEFINITION_FETCH_TIMEOUT_MS,\n DEFINITION_CACHE_TTL_MS\n };\n const channel = readChannel();\n const update = canManageUpdates ? await checkForUpdate(fetch, channel) : { channel, current: null, latest: null, updateAvailable: false };\n return {\n canManageUpdates,\n isInstanceAdmin,\n flags,\n limits,\n version: pkg.version,\n channel,\n update\n };\n};\nconst actions = {\n // Persist the release channel. Switch-only: this does NOT trigger an update —\n // the operator then uses the Update runner to install from the chosen channel.\n setChannel: async ({ request, locals }) => {\n requirePermission(locals, \"manage_updates\");\n const data = await request.formData();\n const channel = data.get(\"channel\");\n if (channel !== \"stable\" && channel !== \"beta\") {\n return fail(400, { error: \"Invalid channel.\" });\n }\n try {\n writeChannel(channel);\n } catch (e) {\n return fail(500, {\n error: `Could not persist the channel: ${e instanceof Error ? e.message : \"unknown error\"}`\n });\n }\n return { channel };\n }\n};\nexport {\n actions,\n load\n};\n"],"names":[],"mappings":";;;;;;;;AAOA,MAAM,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;AAC1C,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,MAAM,gBAAgB,GAAG,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,KAAK;AAC7E,EAAE,MAAM,eAAe,GAAG,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,KAAK;AAC5E,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,sBAAsB,EAAE,IAAI,CAAC,wBAAwB,CAAC;AAC1D,IAAI,0BAA0B,EAAE,IAAI,CAAC,4BAA4B,CAAC;AAClE,IAAI,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC;AAClD,IAAI,wBAAwB,EAAE,IAAI,CAAC,0BAA0B,CAAC;AAC9D,IAAI,cAAc,EAAE,IAAI,CAAC,gBAAgB;AACzC,GAAG;AACH,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,qBAAqB;AACzB,IAAI,oBAAoB;AACxB,IAAI,uBAAuB;AAC3B,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,IAAI,yBAAyB;AAC7B,IAAI,0BAA0B;AAC9B,IAAI,2BAA2B;AAC/B,IAAI,kCAAkC;AACtC,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,OAAO,GAAG,WAAW,EAAE;AAC/B,EAAE,MAAM,MAAM,GAAG,gBAAgB,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;AAC3I,EAAE,OAAO;AACT,IAAI,gBAAgB;AACpB,IAAI,eAAe;AACnB,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO,EAAE,GAAG,CAAC,OAAO;AACxB,IAAI,OAAO;AACX,IAAI;AACJ,GAAG;AACH,CAAC;AACD,MAAM,OAAO,GAAG;AAChB;AACA;AACA,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;AAC7C,IAAI,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAC/C,IAAI,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;AACzC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACvC,IAAI,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE;AACpD,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;AACrD,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,YAAY,CAAC,OAAO,CAAC;AAC3B,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE;AACvB,QAAQ,KAAK,EAAE,CAAC,+BAA+B,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC;AAClG,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,OAAO,EAAE,OAAO,EAAE;AACtB,EAAE;AACF,CAAC;;;;;;;;;;"}
1
+ {"version":3,"file":"_page.server.ts.js-lJcimOGV.js","sources":["../../../../../../../.svelte-kit/output/server/entries/pages/admin/system/_page.server.ts.js"],"sourcesContent":["import { fail } from \"@sveltejs/kit\";\nimport { h as hasPermission } from \"../../../../chunks/context.js\";\nimport { f as flag } from \"../../../../chunks/providers.server.js\";\nimport { w as writeChannel, r as readChannel, c as checkForUpdate } from \"../../../../chunks/updateCheck.server.js\";\nimport { d as requirePermission } from \"../../../../chunks/access.server.js\";\nimport { D as DEFINITION_CACHE_TTL_MS, R as REMOTE_DEFINITION_FETCH_TIMEOUT_MS, a as REMOTE_DEFINITION_MAX_BYTES, C as COMPUTE_RESPONSE_MAX_BYTES, b as COMPUTE_REQUEST_MAX_BYTES, M as MAX_IMAGE_FILE_SIZE, c as MAX_GH_FILE_SIZE, d as RATE_LIMIT_MAX_REQUESTS, e as RATE_LIMIT_WINDOW_MS, f as MAX_SOLVE_DURATION_MS } from \"../../../../chunks/computeLimits.js\";\nimport { p as pkg } from \"../../../../chunks/package.js\";\nconst load = async ({ locals, fetch }) => {\n const ctx = locals.ctx;\n const canManageUpdates = ctx ? hasPermission(ctx, \"manage_updates\") : false;\n const isInstanceAdmin = ctx ? hasPermission(ctx, \"instance_admin\") : false;\n const flags = {\n ALLOW_CROSS_ORG_PUBLIC: flag(\"ALLOW_CROSS_ORG_PUBLIC\"),\n ALLOW_ORG_COMPUTE_OVERRIDE: flag(\"ALLOW_ORG_COMPUTE_OVERRIDE\"),\n ALLOW_ORG_CREATION: flag(\"ALLOW_ORG_CREATION\"),\n ENABLE_PLATFORM_PROJECTS: flag(\"ENABLE_PLATFORM_PROJECTS\"),\n ENABLE_SHARING: flag(\"ENABLE_SHARING\")\n };\n const limits = {\n MAX_SOLVE_DURATION_MS,\n RATE_LIMIT_WINDOW_MS,\n RATE_LIMIT_MAX_REQUESTS,\n MAX_GH_FILE_SIZE,\n MAX_IMAGE_FILE_SIZE,\n COMPUTE_REQUEST_MAX_BYTES,\n COMPUTE_RESPONSE_MAX_BYTES,\n REMOTE_DEFINITION_MAX_BYTES,\n REMOTE_DEFINITION_FETCH_TIMEOUT_MS,\n DEFINITION_CACHE_TTL_MS\n };\n const channel = readChannel();\n const update = canManageUpdates ? await checkForUpdate(fetch, channel) : { channel, current: null, latest: null, updateAvailable: false };\n return {\n canManageUpdates,\n isInstanceAdmin,\n flags,\n limits,\n version: pkg.version,\n channel,\n update\n };\n};\nconst actions = {\n // Persist the release channel. Switch-only: this does NOT trigger an update —\n // the operator then uses the Update runner to install from the chosen channel.\n setChannel: async ({ request, locals }) => {\n requirePermission(locals, \"manage_updates\");\n const data = await request.formData();\n const channel = data.get(\"channel\");\n if (channel !== \"stable\" && channel !== \"beta\") {\n return fail(400, { error: \"Invalid channel.\" });\n }\n try {\n writeChannel(channel);\n } catch (e) {\n return fail(500, {\n error: `Could not persist the channel: ${e instanceof Error ? e.message : \"unknown error\"}`\n });\n }\n return { channel };\n }\n};\nexport {\n actions,\n load\n};\n"],"names":[],"mappings":";;;;;;;;AAOA,MAAM,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;AAC1C,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,MAAM,gBAAgB,GAAG,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,KAAK;AAC7E,EAAE,MAAM,eAAe,GAAG,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,KAAK;AAC5E,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,sBAAsB,EAAE,IAAI,CAAC,wBAAwB,CAAC;AAC1D,IAAI,0BAA0B,EAAE,IAAI,CAAC,4BAA4B,CAAC;AAClE,IAAI,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC;AAClD,IAAI,wBAAwB,EAAE,IAAI,CAAC,0BAA0B,CAAC;AAC9D,IAAI,cAAc,EAAE,IAAI,CAAC,gBAAgB;AACzC,GAAG;AACH,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,qBAAqB;AACzB,IAAI,oBAAoB;AACxB,IAAI,uBAAuB;AAC3B,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,IAAI,yBAAyB;AAC7B,IAAI,0BAA0B;AAC9B,IAAI,2BAA2B;AAC/B,IAAI,kCAAkC;AACtC,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,OAAO,GAAG,WAAW,EAAE;AAC/B,EAAE,MAAM,MAAM,GAAG,gBAAgB,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;AAC3I,EAAE,OAAO;AACT,IAAI,gBAAgB;AACpB,IAAI,eAAe;AACnB,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO,EAAE,GAAG,CAAC,OAAO;AACxB,IAAI,OAAO;AACX,IAAI;AACJ,GAAG;AACH,CAAC;AACD,MAAM,OAAO,GAAG;AAChB;AACA;AACA,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;AAC7C,IAAI,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAC/C,IAAI,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;AACzC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACvC,IAAI,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE;AACpD,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;AACrD,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,YAAY,CAAC,OAAO,CAAC;AAC3B,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE;AACvB,QAAQ,KAAK,EAAE,CAAC,+BAA+B,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC;AAClG,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,OAAO,EAAE,OAAO,EAAE;AACtB,EAAE;AACF,CAAC;;;;;;;;;;"}
@@ -11805,11 +11805,24 @@ function _page($$renderer, $$props) {
11805
11805
  return rhinoPromise;
11806
11806
  }
11807
11807
  let cooldownUntil = 0;
11808
+ function parseServerTiming(header) {
11809
+ const out = {};
11810
+ if (!header) return out;
11811
+ for (const part of header.split(",")) {
11812
+ const [name, ...params] = part.split(";").map((s) => s.trim());
11813
+ const dur = params.find((p) => p.startsWith("dur="));
11814
+ if (!name || !dur) continue;
11815
+ const ms = Number(dur.slice(4));
11816
+ if (Number.isFinite(ms)) out[name] = ms;
11817
+ }
11818
+ return out;
11819
+ }
11808
11820
  const onSolve = async (values, signal) => {
11809
11821
  const remainingMs = cooldownUntil - Date.now();
11810
11822
  if (remainingMs > 0) {
11811
11823
  throw new Error(`Rate limit reached. Try again in ${Math.ceil(remainingMs / 1e3)}s.`);
11812
11824
  }
11825
+ const solveStart = performance.now();
11813
11826
  const res = await fetch("/api/compute", {
11814
11827
  method: "POST",
11815
11828
  headers: { "Content-Type": "application/json" },
@@ -11836,17 +11849,42 @@ function _page($$renderer, $$props) {
11836
11849
  const d = await res.json().catch(() => ({}));
11837
11850
  throw new Error(d.message || "Compute error");
11838
11851
  }
11839
- const solved = await res.json();
11852
+ const ttfbMs = performance.now() - solveStart;
11853
+ const downloadStart = performance.now();
11854
+ const bodyText = await res.text();
11840
11855
  if (signal.aborted) return { outputs: {} };
11856
+ const downloadMs = performance.now() - downloadStart;
11857
+ const bytes = bodyText.length;
11858
+ const jsonStart = performance.now();
11859
+ const solved = JSON.parse(bodyText);
11841
11860
  const processor = new GrasshopperResponseProcessor(solved, false);
11861
+ const jsonMs = performance.now() - jsonStart;
11842
11862
  const shouldShowViewer = data.schema.viewerOptions?.enableLocal || data.schema.viewerOptions?.enableRemote;
11843
- const meshes = shouldShowViewer ? await processor.extractMeshesFromResponse({ rhino: await getRhino() }) : [];
11863
+ const rhinoStart = performance.now();
11864
+ const rhino = shouldShowViewer ? await getRhino() : null;
11865
+ const rhinoInitMs = performance.now() - rhinoStart;
11866
+ const meshStart = performance.now();
11867
+ const meshes = rhino ? await processor.extractMeshesFromResponse({ rhino }) : [];
11868
+ const meshMs = performance.now() - meshStart;
11869
+ const outputStart = performance.now();
11844
11870
  const outputs = {};
11845
11871
  for (const o of data.schema.outputs) {
11846
11872
  const byId = processor.getValue({ byId: o.id }, { parseValues: true });
11847
11873
  const name = o.nickname;
11848
11874
  outputs[o.id] = byId ?? (name ? processor.getValue({ byName: name }, { parseValues: true }) : void 0);
11849
11875
  }
11876
+ const outputMs = performance.now() - outputStart;
11877
+ const serverTiming = parseServerTiming(res.headers.get("Server-Timing"));
11878
+ const serverTotal = serverTiming.total ?? 0;
11879
+ const networkMs = Math.max(0, ttfbMs - serverTotal);
11880
+ const sizeMB = bytes / (1024 * 1024);
11881
+ const size = sizeMB >= 1 ? `${sizeMB.toFixed(2)} MB` : `${(bytes / 1024).toFixed(0)} KB`;
11882
+ const mbps = downloadMs > 0 ? (sizeMB / (downloadMs / 1e3)).toFixed(1) : "∞";
11883
+ const totalMs = ttfbMs + downloadMs + jsonMs + rhinoInitMs + meshMs + outputMs;
11884
+ console.log(`[Compute/browser] total=${totalMs.toFixed(0)}ms | ttfb=${ttfbMs.toFixed(0)}ms (network≈${networkMs.toFixed(0)} + server ${serverTotal.toFixed(0)}) | download=${downloadMs.toFixed(0)}ms (${size} @ ${mbps} MB/s) | json=${jsonMs.toFixed(0)}ms | rhinoInit=${rhinoInitMs.toFixed(0)}ms | mesh=${meshMs.toFixed(0)}ms (${meshes.length}) | outputs=${outputMs.toFixed(0)}ms`);
11885
+ if (serverTiming.total !== void 0) {
11886
+ console.log(`[Compute/browser] └─ server: load=${(serverTiming.load ?? 0).toFixed(0)}ms tree=${(serverTiming.tree ?? 0).toFixed(0)}ms solve=${(serverTiming.solve ?? 0).toFixed(0)}ms serialize=${(serverTiming.serialize ?? 0).toFixed(0)}ms`);
11887
+ }
11850
11888
  return {
11851
11889
  outputs,
11852
11890
  meshes,
@@ -11886,4 +11924,4 @@ function _page($$renderer, $$props) {
11886
11924
  }
11887
11925
 
11888
11926
  export { _page as default };
11889
- //# sourceMappingURL=_page.svelte.js-BKgJcySA.js.map
11927
+ //# sourceMappingURL=_page.svelte.js-CuMVFfMV.js.map