@selvajs/selva 2.0.8 → 2.0.9

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 (340) hide show
  1. package/build/client/_app/immutable/chunks/{BldLEHH8.js → 8jxh9FTC.js} +1 -1
  2. package/build/client/_app/immutable/chunks/8jxh9FTC.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/8jxh9FTC.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{B0M-tm96.js → B1839-Qe.js} +1 -1
  5. package/build/client/_app/immutable/chunks/B1839-Qe.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/B1839-Qe.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{CyUe9WIm.js → BB7Ce_Ao.js} +1 -1
  8. package/build/client/_app/immutable/chunks/BB7Ce_Ao.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/BB7Ce_Ao.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{Ba2Ugq_t.js → BG4KYJxd.js} +1 -1
  11. package/build/client/_app/immutable/chunks/BG4KYJxd.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/BG4KYJxd.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/BLObdRkl.js +3 -0
  14. package/build/client/_app/immutable/chunks/BLObdRkl.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/BLObdRkl.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{BnGN4Ix-.js → Dx1NLq6A.js} +1 -1
  17. package/build/client/_app/immutable/chunks/Dx1NLq6A.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/Dx1NLq6A.js.gz +0 -0
  19. package/build/client/_app/immutable/entry/{app.R0cA7z-3.js → app.iSZ5n5at.js} +2 -2
  20. package/build/client/_app/immutable/entry/app.iSZ5n5at.js.br +0 -0
  21. package/build/client/_app/immutable/entry/app.iSZ5n5at.js.gz +0 -0
  22. package/build/client/_app/immutable/entry/start.DN1mprbr.js +1 -0
  23. package/build/client/_app/immutable/entry/start.DN1mprbr.js.br +2 -0
  24. package/build/client/_app/immutable/entry/start.DN1mprbr.js.gz +0 -0
  25. package/build/client/_app/immutable/nodes/{1.iTQblN3h.js → 1.B3iyxTLe.js} +1 -1
  26. package/build/client/_app/immutable/nodes/1.B3iyxTLe.js.br +0 -0
  27. package/build/client/_app/immutable/nodes/1.B3iyxTLe.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/{11.D7vQOfVW.js → 11.C0bOSA5Z.js} +1 -1
  29. package/build/client/_app/immutable/nodes/11.C0bOSA5Z.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/11.C0bOSA5Z.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{13.CEGRwaw5.js → 13.BBX4st-t.js} +1 -1
  32. package/build/client/_app/immutable/nodes/13.BBX4st-t.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/13.BBX4st-t.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/{14.DP0RHUIL.js → 14.S-GLVBVi.js} +1 -1
  35. package/build/client/_app/immutable/nodes/14.S-GLVBVi.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/14.S-GLVBVi.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/15.CAs53i3e.js +16 -0
  38. package/build/client/_app/immutable/nodes/15.CAs53i3e.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/15.CAs53i3e.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{16.ChhIZf_i.js → 16.ukqcuKdq.js} +1 -1
  41. package/build/client/_app/immutable/nodes/16.ukqcuKdq.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/16.ukqcuKdq.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{17.DL0oF7lP.js → 17.DsZpiT_T.js} +1 -1
  44. package/build/client/_app/immutable/nodes/17.DsZpiT_T.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/17.DsZpiT_T.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{19.CCJMnv49.js → 19.De1qTu0Z.js} +1 -1
  47. package/build/client/_app/immutable/nodes/19.De1qTu0Z.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/19.De1qTu0Z.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/2.D9zIVWl1.js +1 -0
  50. package/build/client/_app/immutable/nodes/2.D9zIVWl1.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/2.D9zIVWl1.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{20.De0vu3AF.js → 20.DxsctpJH.js} +1 -1
  53. package/build/client/_app/immutable/nodes/20.DxsctpJH.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/20.DxsctpJH.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{21.DpNlPoKj.js → 21.-SL0S8PQ.js} +1 -1
  56. package/build/client/_app/immutable/nodes/21.-SL0S8PQ.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/21.-SL0S8PQ.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{23.CMmwabln.js → 23.VZ_boRL-.js} +1 -1
  59. package/build/client/_app/immutable/nodes/23.VZ_boRL-.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/23.VZ_boRL-.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{24.CuYhfWpg.js → 24.B9kY2pb5.js} +1 -1
  62. package/build/client/_app/immutable/nodes/24.B9kY2pb5.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/24.B9kY2pb5.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/{27.xAPzIANf.js → 27.DZwrstUI.js} +1 -1
  65. package/build/client/_app/immutable/nodes/27.DZwrstUI.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/27.DZwrstUI.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{28.DwzOZwKl.js → 28.MnyfwNy0.js} +1 -1
  68. package/build/client/_app/immutable/nodes/28.MnyfwNy0.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/28.MnyfwNy0.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/{29.8CK2Warj.js → 29.CNTJCITP.js} +1 -1
  71. package/build/client/_app/immutable/nodes/29.CNTJCITP.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/29.CNTJCITP.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/{3.CRsFANhR.js → 3.KI4lh69U.js} +1 -1
  74. package/build/client/_app/immutable/nodes/3.KI4lh69U.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/3.KI4lh69U.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{30.Cj-Aax_q.js → 30.Ct1smdjS.js} +1 -1
  77. package/build/client/_app/immutable/nodes/30.Ct1smdjS.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/30.Ct1smdjS.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{5.CtPFMefZ.js → 5.BN9x0bOB.js} +1 -1
  80. package/build/client/_app/immutable/nodes/5.BN9x0bOB.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/5.BN9x0bOB.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/{6.DpMqwqL2.js → 6.BU_SGWVX.js} +1 -1
  83. package/build/client/_app/immutable/nodes/6.BU_SGWVX.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/6.BU_SGWVX.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/{7.B8Lrh4Sn.js → 7.9jzNcaAs.js} +1 -1
  86. package/build/client/_app/immutable/nodes/7.9jzNcaAs.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/7.9jzNcaAs.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/{8.BpnmUNwu.js → 8.BvaBLt60.js} +1 -1
  89. package/build/client/_app/immutable/nodes/8.BvaBLt60.js.br +0 -0
  90. package/build/client/_app/immutable/nodes/8.BvaBLt60.js.gz +0 -0
  91. package/build/client/_app/immutable/nodes/{9.-tjBCa1C.js → 9.CzG8ag1t.js} +1 -1
  92. package/build/client/_app/immutable/nodes/9.CzG8ag1t.js.br +0 -0
  93. package/build/client/_app/immutable/nodes/9.CzG8ag1t.js.gz +0 -0
  94. package/build/client/_app/version.json +1 -1
  95. package/build/client/_app/version.json.br +0 -0
  96. package/build/client/_app/version.json.gz +0 -0
  97. package/build/server/chunks/{0-wC8vebb2.js → 0-CybFR_P8.js} +2 -2
  98. package/build/server/chunks/{0-wC8vebb2.js.map → 0-CybFR_P8.js.map} +1 -1
  99. package/build/server/chunks/{1-CSxxdOGx.js → 1-CUP4tMEn.js} +2 -2
  100. package/build/server/chunks/{1-CSxxdOGx.js.map → 1-CUP4tMEn.js.map} +1 -1
  101. package/build/server/chunks/{10-8FzClb5u.js → 10-zdkaINz9.js} +4 -4
  102. package/build/server/chunks/{10-8FzClb5u.js.map → 10-zdkaINz9.js.map} +1 -1
  103. package/build/server/chunks/{11-DPGyzjwV.js → 11-DHKq5wgm.js} +6 -6
  104. package/build/server/chunks/{11-DPGyzjwV.js.map → 11-DHKq5wgm.js.map} +1 -1
  105. package/build/server/chunks/{12-C_P4jkDv.js → 12-XbcleGFd.js} +2 -2
  106. package/build/server/chunks/{12-C_P4jkDv.js.map → 12-XbcleGFd.js.map} +1 -1
  107. package/build/server/chunks/{13-BTAtM4vf.js → 13-D9eyZVCZ.js} +5 -4
  108. package/build/server/chunks/13-D9eyZVCZ.js.map +1 -0
  109. package/build/server/chunks/{14-x6FJT6Iw.js → 14-qYW-h0op.js} +4 -3
  110. package/build/server/chunks/14-qYW-h0op.js.map +1 -0
  111. package/build/server/chunks/{15-DGiz0g4w.js → 15-wi_onU5j.js} +6 -5
  112. package/build/server/chunks/15-wi_onU5j.js.map +1 -0
  113. package/build/server/chunks/{16-CuluBZaI.js → 16-BM4yvuKv.js} +5 -5
  114. package/build/server/chunks/{16-CuluBZaI.js.map → 16-BM4yvuKv.js.map} +1 -1
  115. package/build/server/chunks/{17-DZr92is3.js → 17-CexG3wap.js} +2 -2
  116. package/build/server/chunks/{17-DZr92is3.js.map → 17-CexG3wap.js.map} +1 -1
  117. package/build/server/chunks/{18-DeVS-pOT.js → 18-DbXlY9LE.js} +2 -2
  118. package/build/server/chunks/{18-DeVS-pOT.js.map → 18-DbXlY9LE.js.map} +1 -1
  119. package/build/server/chunks/{19-B0hG9_9r.js → 19-AX88i2oC.js} +5 -3
  120. package/build/server/chunks/19-AX88i2oC.js.map +1 -0
  121. package/build/server/chunks/{2-_zknF6gb.js → 2-BMbliYzg.js} +7 -6
  122. package/build/server/chunks/2-BMbliYzg.js.map +1 -0
  123. package/build/server/chunks/{20-Db0y8qIh.js → 20-S3QlkFoL.js} +9 -9
  124. package/build/server/chunks/{20-Db0y8qIh.js.map → 20-S3QlkFoL.js.map} +1 -1
  125. package/build/server/chunks/{21-CQ2mvrOt.js → 21-BAKPEyjQ.js} +3 -3
  126. package/build/server/chunks/{21-CQ2mvrOt.js.map → 21-BAKPEyjQ.js.map} +1 -1
  127. package/build/server/chunks/{23-CSrUCr2t.js → 23-DCiJWF0i.js} +6 -6
  128. package/build/server/chunks/{23-CSrUCr2t.js.map → 23-DCiJWF0i.js.map} +1 -1
  129. package/build/server/chunks/{24-D14nUSAR.js → 24-B3gXWNYD.js} +4 -4
  130. package/build/server/chunks/{24-D14nUSAR.js.map → 24-B3gXWNYD.js.map} +1 -1
  131. package/build/server/chunks/{25-ef6c33Ul.js → 25-9yYU1YBX.js} +2 -2
  132. package/build/server/chunks/{25-ef6c33Ul.js.map → 25-9yYU1YBX.js.map} +1 -1
  133. package/build/server/chunks/{27-PXKn2m8M.js → 27-GMsHFaaf.js} +4 -4
  134. package/build/server/chunks/{27-PXKn2m8M.js.map → 27-GMsHFaaf.js.map} +1 -1
  135. package/build/server/chunks/{28-DYuI_Cgr.js → 28-DnplSoj0.js} +3 -3
  136. package/build/server/chunks/{28-DYuI_Cgr.js.map → 28-DnplSoj0.js.map} +1 -1
  137. package/build/server/chunks/{29-CrDIu9-c.js → 29-orcjqU9J.js} +3 -3
  138. package/build/server/chunks/{29-CrDIu9-c.js.map → 29-orcjqU9J.js.map} +1 -1
  139. package/build/server/chunks/{3-Dk3O-ses.js → 3-B57IoxU7.js} +2 -2
  140. package/build/server/chunks/{3-Dk3O-ses.js.map → 3-B57IoxU7.js.map} +1 -1
  141. package/build/server/chunks/{30-ZXGKLYtR.js → 30-UoUq_V5A.js} +3 -3
  142. package/build/server/chunks/{30-ZXGKLYtR.js.map → 30-UoUq_V5A.js.map} +1 -1
  143. package/build/server/chunks/{31-CirH19D6.js → 31-BRqIoy8w.js} +2 -2
  144. package/build/server/chunks/{31-CirH19D6.js.map → 31-BRqIoy8w.js.map} +1 -1
  145. package/build/server/chunks/{32-CZojKYOy.js → 32-D1Mk43AX.js} +2 -2
  146. package/build/server/chunks/{32-CZojKYOy.js.map → 32-D1Mk43AX.js.map} +1 -1
  147. package/build/server/chunks/{5-DZF9fTQJ.js → 5-DMGFkyK4.js} +2 -2
  148. package/build/server/chunks/{5-DZF9fTQJ.js.map → 5-DMGFkyK4.js.map} +1 -1
  149. package/build/server/chunks/{6-Dv8dgI1X.js → 6-CYaPOOMj.js} +3 -3
  150. package/build/server/chunks/{6-Dv8dgI1X.js.map → 6-CYaPOOMj.js.map} +1 -1
  151. package/build/server/chunks/{7-Be6Wvhky.js → 7-Dk_VmXtf.js} +2 -2
  152. package/build/server/chunks/{7-Be6Wvhky.js.map → 7-Dk_VmXtf.js.map} +1 -1
  153. package/build/server/chunks/{8-CPaEsylT.js → 8-Ce8EjQtB.js} +3 -3
  154. package/build/server/chunks/{8-CPaEsylT.js.map → 8-Ce8EjQtB.js.map} +1 -1
  155. package/build/server/chunks/{9-DwCoeD2g.js → 9-DghkKEyM.js} +3 -3
  156. package/build/server/chunks/{9-DwCoeD2g.js.map → 9-DghkKEyM.js.map} +1 -1
  157. package/build/server/chunks/{_layout.svelte-HGSVxA0R.js → _layout.svelte-u5-cJLoF.js} +2 -2
  158. package/build/server/chunks/_layout.svelte-u5-cJLoF.js.map +1 -0
  159. package/build/server/chunks/{_page.svelte-BptS1zpT.js → _page.svelte-CRZeKEsV.js} +2 -1
  160. package/build/server/chunks/_page.svelte-CRZeKEsV.js.map +1 -0
  161. package/build/server/chunks/{_server.ts-C2YLv0RS.js → _server.ts-07x4zjP2.js} +4 -4
  162. package/build/server/chunks/{_server.ts-C2YLv0RS.js.map → _server.ts-07x4zjP2.js.map} +1 -1
  163. package/build/server/chunks/{_server.ts-B0gZCMdj.js → _server.ts-7mF4ytYC.js} +4 -4
  164. package/build/server/chunks/{_server.ts-B0gZCMdj.js.map → _server.ts-7mF4ytYC.js.map} +1 -1
  165. package/build/server/chunks/{_server.ts-Cjz2LZbt.js → _server.ts-B-LWyGZ8.js} +5 -4
  166. package/build/server/chunks/_server.ts-B-LWyGZ8.js.map +1 -0
  167. package/build/server/chunks/{_server.ts-CKHs57oZ.js → _server.ts-B2zQRDbu.js} +2 -2
  168. package/build/server/chunks/{_server.ts-CKHs57oZ.js.map → _server.ts-B2zQRDbu.js.map} +1 -1
  169. package/build/server/chunks/{_server.ts-BSoy1Ljl.js → _server.ts-B6Zmqwf5.js} +4 -4
  170. package/build/server/chunks/{_server.ts-BSoy1Ljl.js.map → _server.ts-B6Zmqwf5.js.map} +1 -1
  171. package/build/server/chunks/{_server.ts-C3Cn_AWJ.js → _server.ts-BDeXzj8U.js} +4 -4
  172. package/build/server/chunks/{_server.ts-C3Cn_AWJ.js.map → _server.ts-BDeXzj8U.js.map} +1 -1
  173. package/build/server/chunks/{_server.ts-I3zLnhsz.js → _server.ts-BEGEbcQ_.js} +4 -4
  174. package/build/server/chunks/{_server.ts-I3zLnhsz.js.map → _server.ts-BEGEbcQ_.js.map} +1 -1
  175. package/build/server/chunks/{_server.ts-CyhcRpfW.js → _server.ts-BEW1ndmL.js} +5 -5
  176. package/build/server/chunks/{_server.ts-CyhcRpfW.js.map → _server.ts-BEW1ndmL.js.map} +1 -1
  177. package/build/server/chunks/{_server.ts-1nksAmT8.js → _server.ts-BSZknGSV.js} +4 -4
  178. package/build/server/chunks/{_server.ts-1nksAmT8.js.map → _server.ts-BSZknGSV.js.map} +1 -1
  179. package/build/server/chunks/{_server.ts-BTi2idVf.js → _server.ts-BUI9hwVF.js} +4 -4
  180. package/build/server/chunks/{_server.ts-BTi2idVf.js.map → _server.ts-BUI9hwVF.js.map} +1 -1
  181. package/build/server/chunks/{_server.ts-CZW4ge6f.js → _server.ts-BX0JGorf.js} +4 -4
  182. package/build/server/chunks/{_server.ts-CZW4ge6f.js.map → _server.ts-BX0JGorf.js.map} +1 -1
  183. package/build/server/chunks/{_server.ts-BYlDwqEg.js → _server.ts-BXGCxm6J.js} +5 -5
  184. package/build/server/chunks/{_server.ts-BYlDwqEg.js.map → _server.ts-BXGCxm6J.js.map} +1 -1
  185. package/build/server/chunks/{_server.ts-ByhZiyPJ.js → _server.ts-BYTe4ViD.js} +4 -4
  186. package/build/server/chunks/{_server.ts-ByhZiyPJ.js.map → _server.ts-BYTe4ViD.js.map} +1 -1
  187. package/build/server/chunks/{_server.ts-BdKZ7aOG.js → _server.ts-BaHBgmBs.js} +4 -4
  188. package/build/server/chunks/{_server.ts-BdKZ7aOG.js.map → _server.ts-BaHBgmBs.js.map} +1 -1
  189. package/build/server/chunks/{_server.ts-C9ggXEGb.js → _server.ts-BbvHHiGq.js} +4 -4
  190. package/build/server/chunks/{_server.ts-C9ggXEGb.js.map → _server.ts-BbvHHiGq.js.map} +1 -1
  191. package/build/server/chunks/{_server.ts-qFzkA4h-.js → _server.ts-C9SZ9y6W.js} +7 -7
  192. package/build/server/chunks/{_server.ts-qFzkA4h-.js.map → _server.ts-C9SZ9y6W.js.map} +1 -1
  193. package/build/server/chunks/{_server.ts-uQSc7PGB.js → _server.ts-CHvipMjS.js} +4 -4
  194. package/build/server/chunks/{_server.ts-uQSc7PGB.js.map → _server.ts-CHvipMjS.js.map} +1 -1
  195. package/build/server/chunks/{_server.ts-1HIleN3S.js → _server.ts-CIAkL4VM.js} +4 -4
  196. package/build/server/chunks/{_server.ts-1HIleN3S.js.map → _server.ts-CIAkL4VM.js.map} +1 -1
  197. package/build/server/chunks/{_server.ts-gCCprE5T.js → _server.ts-CKENL0Fr.js} +7 -5
  198. package/build/server/chunks/_server.ts-CKENL0Fr.js.map +1 -0
  199. package/build/server/chunks/{_server.ts-BbzbsVfr.js → _server.ts-CKtVrr5P.js} +4 -4
  200. package/build/server/chunks/{_server.ts-BbzbsVfr.js.map → _server.ts-CKtVrr5P.js.map} +1 -1
  201. package/build/server/chunks/{_server.ts-CN851WSH.js → _server.ts-CS_06-Es.js} +4 -4
  202. package/build/server/chunks/{_server.ts-CN851WSH.js.map → _server.ts-CS_06-Es.js.map} +1 -1
  203. package/build/server/chunks/{_server.ts-Dnqx5-qU.js → _server.ts-D5nruaeK.js} +6 -6
  204. package/build/server/chunks/{_server.ts-Dnqx5-qU.js.map → _server.ts-D5nruaeK.js.map} +1 -1
  205. package/build/server/chunks/{_server.ts-C_s5gcH-.js → _server.ts-DLHHpGFa.js} +3 -3
  206. package/build/server/chunks/{_server.ts-C_s5gcH-.js.map → _server.ts-DLHHpGFa.js.map} +1 -1
  207. package/build/server/chunks/{_server.ts-CbQpXSqd.js → _server.ts-DMSCxMRc.js} +4 -4
  208. package/build/server/chunks/{_server.ts-CbQpXSqd.js.map → _server.ts-DMSCxMRc.js.map} +1 -1
  209. package/build/server/chunks/{_server.ts-k0TOB-E9.js → _server.ts-DOstgfdy.js} +4 -4
  210. package/build/server/chunks/{_server.ts-k0TOB-E9.js.map → _server.ts-DOstgfdy.js.map} +1 -1
  211. package/build/server/chunks/{_server.ts-DChqazjy.js → _server.ts-DahXKbZg.js} +3 -3
  212. package/build/server/chunks/{_server.ts-DChqazjy.js.map → _server.ts-DahXKbZg.js.map} +1 -1
  213. package/build/server/chunks/{_server.ts-DraBBcmz.js → _server.ts-DjEulrER.js} +4 -4
  214. package/build/server/chunks/{_server.ts-DraBBcmz.js.map → _server.ts-DjEulrER.js.map} +1 -1
  215. package/build/server/chunks/{_server.ts-Cb4DODkC.js → _server.ts-DmvmgVIf.js} +5 -5
  216. package/build/server/chunks/{_server.ts-Cb4DODkC.js.map → _server.ts-DmvmgVIf.js.map} +1 -1
  217. package/build/server/chunks/{_server.ts-CNPmzTy6.js → _server.ts-Du9sjt--.js} +4 -4
  218. package/build/server/chunks/{_server.ts-CNPmzTy6.js.map → _server.ts-Du9sjt--.js.map} +1 -1
  219. package/build/server/chunks/{_server.ts-Ch4yLIuo.js → _server.ts-Dx6fUVVo.js} +3 -3
  220. package/build/server/chunks/{_server.ts-Ch4yLIuo.js.map → _server.ts-Dx6fUVVo.js.map} +1 -1
  221. package/build/server/chunks/{_server.ts-AE1drj36.js → _server.ts-MKn8v93k.js} +5 -4
  222. package/build/server/chunks/_server.ts-MKn8v93k.js.map +1 -0
  223. package/build/server/chunks/{_server.ts-CaERLUlr.js → _server.ts-MvJCHr1k.js} +3 -3
  224. package/build/server/chunks/{_server.ts-CaERLUlr.js.map → _server.ts-MvJCHr1k.js.map} +1 -1
  225. package/build/server/chunks/{_server.ts-DWL7YPsQ.js → _server.ts-Njof323z.js} +5 -5
  226. package/build/server/chunks/{_server.ts-DWL7YPsQ.js.map → _server.ts-Njof323z.js.map} +1 -1
  227. package/build/server/chunks/{_server.ts-BnN8EQwQ.js → _server.ts-VbLWxdNH.js} +4 -4
  228. package/build/server/chunks/{_server.ts-BnN8EQwQ.js.map → _server.ts-VbLWxdNH.js.map} +1 -1
  229. package/build/server/chunks/{_server.ts-DnpbPKKN.js → _server.ts-WfRBOO6r.js} +4 -4
  230. package/build/server/chunks/{_server.ts-DnpbPKKN.js.map → _server.ts-WfRBOO6r.js.map} +1 -1
  231. package/build/server/chunks/{_server.ts-DrYz0SSH.js → _server.ts-c9y4czsq.js} +4 -4
  232. package/build/server/chunks/{_server.ts-DrYz0SSH.js.map → _server.ts-c9y4czsq.js.map} +1 -1
  233. package/build/server/chunks/{_server.ts-CzJ60KtY.js → _server.ts-hNeWcDQg.js} +5 -5
  234. package/build/server/chunks/{_server.ts-CzJ60KtY.js.map → _server.ts-hNeWcDQg.js.map} +1 -1
  235. package/build/server/chunks/{_server.ts-v9eUA-cx.js → _server.ts-kUn8v9xq.js} +4 -4
  236. package/build/server/chunks/{_server.ts-v9eUA-cx.js.map → _server.ts-kUn8v9xq.js.map} +1 -1
  237. package/build/server/chunks/{access.server-DVG3xnR_.js → access.server-DGKSuoRH.js} +35 -13
  238. package/build/server/chunks/access.server-DGKSuoRH.js.map +1 -0
  239. package/build/server/chunks/{api-errors-DGHmIOGJ.js → api-errors-DSza0CJv.js} +2 -2
  240. package/build/server/chunks/{api-errors-DGHmIOGJ.js.map → api-errors-DSza0CJv.js.map} +1 -1
  241. package/build/server/chunks/{auth-bootstrap.server-dy8_QSAP.js → auth-bootstrap.server-YBvyz9i1.js} +2 -2
  242. package/build/server/chunks/{auth-bootstrap.server-dy8_QSAP.js.map → auth-bootstrap.server-YBvyz9i1.js.map} +1 -1
  243. package/build/server/chunks/{bootHealth.server-DQx_qsNh.js → bootHealth.server-DwPUi_JC.js} +2 -2
  244. package/build/server/chunks/{bootHealth.server-DQx_qsNh.js.map → bootHealth.server-DwPUi_JC.js.map} +1 -1
  245. package/build/server/chunks/{hooks.server-D5z2JKsD.js → hooks.server---blwhkE.js} +4 -4
  246. package/build/server/chunks/{hooks.server-D5z2JKsD.js.map → hooks.server---blwhkE.js.map} +1 -1
  247. package/build/server/chunks/{permissions.server-qrbshNHz.js → permissions.server-toUY36oB.js} +2 -2
  248. package/build/server/chunks/{permissions.server-qrbshNHz.js.map → permissions.server-toUY36oB.js.map} +1 -1
  249. package/build/server/chunks/{providers.server-Duyx-08B.js → providers.server-gJvnJT_K.js} +2 -1
  250. package/build/server/chunks/providers.server-gJvnJT_K.js.map +1 -0
  251. package/build/server/chunks/{resolve.server-BwfjDyaT.js → resolve.server-Ca9AsrIQ.js} +3 -3
  252. package/build/server/chunks/{resolve.server-BwfjDyaT.js.map → resolve.server-Ca9AsrIQ.js.map} +1 -1
  253. package/build/server/chunks/{resolve.server2-DjZg4oZg.js → resolve.server2-B0RMxSCk.js} +2 -2
  254. package/build/server/chunks/{resolve.server2-DjZg4oZg.js.map → resolve.server2-B0RMxSCk.js.map} +1 -1
  255. package/build/server/chunks/{utils2-QuTTpZq0.js → utils2-DfCIUv4X.js} +2 -2
  256. package/build/server/chunks/{utils2-QuTTpZq0.js.map → utils2-DfCIUv4X.js.map} +1 -1
  257. package/build/server/index.js +2 -2
  258. package/build/server/index.js.map +1 -1
  259. package/build/server/manifest.js +69 -69
  260. package/build/server/manifest.js.map +1 -1
  261. package/package.json +5 -5
  262. package/templates/.env.example +8 -0
  263. package/build/client/_app/immutable/chunks/B0M-tm96.js.br +0 -0
  264. package/build/client/_app/immutable/chunks/B0M-tm96.js.gz +0 -0
  265. package/build/client/_app/immutable/chunks/Ba2Ugq_t.js.br +0 -0
  266. package/build/client/_app/immutable/chunks/Ba2Ugq_t.js.gz +0 -0
  267. package/build/client/_app/immutable/chunks/BldLEHH8.js.br +0 -0
  268. package/build/client/_app/immutable/chunks/BldLEHH8.js.gz +0 -0
  269. package/build/client/_app/immutable/chunks/BnGN4Ix-.js.br +0 -0
  270. package/build/client/_app/immutable/chunks/BnGN4Ix-.js.gz +0 -0
  271. package/build/client/_app/immutable/chunks/CnbBd0os.js +0 -3
  272. package/build/client/_app/immutable/chunks/CnbBd0os.js.br +0 -0
  273. package/build/client/_app/immutable/chunks/CnbBd0os.js.gz +0 -0
  274. package/build/client/_app/immutable/chunks/CyUe9WIm.js.br +0 -0
  275. package/build/client/_app/immutable/chunks/CyUe9WIm.js.gz +0 -0
  276. package/build/client/_app/immutable/entry/app.R0cA7z-3.js.br +0 -0
  277. package/build/client/_app/immutable/entry/app.R0cA7z-3.js.gz +0 -0
  278. package/build/client/_app/immutable/entry/start.DuuVgzCE.js +0 -1
  279. package/build/client/_app/immutable/entry/start.DuuVgzCE.js.br +0 -0
  280. package/build/client/_app/immutable/entry/start.DuuVgzCE.js.gz +0 -0
  281. package/build/client/_app/immutable/nodes/1.iTQblN3h.js.br +0 -0
  282. package/build/client/_app/immutable/nodes/1.iTQblN3h.js.gz +0 -0
  283. package/build/client/_app/immutable/nodes/11.D7vQOfVW.js.br +0 -0
  284. package/build/client/_app/immutable/nodes/11.D7vQOfVW.js.gz +0 -0
  285. package/build/client/_app/immutable/nodes/13.CEGRwaw5.js.br +0 -0
  286. package/build/client/_app/immutable/nodes/13.CEGRwaw5.js.gz +0 -0
  287. package/build/client/_app/immutable/nodes/14.DP0RHUIL.js.br +0 -0
  288. package/build/client/_app/immutable/nodes/14.DP0RHUIL.js.gz +0 -0
  289. package/build/client/_app/immutable/nodes/15.C5BZvt5A.js +0 -16
  290. package/build/client/_app/immutable/nodes/15.C5BZvt5A.js.br +0 -0
  291. package/build/client/_app/immutable/nodes/15.C5BZvt5A.js.gz +0 -0
  292. package/build/client/_app/immutable/nodes/16.ChhIZf_i.js.br +0 -0
  293. package/build/client/_app/immutable/nodes/16.ChhIZf_i.js.gz +0 -0
  294. package/build/client/_app/immutable/nodes/17.DL0oF7lP.js.br +0 -0
  295. package/build/client/_app/immutable/nodes/17.DL0oF7lP.js.gz +0 -0
  296. package/build/client/_app/immutable/nodes/19.CCJMnv49.js.br +0 -0
  297. package/build/client/_app/immutable/nodes/19.CCJMnv49.js.gz +0 -0
  298. package/build/client/_app/immutable/nodes/2.wQUgS03u.js +0 -1
  299. package/build/client/_app/immutable/nodes/2.wQUgS03u.js.br +0 -0
  300. package/build/client/_app/immutable/nodes/2.wQUgS03u.js.gz +0 -0
  301. package/build/client/_app/immutable/nodes/20.De0vu3AF.js.br +0 -0
  302. package/build/client/_app/immutable/nodes/20.De0vu3AF.js.gz +0 -0
  303. package/build/client/_app/immutable/nodes/21.DpNlPoKj.js.br +0 -0
  304. package/build/client/_app/immutable/nodes/21.DpNlPoKj.js.gz +0 -0
  305. package/build/client/_app/immutable/nodes/23.CMmwabln.js.br +0 -0
  306. package/build/client/_app/immutable/nodes/23.CMmwabln.js.gz +0 -0
  307. package/build/client/_app/immutable/nodes/24.CuYhfWpg.js.br +0 -0
  308. package/build/client/_app/immutable/nodes/24.CuYhfWpg.js.gz +0 -0
  309. package/build/client/_app/immutable/nodes/27.xAPzIANf.js.br +0 -0
  310. package/build/client/_app/immutable/nodes/27.xAPzIANf.js.gz +0 -0
  311. package/build/client/_app/immutable/nodes/28.DwzOZwKl.js.br +0 -0
  312. package/build/client/_app/immutable/nodes/28.DwzOZwKl.js.gz +0 -0
  313. package/build/client/_app/immutable/nodes/29.8CK2Warj.js.br +0 -0
  314. package/build/client/_app/immutable/nodes/29.8CK2Warj.js.gz +0 -0
  315. package/build/client/_app/immutable/nodes/3.CRsFANhR.js.br +0 -0
  316. package/build/client/_app/immutable/nodes/3.CRsFANhR.js.gz +0 -0
  317. package/build/client/_app/immutable/nodes/30.Cj-Aax_q.js.br +0 -0
  318. package/build/client/_app/immutable/nodes/30.Cj-Aax_q.js.gz +0 -0
  319. package/build/client/_app/immutable/nodes/5.CtPFMefZ.js.br +0 -0
  320. package/build/client/_app/immutable/nodes/5.CtPFMefZ.js.gz +0 -0
  321. package/build/client/_app/immutable/nodes/6.DpMqwqL2.js.br +0 -0
  322. package/build/client/_app/immutable/nodes/6.DpMqwqL2.js.gz +0 -0
  323. package/build/client/_app/immutable/nodes/7.B8Lrh4Sn.js.br +0 -0
  324. package/build/client/_app/immutable/nodes/7.B8Lrh4Sn.js.gz +0 -0
  325. package/build/client/_app/immutable/nodes/8.BpnmUNwu.js.br +0 -0
  326. package/build/client/_app/immutable/nodes/8.BpnmUNwu.js.gz +0 -0
  327. package/build/client/_app/immutable/nodes/9.-tjBCa1C.js.br +0 -0
  328. package/build/client/_app/immutable/nodes/9.-tjBCa1C.js.gz +0 -0
  329. package/build/server/chunks/13-BTAtM4vf.js.map +0 -1
  330. package/build/server/chunks/14-x6FJT6Iw.js.map +0 -1
  331. package/build/server/chunks/15-DGiz0g4w.js.map +0 -1
  332. package/build/server/chunks/19-B0hG9_9r.js.map +0 -1
  333. package/build/server/chunks/2-_zknF6gb.js.map +0 -1
  334. package/build/server/chunks/_layout.svelte-HGSVxA0R.js.map +0 -1
  335. package/build/server/chunks/_page.svelte-BptS1zpT.js.map +0 -1
  336. package/build/server/chunks/_server.ts-AE1drj36.js.map +0 -1
  337. package/build/server/chunks/_server.ts-Cjz2LZbt.js.map +0 -1
  338. package/build/server/chunks/_server.ts-gCCprE5T.js.map +0 -1
  339. package/build/server/chunks/access.server-DVG3xnR_.js.map +0 -1
  340. package/build/server/chunks/providers.server-Duyx-08B.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-uQSc7PGB.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/system/update/_server.ts.js"],"sourcesContent":["import { spawn } from \"child_process\";\nimport { join } from \"path\";\nimport { readFileSync, existsSync } from \"fs\";\nimport { b as private_env } from \"../../../../../../chunks/shared-server.js\";\nimport { b as requirePermission } from \"../../../../../../chunks/access.server.js\";\nconst UPDATE_LOG_PATH = \"/tmp/selva-update.log\";\nfunction stripAnsi(str) {\n return str.replace(/\\x1B\\[[0-9;]*[mGKHF]/g, \"\");\n}\nfunction readRuntimeVersion(dir) {\n try {\n const pkg = JSON.parse(\n readFileSync(join(dir, \"node_modules\", \"@selvajs\", \"selva\", \"package.json\"), \"utf8\")\n );\n return typeof pkg.version === \"string\" ? pkg.version : void 0;\n } catch {\n return void 0;\n }\n}\nfunction shellQuote(s) {\n return `'${s.replace(/'/g, `'\\\\''`)}'`;\n}\nfunction buildLauncher(runnerScript, prelude = []) {\n const echoes = prelude.map((line) => `echo ${shellQuote(line)}`).join(\"\\n\");\n return `\nLOGFILE=${shellQuote(UPDATE_LOG_PATH)}\nRUNNER=/tmp/selva-update-runner.sh\nmkdir -p \"$(dirname \"$LOGFILE\")\"\n: > \"$LOGFILE\"\n\ncat > \"$RUNNER\" <<'__SELVA_RUNNER_EOF__'\n${runnerScript}\n__SELVA_RUNNER_EOF__\nchmod +x \"$RUNNER\"\n\ntrap '' PIPE\nexec > >(tee --output-error=warn-nopipe -a \"$LOGFILE\" 2>/dev/null) 2>&1\n${echoes}\n\n# Daemonize the runner so PM2's tree-kill of selva-compute can't reach it.\n# setsid puts it in a new session; the trailing & + disown + launcher exit\n# leaves the runner with PPID=1 once we're gone. stdin/stdout/stderr are\n# fully detached from this process (and from selva-compute's pipes).\nsetsid bash \"$RUNNER\" </dev/null >>\"$LOGFILE\" 2>&1 &\nRUNNER_PID=$!\ndisown\necho \"[INFO] Update runner started (PID $RUNNER_PID, log: $LOGFILE)\"\n\n# Small pause so the runner has time to print its first line before SSE\n# closes — otherwise the frontend's first poll might see no progress.\nsleep 1\nexit 0\n`;\n}\nfunction buildNpmRunnerScript(npmArgs, versionBefore, ecosystemPath) {\n const npmCommand = [\"npm\", ...npmArgs].map(shellQuote).join(\" \");\n const before = shellQuote(versionBefore ?? \"\");\n const ecosystem = shellQuote(ecosystemPath);\n return `#!/bin/bash\nset -o pipefail\nBEFORE=${before}\nECOSYSTEM=${ecosystem}\n\n# Last-resort safety net. If the script exits with the app NOT online for\n# any reason (crash, kill -9, network blip, npm hang past timeout), try to\n# bring it back from ecosystem.config.cjs before we go. The whole point of\n# this script is to update the app; leaving it down is the worst possible\n# outcome.\non_exit() {\n STATUS=$(pm2 jlist 2>/dev/null | node -e \"\n try {\n const list = JSON.parse(require('fs').readFileSync('/dev/stdin','utf8'));\n const app = list.find(p => p.name === 'selva-compute');\n process.stdout.write(app ? app.pm2_env.status : 'missing');\n } catch { process.stdout.write('error'); }\n \" 2>/dev/null || echo \"error\")\n if [ \"$STATUS\" != \"online\" ]; then\n echo \"[RECOVER] selva-compute is '$STATUS' — starting from ecosystem.config.cjs\"\n pm2 start \"$ECOSYSTEM\" --update-env >/dev/null 2>&1 || \\\\\n echo \"[RECOVER] pm2 start failed — manual intervention required: cd $(dirname \"$ECOSYSTEM\") && pm2 start ecosystem.config.cjs\"\n fi\n}\ntrap on_exit EXIT\n\n# ---------------------------------------------------------------------------\n# 1. Pre-flight: skip the whole cycle if there's nothing to install.\n# ---------------------------------------------------------------------------\n# Without this, clicking \"Update\" on an already-current instance triggered\n# a full stop/install/start cycle and a downtime window for no reason. Now\n# we just check the registry first.\necho \"[STEP] Checking npm registry for available updates\"\nLATEST=$(npm view @selvajs/selva version --silent 2>/dev/null || echo \"\")\nif [ -z \"$LATEST\" ]; then\n echo \"[WARN] Could not query npm registry — proceeding with update attempt anyway\"\nelif [ -n \"$BEFORE\" ] && [ \"$LATEST\" = \"$BEFORE\" ]; then\n echo \"[INFO] Already on the latest version ($BEFORE)\"\n echo \"[DONE] Nothing to do\"\n exit 0\nelse\n echo \"[INFO] Available: $BEFORE → $LATEST\"\nfi\n\n# ---------------------------------------------------------------------------\n# 2. Resync PM2 daemon if its in-memory version drifted from the CLI on disk.\n# ---------------------------------------------------------------------------\n# After a global pm2 upgrade the daemon keeps running its original version\n# while the CLI moves forward. Process commands then talk to a stale daemon\n# and the symptom is \"stop works, start never lands\". \\`pm2 update\\` dumps\n# processes, kills the daemon, respawns on the current CLI, restores the\n# dump. Doing it before we touch anything keeps the rest of the script\n# talking to a coherent daemon.\necho \"[STEP] Checking PM2 daemon/CLI version sync\"\nif pm2 ping 2>&1 | grep -q \"out-of-date\" || pm2 list 2>&1 | grep -q \"out-of-date\"; then\n echo \"[STEP] PM2 daemon is out-of-date — running 'pm2 update' to resync\"\n if ! pm2 update; then\n echo \"[FATAL] pm2 update failed — aborting before stopping the running app\"\n exit 1\n fi\n echo \"[INFO] PM2 daemon resynced\"\nfi\n\n# ---------------------------------------------------------------------------\n# 3. Stop selva-compute BEFORE npm rewrites build/.\n# ---------------------------------------------------------------------------\n# SvelteKit's node adapter lazy-imports chunks from build/server/chunks/ on\n# every request. Letting npm rewrite build/ while the old process is still\n# serving traffic = in-flight requests hit ERR_MODULE_NOT_FOUND for chunks\n# whose hash just changed under their feet. Stopping first is a brief\n# downtime window (~1-2s longer than restart-in-place) for a much smaller\n# blast radius.\n#\n# This is also where the SSE connection to the frontend dies — selva-compute\n# IS the SSE server. From here on, the user sees output via the log-file\n# polling fallback in the admin UI, not over SSE.\necho \"[STEP] Stopping selva-compute\"\nif ! pm2 stop selva-compute; then\n echo \"[WARN] pm2 stop failed — selva-compute may not be running yet. Continuing.\"\nfi\n\n# ---------------------------------------------------------------------------\n# 4. Run npm update.\n# ---------------------------------------------------------------------------\necho \"[STEP] Updating @selvajs/* packages\"\nif ! ${npmCommand}; then\n echo \"[FATAL] npm update failed — EXIT trap will restart the previous build\"\n exit 1\nfi\n\nAFTER=$(node -e \"try{console.log(require('./node_modules/@selvajs/selva/package.json').version)}catch(e){}\" 2>/dev/null)\necho \"[INFO] New @selvajs/selva: \\${AFTER:-unknown}\"\n\nif [ -n \"$BEFORE\" ] && [ \"$BEFORE\" = \"$AFTER\" ]; then\n echo \"[WARN] No version change ($BEFORE). Your npm cache may be stale.\"\n echo \"[WARN] Recover with:\"\n echo \"[WARN] npm cache clean --force\"\n echo \"[WARN] rm -rf node_modules package-lock.json\"\n echo \"[WARN] npm install --prefer-online\"\nfi\n\n# ---------------------------------------------------------------------------\n# 5. Start selva-compute with the new build.\n# ---------------------------------------------------------------------------\n# Start from ecosystem.config.cjs, NOT \\`pm2 start selva-compute\\` — the\n# latter requires selva-compute to already be in pm2's in-memory process\n# list. After a \\`pm2 update\\` (step 2) that's not guaranteed.\necho \"[STEP] Starting selva-compute with new build\"\nif ! pm2 start \"$ECOSYSTEM\" --update-env; then\n echo \"[FATAL] pm2 start failed — investigate with \\\\\\`pm2 logs selva-compute\\\\\\`\"\n exit 2\nfi\n\n# ---------------------------------------------------------------------------\n# 6. Health probe the new process.\n# ---------------------------------------------------------------------------\n# Read PORT from .env the same way scripts/update.sh does, so non-default\n# ports are respected.\nPORT=$(grep \"^PORT=\" .env 2>/dev/null \\\\\n | head -1 \\\\\n | cut -d'=' -f2 \\\\\n | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e 's/^[\"'\"'\"']//' -e 's/[\"'\"'\"']$//' -e 's/[[:space:]]*#.*//')\nPORT=\\${PORT:-3000}\n\necho \"[STEP] Health-probing the new process on port $PORT\"\nHEALTHY=0\nfor i in $(seq 1 15); do\n sleep 2\n CODE=$(curl -sS -o /tmp/selva-health.$$ -w \"%{http_code}\" --max-time 5 \"http://localhost:$PORT/api/health\" 2>/dev/null || echo \"000\")\n if [ \"$CODE\" = \"200\" ]; then\n HEALTHY=1\n echo \"[INFO] Health probe passed after \\${i} attempt(s)\"\n rm -f /tmp/selva-health.$$\n break\n fi\n echo \"[INFO] Probe attempt $i/15: HTTP $CODE — retrying\"\ndone\n\nif [ \"$HEALTHY\" = \"1\" ]; then\n echo \"[DONE] Update complete\"\n exit 0\nfi\n\n# ---------------------------------------------------------------------------\n# 7. Rollback path.\n# ---------------------------------------------------------------------------\necho \"[FATAL] New process failed health check after 30s\"\nif [ -f /tmp/selva-health.$$ ]; then\n echo \"[FATAL] Last response body:\"\n cat /tmp/selva-health.$$\n rm -f /tmp/selva-health.$$\nfi\n\nif [ -z \"$BEFORE\" ]; then\n echo \"[FATAL] No prior version recorded — cannot roll back automatically.\"\n echo \"[FATAL] EXIT trap will attempt to restart the current build anyway.\"\n exit 3\nfi\n\necho \"[STEP] Rolling back @selvajs/selva to $BEFORE\"\npm2 stop selva-compute >/dev/null 2>&1 || true\nif ! npm install --save \"@selvajs/selva@$BEFORE\"; then\n echo \"[FATAL] Rollback npm install failed — EXIT trap will retry restart.\"\n exit 4\nfi\n\npm2 start \"$ECOSYSTEM\" --update-env || true\nsleep 3\nROLLBACK_CODE=$(curl -sS -o /dev/null -w \"%{http_code}\" --max-time 5 \"http://localhost:$PORT/api/health\" 2>/dev/null || echo \"000\")\nif [ \"$ROLLBACK_CODE\" = \"200\" ]; then\n echo \"[DONE] Rolled back to $BEFORE — previous version is online\"\n exit 5\nfi\n\necho \"[FATAL] Rollback restart also failed health check (HTTP $ROLLBACK_CODE)\"\necho \"[FATAL] Manual recovery required. Check: pm2 logs selva-compute\"\nexit 6\n`;\n}\nfunction detectUpdatePlan() {\n if (private_env.INSTALL_DIR && existsSync(join(private_env.INSTALL_DIR, \"scripts\", \"update.sh\"))) {\n return {\n mode: \"git\",\n cwd: private_env.INSTALL_DIR,\n cmd: \"bash\",\n args: [join(private_env.INSTALL_DIR, \"scripts\", \"update.sh\")]\n };\n }\n let dir = process.cwd();\n for (let i = 0; i < 6; i++) {\n if (existsSync(join(dir, \"scripts\", \"update.sh\"))) {\n return {\n mode: \"git\",\n cwd: dir,\n cmd: \"bash\",\n args: [join(dir, \"scripts\", \"update.sh\")]\n };\n }\n if (existsSync(join(dir, \"node_modules\", \"@selvajs\", \"selva\", \"package.json\"))) {\n return {\n mode: \"npm\",\n cwd: dir,\n cmd: \"npm\",\n args: [\"update\", \"--save\", \"--prefer-online\", \"@selvajs/cli\", \"@selvajs/selva\"]\n };\n }\n const parent = join(dir, \"..\");\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\nconst POST = async ({ locals }) => {\n requirePermission(locals, \"instance_admin\");\n const plan = detectUpdatePlan();\n if (!plan) {\n return new Response(\n JSON.stringify({\n error: \"Couldn't determine how to update this deployment. Expected either scripts/update.sh (monorepo) or node_modules/@selvajs/selva (CLI scaffold) in the cwd or a parent.\"\n }),\n { status: 500, headers: { \"Content-Type\": \"application/json\" } }\n );\n }\n const stream = new ReadableStream({\n start(controller) {\n const encoder = new TextEncoder();\n function sendEvent(type, data) {\n const message = `data: ${JSON.stringify({ type, ...data })}\n\n`;\n controller.enqueue(encoder.encode(message));\n }\n try {\n const versionBefore = plan.mode === \"npm\" ? readRuntimeVersion(plan.cwd) : void 0;\n const prelude = [\n `[INFO] Update mode: ${plan.mode} (cwd: ${plan.cwd})`,\n ...versionBefore ? [`[INFO] Current @selvajs/selva: ${versionBefore}`] : []\n ];\n const runnerScript = plan.mode === \"git\" ? `#!/bin/bash\nexec ${shellQuote(plan.cmd)} ${plan.args.map(shellQuote).join(\" \")}\n` : buildNpmRunnerScript(\n plan.args,\n versionBefore,\n join(plan.cwd, \"ecosystem.config.cjs\")\n );\n const cmd = \"bash\";\n const args = [\"-c\", buildLauncher(runnerScript, prelude)];\n const localBin = join(plan.cwd, \"node_modules\", \".bin\");\n const child = spawn(cmd, args, {\n cwd: plan.cwd,\n env: {\n PATH: `${localBin}:${process.env.PATH ?? \"\"}`,\n HOME: process.env.HOME,\n INSTALL_DIR: plan.cwd\n },\n detached: true,\n stdio: [\"ignore\", \"pipe\", \"pipe\"]\n });\n child.unref();\n const timeout = setTimeout(\n () => {\n try {\n if (child.pid) process.kill(-child.pid, \"SIGTERM\");\n } catch {\n }\n sendEvent(\"log\", { data: \"[FATAL] Update timed out after 15 minutes\" });\n sendEvent(\"exit\", { code: -1 });\n controller.close();\n },\n 15 * 60 * 1e3\n );\n let restarting = false;\n child.stdout.on(\"data\", (data) => {\n const lines = data.toString().split(\"\\n\");\n for (const line of lines) {\n const clean = stripAnsi(line).trim();\n if (clean) {\n if (!restarting && (clean.includes(\"Applying action stopProcessId\") || clean.includes(\"Applying action restartProcessId\"))) {\n restarting = true;\n sendEvent(\"restarting\", { data: clean });\n } else {\n sendEvent(\"log\", { data: clean });\n }\n }\n }\n });\n child.stderr.on(\"data\", (data) => {\n const lines = data.toString().split(\"\\n\");\n for (const line of lines) {\n const clean = stripAnsi(line).trim();\n if (clean) {\n sendEvent(\"log\", { data: `[ERROR] ${clean}` });\n }\n }\n });\n child.on(\"close\", (code) => {\n clearTimeout(timeout);\n sendEvent(\"exit\", { code: code ?? -1 });\n controller.close();\n });\n child.on(\"error\", (err) => {\n clearTimeout(timeout);\n sendEvent(\"log\", { data: `[FATAL] ${err.message}` });\n sendEvent(\"exit\", { code: -1 });\n controller.close();\n });\n } catch (err) {\n sendEvent(\"log\", { data: `[FATAL] Failed to spawn process: ${err}` });\n sendEvent(\"exit\", { code: -1 });\n controller.close();\n }\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\"\n }\n });\n};\nconst GET = async ({ locals }) => {\n requirePermission(locals, \"instance_admin\");\n let body = \"\";\n try {\n body = readFileSync(UPDATE_LOG_PATH, \"utf8\");\n } catch {\n }\n return new Response(body, {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n \"Cache-Control\": \"no-store\"\n }\n });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAKA,MAAM,eAAe,GAAG,uBAAuB;AAC/C,SAAS,SAAS,CAAC,GAAG,EAAE;AACxB,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;AACjD;AACA,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACjC,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK;AAC1B,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM;AACzF,KAAK;AACL,IAAI,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACjE,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,MAAM;AACjB,EAAE;AACF;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC;AACA,SAAS,aAAa,CAAC,YAAY,EAAE,OAAO,GAAG,EAAE,EAAE;AACnD,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7E,EAAE,OAAO;AACT,QAAQ,EAAE,UAAU,CAAC,eAAe,CAAC;AACrC;AACA;AACA;;AAEA;AACA,EAAE,YAAY;AACd;AACA;;AAEA;AACA;AACA,EAAE,MAAM;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE;AACrE,EAAE,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAClE,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,IAAI,EAAE,CAAC;AAChD,EAAE,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC;AAC7C,EAAE,OAAO,CAAC;AACV;AACA,OAAO,EAAE,MAAM;AACf,UAAU,EAAE,SAAS;;AAErB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,EAAE,UAAU,CAAC;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA,SAAS,gBAAgB,GAAG;AAC5B,EAAE,IAAI,WAAW,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE;AACpG,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,GAAG,EAAE,WAAW,CAAC,WAAW;AAClC,MAAM,GAAG,EAAE,MAAM;AACjB,MAAM,IAAI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"}
1
+ {"version":3,"file":"_server.ts-CHvipMjS.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/system/update/_server.ts.js"],"sourcesContent":["import { spawn } from \"child_process\";\nimport { join } from \"path\";\nimport { readFileSync, existsSync } from \"fs\";\nimport { b as private_env } from \"../../../../../../chunks/shared-server.js\";\nimport { b as requirePermission } from \"../../../../../../chunks/access.server.js\";\nconst UPDATE_LOG_PATH = \"/tmp/selva-update.log\";\nfunction stripAnsi(str) {\n return str.replace(/\\x1B\\[[0-9;]*[mGKHF]/g, \"\");\n}\nfunction readRuntimeVersion(dir) {\n try {\n const pkg = JSON.parse(\n readFileSync(join(dir, \"node_modules\", \"@selvajs\", \"selva\", \"package.json\"), \"utf8\")\n );\n return typeof pkg.version === \"string\" ? pkg.version : void 0;\n } catch {\n return void 0;\n }\n}\nfunction shellQuote(s) {\n return `'${s.replace(/'/g, `'\\\\''`)}'`;\n}\nfunction buildLauncher(runnerScript, prelude = []) {\n const echoes = prelude.map((line) => `echo ${shellQuote(line)}`).join(\"\\n\");\n return `\nLOGFILE=${shellQuote(UPDATE_LOG_PATH)}\nRUNNER=/tmp/selva-update-runner.sh\nmkdir -p \"$(dirname \"$LOGFILE\")\"\n: > \"$LOGFILE\"\n\ncat > \"$RUNNER\" <<'__SELVA_RUNNER_EOF__'\n${runnerScript}\n__SELVA_RUNNER_EOF__\nchmod +x \"$RUNNER\"\n\ntrap '' PIPE\nexec > >(tee --output-error=warn-nopipe -a \"$LOGFILE\" 2>/dev/null) 2>&1\n${echoes}\n\n# Daemonize the runner so PM2's tree-kill of selva-compute can't reach it.\n# setsid puts it in a new session; the trailing & + disown + launcher exit\n# leaves the runner with PPID=1 once we're gone. stdin/stdout/stderr are\n# fully detached from this process (and from selva-compute's pipes).\nsetsid bash \"$RUNNER\" </dev/null >>\"$LOGFILE\" 2>&1 &\nRUNNER_PID=$!\ndisown\necho \"[INFO] Update runner started (PID $RUNNER_PID, log: $LOGFILE)\"\n\n# Small pause so the runner has time to print its first line before SSE\n# closes — otherwise the frontend's first poll might see no progress.\nsleep 1\nexit 0\n`;\n}\nfunction buildNpmRunnerScript(npmArgs, versionBefore, ecosystemPath) {\n const npmCommand = [\"npm\", ...npmArgs].map(shellQuote).join(\" \");\n const before = shellQuote(versionBefore ?? \"\");\n const ecosystem = shellQuote(ecosystemPath);\n return `#!/bin/bash\nset -o pipefail\nBEFORE=${before}\nECOSYSTEM=${ecosystem}\n\n# Last-resort safety net. If the script exits with the app NOT online for\n# any reason (crash, kill -9, network blip, npm hang past timeout), try to\n# bring it back from ecosystem.config.cjs before we go. The whole point of\n# this script is to update the app; leaving it down is the worst possible\n# outcome.\non_exit() {\n STATUS=$(pm2 jlist 2>/dev/null | node -e \"\n try {\n const list = JSON.parse(require('fs').readFileSync('/dev/stdin','utf8'));\n const app = list.find(p => p.name === 'selva-compute');\n process.stdout.write(app ? app.pm2_env.status : 'missing');\n } catch { process.stdout.write('error'); }\n \" 2>/dev/null || echo \"error\")\n if [ \"$STATUS\" != \"online\" ]; then\n echo \"[RECOVER] selva-compute is '$STATUS' — starting from ecosystem.config.cjs\"\n pm2 start \"$ECOSYSTEM\" --update-env >/dev/null 2>&1 || \\\\\n echo \"[RECOVER] pm2 start failed — manual intervention required: cd $(dirname \"$ECOSYSTEM\") && pm2 start ecosystem.config.cjs\"\n fi\n}\ntrap on_exit EXIT\n\n# ---------------------------------------------------------------------------\n# 1. Pre-flight: skip the whole cycle if there's nothing to install.\n# ---------------------------------------------------------------------------\n# Without this, clicking \"Update\" on an already-current instance triggered\n# a full stop/install/start cycle and a downtime window for no reason. Now\n# we just check the registry first.\necho \"[STEP] Checking npm registry for available updates\"\nLATEST=$(npm view @selvajs/selva version --silent 2>/dev/null || echo \"\")\nif [ -z \"$LATEST\" ]; then\n echo \"[WARN] Could not query npm registry — proceeding with update attempt anyway\"\nelif [ -n \"$BEFORE\" ] && [ \"$LATEST\" = \"$BEFORE\" ]; then\n echo \"[INFO] Already on the latest version ($BEFORE)\"\n echo \"[DONE] Nothing to do\"\n exit 0\nelse\n echo \"[INFO] Available: $BEFORE → $LATEST\"\nfi\n\n# ---------------------------------------------------------------------------\n# 2. Resync PM2 daemon if its in-memory version drifted from the CLI on disk.\n# ---------------------------------------------------------------------------\n# After a global pm2 upgrade the daemon keeps running its original version\n# while the CLI moves forward. Process commands then talk to a stale daemon\n# and the symptom is \"stop works, start never lands\". \\`pm2 update\\` dumps\n# processes, kills the daemon, respawns on the current CLI, restores the\n# dump. Doing it before we touch anything keeps the rest of the script\n# talking to a coherent daemon.\necho \"[STEP] Checking PM2 daemon/CLI version sync\"\nif pm2 ping 2>&1 | grep -q \"out-of-date\" || pm2 list 2>&1 | grep -q \"out-of-date\"; then\n echo \"[STEP] PM2 daemon is out-of-date — running 'pm2 update' to resync\"\n if ! pm2 update; then\n echo \"[FATAL] pm2 update failed — aborting before stopping the running app\"\n exit 1\n fi\n echo \"[INFO] PM2 daemon resynced\"\nfi\n\n# ---------------------------------------------------------------------------\n# 3. Stop selva-compute BEFORE npm rewrites build/.\n# ---------------------------------------------------------------------------\n# SvelteKit's node adapter lazy-imports chunks from build/server/chunks/ on\n# every request. Letting npm rewrite build/ while the old process is still\n# serving traffic = in-flight requests hit ERR_MODULE_NOT_FOUND for chunks\n# whose hash just changed under their feet. Stopping first is a brief\n# downtime window (~1-2s longer than restart-in-place) for a much smaller\n# blast radius.\n#\n# This is also where the SSE connection to the frontend dies — selva-compute\n# IS the SSE server. From here on, the user sees output via the log-file\n# polling fallback in the admin UI, not over SSE.\necho \"[STEP] Stopping selva-compute\"\nif ! pm2 stop selva-compute; then\n echo \"[WARN] pm2 stop failed — selva-compute may not be running yet. Continuing.\"\nfi\n\n# ---------------------------------------------------------------------------\n# 4. Run npm update.\n# ---------------------------------------------------------------------------\necho \"[STEP] Updating @selvajs/* packages\"\nif ! ${npmCommand}; then\n echo \"[FATAL] npm update failed — EXIT trap will restart the previous build\"\n exit 1\nfi\n\nAFTER=$(node -e \"try{console.log(require('./node_modules/@selvajs/selva/package.json').version)}catch(e){}\" 2>/dev/null)\necho \"[INFO] New @selvajs/selva: \\${AFTER:-unknown}\"\n\nif [ -n \"$BEFORE\" ] && [ \"$BEFORE\" = \"$AFTER\" ]; then\n echo \"[WARN] No version change ($BEFORE). Your npm cache may be stale.\"\n echo \"[WARN] Recover with:\"\n echo \"[WARN] npm cache clean --force\"\n echo \"[WARN] rm -rf node_modules package-lock.json\"\n echo \"[WARN] npm install --prefer-online\"\nfi\n\n# ---------------------------------------------------------------------------\n# 5. Start selva-compute with the new build.\n# ---------------------------------------------------------------------------\n# Start from ecosystem.config.cjs, NOT \\`pm2 start selva-compute\\` — the\n# latter requires selva-compute to already be in pm2's in-memory process\n# list. After a \\`pm2 update\\` (step 2) that's not guaranteed.\necho \"[STEP] Starting selva-compute with new build\"\nif ! pm2 start \"$ECOSYSTEM\" --update-env; then\n echo \"[FATAL] pm2 start failed — investigate with \\\\\\`pm2 logs selva-compute\\\\\\`\"\n exit 2\nfi\n\n# ---------------------------------------------------------------------------\n# 6. Health probe the new process.\n# ---------------------------------------------------------------------------\n# Read PORT from .env the same way scripts/update.sh does, so non-default\n# ports are respected.\nPORT=$(grep \"^PORT=\" .env 2>/dev/null \\\\\n | head -1 \\\\\n | cut -d'=' -f2 \\\\\n | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e 's/^[\"'\"'\"']//' -e 's/[\"'\"'\"']$//' -e 's/[[:space:]]*#.*//')\nPORT=\\${PORT:-3000}\n\necho \"[STEP] Health-probing the new process on port $PORT\"\nHEALTHY=0\nfor i in $(seq 1 15); do\n sleep 2\n CODE=$(curl -sS -o /tmp/selva-health.$$ -w \"%{http_code}\" --max-time 5 \"http://localhost:$PORT/api/health\" 2>/dev/null || echo \"000\")\n if [ \"$CODE\" = \"200\" ]; then\n HEALTHY=1\n echo \"[INFO] Health probe passed after \\${i} attempt(s)\"\n rm -f /tmp/selva-health.$$\n break\n fi\n echo \"[INFO] Probe attempt $i/15: HTTP $CODE — retrying\"\ndone\n\nif [ \"$HEALTHY\" = \"1\" ]; then\n echo \"[DONE] Update complete\"\n exit 0\nfi\n\n# ---------------------------------------------------------------------------\n# 7. Rollback path.\n# ---------------------------------------------------------------------------\necho \"[FATAL] New process failed health check after 30s\"\nif [ -f /tmp/selva-health.$$ ]; then\n echo \"[FATAL] Last response body:\"\n cat /tmp/selva-health.$$\n rm -f /tmp/selva-health.$$\nfi\n\nif [ -z \"$BEFORE\" ]; then\n echo \"[FATAL] No prior version recorded — cannot roll back automatically.\"\n echo \"[FATAL] EXIT trap will attempt to restart the current build anyway.\"\n exit 3\nfi\n\necho \"[STEP] Rolling back @selvajs/selva to $BEFORE\"\npm2 stop selva-compute >/dev/null 2>&1 || true\nif ! npm install --save \"@selvajs/selva@$BEFORE\"; then\n echo \"[FATAL] Rollback npm install failed — EXIT trap will retry restart.\"\n exit 4\nfi\n\npm2 start \"$ECOSYSTEM\" --update-env || true\nsleep 3\nROLLBACK_CODE=$(curl -sS -o /dev/null -w \"%{http_code}\" --max-time 5 \"http://localhost:$PORT/api/health\" 2>/dev/null || echo \"000\")\nif [ \"$ROLLBACK_CODE\" = \"200\" ]; then\n echo \"[DONE] Rolled back to $BEFORE — previous version is online\"\n exit 5\nfi\n\necho \"[FATAL] Rollback restart also failed health check (HTTP $ROLLBACK_CODE)\"\necho \"[FATAL] Manual recovery required. Check: pm2 logs selva-compute\"\nexit 6\n`;\n}\nfunction detectUpdatePlan() {\n if (private_env.INSTALL_DIR && existsSync(join(private_env.INSTALL_DIR, \"scripts\", \"update.sh\"))) {\n return {\n mode: \"git\",\n cwd: private_env.INSTALL_DIR,\n cmd: \"bash\",\n args: [join(private_env.INSTALL_DIR, \"scripts\", \"update.sh\")]\n };\n }\n let dir = process.cwd();\n for (let i = 0; i < 6; i++) {\n if (existsSync(join(dir, \"scripts\", \"update.sh\"))) {\n return {\n mode: \"git\",\n cwd: dir,\n cmd: \"bash\",\n args: [join(dir, \"scripts\", \"update.sh\")]\n };\n }\n if (existsSync(join(dir, \"node_modules\", \"@selvajs\", \"selva\", \"package.json\"))) {\n return {\n mode: \"npm\",\n cwd: dir,\n cmd: \"npm\",\n args: [\"update\", \"--save\", \"--prefer-online\", \"@selvajs/cli\", \"@selvajs/selva\"]\n };\n }\n const parent = join(dir, \"..\");\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\nconst POST = async ({ locals }) => {\n requirePermission(locals, \"instance_admin\");\n const plan = detectUpdatePlan();\n if (!plan) {\n return new Response(\n JSON.stringify({\n error: \"Couldn't determine how to update this deployment. Expected either scripts/update.sh (monorepo) or node_modules/@selvajs/selva (CLI scaffold) in the cwd or a parent.\"\n }),\n { status: 500, headers: { \"Content-Type\": \"application/json\" } }\n );\n }\n const stream = new ReadableStream({\n start(controller) {\n const encoder = new TextEncoder();\n function sendEvent(type, data) {\n const message = `data: ${JSON.stringify({ type, ...data })}\n\n`;\n controller.enqueue(encoder.encode(message));\n }\n try {\n const versionBefore = plan.mode === \"npm\" ? readRuntimeVersion(plan.cwd) : void 0;\n const prelude = [\n `[INFO] Update mode: ${plan.mode} (cwd: ${plan.cwd})`,\n ...versionBefore ? [`[INFO] Current @selvajs/selva: ${versionBefore}`] : []\n ];\n const runnerScript = plan.mode === \"git\" ? `#!/bin/bash\nexec ${shellQuote(plan.cmd)} ${plan.args.map(shellQuote).join(\" \")}\n` : buildNpmRunnerScript(\n plan.args,\n versionBefore,\n join(plan.cwd, \"ecosystem.config.cjs\")\n );\n const cmd = \"bash\";\n const args = [\"-c\", buildLauncher(runnerScript, prelude)];\n const localBin = join(plan.cwd, \"node_modules\", \".bin\");\n const child = spawn(cmd, args, {\n cwd: plan.cwd,\n env: {\n PATH: `${localBin}:${process.env.PATH ?? \"\"}`,\n HOME: process.env.HOME,\n INSTALL_DIR: plan.cwd\n },\n detached: true,\n stdio: [\"ignore\", \"pipe\", \"pipe\"]\n });\n child.unref();\n const timeout = setTimeout(\n () => {\n try {\n if (child.pid) process.kill(-child.pid, \"SIGTERM\");\n } catch {\n }\n sendEvent(\"log\", { data: \"[FATAL] Update timed out after 15 minutes\" });\n sendEvent(\"exit\", { code: -1 });\n controller.close();\n },\n 15 * 60 * 1e3\n );\n let restarting = false;\n child.stdout.on(\"data\", (data) => {\n const lines = data.toString().split(\"\\n\");\n for (const line of lines) {\n const clean = stripAnsi(line).trim();\n if (clean) {\n if (!restarting && (clean.includes(\"Applying action stopProcessId\") || clean.includes(\"Applying action restartProcessId\"))) {\n restarting = true;\n sendEvent(\"restarting\", { data: clean });\n } else {\n sendEvent(\"log\", { data: clean });\n }\n }\n }\n });\n child.stderr.on(\"data\", (data) => {\n const lines = data.toString().split(\"\\n\");\n for (const line of lines) {\n const clean = stripAnsi(line).trim();\n if (clean) {\n sendEvent(\"log\", { data: `[ERROR] ${clean}` });\n }\n }\n });\n child.on(\"close\", (code) => {\n clearTimeout(timeout);\n sendEvent(\"exit\", { code: code ?? -1 });\n controller.close();\n });\n child.on(\"error\", (err) => {\n clearTimeout(timeout);\n sendEvent(\"log\", { data: `[FATAL] ${err.message}` });\n sendEvent(\"exit\", { code: -1 });\n controller.close();\n });\n } catch (err) {\n sendEvent(\"log\", { data: `[FATAL] Failed to spawn process: ${err}` });\n sendEvent(\"exit\", { code: -1 });\n controller.close();\n }\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\"\n }\n });\n};\nconst GET = async ({ locals }) => {\n requirePermission(locals, \"instance_admin\");\n let body = \"\";\n try {\n body = readFileSync(UPDATE_LOG_PATH, \"utf8\");\n } catch {\n }\n return new Response(body, {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n \"Cache-Control\": \"no-store\"\n }\n });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAKA,MAAM,eAAe,GAAG,uBAAuB;AAC/C,SAAS,SAAS,CAAC,GAAG,EAAE;AACxB,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;AACjD;AACA,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACjC,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK;AAC1B,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM;AACzF,KAAK;AACL,IAAI,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACjE,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,MAAM;AACjB,EAAE;AACF;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC;AACA,SAAS,aAAa,CAAC,YAAY,EAAE,OAAO,GAAG,EAAE,EAAE;AACnD,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7E,EAAE,OAAO;AACT,QAAQ,EAAE,UAAU,CAAC,eAAe,CAAC;AACrC;AACA;AACA;;AAEA;AACA,EAAE,YAAY;AACd;AACA;;AAEA;AACA;AACA,EAAE,MAAM;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE;AACrE,EAAE,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAClE,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,IAAI,EAAE,CAAC;AAChD,EAAE,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC;AAC7C,EAAE,OAAO,CAAC;AACV;AACA,OAAO,EAAE,MAAM;AACf,UAAU,EAAE,SAAS;;AAErB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,EAAE,UAAU,CAAC;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA,SAAS,gBAAgB,GAAG;AAC5B,EAAE,IAAI,WAAW,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE;AACpG,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,GAAG,EAAE,WAAW,CAAC,WAAW;AAClC,MAAM,GAAG,EAAE,MAAM;AACjB,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC;AAClE,KAAK;AACL,EAAE;AACF,EAAE,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;AACzB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE;AACvD,MAAM,OAAO;AACb,QAAQ,IAAI,EAAE,KAAK;AACnB,QAAQ,GAAG,EAAE,GAAG;AAChB,QAAQ,GAAG,EAAE,MAAM;AACnB,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC;AAChD,OAAO;AACP,IAAI;AACJ,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE;AACpF,MAAM,OAAO;AACb,QAAQ,IAAI,EAAE,KAAK;AACnB,QAAQ,GAAG,EAAE,GAAG;AAChB,QAAQ,GAAG,EAAE,KAAK;AAClB,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB;AACtF,OAAO;AACP,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AAClC,IAAI,IAAI,MAAM,KAAK,GAAG,EAAE;AACxB,IAAI,GAAG,GAAG,MAAM;AAChB,EAAE;AACF,EAAE,OAAO,IAAI;AACb;AACK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACnC,EAAE,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAC7C,EAAE,MAAM,IAAI,GAAG,gBAAgB,EAAE;AACjC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO,IAAI,QAAQ;AACvB,MAAM,IAAI,CAAC,SAAS,CAAC;AACrB,QAAQ,KAAK,EAAE;AACf,OAAO,CAAC;AACR,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;AACpE,KAAK;AACL,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;AACpC,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACvC,MAAM,SAAS,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;AACrC,QAAQ,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;;AAElE,CAAC;AACD,QAAQ,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnD,MAAM;AACN,MAAM,IAAI;AACV,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACzF,QAAQ,MAAM,OAAO,GAAG;AACxB,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,UAAU,GAAG,aAAa,GAAG,CAAC,CAAC,+BAA+B,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG;AACnF,SAAS;AACT,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC;AACpD,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAClE,CAAC,GAAG,oBAAoB;AACxB,UAAU,IAAI,CAAC,IAAI;AACnB,UAAU,aAAa;AACvB,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB;AAC/C,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,MAAM;AAC1B,QAAQ,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACjE,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC;AAC/D,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;AACvC,UAAU,GAAG,EAAE,IAAI,CAAC,GAAG;AACvB,UAAU,GAAG,EAAE;AACf,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACzD,YAAY,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;AAClC,YAAY,WAAW,EAAE,IAAI,CAAC;AAC9B,WAAW;AACX,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;AAC1C,SAAS,CAAC;AACV,QAAQ,KAAK,CAAC,KAAK,EAAE;AACrB,QAAQ,MAAM,OAAO,GAAG,UAAU;AAClC,UAAU,MAAM;AAChB,YAAY,IAAI;AAChB,cAAc,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;AAChE,YAAY,CAAC,CAAC,MAAM;AACpB,YAAY;AACZ,YAAY,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,2CAA2C,EAAE,CAAC;AACnF,YAAY,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3C,YAAY,UAAU,CAAC,KAAK,EAAE;AAC9B,UAAU,CAAC;AACX,UAAU,EAAE,GAAG,EAAE,GAAG;AACpB,SAAS;AACT,QAAQ,IAAI,UAAU,GAAG,KAAK;AAC9B,QAAQ,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AAC1C,UAAU,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AACnD,UAAU,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACpC,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAChD,YAAY,IAAI,KAAK,EAAE;AACvB,cAAc,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC,EAAE;AAC1I,gBAAgB,UAAU,GAAG,IAAI;AACjC,gBAAgB,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxD,cAAc,CAAC,MAAM;AACrB,gBAAgB,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACjD,cAAc;AACd,YAAY;AACZ,UAAU;AACV,QAAQ,CAAC,CAAC;AACV,QAAQ,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AAC1C,UAAU,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AACnD,UAAU,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACpC,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAChD,YAAY,IAAI,KAAK,EAAE;AACvB,cAAc,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AAC5D,YAAY;AACZ,UAAU;AACV,QAAQ,CAAC,CAAC;AACV,QAAQ,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK;AACpC,UAAU,YAAY,CAAC,OAAO,CAAC;AAC/B,UAAU,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;AACjD,UAAU,UAAU,CAAC,KAAK,EAAE;AAC5B,QAAQ,CAAC,CAAC;AACV,QAAQ,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AACnC,UAAU,YAAY,CAAC,OAAO,CAAC;AAC/B,UAAU,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAC9D,UAAU,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACzC,UAAU,UAAU,CAAC,KAAK,EAAE;AAC5B,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC7E,QAAQ,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACvC,QAAQ,UAAU,CAAC,KAAK,EAAE;AAC1B,MAAM;AACN,IAAI;AACJ,GAAG,CAAC;AACJ,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC9B,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,mBAAmB;AACzC,MAAM,eAAe,EAAE,UAAU;AACjC,MAAM,UAAU,EAAE;AAClB;AACA,GAAG,CAAC;AACJ;AACK,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AAClC,EAAE,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAC7C,EAAE,IAAI,IAAI,GAAG,EAAE;AACf,EAAE,IAAI;AACN,IAAI,IAAI,GAAG,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;AAChD,EAAE,CAAC,CAAC,MAAM;AACV,EAAE;AACF,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC5B,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,2BAA2B;AACjD,MAAM,eAAe,EAAE;AACvB;AACA,GAAG,CAAC;AACJ;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { error, json } from '@sveltejs/kit';
2
- import { f as flag, p as providers } from './providers.server-Duyx-08B.js';
3
- import { g as requireEditableDefinition } from './access.server-DVG3xnR_.js';
4
- import { h as handleApiError } from './api-errors-DGHmIOGJ.js';
2
+ import { f as flag, p as providers } from './providers.server-gJvnJT_K.js';
3
+ import { g as requireEditableDefinition } from './access.server-DGKSuoRH.js';
4
+ import { h as handleApiError } from './api-errors-DSza0CJv.js';
5
5
  import { G as GuidSchema } from './context-9tV9WxQ5.js';
6
6
  import './shared-server-DaWdgxVh.js';
7
7
  import 'node:url';
@@ -34,4 +34,4 @@ const DELETE = async ({ params, locals }) => {
34
34
  };
35
35
 
36
36
  export { DELETE };
37
- //# sourceMappingURL=_server.ts-1HIleN3S.js.map
37
+ //# sourceMappingURL=_server.ts-CIAkL4VM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-1HIleN3S.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/share-links/_linkId_/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { m as flag, p as providers } from \"../../../../../../../chunks/providers.server.js\";\nimport { g as requireEditableDefinition } from \"../../../../../../../chunks/access.server.js\";\nimport { h as handleApiError } from \"../../../../../../../chunks/api-errors.js\";\nimport { G as GuidSchema } from \"../../../../../../../chunks/context.js\";\nconst DELETE = async ({ params, locals }) => {\n if (!flag(\"ENABLE_SHARING\")) {\n throw error(404, \"Share links are disabled on this instance (ENABLE_SHARING).\");\n }\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const linkParsed = GuidSchema.safeParse(params.linkId);\n if (!linkParsed.success) throw error(400, \"Invalid or missing link ID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n const existing = await providers.data.shareLinks.getById(ctx, linkParsed.data);\n if (!existing || existing.definitionId !== guidParsed.data) {\n throw error(404, \"Share link not found.\");\n }\n await providers.data.shareLinks.revoke(ctx, linkParsed.data);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to revoke share link\");\n }\n};\nexport {\n DELETE\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAKK,MAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC7C,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC/B,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,6DAA6D,CAAC;AACnF,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACtE,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AACxD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,4BAA4B,CAAC;AACzE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;AAC1E,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAClF,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,KAAK,UAAU,CAAC,IAAI,EAAE;AAChE,MAAM,MAAM,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC;AAC/C,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAChE,IAAI,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClC,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,6BAA6B,CAAC;AACtD,EAAE;AACF;;;;"}
1
+ {"version":3,"file":"_server.ts-CIAkL4VM.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/share-links/_linkId_/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { f as flag, p as providers } from \"../../../../../../../chunks/providers.server.js\";\nimport { g as requireEditableDefinition } from \"../../../../../../../chunks/access.server.js\";\nimport { h as handleApiError } from \"../../../../../../../chunks/api-errors.js\";\nimport { G as GuidSchema } from \"../../../../../../../chunks/context.js\";\nconst DELETE = async ({ params, locals }) => {\n if (!flag(\"ENABLE_SHARING\")) {\n throw error(404, \"Share links are disabled on this instance (ENABLE_SHARING).\");\n }\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const linkParsed = GuidSchema.safeParse(params.linkId);\n if (!linkParsed.success) throw error(400, \"Invalid or missing link ID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n const existing = await providers.data.shareLinks.getById(ctx, linkParsed.data);\n if (!existing || existing.definitionId !== guidParsed.data) {\n throw error(404, \"Share link not found.\");\n }\n await providers.data.shareLinks.revoke(ctx, linkParsed.data);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to revoke share link\");\n }\n};\nexport {\n DELETE\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAKK,MAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC7C,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC/B,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,6DAA6D,CAAC;AACnF,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACtE,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AACxD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,4BAA4B,CAAC;AACzE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;AAC1E,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAClF,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,KAAK,UAAU,CAAC,IAAI,EAAE;AAChE,MAAM,MAAM,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC;AAC/C,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAChE,IAAI,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClC,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,6BAA6B,CAAC;AACtD,EAAE;AACF;;;;"}
@@ -1,9 +1,9 @@
1
- import { json, error } from '@sveltejs/kit';
1
+ import { error, json } from '@sveltejs/kit';
2
2
  import { z } from 'zod';
3
3
  import { randomUUID } from 'node:crypto';
4
- import { c as getOrganizationProvider, h as getProjectProvider, P as ProviderError } from './providers.server-Duyx-08B.js';
5
- import { a as requireInstanceAdmin } from './access.server-DVG3xnR_.js';
6
- import { h as handleApiError, t as throwZodError } from './api-errors-DGHmIOGJ.js';
4
+ import { f as flag, c as getOrganizationProvider, h as getProjectProvider, P as ProviderError } from './providers.server-gJvnJT_K.js';
5
+ import { a as requireInstanceAdmin } from './access.server-DGKSuoRH.js';
6
+ import { h as handleApiError, t as throwZodError } from './api-errors-DSza0CJv.js';
7
7
  import { s as slugify } from './slug-BGuFQjqe.js';
8
8
  import { S as SYSTEM_CONTEXT } from './context-9tV9WxQ5.js';
9
9
  import './shared-server-DaWdgxVh.js';
@@ -34,6 +34,7 @@ const CreatePlatformProjectBody = z.object({
34
34
  });
35
35
  const GET = async ({ locals }) => {
36
36
  requireInstanceAdmin(locals);
37
+ if (!flag("ENABLE_PLATFORM_PROJECTS")) throw error(404, "Not found");
37
38
  try {
38
39
  const orgs = await getOrganizationProvider().listOrgs(SYSTEM_CONTEXT, { limit: 1e3 });
39
40
  const all = [];
@@ -52,6 +53,7 @@ const GET = async ({ locals }) => {
52
53
  };
53
54
  const POST = async ({ request, locals }) => {
54
55
  const user = requireInstanceAdmin(locals);
56
+ if (!flag("ENABLE_PLATFORM_PROJECTS")) throw error(404, "Not found");
55
57
  const ctx = locals.ctx;
56
58
  const body = await request.json().catch(() => null);
57
59
  const parsed = CreatePlatformProjectBody.safeParse(body);
@@ -98,4 +100,4 @@ const POST = async ({ request, locals }) => {
98
100
  };
99
101
 
100
102
  export { GET, POST };
101
- //# sourceMappingURL=_server.ts-gCCprE5T.js.map
103
+ //# sourceMappingURL=_server.ts-CKENL0Fr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CKENL0Fr.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/projects/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { randomUUID } from \"node:crypto\";\nimport { f as flag, a as getOrganizationProvider, b as getProjectProvider, P as ProviderError } from \"../../../../../chunks/providers.server.js\";\nimport { a as requireInstanceAdmin } from \"../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../chunks/api-errors.js\";\nimport { s as slugify } from \"../../../../../chunks/slug.js\";\nimport { S as SYSTEM_CONTEXT } from \"../../../../../chunks/context.js\";\nconst MAX_SLUG_ATTEMPTS = 25;\nfunction isSlugConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_id_slug_key/.test(err.message);\n}\nfunction isNameConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_name_unique/.test(err.message);\n}\nconst CreatePlatformProjectBody = z.object({\n name: z.string().min(1, \"Project name is required\").max(128).trim(),\n description: z.string().max(2e3).optional(),\n /**\n * Org that physically hosts the project. Storage routing and compute\n * resolution use this — but org membership in this org does NOT grant\n * access. Visibility = 'platform' overrides those defaults.\n *\n * If omitted, the platform admin's first available org is used.\n */\n orgId: z.string().uuid().optional()\n});\nconst GET = async ({ locals }) => {\n requireInstanceAdmin(locals);\n if (!flag(\"ENABLE_PLATFORM_PROJECTS\")) throw error(404, \"Not found\");\n try {\n const orgs = await getOrganizationProvider().listOrgs(SYSTEM_CONTEXT, { limit: 1e3 });\n const all = [];\n for (const org of orgs.items) {\n const page = await getProjectProvider().listProjects(SYSTEM_CONTEXT, org.id, {\n limit: 1e3\n });\n for (const p of page.items) {\n if (p.visibility === \"platform\") all.push(p);\n }\n }\n return json({ projects: all });\n } catch (err) {\n handleApiError(err, \"Failed to list platform projects\");\n }\n};\nconst POST = async ({ request, locals }) => {\n const user = requireInstanceAdmin(locals);\n if (!flag(\"ENABLE_PLATFORM_PROJECTS\")) throw error(404, \"Not found\");\n const ctx = locals.ctx;\n const body = await request.json().catch(() => null);\n const parsed = CreatePlatformProjectBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const hostOrgId = parsed.data.orgId ?? ctx.actingOrgId;\n if (!hostOrgId) {\n throw error(400, \"A host orgId is required (no active organization in context).\");\n }\n const hostOrg = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, hostOrgId);\n if (!hostOrg) throw error(400, `Host organization '${hostOrgId}' not found.`);\n const projectStore = getProjectProvider();\n const baseSlug = slugify(parsed.data.name) || \"platform-project\";\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const projectId = randomUUID();\n for (let attempt = 0; attempt < MAX_SLUG_ATTEMPTS; attempt++) {\n const slug = attempt === 0 ? baseSlug : `${baseSlug}-${attempt + 1}`;\n const project = {\n id: projectId,\n orgId: hostOrgId,\n name: parsed.data.name,\n slug,\n description: parsed.data.description,\n visibility: \"platform\",\n ownerId: user.id,\n createdBy: user.id,\n updatedBy: user.id,\n autoJoinOnUpload: false,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n try {\n await projectStore.createProject(SYSTEM_CONTEXT, project);\n return json(project, { status: 201 });\n } catch (err) {\n if (isNameConflict(err)) {\n throw error(409, \"A project with that name already exists in the host organization.\");\n }\n if (isSlugConflict(err)) continue;\n handleApiError(err, \"Failed to create platform project\");\n }\n }\n throw error(409, \"Could not pick a unique project slug after several attempts.\");\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { error, json } from '@sveltejs/kit';
2
- import { h as getProjectProvider } from './providers.server-Duyx-08B.js';
3
- import { s as requireCanReclaim } from './access.server-DVG3xnR_.js';
4
- import { h as handleApiError } from './api-errors-DGHmIOGJ.js';
2
+ import { h as getProjectProvider } from './providers.server-gJvnJT_K.js';
3
+ import { s as requireCanReclaim } from './access.server-DGKSuoRH.js';
4
+ import { h as handleApiError } from './api-errors-DSza0CJv.js';
5
5
  import './shared-server-DaWdgxVh.js';
6
6
  import 'node:url';
7
7
  import 'node:path';
@@ -35,4 +35,4 @@ const POST = async ({ params, locals }) => {
35
35
  };
36
36
 
37
37
  export { POST };
38
- //# sourceMappingURL=_server.ts-BbzbsVfr.js.map
38
+ //# sourceMappingURL=_server.ts-CKtVrr5P.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-BbzbsVfr.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_id_/reclaim/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { b as getProjectProvider } from \"../../../../../../chunks/providers.server.js\";\nimport { s as requireCanReclaim } from \"../../../../../../chunks/access.server.js\";\nimport { h as handleApiError } from \"../../../../../../chunks/api-errors.js\";\nconst POST = async ({ params, locals }) => {\n const { id } = params;\n if (!id) throw error(400, \"Missing project ID\");\n const { user, ctx } = await requireCanReclaim(locals, id);\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const member = {\n projectId: id,\n userId: user.id,\n role: \"owner\",\n joinedAt: now,\n updatedAt: now,\n updatedBy: ctx.userId || user.id,\n deletedAt: null\n };\n try {\n await getProjectProvider().addProjectMember(ctx, member);\n return json({ success: true, member });\n } catch (err) {\n handleApiError(err, \"Failed to reclaim project\");\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAIK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC3C,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AACvB,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC;AACjD,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;AAC3D,EAAE,MAAM,GAAG,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACxD,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,MAAM,EAAE,IAAI,CAAC,EAAE;AACnB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;AACpC,IAAI,SAAS,EAAE;AACf,GAAG;AACH,EAAE,IAAI;AACN,IAAI,MAAM,kBAAkB,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC;AAC5D,IAAI,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1C,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,2BAA2B,CAAC;AACpD,EAAE;AACF;;;;"}
1
+ {"version":3,"file":"_server.ts-CKtVrr5P.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_id_/reclaim/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { b as getProjectProvider } from \"../../../../../../chunks/providers.server.js\";\nimport { s as requireCanReclaim } from \"../../../../../../chunks/access.server.js\";\nimport { h as handleApiError } from \"../../../../../../chunks/api-errors.js\";\nconst POST = async ({ params, locals }) => {\n const { id } = params;\n if (!id) throw error(400, \"Missing project ID\");\n const { user, ctx } = await requireCanReclaim(locals, id);\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const member = {\n projectId: id,\n userId: user.id,\n role: \"owner\",\n joinedAt: now,\n updatedAt: now,\n updatedBy: ctx.userId || user.id,\n deletedAt: null\n };\n try {\n await getProjectProvider().addProjectMember(ctx, member);\n return json({ success: true, member });\n } catch (err) {\n handleApiError(err, \"Failed to reclaim project\");\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAIK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC3C,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AACvB,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC;AACjD,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;AAC3D,EAAE,MAAM,GAAG,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACxD,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,MAAM,EAAE,IAAI,CAAC,EAAE;AACnB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;AACpC,IAAI,SAAS,EAAE;AACf,GAAG;AACH,EAAE,IAAI;AACN,IAAI,MAAM,kBAAkB,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC;AAC5D,IAAI,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1C,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,2BAA2B,CAAC;AACpD,EAAE;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { error } from '@sveltejs/kit';
2
- import { i as getDefinitionMeta, m as getStorageProvider, s as definitionPaths } from './providers.server-Duyx-08B.js';
3
- import { h as requireCanViewProject } from './access.server-DVG3xnR_.js';
2
+ import { i as getDefinitionMeta, m as getStorageProvider, s as definitionPaths } from './providers.server-gJvnJT_K.js';
3
+ import { h as requireCanViewProject } from './access.server-DGKSuoRH.js';
4
4
  import { C as COVER_IMAGE_CONTENT_TYPES } from './types-DxzJoaA4.js';
5
5
  import { G as GuidSchema } from './context-9tV9WxQ5.js';
6
6
  import './computeLimits-FIJ-Mzn4.js';
@@ -11,7 +11,7 @@ import 'node:fs';
11
11
  import 'node:crypto';
12
12
  import 'node:fs/promises';
13
13
  import '@supabase/supabase-js';
14
- import './api-errors-DGHmIOGJ.js';
14
+ import './api-errors-DSza0CJv.js';
15
15
  import 'zod';
16
16
 
17
17
  const GET = async ({ params, locals }) => {
@@ -36,4 +36,4 @@ const GET = async ({ params, locals }) => {
36
36
  };
37
37
 
38
38
  export { GET };
39
- //# sourceMappingURL=_server.ts-CN851WSH.js.map
39
+ //# sourceMappingURL=_server.ts-CS_06-Es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-CN851WSH.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/image/_filename_/_server.ts.js"],"sourcesContent":["import { error } from \"@sveltejs/kit\";\nimport { k as getDefinitionMeta, i as getStorageProvider, l as definitionPaths } from \"../../../../../../../chunks/providers.server.js\";\nimport { h as requireCanViewProject } from \"../../../../../../../chunks/access.server.js\";\nimport { C as COVER_IMAGE_CONTENT_TYPES } from \"../../../../../../../chunks/types.js\";\nimport { G as GuidSchema } from \"../../../../../../../chunks/context.js\";\nimport \"../../../../../../../chunks/computeLimits.js\";\nconst GET = async ({ params, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid GUID\");\n const guid = guidParsed.data;\n const ctx = locals.ctx;\n const record = await getDefinitionMeta().get(ctx, guid);\n if (!record?.coverImage) throw error(404, \"Image not found\");\n await requireCanViewProject(locals, record.projectId);\n const storedFilename = record.coverImage.split(\"/\").pop() ?? \"cover.webp\";\n const ext = storedFilename.substring(storedFilename.lastIndexOf(\".\")).toLowerCase();\n const contentType = COVER_IMAGE_CONTENT_TYPES[ext] ?? \"image/webp\";\n const bytes = await getStorageProvider().get(definitionPaths.image(guid));\n if (!bytes) throw error(404, \"Image not found\");\n return new Response(Buffer.from(bytes), {\n headers: {\n \"Content-Type\": contentType,\n \"Cache-Control\": \"public, max-age=3600\"\n }\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAMK,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC1C,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AAC3D,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI;AAC9B,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AACzD,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC;AAC9D,EAAE,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AACvD,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,YAAY;AAC3E,EAAE,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;AACrF,EAAE,MAAM,WAAW,GAAG,yBAAyB,CAAC,GAAG,CAAC,IAAI,YAAY;AACpE,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3E,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC;AACjD,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1C,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,WAAW;AACjC,MAAM,eAAe,EAAE;AACvB;AACA,GAAG,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"_server.ts-CS_06-Es.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/image/_filename_/_server.ts.js"],"sourcesContent":["import { error } from \"@sveltejs/kit\";\nimport { l as getDefinitionMeta, j as getStorageProvider, m as definitionPaths } from \"../../../../../../../chunks/providers.server.js\";\nimport { h as requireCanViewProject } from \"../../../../../../../chunks/access.server.js\";\nimport { C as COVER_IMAGE_CONTENT_TYPES } from \"../../../../../../../chunks/types.js\";\nimport { G as GuidSchema } from \"../../../../../../../chunks/context.js\";\nimport \"../../../../../../../chunks/computeLimits.js\";\nconst GET = async ({ params, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid GUID\");\n const guid = guidParsed.data;\n const ctx = locals.ctx;\n const record = await getDefinitionMeta().get(ctx, guid);\n if (!record?.coverImage) throw error(404, \"Image not found\");\n await requireCanViewProject(locals, record.projectId);\n const storedFilename = record.coverImage.split(\"/\").pop() ?? \"cover.webp\";\n const ext = storedFilename.substring(storedFilename.lastIndexOf(\".\")).toLowerCase();\n const contentType = COVER_IMAGE_CONTENT_TYPES[ext] ?? \"image/webp\";\n const bytes = await getStorageProvider().get(definitionPaths.image(guid));\n if (!bytes) throw error(404, \"Image not found\");\n return new Response(Buffer.from(bytes), {\n headers: {\n \"Content-Type\": contentType,\n \"Cache-Control\": \"public, max-age=3600\"\n }\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAMK,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC1C,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AAC3D,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI;AAC9B,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AACzD,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC;AAC9D,EAAE,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AACvD,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,YAAY;AAC3E,EAAE,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;AACrF,EAAE,MAAM,WAAW,GAAG,yBAAyB,CAAC,GAAG,CAAC,IAAI,YAAY;AACpE,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3E,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC;AACjD,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1C,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,WAAW;AACjC,MAAM,eAAe,EAAE;AACvB;AACA,GAAG,CAAC;AACJ;;;;"}
@@ -1,11 +1,11 @@
1
- import { r as resolveServerForOrg } from './resolve.server-BwfjDyaT.js';
2
- import { f as requireCanCreateDefinition } from './access.server-DVG3xnR_.js';
1
+ import { r as resolveServerForOrg } from './resolve.server-Ca9AsrIQ.js';
2
+ import { f as requireCanCreateDefinition } from './access.server-DGKSuoRH.js';
3
3
  import { error } from '@sveltejs/kit';
4
4
  import { camelcaseKeys } from '@selvajs/compute/core';
5
5
  import './context-9tV9WxQ5.js';
6
6
  import 'zod';
7
- import './utils2-QuTTpZq0.js';
8
- import './providers.server-Duyx-08B.js';
7
+ import './utils2-DfCIUv4X.js';
8
+ import './providers.server-gJvnJT_K.js';
9
9
  import './shared-server-DaWdgxVh.js';
10
10
  import 'node:url';
11
11
  import 'node:path';
@@ -13,7 +13,7 @@ import 'node:fs';
13
13
  import 'node:crypto';
14
14
  import 'node:fs/promises';
15
15
  import '@supabase/supabase-js';
16
- import './api-errors-DGHmIOGJ.js';
16
+ import './api-errors-DSza0CJv.js';
17
17
 
18
18
  const POST = async ({ request, locals, url }) => {
19
19
  const projectId = url.searchParams.get("projectId");
@@ -49,4 +49,4 @@ const POST = async ({ request, locals, url }) => {
49
49
  };
50
50
 
51
51
  export { POST };
52
- //# sourceMappingURL=_server.ts-Dnqx5-qU.js.map
52
+ //# sourceMappingURL=_server.ts-D5nruaeK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-Dnqx5-qU.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/compute/schema/_server.ts.js"],"sourcesContent":["import { r as resolveServerForOrg } from \"../../../../../chunks/resolve.server.js\";\nimport { f as requireCanCreateDefinition } from \"../../../../../chunks/access.server.js\";\nimport { error } from \"@sveltejs/kit\";\nimport { camelcaseKeys } from \"@selvajs/compute/core\";\nconst POST = async ({ request, locals, url }) => {\n const projectId = url.searchParams.get(\"projectId\");\n if (!projectId) {\n throw error(400, \"projectId query parameter is required\");\n }\n const { project } = await requireCanCreateDefinition(locals, projectId);\n const server = await resolveServerForOrg(locals.ctx, project.orgId);\n const formData = await request.formData();\n const schemaUrl = new URL(\"/grasshopper/schema\", server.serverUrl).toString();\n const headers = {};\n if (server.apiKey) {\n headers[\"RhinoComputeKey\"] = server.apiKey;\n }\n let response;\n try {\n response = await fetch(schemaUrl, { method: \"POST\", headers, body: formData });\n } catch {\n throw error(503, \"Compute server is unreachable\");\n }\n if (!response.ok) {\n throw error(response.status, \"Compute server error\");\n }\n const raw = await response.json();\n const results = camelcaseKeys(Array.isArray(raw) ? raw : [raw]);\n const schemas = results.flatMap((r) => r.schemas ?? []);\n if (schemas.length === 0) {\n throw error(422, \"No schemas found in definition\");\n }\n return new Response(JSON.stringify(schemas), {\n headers: { \"Content-Type\": \"application/json\" }\n });\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIK,MAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACjD,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;AACrD,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,uCAAuC,CAAC;AAC7D,EAAE;AACF,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC;AACzE,EAAE,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;AACrE,EAAE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;AAC3C,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;AAC/E,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM;AAC9C,EAAE;AACF,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI;AACN,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClF,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,+BAA+B,CAAC;AACrD,EAAE;AACF,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpB,IAAI,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;AACxD,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACjE,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AACzD,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,gCAAgC,CAAC;AACtD,EAAE;AACF,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC/C,IAAI,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AACjD,GAAG,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"_server.ts-D5nruaeK.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/compute/schema/_server.ts.js"],"sourcesContent":["import { r as resolveServerForOrg } from \"../../../../../chunks/resolve.server.js\";\nimport { f as requireCanCreateDefinition } from \"../../../../../chunks/access.server.js\";\nimport { error } from \"@sveltejs/kit\";\nimport { camelcaseKeys } from \"@selvajs/compute/core\";\nconst POST = async ({ request, locals, url }) => {\n const projectId = url.searchParams.get(\"projectId\");\n if (!projectId) {\n throw error(400, \"projectId query parameter is required\");\n }\n const { project } = await requireCanCreateDefinition(locals, projectId);\n const server = await resolveServerForOrg(locals.ctx, project.orgId);\n const formData = await request.formData();\n const schemaUrl = new URL(\"/grasshopper/schema\", server.serverUrl).toString();\n const headers = {};\n if (server.apiKey) {\n headers[\"RhinoComputeKey\"] = server.apiKey;\n }\n let response;\n try {\n response = await fetch(schemaUrl, { method: \"POST\", headers, body: formData });\n } catch {\n throw error(503, \"Compute server is unreachable\");\n }\n if (!response.ok) {\n throw error(response.status, \"Compute server error\");\n }\n const raw = await response.json();\n const results = camelcaseKeys(Array.isArray(raw) ? raw : [raw]);\n const schemas = results.flatMap((r) => r.schemas ?? []);\n if (schemas.length === 0) {\n throw error(422, \"No schemas found in definition\");\n }\n return new Response(JSON.stringify(schemas), {\n headers: { \"Content-Type\": \"application/json\" }\n });\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIK,MAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACjD,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;AACrD,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,uCAAuC,CAAC;AAC7D,EAAE;AACF,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC;AACzE,EAAE,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;AACrE,EAAE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;AAC3C,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;AAC/E,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM;AAC9C,EAAE;AACF,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI;AACN,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClF,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,+BAA+B,CAAC;AACrD,EAAE;AACF,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpB,IAAI,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;AACxD,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACjE,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AACzD,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,gCAAgC,CAAC;AACtD,EAAE;AACF,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC/C,IAAI,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AACjD,GAAG,CAAC;AACJ;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { error, redirect } from '@sveltejs/kit';
2
- import { g as getAuthProvider } from './providers.server-Duyx-08B.js';
3
- import { b as bootstrapUserSession } from './auth-bootstrap.server-dy8_QSAP.js';
2
+ import { g as getAuthProvider } from './providers.server-gJvnJT_K.js';
3
+ import { b as bootstrapUserSession } from './auth-bootstrap.server-YBvyz9i1.js';
4
4
  import { s as setSessionCookie, a as setRefreshCookie, d as safeRedirectTarget } from './admin-auth.server-CdTfBMI5.js';
5
5
  import './shared-server-DaWdgxVh.js';
6
6
  import 'node:url';
@@ -30,4 +30,4 @@ const GET = async ({ url, cookies }) => {
30
30
  };
31
31
 
32
32
  export { GET };
33
- //# sourceMappingURL=_server.ts-C_s5gcH-.js.map
33
+ //# sourceMappingURL=_server.ts-DLHHpGFa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-C_s5gcH-.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/auth/supabase/callback/_server.ts.js"],"sourcesContent":["import { error, redirect } from \"@sveltejs/kit\";\nimport { e as getAuthProvider } from \"../../../../../chunks/providers.server.js\";\nimport { b as bootstrapUserSession } from \"../../../../../chunks/auth-bootstrap.server.js\";\nimport { s as setSessionCookie, a as setRefreshCookie, b as safeRedirectTarget } from \"../../../../../chunks/admin-auth.server.js\";\nconst GET = async ({ url, cookies }) => {\n const code = url.searchParams.get(\"code\");\n if (!code) throw error(400, \"Missing authorization code\");\n const oauth = getAuthProvider().oauth;\n if (!oauth) {\n throw error(501, \"OAuth is not supported by the configured auth provider.\");\n }\n const result = await oauth.exchangeOAuthCode(code);\n if (!result) throw error(401, \"OAuth exchange failed\");\n await bootstrapUserSession(result.user);\n setSessionCookie(cookies, result.sessionToken);\n setRefreshCookie(cookies, result.refreshToken);\n const dest = safeRedirectTarget(url.searchParams.get(\"redirectTo\"), \"/library\");\n redirect(303, dest);\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIK,MAAC,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK;AACxC,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3C,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,4BAA4B,CAAC;AAC3D,EAAE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC,KAAK;AACvC,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,yDAAyD,CAAC;AAC/E,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACpD,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC;AACxD,EAAE,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AAChD,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AAChD,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;AACjF,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AACrB;;;;"}
1
+ {"version":3,"file":"_server.ts-DLHHpGFa.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/auth/supabase/callback/_server.ts.js"],"sourcesContent":["import { error, redirect } from \"@sveltejs/kit\";\nimport { e as getAuthProvider } from \"../../../../../chunks/providers.server.js\";\nimport { b as bootstrapUserSession } from \"../../../../../chunks/auth-bootstrap.server.js\";\nimport { s as setSessionCookie, a as setRefreshCookie, b as safeRedirectTarget } from \"../../../../../chunks/admin-auth.server.js\";\nconst GET = async ({ url, cookies }) => {\n const code = url.searchParams.get(\"code\");\n if (!code) throw error(400, \"Missing authorization code\");\n const oauth = getAuthProvider().oauth;\n if (!oauth) {\n throw error(501, \"OAuth is not supported by the configured auth provider.\");\n }\n const result = await oauth.exchangeOAuthCode(code);\n if (!result) throw error(401, \"OAuth exchange failed\");\n await bootstrapUserSession(result.user);\n setSessionCookie(cookies, result.sessionToken);\n setRefreshCookie(cookies, result.refreshToken);\n const dest = safeRedirectTarget(url.searchParams.get(\"redirectTo\"), \"/library\");\n redirect(303, dest);\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIK,MAAC,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK;AACxC,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3C,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,4BAA4B,CAAC;AAC3D,EAAE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC,KAAK;AACvC,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,yDAAyD,CAAC;AAC/E,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACpD,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC;AACxD,EAAE,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AAChD,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AAChD,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;AACjF,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AACrB;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { error, json } from '@sveltejs/kit';
2
- import { r as definitionService } from './providers.server-Duyx-08B.js';
3
- import { g as requireEditableDefinition } from './access.server-DVG3xnR_.js';
4
- import { h as handleApiError, t as throwZodError } from './api-errors-DGHmIOGJ.js';
2
+ import { r as definitionService } from './providers.server-gJvnJT_K.js';
3
+ import { g as requireEditableDefinition } from './access.server-DGKSuoRH.js';
4
+ import { h as handleApiError, t as throwZodError } from './api-errors-DSza0CJv.js';
5
5
  import { G as GH_EXTENSIONS } from './types-DxzJoaA4.js';
6
6
  import { G as GuidSchema, c as UpdateMetadataInputSchema } from './context-9tV9WxQ5.js';
7
7
  import { d as MAX_GH_FILE_SIZE } from './computeLimits-FIJ-Mzn4.js';
@@ -73,4 +73,4 @@ const PUT = async ({ params, request, locals }) => {
73
73
  };
74
74
 
75
75
  export { DELETE, POST, PUT };
76
- //# sourceMappingURL=_server.ts-CbQpXSqd.js.map
76
+ //# sourceMappingURL=_server.ts-DMSCxMRc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-CbQpXSqd.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { j as definitionService } from \"../../../../../chunks/providers.server.js\";\nimport { g as requireEditableDefinition } from \"../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../chunks/api-errors.js\";\nimport { G as GH_EXTENSIONS } from \"../../../../../chunks/types.js\";\nimport { G as GuidSchema, b as UpdateMetadataInputSchema } from \"../../../../../chunks/context.js\";\nimport { d as MAX_GH_FILE_SIZE } from \"../../../../../chunks/computeLimits.js\";\nconst POST = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const formData = await request.formData();\n const file = formData.get(\"file\");\n if (!(file instanceof File)) throw error(400, \"A Grasshopper (.gh or .ghx) file is required\");\n const changeNoteRaw = formData.get(\"changeNote\");\n const changeNote = typeof changeNoteRaw === \"string\" ? changeNoteRaw.slice(0, 1e3) : void 0;\n const ext = file.name.slice(file.name.lastIndexOf(\".\")).toLowerCase();\n if (!GH_EXTENSIONS.includes(ext)) {\n throw error(400, `File type not allowed. Allowed: ${GH_EXTENSIONS.join(\", \")}`);\n }\n if (file.size > MAX_GH_FILE_SIZE) {\n throw error(400, `File too large. Max size: ${MAX_GH_FILE_SIZE / (1024 * 1024)} MB`);\n }\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const fileExt = ext.slice(1);\n try {\n const data = new Uint8Array(await file.arrayBuffer());\n const version = await definitionService.uploadVersion(\n ctx,\n guidParsed.data,\n data,\n fileExt,\n file.name,\n changeNote\n );\n return json({ success: true, version });\n } catch (err) {\n handleApiError(err, \"Failed to upload definition version\");\n }\n};\nconst DELETE = async ({ params, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n await definitionService.delete(ctx, guidParsed.data);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to delete definition\");\n }\n};\nconst PUT = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const body = await request.json().catch(() => null);\n const parsed = UpdateMetadataInputSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n try {\n await definitionService.updateMeta(ctx, guidParsed.data, parsed.data);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to update definition\");\n }\n};\nexport {\n DELETE,\n POST,\n PUT\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts-DMSCxMRc.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { k as definitionService } from \"../../../../../chunks/providers.server.js\";\nimport { g as requireEditableDefinition } from \"../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../chunks/api-errors.js\";\nimport { G as GH_EXTENSIONS } from \"../../../../../chunks/types.js\";\nimport { G as GuidSchema, b as UpdateMetadataInputSchema } from \"../../../../../chunks/context.js\";\nimport { d as MAX_GH_FILE_SIZE } from \"../../../../../chunks/computeLimits.js\";\nconst POST = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const formData = await request.formData();\n const file = formData.get(\"file\");\n if (!(file instanceof File)) throw error(400, \"A Grasshopper (.gh or .ghx) file is required\");\n const changeNoteRaw = formData.get(\"changeNote\");\n const changeNote = typeof changeNoteRaw === \"string\" ? changeNoteRaw.slice(0, 1e3) : void 0;\n const ext = file.name.slice(file.name.lastIndexOf(\".\")).toLowerCase();\n if (!GH_EXTENSIONS.includes(ext)) {\n throw error(400, `File type not allowed. Allowed: ${GH_EXTENSIONS.join(\", \")}`);\n }\n if (file.size > MAX_GH_FILE_SIZE) {\n throw error(400, `File too large. Max size: ${MAX_GH_FILE_SIZE / (1024 * 1024)} MB`);\n }\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const fileExt = ext.slice(1);\n try {\n const data = new Uint8Array(await file.arrayBuffer());\n const version = await definitionService.uploadVersion(\n ctx,\n guidParsed.data,\n data,\n fileExt,\n file.name,\n changeNote\n );\n return json({ success: true, version });\n } catch (err) {\n handleApiError(err, \"Failed to upload definition version\");\n }\n};\nconst DELETE = async ({ params, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n await definitionService.delete(ctx, guidParsed.data);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to delete definition\");\n }\n};\nconst PUT = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const body = await request.json().catch(() => null);\n const parsed = UpdateMetadataInputSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n try {\n await definitionService.updateMeta(ctx, guidParsed.data, parsed.data);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to update definition\");\n }\n};\nexport {\n DELETE,\n POST,\n PUT\n};\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { error, json } from '@sveltejs/kit';
2
2
  import { randomUUID } from 'node:crypto';
3
- import { p as providers, f as flag } from './providers.server-Duyx-08B.js';
4
- import { g as requireEditableDefinition } from './access.server-DVG3xnR_.js';
5
- import { h as handleApiError, t as throwZodError } from './api-errors-DGHmIOGJ.js';
3
+ import { p as providers, f as flag } from './providers.server-gJvnJT_K.js';
4
+ import { g as requireEditableDefinition } from './access.server-DGKSuoRH.js';
5
+ import { h as handleApiError, t as throwZodError } from './api-errors-DSza0CJv.js';
6
6
  import { G as GuidSchema, e as CreateShareLinkInputSchema } from './context-9tV9WxQ5.js';
7
7
  import { D as DEFAULT_SHARE_LINK_MAX_SOLVES } from './types2-DdHhYSMF.js';
8
8
  import { m as mintRawToken, h as hashToken } from './token.server-CBtuQZt0.js';
@@ -75,4 +75,4 @@ const POST = async ({ params, request, locals }) => {
75
75
  };
76
76
 
77
77
  export { GET, POST };
78
- //# sourceMappingURL=_server.ts-k0TOB-E9.js.map
78
+ //# sourceMappingURL=_server.ts-DOstgfdy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-k0TOB-E9.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/share-links/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { randomUUID } from \"node:crypto\";\nimport { p as providers, m as flag } from \"../../../../../../chunks/providers.server.js\";\nimport { g as requireEditableDefinition } from \"../../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../../chunks/api-errors.js\";\nimport { G as GuidSchema, d as CreateShareLinkInputSchema } from \"../../../../../../chunks/context.js\";\nimport { D as DEFAULT_SHARE_LINK_MAX_SOLVES } from \"../../../../../../chunks/types2.js\";\nimport { m as mintRawToken, h as hashToken } from \"../../../../../../chunks/token.server.js\";\nfunction assertSharingEnabled() {\n if (!flag(\"ENABLE_SHARING\")) {\n throw error(404, \"Share links are disabled on this instance (ENABLE_SHARING).\");\n }\n}\nfunction strip(link) {\n const { tokenHash: _omit, ...rest } = link;\n return { ...rest, hasToken: true };\n}\nconst GET = async ({ params, locals }) => {\n assertSharingEnabled();\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n const page = await providers.data.shareLinks.listByDefinition(ctx, guidParsed.data, {\n limit: 200\n });\n return json({\n links: page.items.map(strip),\n nextCursor: page.nextCursor\n });\n } catch (err) {\n handleApiError(err, \"Failed to list share links\");\n }\n};\nconst POST = async ({ params, request, locals }) => {\n assertSharingEnabled();\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const body = await request.json().catch(() => ({}));\n const parsed = CreateShareLinkInputSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const raw = mintRawToken();\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const link = {\n id: randomUUID(),\n definitionId: guidParsed.data,\n channel: parsed.data.channel,\n tokenHash: hashToken(raw),\n name: parsed.data.name,\n createdBy: locals.user.id,\n createdAt: now,\n expiresAt: parsed.data.expiresAt ?? null,\n revokedAt: null,\n allowSolve: parsed.data.allowSolve,\n // Default applied only when the field is absent. `null` is a deliberate\n // \"uncap\" choice and is preserved.\n maxSolves: parsed.data.maxSolves === void 0 ? DEFAULT_SHARE_LINK_MAX_SOLVES : parsed.data.maxSolves,\n solveCount: 0\n };\n try {\n await providers.data.shareLinks.create(ctx, link);\n return json({ link: strip(link), token: raw }, { status: 201 });\n } catch (err) {\n handleApiError(err, \"Failed to create share link\");\n }\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts-DOstgfdy.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/share-links/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { randomUUID } from \"node:crypto\";\nimport { p as providers, f as flag } from \"../../../../../../chunks/providers.server.js\";\nimport { g as requireEditableDefinition } from \"../../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../../chunks/api-errors.js\";\nimport { G as GuidSchema, d as CreateShareLinkInputSchema } from \"../../../../../../chunks/context.js\";\nimport { D as DEFAULT_SHARE_LINK_MAX_SOLVES } from \"../../../../../../chunks/types2.js\";\nimport { m as mintRawToken, h as hashToken } from \"../../../../../../chunks/token.server.js\";\nfunction assertSharingEnabled() {\n if (!flag(\"ENABLE_SHARING\")) {\n throw error(404, \"Share links are disabled on this instance (ENABLE_SHARING).\");\n }\n}\nfunction strip(link) {\n const { tokenHash: _omit, ...rest } = link;\n return { ...rest, hasToken: true };\n}\nconst GET = async ({ params, locals }) => {\n assertSharingEnabled();\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n const page = await providers.data.shareLinks.listByDefinition(ctx, guidParsed.data, {\n limit: 200\n });\n return json({\n links: page.items.map(strip),\n nextCursor: page.nextCursor\n });\n } catch (err) {\n handleApiError(err, \"Failed to list share links\");\n }\n};\nconst POST = async ({ params, request, locals }) => {\n assertSharingEnabled();\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const body = await request.json().catch(() => ({}));\n const parsed = CreateShareLinkInputSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const raw = mintRawToken();\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const link = {\n id: randomUUID(),\n definitionId: guidParsed.data,\n channel: parsed.data.channel,\n tokenHash: hashToken(raw),\n name: parsed.data.name,\n createdBy: locals.user.id,\n createdAt: now,\n expiresAt: parsed.data.expiresAt ?? null,\n revokedAt: null,\n allowSolve: parsed.data.allowSolve,\n // Default applied only when the field is absent. `null` is a deliberate\n // \"uncap\" choice and is preserved.\n maxSolves: parsed.data.maxSolves === void 0 ? DEFAULT_SHARE_LINK_MAX_SOLVES : parsed.data.maxSolves,\n solveCount: 0\n };\n try {\n await providers.data.shareLinks.create(ctx, link);\n return json({ link: strip(link), token: raw }, { status: 201 });\n } catch (err) {\n handleApiError(err, \"Failed to create share link\");\n }\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { error, redirect } from '@sveltejs/kit';
2
- import { g as getAuthProvider } from './providers.server-Duyx-08B.js';
3
- import { b as bootstrapUserSession } from './auth-bootstrap.server-dy8_QSAP.js';
2
+ import { g as getAuthProvider } from './providers.server-gJvnJT_K.js';
3
+ import { b as bootstrapUserSession } from './auth-bootstrap.server-YBvyz9i1.js';
4
4
  import { s as setSessionCookie, a as setRefreshCookie, d as safeRedirectTarget } from './admin-auth.server-CdTfBMI5.js';
5
5
  import './shared-server-DaWdgxVh.js';
6
6
  import 'node:url';
@@ -28,4 +28,4 @@ const GET = async ({ url, cookies }) => {
28
28
  };
29
29
 
30
30
  export { GET };
31
- //# sourceMappingURL=_server.ts-DChqazjy.js.map
31
+ //# sourceMappingURL=_server.ts-DahXKbZg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-DChqazjy.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/auth/email/callback/_server.ts.js"],"sourcesContent":["import { error, redirect } from \"@sveltejs/kit\";\nimport { e as getAuthProvider } from \"../../../../../chunks/providers.server.js\";\nimport { b as bootstrapUserSession } from \"../../../../../chunks/auth-bootstrap.server.js\";\nimport { s as setSessionCookie, a as setRefreshCookie, b as safeRedirectTarget } from \"../../../../../chunks/admin-auth.server.js\";\nconst GET = async ({ url, cookies }) => {\n const emailLink = getAuthProvider().emailLink;\n if (!emailLink) {\n throw error(501, \"Email sign-in is not supported by this provider.\");\n }\n const result = await emailLink.verifyMagicLink(url.toString());\n if (!result) throw error(401, \"This sign-in link is invalid or has expired.\");\n await bootstrapUserSession(result.user);\n setSessionCookie(cookies, result.sessionToken);\n if (result.refreshToken) setRefreshCookie(cookies, result.refreshToken);\n const dest = safeRedirectTarget(url.searchParams.get(\"redirectTo\"), \"/library\");\n redirect(303, dest);\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIK,MAAC,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK;AACxC,EAAE,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC,SAAS;AAC/C,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,kDAAkD,CAAC;AACxE,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAChE,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,8CAA8C,CAAC;AAC/E,EAAE,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AAChD,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AACzE,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;AACjF,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AACrB;;;;"}
1
+ {"version":3,"file":"_server.ts-DahXKbZg.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/auth/email/callback/_server.ts.js"],"sourcesContent":["import { error, redirect } from \"@sveltejs/kit\";\nimport { e as getAuthProvider } from \"../../../../../chunks/providers.server.js\";\nimport { b as bootstrapUserSession } from \"../../../../../chunks/auth-bootstrap.server.js\";\nimport { s as setSessionCookie, a as setRefreshCookie, b as safeRedirectTarget } from \"../../../../../chunks/admin-auth.server.js\";\nconst GET = async ({ url, cookies }) => {\n const emailLink = getAuthProvider().emailLink;\n if (!emailLink) {\n throw error(501, \"Email sign-in is not supported by this provider.\");\n }\n const result = await emailLink.verifyMagicLink(url.toString());\n if (!result) throw error(401, \"This sign-in link is invalid or has expired.\");\n await bootstrapUserSession(result.user);\n setSessionCookie(cookies, result.sessionToken);\n if (result.refreshToken) setRefreshCookie(cookies, result.refreshToken);\n const dest = safeRedirectTarget(url.searchParams.get(\"redirectTo\"), \"/library\");\n redirect(303, dest);\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIK,MAAC,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK;AACxC,EAAE,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC,SAAS;AAC/C,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,kDAAkD,CAAC;AACxE,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAChE,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,8CAA8C,CAAC;AAC/E,EAAE,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AAChD,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AACzE,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;AACjF,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AACrB;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { error } from '@sveltejs/kit';
2
- import { i as getDefinitionMeta, s as definitionPaths, m as getStorageProvider } from './providers.server-Duyx-08B.js';
2
+ import { i as getDefinitionMeta, s as definitionPaths, m as getStorageProvider } from './providers.server-gJvnJT_K.js';
3
3
  import { G as GuidSchema } from './context-9tV9WxQ5.js';
4
- import { h as requireCanViewProject } from './access.server-DVG3xnR_.js';
4
+ import { h as requireCanViewProject } from './access.server-DGKSuoRH.js';
5
5
  import './shared-server-DaWdgxVh.js';
6
6
  import 'node:url';
7
7
  import 'node:path';
@@ -10,7 +10,7 @@ import 'node:crypto';
10
10
  import 'node:fs/promises';
11
11
  import '@supabase/supabase-js';
12
12
  import 'zod';
13
- import './api-errors-DGHmIOGJ.js';
13
+ import './api-errors-DSza0CJv.js';
14
14
 
15
15
  const ALLOWED_EXTENSIONS = {
16
16
  ".webp": "image/webp",
@@ -46,4 +46,4 @@ const GET = async ({ params, locals }) => {
46
46
  };
47
47
 
48
48
  export { GET };
49
- //# sourceMappingURL=_server.ts-DraBBcmz.js.map
49
+ //# sourceMappingURL=_server.ts-DjEulrER.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-DraBBcmz.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/files/_...path_/_server.ts.js"],"sourcesContent":["import { error } from \"@sveltejs/kit\";\nimport { k as getDefinitionMeta, l as definitionPaths, i as getStorageProvider } from \"../../../../../chunks/providers.server.js\";\nimport { G as GuidSchema } from \"../../../../../chunks/context.js\";\nimport { h as requireCanViewProject } from \"../../../../../chunks/access.server.js\";\nconst ALLOWED_EXTENSIONS = {\n \".webp\": \"image/webp\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".png\": \"image/png\",\n \".gif\": \"image/gif\"\n};\nconst COVER_PATH_PATTERN = /^definitions\\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\/cover\\.([a-z]+)$/i;\nconst GET = async ({ params, locals }) => {\n const storagePath = params.path;\n if (!storagePath) throw error(400, \"Missing path\");\n const match = COVER_PATH_PATTERN.exec(storagePath);\n if (!match) throw error(404, \"File not found\");\n const [, guid, rawExt] = match;\n const ext = `.${rawExt.toLowerCase()}`;\n if (!ALLOWED_EXTENSIONS[ext]) throw error(404, \"File not found\");\n const guidParsed = GuidSchema.safeParse(guid);\n if (!guidParsed.success) throw error(404, \"File not found\");\n if (!locals.ctx) throw error(401, \"Unauthorized\");\n const record = await getDefinitionMeta().get(locals.ctx, guidParsed.data);\n if (!record) throw error(404, \"File not found\");\n await requireCanViewProject(locals, record.projectId);\n const canonicalPath = definitionPaths.image(guidParsed.data);\n const bytes = await getStorageProvider().get(canonicalPath);\n if (!bytes) throw error(404, \"File not found\");\n return new Response(Buffer.from(bytes), {\n headers: {\n \"Content-Type\": ALLOWED_EXTENSIONS[ext],\n \"Cache-Control\": \"private, max-age=3600\"\n }\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,MAAM,kBAAkB,GAAG;AAC3B,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,MAAM,EAAE,WAAW;AACrB,EAAE,MAAM,EAAE;AACV,CAAC;AACD,MAAM,kBAAkB,GAAG,iGAAiG;AACvH,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC1C,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI;AACjC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACpD,EAAE,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAChD,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK;AAChC,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAClE,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC7D,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACnD,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAC3E,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AACjD,EAAE,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AACvD,EAAE,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9D,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;AAC7D,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAChD,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1C,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,kBAAkB,CAAC,GAAG,CAAC;AAC7C,MAAM,eAAe,EAAE;AACvB;AACA,GAAG,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"_server.ts-DjEulrER.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/files/_...path_/_server.ts.js"],"sourcesContent":["import { error } from \"@sveltejs/kit\";\nimport { l as getDefinitionMeta, m as definitionPaths, j as getStorageProvider } from \"../../../../../chunks/providers.server.js\";\nimport { G as GuidSchema } from \"../../../../../chunks/context.js\";\nimport { h as requireCanViewProject } from \"../../../../../chunks/access.server.js\";\nconst ALLOWED_EXTENSIONS = {\n \".webp\": \"image/webp\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".png\": \"image/png\",\n \".gif\": \"image/gif\"\n};\nconst COVER_PATH_PATTERN = /^definitions\\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\/cover\\.([a-z]+)$/i;\nconst GET = async ({ params, locals }) => {\n const storagePath = params.path;\n if (!storagePath) throw error(400, \"Missing path\");\n const match = COVER_PATH_PATTERN.exec(storagePath);\n if (!match) throw error(404, \"File not found\");\n const [, guid, rawExt] = match;\n const ext = `.${rawExt.toLowerCase()}`;\n if (!ALLOWED_EXTENSIONS[ext]) throw error(404, \"File not found\");\n const guidParsed = GuidSchema.safeParse(guid);\n if (!guidParsed.success) throw error(404, \"File not found\");\n if (!locals.ctx) throw error(401, \"Unauthorized\");\n const record = await getDefinitionMeta().get(locals.ctx, guidParsed.data);\n if (!record) throw error(404, \"File not found\");\n await requireCanViewProject(locals, record.projectId);\n const canonicalPath = definitionPaths.image(guidParsed.data);\n const bytes = await getStorageProvider().get(canonicalPath);\n if (!bytes) throw error(404, \"File not found\");\n return new Response(Buffer.from(bytes), {\n headers: {\n \"Content-Type\": ALLOWED_EXTENSIONS[ext],\n \"Cache-Control\": \"private, max-age=3600\"\n }\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,MAAM,kBAAkB,GAAG;AAC3B,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,MAAM,EAAE,WAAW;AACrB,EAAE,MAAM,EAAE;AACV,CAAC;AACD,MAAM,kBAAkB,GAAG,iGAAiG;AACvH,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC1C,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI;AACjC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACpD,EAAE,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAChD,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK;AAChC,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAClE,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC7D,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACnD,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAC3E,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AACjD,EAAE,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AACvD,EAAE,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9D,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;AAC7D,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAChD,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1C,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,kBAAkB,CAAC,GAAG,CAAC;AAC7C,MAAM,eAAe,EAAE;AACvB;AACA,GAAG,CAAC;AACJ;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { error, json } from '@sveltejs/kit';
2
- import { j as getComputeServerConfigStore, o as isOrgServer, q as isPlatformServer, f as flag } from './providers.server-Duyx-08B.js';
3
- import { j as requireManageOrgCompute } from './access.server-DVG3xnR_.js';
2
+ import { j as getComputeServerConfigStore, o as isOrgServer, q as isPlatformServer, f as flag } from './providers.server-gJvnJT_K.js';
3
+ import { j as requireManageOrgCompute } from './access.server-DGKSuoRH.js';
4
4
  import './context-9tV9WxQ5.js';
5
- import { s as serversVisibleTo } from './utils2-QuTTpZq0.js';
5
+ import { s as serversVisibleTo } from './utils2-DfCIUv4X.js';
6
6
  import './shared-server-DaWdgxVh.js';
7
7
  import 'node:url';
8
8
  import 'node:path';
@@ -10,7 +10,7 @@ import 'node:fs';
10
10
  import 'node:crypto';
11
11
  import 'node:fs/promises';
12
12
  import '@supabase/supabase-js';
13
- import './api-errors-DGHmIOGJ.js';
13
+ import './api-errors-DSza0CJv.js';
14
14
  import 'zod';
15
15
 
16
16
  function requireFlag() {
@@ -107,4 +107,4 @@ const PUT = async ({ request, locals }) => {
107
107
  };
108
108
 
109
109
  export { GET, PUT };
110
- //# sourceMappingURL=_server.ts-Cb4DODkC.js.map
110
+ //# sourceMappingURL=_server.ts-DmvmgVIf.js.map