@selvajs/selva 4.6.21-beta.1 → 4.7.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/build/client/_app/immutable/chunks/{CaWnsi86.js → 9i3rf9gV.js} +1 -1
  2. package/build/client/_app/immutable/chunks/9i3rf9gV.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/9i3rf9gV.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{B5OJUbsp.js → BUuRpU5m.js} +1 -1
  5. package/build/client/_app/immutable/chunks/BUuRpU5m.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BUuRpU5m.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{CQlm8KiO.js → C1lje54W.js} +1 -1
  8. package/build/client/_app/immutable/chunks/C1lje54W.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/C1lje54W.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{BUSu7k-8.js → CNzANXEE.js} +1 -1
  11. package/build/client/_app/immutable/chunks/CNzANXEE.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/CNzANXEE.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{BL2t7cAH.js → CZrHjFO_.js} +1 -1
  14. package/build/client/_app/immutable/chunks/CZrHjFO_.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/CZrHjFO_.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{B2u4e1Y9.js → CtQi8B_W.js} +5 -5
  17. package/build/client/_app/immutable/chunks/CtQi8B_W.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/CtQi8B_W.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{CbzchbHa.js → D0ZkELYt.js} +1 -1
  20. package/build/client/_app/immutable/chunks/D0ZkELYt.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/D0ZkELYt.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{DAFm-rT0.js → DvWy04ZP.js} +2 -2
  23. package/build/client/_app/immutable/chunks/DvWy04ZP.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/DvWy04ZP.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/{app.CUiJWB53.js → app.CHLvYXSV.js} +2 -2
  26. package/build/client/_app/immutable/entry/app.CHLvYXSV.js.br +0 -0
  27. package/build/client/_app/immutable/entry/app.CHLvYXSV.js.gz +0 -0
  28. package/build/client/_app/immutable/entry/start.x7J2Q5dO.js +1 -0
  29. package/build/client/_app/immutable/entry/start.x7J2Q5dO.js.br +2 -0
  30. package/build/client/_app/immutable/entry/start.x7J2Q5dO.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{1.jBltffEQ.js → 1.DHaPDVfK.js} +1 -1
  32. package/build/client/_app/immutable/nodes/1.DHaPDVfK.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/1.DHaPDVfK.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/{11.fnbbU5fQ.js → 11.DhYj36Fk.js} +1 -1
  35. package/build/client/_app/immutable/nodes/11.DhYj36Fk.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/11.DhYj36Fk.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{13.CokPGn13.js → 13.CfJOch3J.js} +1 -1
  38. package/build/client/_app/immutable/nodes/13.CfJOch3J.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/13.CfJOch3J.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{14.BOBvQoRO.js → 14.DisTiyB2.js} +1 -1
  41. package/build/client/_app/immutable/nodes/14.DisTiyB2.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/14.DisTiyB2.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{15.rVnmmhFk.js → 15.A437nu0T.js} +1 -1
  44. package/build/client/_app/immutable/nodes/15.A437nu0T.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/15.A437nu0T.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{16.CT8CyQj6.js → 16.B9S-bV_g.js} +1 -1
  47. package/build/client/_app/immutable/nodes/16.B9S-bV_g.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/16.B9S-bV_g.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/{17.D4no7cGI.js → 17.BRN_aGIk.js} +1 -1
  50. package/build/client/_app/immutable/nodes/17.BRN_aGIk.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/17.BRN_aGIk.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{19.BLra_dlM.js → 19.DwCFMX9M.js} +1 -1
  53. package/build/client/_app/immutable/nodes/19.DwCFMX9M.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/19.DwCFMX9M.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{2.MyCVVapl.js → 2.DP5fYr4M.js} +1 -1
  56. package/build/client/_app/immutable/nodes/2.DP5fYr4M.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/2.DP5fYr4M.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/20.nfHXDL2z.js +5414 -0
  59. package/build/client/_app/immutable/nodes/20.nfHXDL2z.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/20.nfHXDL2z.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{21.CE1lAxCo.js → 21.OD5sg0NU.js} +1 -1
  62. package/build/client/_app/immutable/nodes/21.OD5sg0NU.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/21.OD5sg0NU.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/23.CNjTTgpk.js +16 -0
  65. package/build/client/_app/immutable/nodes/23.CNjTTgpk.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/23.CNjTTgpk.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{24.8w-n98Zt.js → 24.CEgabT6P.js} +1 -1
  68. package/build/client/_app/immutable/nodes/24.CEgabT6P.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/24.CEgabT6P.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/{27.CTvZ6KxX.js → 27.CRIaBHAx.js} +1 -1
  71. package/build/client/_app/immutable/nodes/27.CRIaBHAx.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/27.CRIaBHAx.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/{28.n4L9k3Rh.js → 28.BC6m2tWk.js} +1 -1
  74. package/build/client/_app/immutable/nodes/28.BC6m2tWk.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/28.BC6m2tWk.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{29.B90ZvGzu.js → 29.BFYPdg-j.js} +1 -1
  77. package/build/client/_app/immutable/nodes/29.BFYPdg-j.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/29.BFYPdg-j.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{3.C49Pdolk.js → 3.J7HfMiHi.js} +1 -1
  80. package/build/client/_app/immutable/nodes/3.J7HfMiHi.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/3.J7HfMiHi.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/{30.CGkD_uX2.js → 30.60AXFjfN.js} +1 -1
  83. package/build/client/_app/immutable/nodes/30.60AXFjfN.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/30.60AXFjfN.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/{5.BD_FrnS6.js → 5.CLnvzJQ1.js} +1 -1
  86. package/build/client/_app/immutable/nodes/5.CLnvzJQ1.js.br +1 -0
  87. package/build/client/_app/immutable/nodes/5.CLnvzJQ1.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/{6.FHxxXtNY.js → 6.8mUhfqtj.js} +1 -1
  89. package/build/client/_app/immutable/nodes/6.8mUhfqtj.js.br +0 -0
  90. package/build/client/_app/immutable/nodes/6.8mUhfqtj.js.gz +0 -0
  91. package/build/client/_app/immutable/nodes/{7.rgqW6l_z.js → 7.Bu0PYCkD.js} +1 -1
  92. package/build/client/_app/immutable/nodes/7.Bu0PYCkD.js.br +0 -0
  93. package/build/client/_app/immutable/nodes/7.Bu0PYCkD.js.gz +0 -0
  94. package/build/client/_app/immutable/nodes/{8.CMWVVdHD.js → 8.CzmdM7pu.js} +1 -1
  95. package/build/client/_app/immutable/nodes/8.CzmdM7pu.js.br +0 -0
  96. package/build/client/_app/immutable/nodes/8.CzmdM7pu.js.gz +0 -0
  97. package/build/client/_app/immutable/nodes/{9.B1DVTVqB.js → 9.BogAwqgH.js} +1 -1
  98. package/build/client/_app/immutable/nodes/9.BogAwqgH.js.br +0 -0
  99. package/build/client/_app/immutable/nodes/9.BogAwqgH.js.gz +0 -0
  100. package/build/client/_app/version.json +1 -1
  101. package/build/client/_app/version.json.br +0 -0
  102. package/build/client/_app/version.json.gz +0 -0
  103. package/build/handler.js +4 -4
  104. package/build/index.js +4 -4
  105. package/build/server/chunks/chunks/{access.server.js-DmuVt13u.js → access.server.js-_nJWuQcN.js} +5 -5
  106. package/build/server/chunks/chunks/{access.server.js-DmuVt13u.js.map → access.server.js-_nJWuQcN.js.map} +1 -1
  107. package/build/server/chunks/chunks/{admin-auth.server.js-BAXmH56n.js → admin-auth.server.js-CitjWnKM.js} +2 -1
  108. package/build/server/chunks/chunks/admin-auth.server.js-CitjWnKM.js.map +1 -0
  109. package/build/server/chunks/chunks/{api-errors.js-CwTBBHWD.js → api-errors.js-DlfcfPJs.js} +4 -4
  110. package/build/server/chunks/chunks/{api-errors.js-CwTBBHWD.js.map → api-errors.js-DlfcfPJs.js.map} +1 -1
  111. package/build/server/chunks/chunks/{auth-bootstrap.server.js-COYZnscW.js → auth-bootstrap.server.js-S-F5QI4m.js} +3 -3
  112. package/build/server/chunks/chunks/{auth-bootstrap.server.js-COYZnscW.js.map → auth-bootstrap.server.js-S-F5QI4m.js.map} +1 -1
  113. package/build/server/chunks/chunks/{bootHealth.server.js-CsYXGGM5.js → bootHealth.server.js-CvLSuL2x.js} +2 -2
  114. package/build/server/chunks/chunks/{bootHealth.server.js-CsYXGGM5.js.map → bootHealth.server.js-CvLSuL2x.js.map} +1 -1
  115. package/build/server/chunks/chunks/{clientCache.server.js-CDbNbNdZ.js → clientCache.server.js-BS8-NdiI.js} +12 -3
  116. package/build/server/chunks/chunks/clientCache.server.js-BS8-NdiI.js.map +1 -0
  117. package/build/server/chunks/chunks/{computeLimits.js-DmiFfoef.js → computeLimits.js-CQh4jXlX.js} +10 -3
  118. package/build/server/chunks/chunks/computeLimits.js-CQh4jXlX.js.map +1 -0
  119. package/build/server/chunks/chunks/{context.js-D8E0GFTw.js → context.js-DsQGiS2x.js} +4 -1
  120. package/build/server/chunks/chunks/context.js-DsQGiS2x.js.map +1 -0
  121. package/build/server/chunks/chunks/{evictChangedServers.js-DIMjsyC2.js → evictChangedServers.js-R3UCE6wP.js} +2 -2
  122. package/build/server/chunks/chunks/{evictChangedServers.js-DIMjsyC2.js.map → evictChangedServers.js-R3UCE6wP.js.map} +1 -1
  123. package/build/server/chunks/chunks/{internal2.js-CuWB6KAD.js → internal2.js-BBcEKa-m.js} +3 -3
  124. package/build/server/chunks/chunks/{internal2.js-CuWB6KAD.js.map → internal2.js-BBcEKa-m.js.map} +1 -1
  125. package/build/server/chunks/chunks/{org-members.server.js-HahiM88D.js → org-members.server.js-DskaqUJo.js} +2 -2
  126. package/build/server/chunks/chunks/{org-members.server.js-HahiM88D.js.map → org-members.server.js-DskaqUJo.js.map} +1 -1
  127. package/build/server/chunks/chunks/{package.js-DWOK6LMe.js → package.js-Cl0z1gce.js} +2 -2
  128. package/build/server/chunks/chunks/package.js-Cl0z1gce.js.map +1 -0
  129. package/build/server/chunks/chunks/{permissions-compat.server.js-BfoBZYSH.js → permissions-compat.server.js-DNsLyriU.js} +2 -2
  130. package/build/server/chunks/chunks/{permissions-compat.server.js-BfoBZYSH.js.map → permissions-compat.server.js-DNsLyriU.js.map} +1 -1
  131. package/build/server/chunks/chunks/{permissions.server.js-DyHNgP29.js → permissions.server.js-C3_SFjUh.js} +2 -2
  132. package/build/server/chunks/chunks/{permissions.server.js-DyHNgP29.js.map → permissions.server.js-C3_SFjUh.js.map} +1 -1
  133. package/build/server/chunks/chunks/{providers.server.js-BKhwGvoh.js → providers.server.js-CIHOepKv.js} +84 -15
  134. package/build/server/chunks/chunks/providers.server.js-CIHOepKv.js.map +1 -0
  135. package/build/server/chunks/chunks/{resolve.server.js-BQY6Vw9q.js → resolve.server.js-Dg1o2vnd.js} +3 -3
  136. package/build/server/chunks/chunks/{resolve.server.js-BQY6Vw9q.js.map → resolve.server.js-Dg1o2vnd.js.map} +1 -1
  137. package/build/server/chunks/chunks/solve-cache-key.js-BIwJfBG9.js +320 -0
  138. package/build/server/chunks/chunks/solve-cache-key.js-BIwJfBG9.js.map +1 -0
  139. package/build/server/chunks/chunks/{utils4.js-C-poIiFQ.js → utils4.js-8SHxuGTr.js} +2 -2
  140. package/build/server/chunks/chunks/{utils4.js-C-poIiFQ.js.map → utils4.js-8SHxuGTr.js.map} +1 -1
  141. package/build/server/chunks/entries/endpoints/admin/api/compute/{_server.ts.js-FEaDWqQ-.js → _server.ts.js-CR_1eCgH.js} +12 -9
  142. package/build/server/chunks/entries/endpoints/admin/api/compute/{_server.ts.js-FEaDWqQ-.js.map → _server.ts.js-CR_1eCgH.js.map} +1 -1
  143. package/build/server/chunks/entries/endpoints/admin/api/compute/actions/{_server.ts.js-wswn41ri.js → _server.ts.js-D1UFM_o6.js} +6 -6
  144. package/build/server/chunks/entries/endpoints/admin/api/compute/actions/{_server.ts.js-wswn41ri.js.map → _server.ts.js-D1UFM_o6.js.map} +1 -1
  145. package/build/server/chunks/entries/endpoints/admin/api/compute/status/{_server.ts.js-cfwFu61A.js → _server.ts.js-DdzXkztc.js} +6 -6
  146. package/build/server/chunks/entries/endpoints/admin/api/compute/status/{_server.ts.js-cfwFu61A.js.map → _server.ts.js-DdzXkztc.js.map} +1 -1
  147. package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/{_server.ts.js-r_akFPa5.js → _server.ts.js-CqdBKOC6.js} +6 -6
  148. package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/{_server.ts.js-r_akFPa5.js.map → _server.ts.js-CqdBKOC6.js.map} +1 -1
  149. package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/assets/_kind_/{_server.ts.js-Dz9PdbxZ.js → _server.ts.js-Bi3NbLd3.js} +11 -7
  150. package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/assets/_kind_/{_server.ts.js-Dz9PdbxZ.js.map → _server.ts.js-Bi3NbLd3.js.map} +1 -1
  151. package/build/server/chunks/entries/endpoints/admin/api/orgs/{_server.ts.js-B2mbaw2T.js → _server.ts.js-C3ZwVpyg.js} +6 -6
  152. package/build/server/chunks/entries/endpoints/admin/api/orgs/{_server.ts.js-B2mbaw2T.js.map → _server.ts.js-C3ZwVpyg.js.map} +1 -1
  153. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/{_server.ts.js-VDXjaCes.js → _server.ts.js-CAe8T4G6.js} +6 -6
  154. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/{_server.ts.js-VDXjaCes.js.map → _server.ts.js-CAe8T4G6.js.map} +1 -1
  155. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_grantId_/{_server.ts.js-Dsm-skvk.js → _server.ts.js-DHYHT1N8.js} +6 -6
  156. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_grantId_/{_server.ts.js-Dsm-skvk.js.map → _server.ts.js-DHYHT1N8.js.map} +1 -1
  157. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/{_server.ts.js-D84Sx6Yr.js → _server.ts.js-Cgt7iGfE.js} +6 -6
  158. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/{_server.ts.js-D84Sx6Yr.js.map → _server.ts.js-Cgt7iGfE.js.map} +1 -1
  159. package/build/server/chunks/entries/endpoints/admin/api/projects/{_server.ts.js-CL7CRFYL.js → _server.ts.js-BFi1Di59.js} +6 -6
  160. package/build/server/chunks/entries/endpoints/admin/api/projects/{_server.ts.js-CL7CRFYL.js.map → _server.ts.js-BFi1Di59.js.map} +1 -1
  161. package/build/server/chunks/entries/endpoints/admin/api/system/health/{_server.ts.js-C4gB5liV.js → _server.ts.js-Br7kd03s.js} +6 -6
  162. package/build/server/chunks/entries/endpoints/admin/api/system/health/{_server.ts.js-C4gB5liV.js.map → _server.ts.js-Br7kd03s.js.map} +1 -1
  163. package/build/server/chunks/entries/endpoints/admin/api/system/throughput/{_server.ts.js-Dyzp1Ed5.js → _server.ts.js-ufKMuphM.js} +6 -6
  164. package/build/server/chunks/entries/endpoints/admin/api/system/throughput/{_server.ts.js-Dyzp1Ed5.js.map → _server.ts.js-ufKMuphM.js.map} +1 -1
  165. package/build/server/chunks/entries/endpoints/admin/api/system/update/{_server.ts.js-D_iGos7D.js → _server.ts.js-D-IGlEji.js} +6 -6
  166. package/build/server/chunks/entries/endpoints/admin/api/system/update/{_server.ts.js-D_iGos7D.js.map → _server.ts.js-D-IGlEji.js.map} +1 -1
  167. package/build/server/chunks/entries/endpoints/admin/api/users/_id_/{_server.ts.js-BZ9V4O5o.js → _server.ts.js-7Efk1xkU.js} +8 -8
  168. package/build/server/chunks/entries/endpoints/admin/api/users/_id_/{_server.ts.js-BZ9V4O5o.js.map → _server.ts.js-7Efk1xkU.js.map} +1 -1
  169. package/build/server/chunks/entries/endpoints/admin/api/users/_id_/disable/{_server.ts.js-mHiVbBvJ.js → _server.ts.js-4UrDw7Q3.js} +6 -6
  170. package/build/server/chunks/entries/endpoints/admin/api/users/_id_/disable/{_server.ts.js-mHiVbBvJ.js.map → _server.ts.js-4UrDw7Q3.js.map} +1 -1
  171. package/build/server/chunks/entries/endpoints/admin/api/users/{_server.ts.js-BSaEm6NT.js → _server.ts.js-B9ZWJoST.js} +9 -9
  172. package/build/server/chunks/entries/endpoints/admin/api/users/{_server.ts.js-BSaEm6NT.js.map → _server.ts.js-B9ZWJoST.js.map} +1 -1
  173. package/build/server/chunks/entries/endpoints/api/compute/{_server.ts.js-D4bNHN4G.js → _server.ts.js-D9qvgnX7.js} +291 -186
  174. package/build/server/chunks/entries/endpoints/api/compute/_server.ts.js-D9qvgnX7.js.map +1 -0
  175. package/build/server/chunks/entries/endpoints/api/compute/schema/{_server.ts.js-B7eQrn5z.js → _server.ts.js-CoS51dOD.js} +12 -8
  176. package/build/server/chunks/entries/endpoints/api/compute/schema/{_server.ts.js-B7eQrn5z.js.map → _server.ts.js-CoS51dOD.js.map} +1 -1
  177. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/{_server.ts.js-Cz3IeQFv.js → _server.ts.js-D7jS25IN.js} +11 -7
  178. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/{_server.ts.js-Cz3IeQFv.js.map → _server.ts.js-D7jS25IN.js.map} +1 -1
  179. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_filename_/{_server.ts.js-DXHMLHCZ.js → _server.ts.js-5hlsFhI1.js} +11 -7
  180. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_filename_/{_server.ts.js-DXHMLHCZ.js.map → _server.ts.js-5hlsFhI1.js.map} +1 -1
  181. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/{_server.ts.js-DDFALbrW.js → _server.ts.js-CRMcPOgH.js} +11 -7
  182. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/{_server.ts.js-DDFALbrW.js.map → _server.ts.js-CRMcPOgH.js.map} +1 -1
  183. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/publish/{_server.ts.js-BLFkRWdR.js → _server.ts.js-C8-AAq8y.js} +6 -6
  184. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/publish/{_server.ts.js-BLFkRWdR.js.map → _server.ts.js-C8-AAq8y.js.map} +1 -1
  185. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_linkId_/{_server.ts.js-DNn2RLbg.js → _server.ts.js-LV0ZGJh9.js} +6 -6
  186. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_linkId_/{_server.ts.js-DNn2RLbg.js.map → _server.ts.js-LV0ZGJh9.js.map} +1 -1
  187. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/{_server.ts.js-C1kcEgFH.js → _server.ts.js-OUvpfSN4.js} +6 -6
  188. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/{_server.ts.js-C1kcEgFH.js.map → _server.ts.js-OUvpfSN4.js.map} +1 -1
  189. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/{_server.ts.js-QtHon7Wj.js → _server.ts.js-BJxBKsrU.js} +6 -6
  190. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/{_server.ts.js-QtHon7Wj.js.map → _server.ts.js-BJxBKsrU.js.map} +1 -1
  191. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_versionId_/{_server.ts.js-B-BIRyeB.js → _server.ts.js-BaHW7TEs.js} +6 -6
  192. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_versionId_/{_server.ts.js-B-BIRyeB.js.map → _server.ts.js-BaHW7TEs.js.map} +1 -1
  193. package/build/server/chunks/entries/endpoints/api/definitions/{_server.ts.js-d85ctZ0O.js → _server.ts.js-CBMi-KUD.js} +11 -7
  194. package/build/server/chunks/entries/endpoints/api/definitions/{_server.ts.js-d85ctZ0O.js.map → _server.ts.js-CBMi-KUD.js.map} +1 -1
  195. package/build/server/chunks/entries/endpoints/api/diag/throughput/{_server.ts.js-6l-xiYHL.js → _server.ts.js-C98KkHLg.js} +5 -5
  196. package/build/server/chunks/entries/endpoints/api/diag/throughput/{_server.ts.js-6l-xiYHL.js.map → _server.ts.js-C98KkHLg.js.map} +1 -1
  197. package/build/server/chunks/entries/endpoints/api/files/_...path_/{_server.ts.js-BtxES8ti.js → _server.ts.js-CeTV6qVK.js} +6 -6
  198. package/build/server/chunks/entries/endpoints/api/files/_...path_/{_server.ts.js-BtxES8ti.js.map → _server.ts.js-CeTV6qVK.js.map} +1 -1
  199. package/build/server/chunks/entries/endpoints/api/health/{_server.ts.js-C_3MjeSe.js → _server.ts.js-7eclLbhJ.js} +4 -4
  200. package/build/server/chunks/entries/endpoints/api/health/{_server.ts.js-C_3MjeSe.js.map → _server.ts.js-7eclLbhJ.js.map} +1 -1
  201. package/build/server/chunks/entries/endpoints/api/invites/_id_/{_server.ts.js-ySV5afMZ.js → _server.ts.js-DNh5594J.js} +6 -6
  202. package/build/server/chunks/entries/endpoints/api/invites/_id_/{_server.ts.js-ySV5afMZ.js.map → _server.ts.js-DNh5594J.js.map} +1 -1
  203. package/build/server/chunks/entries/endpoints/api/invites/{_server.ts.js-DqwKI0zG.js → _server.ts.js-DGKHjtw8.js} +7 -7
  204. package/build/server/chunks/entries/endpoints/api/invites/{_server.ts.js-DqwKI0zG.js.map → _server.ts.js-DGKHjtw8.js.map} +1 -1
  205. package/build/server/chunks/entries/endpoints/api/me/starred/_guid_/{_server.ts.js-CwA4cn3b.js → _server.ts.js-CZ50nT84.js} +5 -5
  206. package/build/server/chunks/entries/endpoints/api/me/starred/_guid_/{_server.ts.js-CwA4cn3b.js.map → _server.ts.js-CZ50nT84.js.map} +1 -1
  207. package/build/server/chunks/entries/endpoints/api/org/compute/{_server.ts.js-BJLD9Sdd.js → _server.ts.js-Bf1qSz52.js} +12 -9
  208. package/build/server/chunks/entries/endpoints/api/org/compute/{_server.ts.js-BJLD9Sdd.js.map → _server.ts.js-Bf1qSz52.js.map} +1 -1
  209. package/build/server/chunks/entries/endpoints/api/orgs/_orgId_/members/_userId_/{_server.ts.js-CmEy9_xs.js → _server.ts.js-8PZedKem.js} +6 -6
  210. package/build/server/chunks/entries/endpoints/api/orgs/_orgId_/members/_userId_/{_server.ts.js-CmEy9_xs.js.map → _server.ts.js-8PZedKem.js.map} +1 -1
  211. package/build/server/chunks/entries/endpoints/api/projects/_id_/{_server.ts.js-BsmaIO4W.js → _server.ts.js-C6v2wqYB.js} +6 -6
  212. package/build/server/chunks/entries/endpoints/api/projects/_id_/{_server.ts.js-BsmaIO4W.js.map → _server.ts.js-C6v2wqYB.js.map} +1 -1
  213. package/build/server/chunks/entries/endpoints/api/projects/_id_/members/{_server.ts.js-BYNfJBN-.js → _server.ts.js-B3WPTw6C.js} +6 -6
  214. package/build/server/chunks/entries/endpoints/api/projects/_id_/members/{_server.ts.js-BYNfJBN-.js.map → _server.ts.js-B3WPTw6C.js.map} +1 -1
  215. package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_userId_/{_server.ts.js-09yy-8Do.js → _server.ts.js-CY3ngc5p.js} +6 -6
  216. package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_userId_/{_server.ts.js-09yy-8Do.js.map → _server.ts.js-CY3ngc5p.js.map} +1 -1
  217. package/build/server/chunks/entries/endpoints/api/projects/_id_/reclaim/{_server.ts.js-BPOOqdIh.js → _server.ts.js-DMAeVu3R.js} +6 -6
  218. package/build/server/chunks/entries/endpoints/api/projects/_id_/reclaim/{_server.ts.js-BPOOqdIh.js.map → _server.ts.js-DMAeVu3R.js.map} +1 -1
  219. package/build/server/chunks/entries/endpoints/api/projects/{_server.ts.js-CEtV1j4c.js → _server.ts.js-D32BzObk.js} +6 -6
  220. package/build/server/chunks/entries/endpoints/api/projects/{_server.ts.js-CEtV1j4c.js.map → _server.ts.js-D32BzObk.js.map} +1 -1
  221. package/build/server/chunks/entries/endpoints/auth/email/callback/{_server.ts.js-DCZuEtwq.js → _server.ts.js-DREl2Sbq.js} +11 -7
  222. package/build/server/chunks/entries/endpoints/auth/email/callback/{_server.ts.js-DCZuEtwq.js.map → _server.ts.js-DREl2Sbq.js.map} +1 -1
  223. package/build/server/chunks/entries/endpoints/auth/supabase/callback/{_server.ts.js-v1m8UM1y.js → _server.ts.js-CmIWOQ81.js} +11 -7
  224. package/build/server/chunks/entries/endpoints/auth/supabase/callback/{_server.ts.js-v1m8UM1y.js.map → _server.ts.js-CmIWOQ81.js.map} +1 -1
  225. package/build/server/chunks/entries/endpoints/auth/supabase/start/{_server.ts.js-apoe4XPr.js → _server.ts.js-D0O8rZwg.js} +5 -5
  226. package/build/server/chunks/entries/endpoints/auth/supabase/start/{_server.ts.js-apoe4XPr.js.map → _server.ts.js-D0O8rZwg.js.map} +1 -1
  227. package/build/server/chunks/entries/{hooks.server.js-C-BdJUTh.js → hooks.server.js-DSn6v_nP.js} +10 -6
  228. package/build/server/chunks/entries/{hooks.server.js-C-BdJUTh.js.map → hooks.server.js-DSn6v_nP.js.map} +1 -1
  229. package/build/server/chunks/entries/pages/{_layout.server.ts.js-CY-hyeA_.js → _layout.server.ts.js-Cts38lSM.js} +2 -2
  230. package/build/server/chunks/entries/pages/{_layout.server.ts.js-CY-hyeA_.js.map → _layout.server.ts.js-Cts38lSM.js.map} +1 -1
  231. package/build/server/chunks/entries/pages/accept-invite/{_page.server.ts.js-CuniNvYP.js → _page.server.ts.js-BIr1NoEK.js} +4 -4
  232. package/build/server/chunks/entries/pages/accept-invite/{_page.server.ts.js-CuniNvYP.js.map → _page.server.ts.js-BIr1NoEK.js.map} +1 -1
  233. package/build/server/chunks/entries/pages/admin/{_layout.server.ts.js-4s9aJl1c.js → _layout.server.ts.js-DjB5P2N0.js} +3 -3
  234. package/build/server/chunks/entries/pages/admin/{_layout.server.ts.js-4s9aJl1c.js.map → _layout.server.ts.js-DjB5P2N0.js.map} +1 -1
  235. package/build/server/chunks/entries/pages/admin/{_page.server.ts.js-BtAIWBYS.js → _page.server.ts.js-DMawiAOU.js} +4 -4
  236. package/build/server/chunks/entries/pages/admin/{_page.server.ts.js-BtAIWBYS.js.map → _page.server.ts.js-DMawiAOU.js.map} +1 -1
  237. package/build/server/chunks/entries/pages/admin/audit/{_page.server.ts.js-tgpVuQl0.js → _page.server.ts.js-CJie_AQe.js} +4 -4
  238. package/build/server/chunks/entries/pages/admin/audit/{_page.server.ts.js-tgpVuQl0.js.map → _page.server.ts.js-CJie_AQe.js.map} +1 -1
  239. package/build/server/chunks/entries/pages/admin/compute/{_page.server.ts.js-BnV3LQ7f.js → _page.server.ts.js-DJI-BqLn.js} +5 -5
  240. package/build/server/chunks/entries/pages/admin/compute/{_page.server.ts.js-BnV3LQ7f.js.map → _page.server.ts.js-DJI-BqLn.js.map} +1 -1
  241. package/build/server/chunks/entries/pages/admin/organizations/{_page.server.ts.js-IAnAvNNC.js → _page.server.ts.js-DRZlByRc.js} +3 -3
  242. package/build/server/chunks/entries/pages/admin/organizations/{_page.server.ts.js-IAnAvNNC.js.map → _page.server.ts.js-DRZlByRc.js.map} +1 -1
  243. package/build/server/chunks/entries/pages/admin/projects/_id_/{_page.server.ts.js-Dh0q5yDX.js → _page.server.ts.js-cnc8alqe.js} +9 -7
  244. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-cnc8alqe.js.map +1 -0
  245. package/build/server/chunks/entries/pages/admin/projects/{_page.server.ts.js-CCt13Pnv.js → _page.server.ts.js-7suWtJxu.js} +3 -3
  246. package/build/server/chunks/entries/pages/admin/projects/{_page.server.ts.js-CCt13Pnv.js.map → _page.server.ts.js-7suWtJxu.js.map} +1 -1
  247. package/build/server/chunks/entries/pages/admin/system/{_page.server.ts.js-7Oom2yRl.js → _page.server.ts.js-C0ZdK8vU.js} +6 -6
  248. package/build/server/chunks/entries/pages/admin/system/{_page.server.ts.js-7Oom2yRl.js.map → _page.server.ts.js-C0ZdK8vU.js.map} +1 -1
  249. package/build/server/chunks/entries/pages/admin/users/{_page.server.ts.js-D1-DYbHV.js → _page.server.ts.js-C1LiUNB_.js} +5 -5
  250. package/build/server/chunks/entries/pages/admin/users/{_page.server.ts.js-D1-DYbHV.js.map → _page.server.ts.js-C1LiUNB_.js.map} +1 -1
  251. package/build/server/chunks/entries/pages/admin/users/{_page.svelte.js-CO0kHa1b.js → _page.svelte.js-C-jy08cJ.js} +2 -2
  252. package/build/server/chunks/entries/pages/admin/users/{_page.svelte.js-CO0kHa1b.js.map → _page.svelte.js-C-jy08cJ.js.map} +1 -1
  253. package/build/server/chunks/entries/pages/auth/email/start/{_page.server.ts.js-DZJTtC7V.js → _page.server.ts.js-Bf5aciLN.js} +3 -3
  254. package/build/server/chunks/entries/pages/auth/email/start/{_page.server.ts.js-DZJTtC7V.js.map → _page.server.ts.js-Bf5aciLN.js.map} +1 -1
  255. package/build/server/chunks/entries/pages/library/_guid_/{_page.server.ts.js-D6tGv49z.js → _page.server.ts.js-Cd1cMb0M.js} +9 -9
  256. package/build/server/chunks/entries/pages/library/_guid_/{_page.server.ts.js-D6tGv49z.js.map → _page.server.ts.js-Cd1cMb0M.js.map} +1 -1
  257. package/build/server/chunks/entries/pages/library/_guid_/{_page.svelte.js-BpEnQ79H.js → _page.svelte.js-BHPELPpI.js} +53 -1
  258. package/build/server/chunks/entries/pages/library/_guid_/{_page.svelte.js-BpEnQ79H.js.map → _page.svelte.js-BHPELPpI.js.map} +1 -1
  259. package/build/server/chunks/entries/pages/library/{_page.server.ts.js-DQ_O3EH6.js → _page.server.ts.js-CkNgTDfl.js} +4 -4
  260. package/build/server/chunks/entries/pages/library/{_page.server.ts.js-DQ_O3EH6.js.map → _page.server.ts.js-CkNgTDfl.js.map} +1 -1
  261. package/build/server/chunks/entries/pages/login/{_page.server.ts.js-CfWlJ2qm.js → _page.server.ts.js-BM0BZFoZ.js} +3 -3
  262. package/build/server/chunks/entries/pages/login/{_page.server.ts.js-CfWlJ2qm.js.map → _page.server.ts.js-BM0BZFoZ.js.map} +1 -1
  263. package/build/server/chunks/entries/pages/logout/{_page.server.ts.js-6QjYdOkb.js → _page.server.ts.js-Cc1BjCbc.js} +2 -2
  264. package/build/server/chunks/entries/pages/logout/{_page.server.ts.js-6QjYdOkb.js.map → _page.server.ts.js-Cc1BjCbc.js.map} +1 -1
  265. package/build/server/chunks/entries/pages/projects/{_layout.server.ts.js-CNMJpFAK.js → _layout.server.ts.js-DuJkKJcb.js} +2 -2
  266. package/build/server/chunks/entries/pages/projects/{_layout.server.ts.js-CNMJpFAK.js.map → _layout.server.ts.js-DuJkKJcb.js.map} +1 -1
  267. package/build/server/chunks/entries/pages/projects/{_page.server.ts.js-CdAFvyNP.js → _page.server.ts.js-6JTf7XX0.js} +5 -5
  268. package/build/server/chunks/entries/pages/projects/{_page.server.ts.js-CdAFvyNP.js.map → _page.server.ts.js-6JTf7XX0.js.map} +1 -1
  269. package/build/server/chunks/entries/pages/projects/{_page.svelte.js-nQ9Uj1kK.js → _page.svelte.js-DVU6xc3i.js} +30 -4
  270. package/build/server/chunks/entries/pages/projects/_page.svelte.js-DVU6xc3i.js.map +1 -0
  271. package/build/server/chunks/entries/pages/setup/{_page.server.ts.js-CZGn9bXh.js → _page.server.ts.js-CAIQvVcR.js} +5 -5
  272. package/build/server/chunks/entries/pages/setup/{_page.server.ts.js-CZGn9bXh.js.map → _page.server.ts.js-CAIQvVcR.js.map} +1 -1
  273. package/build/server/chunks/entries/pages/team/{_layout.server.ts.js-C9c2p2gX.js → _layout.server.ts.js-CBM_iY4T.js} +2 -2
  274. package/build/server/chunks/entries/pages/team/{_layout.server.ts.js-C9c2p2gX.js.map → _layout.server.ts.js-CBM_iY4T.js.map} +1 -1
  275. package/build/server/chunks/entries/pages/team/{_page.server.ts.js-tDzOMK37.js → _page.server.ts.js-Pf-MSXv0.js} +2 -2
  276. package/build/server/chunks/entries/pages/team/{_page.server.ts.js-tDzOMK37.js.map → _page.server.ts.js-Pf-MSXv0.js.map} +1 -1
  277. package/build/server/chunks/entries/pages/team/compute/{_page.server.ts.js-9Vv7GLJL.js → _page.server.ts.js-CR-ddKJ4.js} +4 -4
  278. package/build/server/chunks/entries/pages/team/compute/{_page.server.ts.js-9Vv7GLJL.js.map → _page.server.ts.js-CR-ddKJ4.js.map} +1 -1
  279. package/build/server/chunks/entries/pages/team/members/{_page.server.ts.js-BU9mkUI0.js → _page.server.ts.js-DCQ0yy-F.js} +3 -3
  280. package/build/server/chunks/entries/pages/team/members/{_page.server.ts.js-BU9mkUI0.js.map → _page.server.ts.js-DCQ0yy-F.js.map} +1 -1
  281. package/build/server/chunks/entries/pages/team/members/{_page.svelte.js-C70N76b0.js → _page.svelte.js-DVOfVzGn.js} +2 -2
  282. package/build/server/chunks/entries/pages/team/members/{_page.svelte.js-C70N76b0.js.map → _page.svelte.js-DVOfVzGn.js.map} +1 -1
  283. package/build/server/chunks/entries/pages/team/projects/{_page.server.ts.js-CFnMzpDm.js → _page.server.ts.js-FUxzp5PC.js} +3 -3
  284. package/build/server/chunks/entries/pages/team/projects/{_page.server.ts.js-CFnMzpDm.js.map → _page.server.ts.js-FUxzp5PC.js.map} +1 -1
  285. package/build/server/chunks/entries/pages/team/reclaim/{_page.server.ts.js-BhQpuT-q.js → _page.server.ts.js-Btcar0yP.js} +3 -3
  286. package/build/server/chunks/entries/pages/team/reclaim/{_page.server.ts.js-BhQpuT-q.js.map → _page.server.ts.js-Btcar0yP.js.map} +1 -1
  287. package/build/server/chunks/entries/pages/team/settings/{_page.server.ts.js-gJimj_Lt.js → _page.server.ts.js-CS5FLYXE.js} +3 -3
  288. package/build/server/chunks/entries/pages/team/settings/{_page.server.ts.js-gJimj_Lt.js.map → _page.server.ts.js-CS5FLYXE.js.map} +1 -1
  289. package/build/server/chunks/entries/pages/team/shares/{_page.server.ts.js-DQ0dB1Gy.js → _page.server.ts.js-B1QqNYRo.js} +2 -2
  290. package/build/server/chunks/entries/pages/team/shares/{_page.server.ts.js-DQ0dB1Gy.js.map → _page.server.ts.js-B1QqNYRo.js.map} +1 -1
  291. package/build/server/chunks/{handler-BW9dXcm2.js → handler-CiXlY3wu.js} +3 -3
  292. package/build/server/chunks/{handler-BW9dXcm2.js.map → handler-CiXlY3wu.js.map} +1 -1
  293. package/build/server/chunks/{index.js-NG24ufZ3.js → index.js-CfdDzNmO.js} +2 -2
  294. package/build/server/chunks/{index.js-NG24ufZ3.js.map → index.js-CfdDzNmO.js.map} +1 -1
  295. package/build/server/chunks/{manifest.js-DPk_wfUB.js → manifest.js-DZ6WZ-WA.js} +76 -76
  296. package/build/server/chunks/{manifest.js-DPk_wfUB.js.map → manifest.js-DZ6WZ-WA.js.map} +1 -1
  297. package/build/server/chunks/nodes/{0.js-AEvxmHpa.js → 0.js-BMoQIPmA.js} +4 -4
  298. package/build/server/chunks/nodes/{0.js-AEvxmHpa.js.map → 0.js-BMoQIPmA.js.map} +1 -1
  299. package/build/server/chunks/nodes/{1.js-DVxssv7m.js → 1.js-Cm5AdicB.js} +2 -2
  300. package/build/server/chunks/nodes/{1.js-DVxssv7m.js.map → 1.js-Cm5AdicB.js.map} +1 -1
  301. package/build/server/chunks/nodes/{10.js-ZUrAv4Jp.js → 10.js-BNCwQwZV.js} +7 -7
  302. package/build/server/chunks/nodes/{10.js-ZUrAv4Jp.js.map → 10.js-BNCwQwZV.js.map} +1 -1
  303. package/build/server/chunks/nodes/{11.js-DGEK4jP8.js → 11.js-DkWLgBVg.js} +8 -8
  304. package/build/server/chunks/nodes/{11.js-DGEK4jP8.js.map → 11.js-DkWLgBVg.js.map} +1 -1
  305. package/build/server/chunks/nodes/{12.js-B-AKsTNE.js → 12.js-kNjmUDDo.js} +4 -4
  306. package/build/server/chunks/nodes/{12.js-B-AKsTNE.js.map → 12.js-kNjmUDDo.js.map} +1 -1
  307. package/build/server/chunks/nodes/{13.js-B_AIg2fa.js → 13.js-jNBOb5Ni.js} +5 -5
  308. package/build/server/chunks/nodes/{13.js-B_AIg2fa.js.map → 13.js-jNBOb5Ni.js.map} +1 -1
  309. package/build/server/chunks/nodes/{14.js-Dg6onpdg.js → 14.js-jkWhR5ra.js} +5 -5
  310. package/build/server/chunks/nodes/{14.js-Dg6onpdg.js.map → 14.js-jkWhR5ra.js.map} +1 -1
  311. package/build/server/chunks/nodes/{15.js-B9F085rR.js → 15.js-Bh0tBhZ6.js} +14 -10
  312. package/build/server/chunks/nodes/{15.js-B9F085rR.js.map → 15.js-Bh0tBhZ6.js.map} +1 -1
  313. package/build/server/chunks/nodes/{16.js-Du_o5LAN.js → 16.js-BjSvS7x7.js} +11 -11
  314. package/build/server/chunks/nodes/{16.js-Du_o5LAN.js.map → 16.js-BjSvS7x7.js.map} +1 -1
  315. package/build/server/chunks/nodes/{17.js-C7IvrMvq.js → 17.js-CVAlNLd1.js} +2 -2
  316. package/build/server/chunks/nodes/{17.js-C7IvrMvq.js.map → 17.js-CVAlNLd1.js.map} +1 -1
  317. package/build/server/chunks/nodes/{18.js-Bgsp3ae8.js → 18.js-m1EmD7J9.js} +9 -5
  318. package/build/server/chunks/nodes/{18.js-Bgsp3ae8.js.map → 18.js-m1EmD7J9.js.map} +1 -1
  319. package/build/server/chunks/nodes/{19.js-D9cLVxrT.js → 19.js-Cvq4wk_v.js} +8 -8
  320. package/build/server/chunks/nodes/{19.js-D9cLVxrT.js.map → 19.js-Cvq4wk_v.js.map} +1 -1
  321. package/build/server/chunks/nodes/{2.js-DmypU6Ik.js → 2.js-_j2qbJf6.js} +8 -8
  322. package/build/server/chunks/nodes/{2.js-DmypU6Ik.js.map → 2.js-_j2qbJf6.js.map} +1 -1
  323. package/build/server/chunks/nodes/{20.js-DFb32d_g.js → 20.js-BjgFHK82.js} +15 -12
  324. package/build/server/chunks/nodes/{20.js-DFb32d_g.js.map → 20.js-BjgFHK82.js.map} +1 -1
  325. package/build/server/chunks/nodes/{21.js-CLlkXuYa.js → 21.js-C3u9VeIP.js} +11 -7
  326. package/build/server/chunks/nodes/{21.js-CLlkXuYa.js.map → 21.js-C3u9VeIP.js.map} +1 -1
  327. package/build/server/chunks/nodes/{22.js-CHUnyC-K.js → 22.js-3vW3ZPjE.js} +8 -3
  328. package/build/server/chunks/nodes/{22.js-CHUnyC-K.js.map → 22.js-3vW3ZPjE.js.map} +1 -1
  329. package/build/server/chunks/nodes/{23.js-DVi_MOBe.js → 23.js-h3AKg2Bd.js} +9 -9
  330. package/build/server/chunks/nodes/{23.js-DVi_MOBe.js.map → 23.js-h3AKg2Bd.js.map} +1 -1
  331. package/build/server/chunks/nodes/{24.js-Cju9k1ab.js → 24.js-DcfMC0S6.js} +11 -7
  332. package/build/server/chunks/nodes/{24.js-Cju9k1ab.js.map → 24.js-DcfMC0S6.js.map} +1 -1
  333. package/build/server/chunks/nodes/{25.js-_K4kh7f2.js → 25.js-B8F-WcNH.js} +4 -4
  334. package/build/server/chunks/nodes/{25.js-_K4kh7f2.js.map → 25.js-B8F-WcNH.js.map} +1 -1
  335. package/build/server/chunks/nodes/{27.js-RjMIvM6G.js → 27.js-DmjAkuen.js} +6 -6
  336. package/build/server/chunks/nodes/{27.js-RjMIvM6G.js.map → 27.js-DmjAkuen.js.map} +1 -1
  337. package/build/server/chunks/nodes/{28.js-CIJbmh7U.js → 28.js-B7Rf1M8l.js} +6 -6
  338. package/build/server/chunks/nodes/{28.js-CIJbmh7U.js.map → 28.js-B7Rf1M8l.js.map} +1 -1
  339. package/build/server/chunks/nodes/{29.js-CFoAmrrA.js → 29.js-DFPsK4BF.js} +5 -5
  340. package/build/server/chunks/nodes/{29.js-CFoAmrrA.js.map → 29.js-DFPsK4BF.js.map} +1 -1
  341. package/build/server/chunks/nodes/{3.js-CVk02asd.js → 3.js-DEDKRIYO.js} +2 -2
  342. package/build/server/chunks/nodes/{3.js-CVk02asd.js.map → 3.js-DEDKRIYO.js.map} +1 -1
  343. package/build/server/chunks/nodes/{30.js-DfnjBleA.js → 30.js-B17mHAaN.js} +5 -5
  344. package/build/server/chunks/nodes/{30.js-DfnjBleA.js.map → 30.js-B17mHAaN.js.map} +1 -1
  345. package/build/server/chunks/nodes/{31.js-DqFB_Wmh.js → 31.js-g3F8A8P0.js} +4 -4
  346. package/build/server/chunks/nodes/{31.js-DqFB_Wmh.js.map → 31.js-g3F8A8P0.js.map} +1 -1
  347. package/build/server/chunks/nodes/{32.js-DW6izRuF.js → 32.js-1VSkrG-2.js} +4 -4
  348. package/build/server/chunks/nodes/{32.js-DW6izRuF.js.map → 32.js-1VSkrG-2.js.map} +1 -1
  349. package/build/server/chunks/nodes/{5.js-B_kjfr2k.js → 5.js-BvHhhp_p.js} +4 -4
  350. package/build/server/chunks/nodes/{5.js-B_kjfr2k.js.map → 5.js-BvHhhp_p.js.map} +1 -1
  351. package/build/server/chunks/nodes/{6.js-8PrsQVBK.js → 6.js-BHejxveY.js} +5 -5
  352. package/build/server/chunks/nodes/{6.js-8PrsQVBK.js.map → 6.js-BHejxveY.js.map} +1 -1
  353. package/build/server/chunks/nodes/{7.js-BjKJ_1fW.js → 7.js-CV5qjTXV.js} +2 -2
  354. package/build/server/chunks/nodes/{7.js-BjKJ_1fW.js.map → 7.js-CV5qjTXV.js.map} +1 -1
  355. package/build/server/chunks/nodes/{8.js-BaBu7XkQ.js → 8.js-jhS48nhZ.js} +10 -6
  356. package/build/server/chunks/nodes/{8.js-BaBu7XkQ.js.map → 8.js-jhS48nhZ.js.map} +1 -1
  357. package/build/server/chunks/nodes/{9.js-BLFAupFY.js → 9.js-27g91Gox.js} +6 -6
  358. package/build/server/chunks/nodes/{9.js-BLFAupFY.js.map → 9.js-27g91Gox.js.map} +1 -1
  359. package/package.json +4 -4
  360. package/templates/.env.example +50 -0
  361. package/build/client/_app/immutable/chunks/B2u4e1Y9.js.br +0 -0
  362. package/build/client/_app/immutable/chunks/B2u4e1Y9.js.gz +0 -0
  363. package/build/client/_app/immutable/chunks/B5OJUbsp.js.br +0 -0
  364. package/build/client/_app/immutable/chunks/B5OJUbsp.js.gz +0 -0
  365. package/build/client/_app/immutable/chunks/BL2t7cAH.js.br +0 -0
  366. package/build/client/_app/immutable/chunks/BL2t7cAH.js.gz +0 -0
  367. package/build/client/_app/immutable/chunks/BUSu7k-8.js.br +0 -0
  368. package/build/client/_app/immutable/chunks/BUSu7k-8.js.gz +0 -0
  369. package/build/client/_app/immutable/chunks/CQlm8KiO.js.br +0 -0
  370. package/build/client/_app/immutable/chunks/CQlm8KiO.js.gz +0 -0
  371. package/build/client/_app/immutable/chunks/CaWnsi86.js.br +0 -0
  372. package/build/client/_app/immutable/chunks/CaWnsi86.js.gz +0 -0
  373. package/build/client/_app/immutable/chunks/CbzchbHa.js.br +0 -0
  374. package/build/client/_app/immutable/chunks/CbzchbHa.js.gz +0 -0
  375. package/build/client/_app/immutable/chunks/DAFm-rT0.js.br +0 -0
  376. package/build/client/_app/immutable/chunks/DAFm-rT0.js.gz +0 -0
  377. package/build/client/_app/immutable/entry/app.CUiJWB53.js.br +0 -0
  378. package/build/client/_app/immutable/entry/app.CUiJWB53.js.gz +0 -0
  379. package/build/client/_app/immutable/entry/start.B6frOPSZ.js +0 -1
  380. package/build/client/_app/immutable/entry/start.B6frOPSZ.js.br +0 -2
  381. package/build/client/_app/immutable/entry/start.B6frOPSZ.js.gz +0 -0
  382. package/build/client/_app/immutable/nodes/1.jBltffEQ.js.br +0 -0
  383. package/build/client/_app/immutable/nodes/1.jBltffEQ.js.gz +0 -0
  384. package/build/client/_app/immutable/nodes/11.fnbbU5fQ.js.br +0 -0
  385. package/build/client/_app/immutable/nodes/11.fnbbU5fQ.js.gz +0 -0
  386. package/build/client/_app/immutable/nodes/13.CokPGn13.js.br +0 -0
  387. package/build/client/_app/immutable/nodes/13.CokPGn13.js.gz +0 -0
  388. package/build/client/_app/immutable/nodes/14.BOBvQoRO.js.br +0 -0
  389. package/build/client/_app/immutable/nodes/14.BOBvQoRO.js.gz +0 -0
  390. package/build/client/_app/immutable/nodes/15.rVnmmhFk.js.br +0 -0
  391. package/build/client/_app/immutable/nodes/15.rVnmmhFk.js.gz +0 -0
  392. package/build/client/_app/immutable/nodes/16.CT8CyQj6.js.br +0 -0
  393. package/build/client/_app/immutable/nodes/16.CT8CyQj6.js.gz +0 -0
  394. package/build/client/_app/immutable/nodes/17.D4no7cGI.js.br +0 -0
  395. package/build/client/_app/immutable/nodes/17.D4no7cGI.js.gz +0 -0
  396. package/build/client/_app/immutable/nodes/19.BLra_dlM.js.br +0 -0
  397. package/build/client/_app/immutable/nodes/19.BLra_dlM.js.gz +0 -0
  398. package/build/client/_app/immutable/nodes/2.MyCVVapl.js.br +0 -0
  399. package/build/client/_app/immutable/nodes/2.MyCVVapl.js.gz +0 -0
  400. package/build/client/_app/immutable/nodes/20.uQnvI_Uv.js +0 -5414
  401. package/build/client/_app/immutable/nodes/20.uQnvI_Uv.js.br +0 -0
  402. package/build/client/_app/immutable/nodes/20.uQnvI_Uv.js.gz +0 -0
  403. package/build/client/_app/immutable/nodes/21.CE1lAxCo.js.br +0 -0
  404. package/build/client/_app/immutable/nodes/21.CE1lAxCo.js.gz +0 -0
  405. package/build/client/_app/immutable/nodes/23.DNa5Wj-V.js +0 -16
  406. package/build/client/_app/immutable/nodes/23.DNa5Wj-V.js.br +0 -0
  407. package/build/client/_app/immutable/nodes/23.DNa5Wj-V.js.gz +0 -0
  408. package/build/client/_app/immutable/nodes/24.8w-n98Zt.js.br +0 -0
  409. package/build/client/_app/immutable/nodes/24.8w-n98Zt.js.gz +0 -0
  410. package/build/client/_app/immutable/nodes/27.CTvZ6KxX.js.br +0 -0
  411. package/build/client/_app/immutable/nodes/27.CTvZ6KxX.js.gz +0 -0
  412. package/build/client/_app/immutable/nodes/28.n4L9k3Rh.js.br +0 -0
  413. package/build/client/_app/immutable/nodes/28.n4L9k3Rh.js.gz +0 -0
  414. package/build/client/_app/immutable/nodes/29.B90ZvGzu.js.br +0 -0
  415. package/build/client/_app/immutable/nodes/29.B90ZvGzu.js.gz +0 -0
  416. package/build/client/_app/immutable/nodes/3.C49Pdolk.js.br +0 -0
  417. package/build/client/_app/immutable/nodes/3.C49Pdolk.js.gz +0 -0
  418. package/build/client/_app/immutable/nodes/30.CGkD_uX2.js.br +0 -0
  419. package/build/client/_app/immutable/nodes/30.CGkD_uX2.js.gz +0 -0
  420. package/build/client/_app/immutable/nodes/5.BD_FrnS6.js.br +0 -1
  421. package/build/client/_app/immutable/nodes/5.BD_FrnS6.js.gz +0 -0
  422. package/build/client/_app/immutable/nodes/6.FHxxXtNY.js.br +0 -0
  423. package/build/client/_app/immutable/nodes/6.FHxxXtNY.js.gz +0 -0
  424. package/build/client/_app/immutable/nodes/7.rgqW6l_z.js.br +0 -0
  425. package/build/client/_app/immutable/nodes/7.rgqW6l_z.js.gz +0 -0
  426. package/build/client/_app/immutable/nodes/8.CMWVVdHD.js.br +0 -0
  427. package/build/client/_app/immutable/nodes/8.CMWVVdHD.js.gz +0 -0
  428. package/build/client/_app/immutable/nodes/9.B1DVTVqB.js.br +0 -0
  429. package/build/client/_app/immutable/nodes/9.B1DVTVqB.js.gz +0 -0
  430. package/build/server/chunks/chunks/admin-auth.server.js-BAXmH56n.js.map +0 -1
  431. package/build/server/chunks/chunks/clientCache.server.js-CDbNbNdZ.js.map +0 -1
  432. package/build/server/chunks/chunks/computeLimits.js-DmiFfoef.js.map +0 -1
  433. package/build/server/chunks/chunks/context.js-D8E0GFTw.js.map +0 -1
  434. package/build/server/chunks/chunks/package.js-DWOK6LMe.js.map +0 -1
  435. package/build/server/chunks/chunks/providers.server.js-BKhwGvoh.js.map +0 -1
  436. package/build/server/chunks/entries/endpoints/api/compute/_server.ts.js-D4bNHN4G.js.map +0 -1
  437. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-Dh0q5yDX.js.map +0 -1
  438. package/build/server/chunks/entries/pages/projects/_page.svelte.js-nQ9Uj1kK.js.map +0 -1
@@ -3,9 +3,9 @@ import { join } from 'path';
3
3
  import { readFileSync, writeFileSync } from 'fs';
4
4
  import { b as private_env } from '../../../../../../chunks/shared-server.js-DaWdgxVh.js';
5
5
  import { json } from '@sveltejs/kit';
6
- import '../../../../../../chunks/context.js-D8E0GFTw.js';
7
- import { w as actorFrom, h as getEventSink, f as getErrorReporter } from '../../../../../../chunks/providers.server.js-BKhwGvoh.js';
8
- import { d as requirePermission } from '../../../../../../chunks/access.server.js-DmuVt13u.js';
6
+ import '../../../../../../chunks/context.js-DsQGiS2x.js';
7
+ import { w as actorFrom, h as getEventSink, f as getErrorReporter } from '../../../../../../chunks/providers.server.js-CIHOepKv.js';
8
+ import { d as requirePermission } from '../../../../../../chunks/access.server.js-_nJWuQcN.js';
9
9
  import { c as checkForUpdate, r as readChannel, a as channelTag } from '../../../../../../chunks/updateCheck.server.js-DdReI2pF.js';
10
10
  import { u as updateLogPath, f as findDeploymentDir, a as updateStatePath, s as startUpdateOutcomeReconciler } from '../../../../../../chunks/selfUpdate.server.js-CXejyqIT.js';
11
11
  import 'zod';
@@ -15,10 +15,10 @@ import 'node:fs';
15
15
  import 'node:crypto';
16
16
  import 'node:fs/promises';
17
17
  import '@supabase/supabase-js';
18
- import '../../../../../../chunks/api-errors.js-CwTBBHWD.js';
18
+ import '../../../../../../chunks/api-errors.js-DlfcfPJs.js';
19
19
  import '@selvajs/compute/core';
20
20
  import '../../../../../../chunks/schema.js-j3D3emog.js';
21
- import '../../../../../../chunks/utils4.js-C-poIiFQ.js';
21
+ import '../../../../../../chunks/utils4.js-8SHxuGTr.js';
22
22
  import '../../../../../../chunks/update-outcome.js-mUyfVCnt.js';
23
23
 
24
24
  function stripAnsi(str) {
@@ -423,4 +423,4 @@ const GET = async ({ locals, url, fetch }) => {
423
423
  };
424
424
 
425
425
  export { GET, POST };
426
- //# sourceMappingURL=_server.ts.js-D_iGos7D.js.map
426
+ //# sourceMappingURL=_server.ts.js-D-IGlEji.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts.js-D_iGos7D.js","sources":["../../../../../../../../../.svelte-kit/output/server/entries/endpoints/admin/api/system/update/_server.ts.js"],"sourcesContent":["import { spawn } from \"child_process\";\nimport { join } from \"path\";\nimport { readFileSync, writeFileSync } from \"fs\";\nimport { b as private_env } from \"../../../../../../chunks/shared-server.js\";\nimport { json } from \"@sveltejs/kit\";\nimport \"../../../../../../chunks/context.js\";\nimport { o as actorFrom, a as getEventSink, g as getErrorReporter } from \"../../../../../../chunks/providers.server.js\";\nimport { d as requirePermission } from \"../../../../../../chunks/access.server.js\";\nimport { c as checkForUpdate, r as readChannel, a as channelTag } from \"../../../../../../chunks/updateCheck.server.js\";\nimport { u as updateLogPath, f as findDeploymentDir, a as updateStatePath, s as startUpdateOutcomeReconciler } from \"../../../../../../chunks/selfUpdate.server.js\";\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, logPath, prelude = []) {\n const echoes = prelude.map((line) => `echo ${shellQuote(line)}`).join(\"\\n\");\n return `\nLOGFILE=${shellQuote(logPath)}\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, tag) {\n const npmCommand = [\"npm\", ...npmArgs].map(shellQuote).join(\" \");\n const before = shellQuote(versionBefore ?? \"\");\n const ecosystem = shellQuote(ecosystemPath);\n const distTag = shellQuote(tag);\n return `#!/bin/bash\nset -o pipefail\nBEFORE=${before}\nECOSYSTEM=${ecosystem}\nTAG=${distTag}\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 CODE=$?\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 # Terminal marker: the restarted app's outcome reconciler greps this to turn\n # the run into an audit event (selfUpdate.server.ts). Keep the format stable.\n echo \"[EXIT] code=$CODE\"\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 the '$TAG' channel version\"\nLATEST=$(npm view \"@selvajs/selva@$TAG\" 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 '$TAG' channel version ($BEFORE)\"\n echo \"[DONE] Nothing to do\"\n exit 0\nelse\n # May be a forward update OR a revert (target older than installed) — either\n # way the installed version differs from what this channel publishes.\n echo \"[INFO] Target ($TAG): $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 npmInstallArgs(channel) {\n const tag = channelTag(channel);\n return [\"install\", \"--save\", \"--prefer-online\", `@selvajs/cli@${tag}`, `@selvajs/selva@${tag}`];\n}\nfunction detectUpdatePlan(channel) {\n const dir = findDeploymentDir(private_env);\n return dir ? { cwd: dir, args: npmInstallArgs(channel) } : null;\n}\nconst POST = async ({ locals }) => {\n requirePermission(locals, \"instance_admin\");\n const channel = readChannel();\n const plan = detectUpdatePlan(channel);\n if (!plan) {\n return new Response(\n JSON.stringify({\n error: \"Couldn't determine how to update this deployment. Expected node_modules/@selvajs/selva (CLI scaffold) in the cwd or a parent directory.\"\n }),\n { status: 500, headers: { \"Content-Type\": \"application/json\" } }\n );\n }\n const versionBefore = readRuntimeVersion(plan.cwd);\n const actorId = locals.ctx ? actorFrom(locals.ctx) : \"system\";\n const pending = {\n startedAt: (/* @__PURE__ */ new Date()).toISOString(),\n actorId,\n channel,\n fromVersion: versionBefore\n };\n try {\n writeFileSync(updateStatePath(plan.cwd), JSON.stringify(pending, null, \"\t\"));\n } catch (err) {\n console.error(\"[selfUpdate] could not persist pending-update state:\", err);\n }\n await getEventSink().emit({\n type: \"system.update.started\",\n channel,\n fromVersion: versionBefore,\n actorId\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 prelude = [\n `[INFO] Updating deployment (cwd: ${plan.cwd}, channel: ${channel})`,\n ...versionBefore ? [`[INFO] Current @selvajs/selva: ${versionBefore}`] : []\n ];\n const runnerScript = buildNpmRunnerScript(\n plan.args,\n versionBefore,\n join(plan.cwd, \"ecosystem.config.cjs\"),\n channelTag(channel)\n );\n const cmd = \"bash\";\n const args = [\"-c\", buildLauncher(runnerScript, updateLogPath(plan.cwd), prelude)];\n const localBin = join(plan.cwd, \"node_modules\", \".bin\");\n const child = spawn(cmd, args, {\n cwd: plan.cwd,\n env: {\n // eslint-disable-next-line no-restricted-properties -- OS env for the spawned child, not .env config\n PATH: `${localBin}:${process.env.PATH ?? \"\"}`,\n // eslint-disable-next-line no-restricted-properties -- OS env for the spawned child, not .env config\n HOME: process.env.HOME,\n INSTALL_DIR: plan.cwd\n },\n detached: true,\n stdio: [\"ignore\", \"pipe\", \"pipe\"]\n });\n child.unref();\n startUpdateOutcomeReconciler({\n deploymentDir: plan.cwd,\n emit: (e) => getEventSink().emit(e),\n report: (err) => getErrorReporter().capture(err, { tags: { origin: \"selfUpdate\" } })\n });\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, url, fetch }) => {\n requirePermission(locals, \"instance_admin\");\n if (url.searchParams.get(\"check\") !== null) {\n return json(await checkForUpdate(fetch, readChannel()), {\n headers: { \"Cache-Control\": \"no-store\" }\n });\n }\n let body = \"\";\n try {\n body = readFileSync(updateLogPath(findDeploymentDir(private_env)), \"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":";;;;;;;;;;;;;;;;;;;;;;;AAUA,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,EAAE,OAAO,GAAG,EAAE,EAAE;AAC5D,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,OAAO,CAAC;AAC7B;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,GAAG,EAAE;AAC1E,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,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;AACjC,EAAE,OAAO,CAAC;AACV;AACA,OAAO,EAAE,MAAM;AACf,UAAU,EAAE,SAAS;AACrB,IAAI,EAAE,OAAO;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;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,cAAc,CAAC,OAAO,EAAE;AACjC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC;AACjC,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,aAAa,EAAE,GAAG,CAA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"}
1
+ {"version":3,"file":"_server.ts.js-D-IGlEji.js","sources":["../../../../../../../../../.svelte-kit/output/server/entries/endpoints/admin/api/system/update/_server.ts.js"],"sourcesContent":["import { spawn } from \"child_process\";\nimport { join } from \"path\";\nimport { readFileSync, writeFileSync } from \"fs\";\nimport { b as private_env } from \"../../../../../../chunks/shared-server.js\";\nimport { json } from \"@sveltejs/kit\";\nimport \"../../../../../../chunks/context.js\";\nimport { o as actorFrom, a as getEventSink, g as getErrorReporter } from \"../../../../../../chunks/providers.server.js\";\nimport { d as requirePermission } from \"../../../../../../chunks/access.server.js\";\nimport { c as checkForUpdate, r as readChannel, a as channelTag } from \"../../../../../../chunks/updateCheck.server.js\";\nimport { u as updateLogPath, f as findDeploymentDir, a as updateStatePath, s as startUpdateOutcomeReconciler } from \"../../../../../../chunks/selfUpdate.server.js\";\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, logPath, prelude = []) {\n const echoes = prelude.map((line) => `echo ${shellQuote(line)}`).join(\"\\n\");\n return `\nLOGFILE=${shellQuote(logPath)}\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, tag) {\n const npmCommand = [\"npm\", ...npmArgs].map(shellQuote).join(\" \");\n const before = shellQuote(versionBefore ?? \"\");\n const ecosystem = shellQuote(ecosystemPath);\n const distTag = shellQuote(tag);\n return `#!/bin/bash\nset -o pipefail\nBEFORE=${before}\nECOSYSTEM=${ecosystem}\nTAG=${distTag}\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 CODE=$?\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 # Terminal marker: the restarted app's outcome reconciler greps this to turn\n # the run into an audit event (selfUpdate.server.ts). Keep the format stable.\n echo \"[EXIT] code=$CODE\"\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 the '$TAG' channel version\"\nLATEST=$(npm view \"@selvajs/selva@$TAG\" 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 '$TAG' channel version ($BEFORE)\"\n echo \"[DONE] Nothing to do\"\n exit 0\nelse\n # May be a forward update OR a revert (target older than installed) — either\n # way the installed version differs from what this channel publishes.\n echo \"[INFO] Target ($TAG): $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 npmInstallArgs(channel) {\n const tag = channelTag(channel);\n return [\"install\", \"--save\", \"--prefer-online\", `@selvajs/cli@${tag}`, `@selvajs/selva@${tag}`];\n}\nfunction detectUpdatePlan(channel) {\n const dir = findDeploymentDir(private_env);\n return dir ? { cwd: dir, args: npmInstallArgs(channel) } : null;\n}\nconst POST = async ({ locals }) => {\n requirePermission(locals, \"instance_admin\");\n const channel = readChannel();\n const plan = detectUpdatePlan(channel);\n if (!plan) {\n return new Response(\n JSON.stringify({\n error: \"Couldn't determine how to update this deployment. Expected node_modules/@selvajs/selva (CLI scaffold) in the cwd or a parent directory.\"\n }),\n { status: 500, headers: { \"Content-Type\": \"application/json\" } }\n );\n }\n const versionBefore = readRuntimeVersion(plan.cwd);\n const actorId = locals.ctx ? actorFrom(locals.ctx) : \"system\";\n const pending = {\n startedAt: (/* @__PURE__ */ new Date()).toISOString(),\n actorId,\n channel,\n fromVersion: versionBefore\n };\n try {\n writeFileSync(updateStatePath(plan.cwd), JSON.stringify(pending, null, \"\t\"));\n } catch (err) {\n console.error(\"[selfUpdate] could not persist pending-update state:\", err);\n }\n await getEventSink().emit({\n type: \"system.update.started\",\n channel,\n fromVersion: versionBefore,\n actorId\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 prelude = [\n `[INFO] Updating deployment (cwd: ${plan.cwd}, channel: ${channel})`,\n ...versionBefore ? [`[INFO] Current @selvajs/selva: ${versionBefore}`] : []\n ];\n const runnerScript = buildNpmRunnerScript(\n plan.args,\n versionBefore,\n join(plan.cwd, \"ecosystem.config.cjs\"),\n channelTag(channel)\n );\n const cmd = \"bash\";\n const args = [\"-c\", buildLauncher(runnerScript, updateLogPath(plan.cwd), prelude)];\n const localBin = join(plan.cwd, \"node_modules\", \".bin\");\n const child = spawn(cmd, args, {\n cwd: plan.cwd,\n env: {\n // eslint-disable-next-line no-restricted-properties -- OS env for the spawned child, not .env config\n PATH: `${localBin}:${process.env.PATH ?? \"\"}`,\n // eslint-disable-next-line no-restricted-properties -- OS env for the spawned child, not .env config\n HOME: process.env.HOME,\n INSTALL_DIR: plan.cwd\n },\n detached: true,\n stdio: [\"ignore\", \"pipe\", \"pipe\"]\n });\n child.unref();\n startUpdateOutcomeReconciler({\n deploymentDir: plan.cwd,\n emit: (e) => getEventSink().emit(e),\n report: (err) => getErrorReporter().capture(err, { tags: { origin: \"selfUpdate\" } })\n });\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, url, fetch }) => {\n requirePermission(locals, \"instance_admin\");\n if (url.searchParams.get(\"check\") !== null) {\n return json(await checkForUpdate(fetch, readChannel()), {\n headers: { \"Cache-Control\": \"no-store\" }\n });\n }\n let body = \"\";\n try {\n body = readFileSync(updateLogPath(findDeploymentDir(private_env)), \"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":";;;;;;;;;;;;;;;;;;;;;;;AAUA,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,EAAE,OAAO,GAAG,EAAE,EAAE;AAC5D,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,OAAO,CAAC;AAC7B;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,GAAG,EAAE;AAC1E,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,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;AACjC,EAAE,OAAO,CAAC;AACV;AACA,OAAO,EAAE,MAAM;AACf,UAAU,EAAE,SAAS;AACrB,IAAI,EAAE,OAAO;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;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,cAAc,CAAC,OAAO,EAAE;AACjC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC;AACjC,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,aAAa,EAAE,GAAG,CAA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"}
@@ -1,10 +1,10 @@
1
1
  import { z } from 'zod';
2
- import { a as getPermissionStore, g as getAuthProvider, c as getDataProvider, d as getOrganizationProvider } from '../../../../../../chunks/providers.server.js-BKhwGvoh.js';
3
- import { e as requireManageInstanceUsers } from '../../../../../../chunks/access.server.js-DmuVt13u.js';
4
- import { a as apiError, t as throwZodError, A as ApiErrorCode } from '../../../../../../chunks/api-errors.js-CwTBBHWD.js';
5
- import { S as SYSTEM_CONTEXT, h as hasPermission, D as DEFAULT_ORG_PERMISSIONS, M as MEMBER_ASSIGNABLE_PERMISSIONS, P as PlatformPermissionSchema, b as OrgPermissionSchema } from '../../../../../../chunks/context.js-D8E0GFTw.js';
6
- import { s as splitFlatPermissions } from '../../../../../../chunks/permissions-compat.server.js-BfoBZYSH.js';
7
- import { s as setUserPlatformPermissions } from '../../../../../../chunks/permissions.server.js-DyHNgP29.js';
2
+ import { a as getPermissionStore, g as getAuthProvider, c as getDataProvider, d as getOrganizationProvider } from '../../../../../../chunks/providers.server.js-CIHOepKv.js';
3
+ import { e as requireManageInstanceUsers } from '../../../../../../chunks/access.server.js-_nJWuQcN.js';
4
+ import { a as apiError, t as throwZodError, A as ApiErrorCode } from '../../../../../../chunks/api-errors.js-DlfcfPJs.js';
5
+ import { S as SYSTEM_CONTEXT, h as hasPermission, D as DEFAULT_ORG_PERMISSIONS, M as MEMBER_ASSIGNABLE_PERMISSIONS, P as PlatformPermissionSchema, b as OrgPermissionSchema } from '../../../../../../chunks/context.js-DsQGiS2x.js';
6
+ import { s as splitFlatPermissions } from '../../../../../../chunks/permissions-compat.server.js-DNsLyriU.js';
7
+ import { s as setUserPlatformPermissions } from '../../../../../../chunks/permissions.server.js-C3_SFjUh.js';
8
8
  import '../../../../../../chunks/shared-server.js-DaWdgxVh.js';
9
9
  import 'node:url';
10
10
  import 'node:path';
@@ -15,7 +15,7 @@ import '@supabase/supabase-js';
15
15
  import '@sveltejs/kit';
16
16
  import '@selvajs/compute/core';
17
17
  import '../../../../../../chunks/schema.js-j3D3emog.js';
18
- import '../../../../../../chunks/utils4.js-C-poIiFQ.js';
18
+ import '../../../../../../chunks/utils4.js-8SHxuGTr.js';
19
19
 
20
20
  const FlatPermissionSchema = z.union([PlatformPermissionSchema, OrgPermissionSchema]);
21
21
  const UpdatePermissionsBody = z.object({
@@ -104,4 +104,4 @@ const DELETE = async ({ params, locals }) => {
104
104
  };
105
105
 
106
106
  export { DELETE, PATCH };
107
- //# sourceMappingURL=_server.ts.js-BZ9V4O5o.js.map
107
+ //# sourceMappingURL=_server.ts.js-7Efk1xkU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts.js-BZ9V4O5o.js","sources":["../../../../../../../../../.svelte-kit/output/server/entries/endpoints/admin/api/users/_id_/_server.ts.js"],"sourcesContent":["import { z } from \"zod\";\nimport { q as getPermissionStore, b as getAuthProvider, r as getDataProvider, e as getOrganizationProvider } from \"../../../../../../chunks/providers.server.js\";\nimport { e as requireManageInstanceUsers } from \"../../../../../../chunks/access.server.js\";\nimport { a as apiError, t as throwZodError, A as ApiErrorCode } from \"../../../../../../chunks/api-errors.js\";\nimport { P as PlatformPermissionSchema, a as OrgPermissionSchema, S as SYSTEM_CONTEXT, h as hasPermission, D as DEFAULT_ORG_PERMISSIONS, M as MEMBER_ASSIGNABLE_PERMISSIONS } from \"../../../../../../chunks/context.js\";\nimport { s as splitFlatPermissions } from \"../../../../../../chunks/permissions-compat.server.js\";\nimport { s as setUserPlatformPermissions } from \"../../../../../../chunks/permissions.server.js\";\nconst FlatPermissionSchema = z.union([PlatformPermissionSchema, OrgPermissionSchema]);\nconst UpdatePermissionsBody = z.object({\n permissions: z.array(FlatPermissionSchema)\n});\nconst PATCH = async ({ params, request, locals }) => {\n requireManageInstanceUsers(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing user ID\");\n const body = await request.json().catch(() => null);\n const parsed = UpdatePermissionsBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const { platform, org } = splitFlatPermissions(parsed.data.permissions);\n const existingPlatform = await getPermissionStore().getFor(locals.ctx, id);\n const platformChanged = platform.length !== existingPlatform.length || platform.some((p) => !existingPlatform.includes(p)) || existingPlatform.some((p) => !platform.includes(p));\n if (platformChanged && !hasPermission(locals.ctx, \"instance_admin\")) {\n apiError(\n 403,\n ApiErrorCode.FORBIDDEN,\n \"Only a platform admin can change platform-scope permissions\"\n );\n }\n const platformResult = await setUserPlatformPermissions(locals.ctx, id, platform);\n if (platformResult === \"not_found\") apiError(404, ApiErrorCode.NOT_FOUND, \"User not found\");\n if (platformResult === \"not_supported\")\n apiError(\n 501,\n ApiErrorCode.INTERNAL,\n \"Platform permission updates not supported by this auth provider\"\n );\n if (platformResult === \"last_admin\")\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Cannot remove the last instance admin. Promote another user to instance admin first.\"\n );\n const orgId = locals.ctx?.actingOrgId;\n if (orgId) {\n const orgs = getOrganizationProvider();\n const existing = await orgs.getOrgMember(SYSTEM_CONTEXT, orgId, id);\n const resolvedPermissions = (role) => role === \"member\" ? org.filter((p) => MEMBER_ASSIGNABLE_PERMISSIONS.includes(p)) : [...DEFAULT_ORG_PERMISSIONS[role]];\n if (existing) {\n await orgs.updateOrgMemberPermissions(\n SYSTEM_CONTEXT,\n orgId,\n id,\n resolvedPermissions(existing.role)\n );\n } else {\n const joinedAt = (/* @__PURE__ */ new Date()).toISOString();\n await orgs.addOrgMember(SYSTEM_CONTEXT, {\n orgId,\n userId: id,\n role: \"member\",\n permissions: resolvedPermissions(\"member\"),\n joinedAt,\n updatedAt: joinedAt,\n updatedBy: locals.user?.id ?? id,\n deletedAt: null\n });\n }\n }\n return new Response(null, { status: 204 });\n};\nconst DELETE = async ({ params, locals }) => {\n requireManageInstanceUsers(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing user ID\");\n const targetPerms = await getPermissionStore().getFor(locals.ctx, id);\n if (targetPerms.includes(\"instance_admin\")) {\n const others = await getPermissionStore().countInstanceAdminsExcluding(locals.ctx, id);\n if (others === 0) {\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Cannot delete the last instance admin. Promote another user to instance admin first.\"\n );\n }\n }\n const result = await getAuthProvider().deleteUser(id);\n if (result === \"not_found\") apiError(404, ApiErrorCode.NOT_FOUND, \"User not found\");\n if (result === \"not_supported\")\n apiError(501, ApiErrorCode.INTERNAL, \"User deletion not supported by this auth provider\");\n await getDataProvider().onUserDeleted(SYSTEM_CONTEXT, id);\n return new Response(null, { status: 204 });\n};\nexport {\n DELETE,\n PATCH\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts.js-7Efk1xkU.js","sources":["../../../../../../../../../.svelte-kit/output/server/entries/endpoints/admin/api/users/_id_/_server.ts.js"],"sourcesContent":["import { z } from \"zod\";\nimport { q as getPermissionStore, b as getAuthProvider, r as getDataProvider, e as getOrganizationProvider } from \"../../../../../../chunks/providers.server.js\";\nimport { e as requireManageInstanceUsers } from \"../../../../../../chunks/access.server.js\";\nimport { a as apiError, t as throwZodError, A as ApiErrorCode } from \"../../../../../../chunks/api-errors.js\";\nimport { P as PlatformPermissionSchema, a as OrgPermissionSchema, S as SYSTEM_CONTEXT, h as hasPermission, D as DEFAULT_ORG_PERMISSIONS, M as MEMBER_ASSIGNABLE_PERMISSIONS } from \"../../../../../../chunks/context.js\";\nimport { s as splitFlatPermissions } from \"../../../../../../chunks/permissions-compat.server.js\";\nimport { s as setUserPlatformPermissions } from \"../../../../../../chunks/permissions.server.js\";\nconst FlatPermissionSchema = z.union([PlatformPermissionSchema, OrgPermissionSchema]);\nconst UpdatePermissionsBody = z.object({\n permissions: z.array(FlatPermissionSchema)\n});\nconst PATCH = async ({ params, request, locals }) => {\n requireManageInstanceUsers(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing user ID\");\n const body = await request.json().catch(() => null);\n const parsed = UpdatePermissionsBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const { platform, org } = splitFlatPermissions(parsed.data.permissions);\n const existingPlatform = await getPermissionStore().getFor(locals.ctx, id);\n const platformChanged = platform.length !== existingPlatform.length || platform.some((p) => !existingPlatform.includes(p)) || existingPlatform.some((p) => !platform.includes(p));\n if (platformChanged && !hasPermission(locals.ctx, \"instance_admin\")) {\n apiError(\n 403,\n ApiErrorCode.FORBIDDEN,\n \"Only a platform admin can change platform-scope permissions\"\n );\n }\n const platformResult = await setUserPlatformPermissions(locals.ctx, id, platform);\n if (platformResult === \"not_found\") apiError(404, ApiErrorCode.NOT_FOUND, \"User not found\");\n if (platformResult === \"not_supported\")\n apiError(\n 501,\n ApiErrorCode.INTERNAL,\n \"Platform permission updates not supported by this auth provider\"\n );\n if (platformResult === \"last_admin\")\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Cannot remove the last instance admin. Promote another user to instance admin first.\"\n );\n const orgId = locals.ctx?.actingOrgId;\n if (orgId) {\n const orgs = getOrganizationProvider();\n const existing = await orgs.getOrgMember(SYSTEM_CONTEXT, orgId, id);\n const resolvedPermissions = (role) => role === \"member\" ? org.filter((p) => MEMBER_ASSIGNABLE_PERMISSIONS.includes(p)) : [...DEFAULT_ORG_PERMISSIONS[role]];\n if (existing) {\n await orgs.updateOrgMemberPermissions(\n SYSTEM_CONTEXT,\n orgId,\n id,\n resolvedPermissions(existing.role)\n );\n } else {\n const joinedAt = (/* @__PURE__ */ new Date()).toISOString();\n await orgs.addOrgMember(SYSTEM_CONTEXT, {\n orgId,\n userId: id,\n role: \"member\",\n permissions: resolvedPermissions(\"member\"),\n joinedAt,\n updatedAt: joinedAt,\n updatedBy: locals.user?.id ?? id,\n deletedAt: null\n });\n }\n }\n return new Response(null, { status: 204 });\n};\nconst DELETE = async ({ params, locals }) => {\n requireManageInstanceUsers(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing user ID\");\n const targetPerms = await getPermissionStore().getFor(locals.ctx, id);\n if (targetPerms.includes(\"instance_admin\")) {\n const others = await getPermissionStore().countInstanceAdminsExcluding(locals.ctx, id);\n if (others === 0) {\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Cannot delete the last instance admin. Promote another user to instance admin first.\"\n );\n }\n }\n const result = await getAuthProvider().deleteUser(id);\n if (result === \"not_found\") apiError(404, ApiErrorCode.NOT_FOUND, \"User not found\");\n if (result === \"not_supported\")\n apiError(501, ApiErrorCode.INTERNAL, \"User deletion not supported by this auth provider\");\n await getDataProvider().onUserDeleted(SYSTEM_CONTEXT, id);\n return new Response(null, { status: 204 });\n};\nexport {\n DELETE,\n PATCH\n};\n"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { a as apiError, A as ApiErrorCode } from '../../../../../../../chunks/api-errors.js-CwTBBHWD.js';
2
- import { a as getPermissionStore, g as getAuthProvider } from '../../../../../../../chunks/providers.server.js-BKhwGvoh.js';
3
- import { e as requireManageInstanceUsers } from '../../../../../../../chunks/access.server.js-DmuVt13u.js';
1
+ import { a as apiError, A as ApiErrorCode } from '../../../../../../../chunks/api-errors.js-DlfcfPJs.js';
2
+ import { a as getPermissionStore, g as getAuthProvider } from '../../../../../../../chunks/providers.server.js-CIHOepKv.js';
3
+ import { e as requireManageInstanceUsers } from '../../../../../../../chunks/access.server.js-_nJWuQcN.js';
4
4
  import '@sveltejs/kit';
5
- import '../../../../../../../chunks/context.js-D8E0GFTw.js';
5
+ import '../../../../../../../chunks/context.js-DsQGiS2x.js';
6
6
  import 'zod';
7
7
  import '@selvajs/compute/core';
8
8
  import '../../../../../../../chunks/schema.js-j3D3emog.js';
9
- import '../../../../../../../chunks/utils4.js-C-poIiFQ.js';
9
+ import '../../../../../../../chunks/utils4.js-8SHxuGTr.js';
10
10
  import '../../../../../../../chunks/shared-server.js-DaWdgxVh.js';
11
11
  import 'node:url';
12
12
  import 'node:path';
@@ -38,4 +38,4 @@ const POST = async ({ params, locals }) => {
38
38
  };
39
39
 
40
40
  export { POST };
41
- //# sourceMappingURL=_server.ts.js-mHiVbBvJ.js.map
41
+ //# sourceMappingURL=_server.ts.js-4UrDw7Q3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts.js-mHiVbBvJ.js","sources":["../../../../../../../../../../.svelte-kit/output/server/entries/endpoints/admin/api/users/_id_/disable/_server.ts.js"],"sourcesContent":["import { a as apiError, A as ApiErrorCode } from \"../../../../../../../chunks/api-errors.js\";\nimport { q as getPermissionStore, b as getAuthProvider } from \"../../../../../../../chunks/providers.server.js\";\nimport { e as requireManageInstanceUsers } from \"../../../../../../../chunks/access.server.js\";\nconst POST = async ({ params, locals }) => {\n requireManageInstanceUsers(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing user ID\");\n const targetPerms = await getPermissionStore().getFor(locals.ctx, id);\n if (targetPerms.includes(\"instance_admin\")) {\n const others = await getPermissionStore().countInstanceAdminsExcluding(locals.ctx, id);\n if (others === 0) {\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Cannot disable the last instance admin. Promote another user to instance admin first.\"\n );\n }\n }\n const result = await getAuthProvider().disableUser(id);\n if (result === \"not_found\") apiError(404, ApiErrorCode.NOT_FOUND, \"User not found\");\n if (result === \"not_supported\")\n apiError(501, ApiErrorCode.INTERNAL, \"Disabling users is not supported by this auth provider\");\n return new Response(null, { status: 204 });\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC3C,EAAE,0BAA0B,CAAC,MAAM,CAAC;AACpC,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AACvB,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;AAC3E,EAAE,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AACvE,EAAE,IAAI,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAC9C,IAAI,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC,4BAA4B,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1F,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE;AACtB,MAAM,QAAQ;AACd,QAAQ,GAAG;AACX,QAAQ,YAAY,CAAC,QAAQ;AAC7B,QAAQ;AACR,OAAO;AACP,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;AACxD,EAAE,IAAI,MAAM,KAAK,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACrF,EAAE,IAAI,MAAM,KAAK,eAAe;AAChC,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,wDAAwD,CAAC;AAClG,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC5C;;;;"}
1
+ {"version":3,"file":"_server.ts.js-4UrDw7Q3.js","sources":["../../../../../../../../../../.svelte-kit/output/server/entries/endpoints/admin/api/users/_id_/disable/_server.ts.js"],"sourcesContent":["import { a as apiError, A as ApiErrorCode } from \"../../../../../../../chunks/api-errors.js\";\nimport { q as getPermissionStore, b as getAuthProvider } from \"../../../../../../../chunks/providers.server.js\";\nimport { e as requireManageInstanceUsers } from \"../../../../../../../chunks/access.server.js\";\nconst POST = async ({ params, locals }) => {\n requireManageInstanceUsers(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing user ID\");\n const targetPerms = await getPermissionStore().getFor(locals.ctx, id);\n if (targetPerms.includes(\"instance_admin\")) {\n const others = await getPermissionStore().countInstanceAdminsExcluding(locals.ctx, id);\n if (others === 0) {\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Cannot disable the last instance admin. Promote another user to instance admin first.\"\n );\n }\n }\n const result = await getAuthProvider().disableUser(id);\n if (result === \"not_found\") apiError(404, ApiErrorCode.NOT_FOUND, \"User not found\");\n if (result === \"not_supported\")\n apiError(501, ApiErrorCode.INTERNAL, \"Disabling users is not supported by this auth provider\");\n return new Response(null, { status: 204 });\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC3C,EAAE,0BAA0B,CAAC,MAAM,CAAC;AACpC,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AACvB,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;AAC3E,EAAE,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AACvE,EAAE,IAAI,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAC9C,IAAI,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC,4BAA4B,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1F,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE;AACtB,MAAM,QAAQ;AACd,QAAQ,GAAG;AACX,QAAQ,YAAY,CAAC,QAAQ;AAC7B,QAAQ;AACR,OAAO;AACP,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;AACxD,EAAE,IAAI,MAAM,KAAK,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACrF,EAAE,IAAI,MAAM,KAAK,eAAe;AAChC,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,wDAAwD,CAAC;AAClG,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC5C;;;;"}
@@ -1,12 +1,12 @@
1
1
  import { json } from '@sveltejs/kit';
2
2
  import { z } from 'zod';
3
- import { g as getAuthProvider, d as getOrganizationProvider, a as getPermissionStore } from '../../../../../chunks/providers.server.js-BKhwGvoh.js';
4
- import { e as requireManageInstanceUsers } from '../../../../../chunks/access.server.js-DmuVt13u.js';
5
- import { l as listAllOrgMembers } from '../../../../../chunks/org-members.server.js-HahiM88D.js';
6
- import { s as setUserPlatformPermissions } from '../../../../../chunks/permissions.server.js-DyHNgP29.js';
7
- import { a as apiError, t as throwZodError, A as ApiErrorCode, h as handleApiError } from '../../../../../chunks/api-errors.js-CwTBBHWD.js';
8
- import { h as hasPermission, S as SYSTEM_CONTEXT, M as MEMBER_ASSIGNABLE_PERMISSIONS, P as PlatformPermissionSchema, b as OrgPermissionSchema } from '../../../../../chunks/context.js-D8E0GFTw.js';
9
- import { f as flattenPermissions, s as splitFlatPermissions } from '../../../../../chunks/permissions-compat.server.js-BfoBZYSH.js';
3
+ import { g as getAuthProvider, d as getOrganizationProvider, a as getPermissionStore } from '../../../../../chunks/providers.server.js-CIHOepKv.js';
4
+ import { e as requireManageInstanceUsers } from '../../../../../chunks/access.server.js-_nJWuQcN.js';
5
+ import { l as listAllOrgMembers } from '../../../../../chunks/org-members.server.js-DskaqUJo.js';
6
+ import { s as setUserPlatformPermissions } from '../../../../../chunks/permissions.server.js-C3_SFjUh.js';
7
+ import { a as apiError, t as throwZodError, A as ApiErrorCode, h as handleApiError } from '../../../../../chunks/api-errors.js-DlfcfPJs.js';
8
+ import { h as hasPermission, S as SYSTEM_CONTEXT, M as MEMBER_ASSIGNABLE_PERMISSIONS, P as PlatformPermissionSchema, b as OrgPermissionSchema } from '../../../../../chunks/context.js-DsQGiS2x.js';
9
+ import { f as flattenPermissions, s as splitFlatPermissions } from '../../../../../chunks/permissions-compat.server.js-DNsLyriU.js';
10
10
  import '../../../../../chunks/shared-server.js-DaWdgxVh.js';
11
11
  import 'node:url';
12
12
  import 'node:path';
@@ -16,7 +16,7 @@ import 'node:fs/promises';
16
16
  import '@supabase/supabase-js';
17
17
  import '@selvajs/compute/core';
18
18
  import '../../../../../chunks/schema.js-j3D3emog.js';
19
- import '../../../../../chunks/utils4.js-C-poIiFQ.js';
19
+ import '../../../../../chunks/utils4.js-8SHxuGTr.js';
20
20
 
21
21
  const FlatPermissionSchema = z.union([PlatformPermissionSchema, OrgPermissionSchema]);
22
22
  const BaseUserBody = z.object({
@@ -111,4 +111,4 @@ const POST = async ({ request, locals }) => {
111
111
  };
112
112
 
113
113
  export { GET, POST };
114
- //# sourceMappingURL=_server.ts.js-BSaEm6NT.js.map
114
+ //# sourceMappingURL=_server.ts.js-B9ZWJoST.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts.js-BSaEm6NT.js","sources":["../../../../../../../../.svelte-kit/output/server/entries/endpoints/admin/api/users/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { b as getAuthProvider, e as getOrganizationProvider, q as getPermissionStore } from \"../../../../../chunks/providers.server.js\";\nimport { e as requireManageInstanceUsers } from \"../../../../../chunks/access.server.js\";\nimport { l as listAllOrgMembers } from \"../../../../../chunks/org-members.server.js\";\nimport { s as setUserPlatformPermissions } from \"../../../../../chunks/permissions.server.js\";\nimport { a as apiError, t as throwZodError, A as ApiErrorCode, h as handleApiError } from \"../../../../../chunks/api-errors.js\";\nimport { P as PlatformPermissionSchema, a as OrgPermissionSchema, h as hasPermission, S as SYSTEM_CONTEXT, M as MEMBER_ASSIGNABLE_PERMISSIONS } from \"../../../../../chunks/context.js\";\nimport { f as flattenPermissions, s as splitFlatPermissions } from \"../../../../../chunks/permissions-compat.server.js\";\nconst FlatPermissionSchema = z.union([PlatformPermissionSchema, OrgPermissionSchema]);\nconst BaseUserBody = z.object({\n email: z.string().email(\"Valid email is required\"),\n permissions: z.array(FlatPermissionSchema)\n});\nconst PasswordUserBody = BaseUserBody.extend({\n password: z.string().min(8, \"Password must be at least 8 characters\").optional()\n});\nconst GET = async ({ locals }) => {\n requireManageInstanceUsers(locals);\n const page = await getAuthProvider().listUsers({ limit: 200 });\n if (page === null) {\n apiError(\n 501,\n ApiErrorCode.INTERNAL,\n \"User management is not supported by the current auth provider. Configure DATA_PATH (local provider) or check your provider wiring.\"\n );\n }\n const orgId = locals.ctx?.actingOrgId;\n const orgs = getOrganizationProvider();\n const userIds = page.items.map((u) => u.id);\n const platformByUser = await getPermissionStore().getForBatch(locals.ctx, userIds);\n const memberByUserId = /* @__PURE__ */ new Map();\n if (orgId) {\n for (const m of await listAllOrgMembers(orgs, orgId)) memberByUserId.set(m.userId, m);\n }\n const flattened = page.items.map((u) => {\n const orgPerms = memberByUserId.get(u.id)?.permissions ?? [];\n const platformPerms = platformByUser.get(u.id) ?? [];\n return {\n ...u,\n platformPermissions: platformPerms,\n permissions: flattenPermissions(\n platformPerms,\n orgPerms\n )\n };\n });\n return json({ users: flattened });\n};\nconst POST = async ({ request, locals }) => {\n requireManageInstanceUsers(locals);\n const auth = getAuthProvider();\n const body = await request.json().catch(() => null);\n const parsed = PasswordUserBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const { email, password, permissions } = parsed.data;\n const { platform, org } = splitFlatPermissions(permissions);\n if (platform.length > 0 && !hasPermission(locals.ctx, \"instance_admin\")) {\n apiError(\n 403,\n ApiErrorCode.FORBIDDEN,\n \"Only a platform admin can grant platform-scope permissions\"\n );\n }\n try {\n let user;\n if (auth.passwordAuth) {\n if (!password) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Password is required\");\n user = await auth.passwordAuth.createUserWithPassword(email, password);\n } else if (auth.createUser) {\n user = await auth.createUser(email);\n } else {\n apiError(\n 501,\n ApiErrorCode.INTERNAL,\n `User creation is not supported by ${auth.name}. Users are managed externally.`\n );\n }\n if (platform.length > 0) {\n await setUserPlatformPermissions(locals.ctx, user.id, platform);\n }\n const orgId = locals.ctx?.actingOrgId;\n if (orgId) {\n const joinedAt = (/* @__PURE__ */ new Date()).toISOString();\n await getOrganizationProvider().addOrgMember(SYSTEM_CONTEXT, {\n orgId,\n userId: user.id,\n role: \"member\",\n permissions: org.filter((p) => MEMBER_ASSIGNABLE_PERMISSIONS.includes(p)),\n joinedAt,\n updatedAt: joinedAt,\n updatedBy: locals.user?.id ?? user.id,\n deletedAt: null\n });\n }\n return json(user, { status: 201 });\n } catch (err) {\n handleApiError(err, \"Failed to create user\");\n }\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts.js-B9ZWJoST.js","sources":["../../../../../../../../.svelte-kit/output/server/entries/endpoints/admin/api/users/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { b as getAuthProvider, e as getOrganizationProvider, q as getPermissionStore } from \"../../../../../chunks/providers.server.js\";\nimport { e as requireManageInstanceUsers } from \"../../../../../chunks/access.server.js\";\nimport { l as listAllOrgMembers } from \"../../../../../chunks/org-members.server.js\";\nimport { s as setUserPlatformPermissions } from \"../../../../../chunks/permissions.server.js\";\nimport { a as apiError, t as throwZodError, A as ApiErrorCode, h as handleApiError } from \"../../../../../chunks/api-errors.js\";\nimport { P as PlatformPermissionSchema, a as OrgPermissionSchema, h as hasPermission, S as SYSTEM_CONTEXT, M as MEMBER_ASSIGNABLE_PERMISSIONS } from \"../../../../../chunks/context.js\";\nimport { f as flattenPermissions, s as splitFlatPermissions } from \"../../../../../chunks/permissions-compat.server.js\";\nconst FlatPermissionSchema = z.union([PlatformPermissionSchema, OrgPermissionSchema]);\nconst BaseUserBody = z.object({\n email: z.string().email(\"Valid email is required\"),\n permissions: z.array(FlatPermissionSchema)\n});\nconst PasswordUserBody = BaseUserBody.extend({\n password: z.string().min(8, \"Password must be at least 8 characters\").optional()\n});\nconst GET = async ({ locals }) => {\n requireManageInstanceUsers(locals);\n const page = await getAuthProvider().listUsers({ limit: 200 });\n if (page === null) {\n apiError(\n 501,\n ApiErrorCode.INTERNAL,\n \"User management is not supported by the current auth provider. Configure DATA_PATH (local provider) or check your provider wiring.\"\n );\n }\n const orgId = locals.ctx?.actingOrgId;\n const orgs = getOrganizationProvider();\n const userIds = page.items.map((u) => u.id);\n const platformByUser = await getPermissionStore().getForBatch(locals.ctx, userIds);\n const memberByUserId = /* @__PURE__ */ new Map();\n if (orgId) {\n for (const m of await listAllOrgMembers(orgs, orgId)) memberByUserId.set(m.userId, m);\n }\n const flattened = page.items.map((u) => {\n const orgPerms = memberByUserId.get(u.id)?.permissions ?? [];\n const platformPerms = platformByUser.get(u.id) ?? [];\n return {\n ...u,\n platformPermissions: platformPerms,\n permissions: flattenPermissions(\n platformPerms,\n orgPerms\n )\n };\n });\n return json({ users: flattened });\n};\nconst POST = async ({ request, locals }) => {\n requireManageInstanceUsers(locals);\n const auth = getAuthProvider();\n const body = await request.json().catch(() => null);\n const parsed = PasswordUserBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const { email, password, permissions } = parsed.data;\n const { platform, org } = splitFlatPermissions(permissions);\n if (platform.length > 0 && !hasPermission(locals.ctx, \"instance_admin\")) {\n apiError(\n 403,\n ApiErrorCode.FORBIDDEN,\n \"Only a platform admin can grant platform-scope permissions\"\n );\n }\n try {\n let user;\n if (auth.passwordAuth) {\n if (!password) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Password is required\");\n user = await auth.passwordAuth.createUserWithPassword(email, password);\n } else if (auth.createUser) {\n user = await auth.createUser(email);\n } else {\n apiError(\n 501,\n ApiErrorCode.INTERNAL,\n `User creation is not supported by ${auth.name}. Users are managed externally.`\n );\n }\n if (platform.length > 0) {\n await setUserPlatformPermissions(locals.ctx, user.id, platform);\n }\n const orgId = locals.ctx?.actingOrgId;\n if (orgId) {\n const joinedAt = (/* @__PURE__ */ new Date()).toISOString();\n await getOrganizationProvider().addOrgMember(SYSTEM_CONTEXT, {\n orgId,\n userId: user.id,\n role: \"member\",\n permissions: org.filter((p) => MEMBER_ASSIGNABLE_PERMISSIONS.includes(p)),\n joinedAt,\n updatedAt: joinedAt,\n updatedBy: locals.user?.id ?? user.id,\n deletedAt: null\n });\n }\n return json(user, { status: 201 });\n } catch (err) {\n handleApiError(err, \"Failed to create user\");\n }\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}