@selvajs/selva 4.5.0 → 4.5.1

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 (357) hide show
  1. package/build/client/_app/immutable/chunks/{DuHtWI31.js → BYBRW46Q.js} +1 -1
  2. package/build/client/_app/immutable/chunks/BYBRW46Q.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/BYBRW46Q.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{DsuMOTav.js → BfWZCn9D.js} +2 -2
  5. package/build/client/_app/immutable/chunks/BfWZCn9D.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BfWZCn9D.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{DnURu9OT.js → BoelBenK.js} +1 -1
  8. package/build/client/_app/immutable/chunks/BoelBenK.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/BoelBenK.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{D_C_YIH8.js → BuvUOrz-.js} +1 -1
  11. package/build/client/_app/immutable/chunks/BuvUOrz-.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/BuvUOrz-.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{Dtx1M6QG.js → CQjJB6sZ.js} +1 -1
  14. package/build/client/_app/immutable/chunks/CQjJB6sZ.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/CQjJB6sZ.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{U_alzAUv.js → jJihnyaB.js} +1 -1
  17. package/build/client/_app/immutable/chunks/jJihnyaB.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/jJihnyaB.js.gz +0 -0
  19. package/build/client/_app/immutable/entry/{app.DXOixdTQ.js → app.CUlU8Xgx.js} +2 -2
  20. package/build/client/_app/immutable/entry/app.CUlU8Xgx.js.br +0 -0
  21. package/build/client/_app/immutable/entry/app.CUlU8Xgx.js.gz +0 -0
  22. package/build/client/_app/immutable/entry/start.yXH7NuOH.js +1 -0
  23. package/build/client/_app/immutable/entry/start.yXH7NuOH.js.br +2 -0
  24. package/build/client/_app/immutable/entry/start.yXH7NuOH.js.gz +0 -0
  25. package/build/client/_app/immutable/nodes/{1.Cgpx1yHy.js → 1.ntriGXw3.js} +1 -1
  26. package/build/client/_app/immutable/nodes/1.ntriGXw3.js.br +0 -0
  27. package/build/client/_app/immutable/nodes/1.ntriGXw3.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/11.BBxGjNus.js +4 -0
  29. package/build/client/_app/immutable/nodes/11.BBxGjNus.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/11.BBxGjNus.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{13.ByWkldPP.js → 13.BOOSKgNQ.js} +1 -1
  32. package/build/client/_app/immutable/nodes/13.BOOSKgNQ.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/13.BOOSKgNQ.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/{14.87fRSA-Y.js → 14.st6sThI5.js} +1 -1
  35. package/build/client/_app/immutable/nodes/14.st6sThI5.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/14.st6sThI5.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{16.DWG3CLUv.js → 16.fAXfHZXp.js} +1 -1
  38. package/build/client/_app/immutable/nodes/16.fAXfHZXp.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/16.fAXfHZXp.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{17.CgiETa37.js → 17.BL_btSTd.js} +1 -1
  41. package/build/client/_app/immutable/nodes/17.BL_btSTd.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/17.BL_btSTd.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{19.DO2ja5iW.js → 19.D4mkSjY9.js} +1 -1
  44. package/build/client/_app/immutable/nodes/19.D4mkSjY9.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/19.D4mkSjY9.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{2.DIAYMP4_.js → 2.CNkzjKpD.js} +1 -1
  47. package/build/client/_app/immutable/nodes/2.CNkzjKpD.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/2.CNkzjKpD.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/{20.DYgQYcr-.js → 20.93bCfNGI.js} +188 -188
  50. package/build/client/_app/immutable/nodes/20.93bCfNGI.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/20.93bCfNGI.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{21.CTwryTPC.js → 21.ClzCdrlw.js} +1 -1
  53. package/build/client/_app/immutable/nodes/21.ClzCdrlw.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/21.ClzCdrlw.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{23.uUN6jlSq.js → 23.DJerRiZ2.js} +1 -1
  56. package/build/client/_app/immutable/nodes/23.DJerRiZ2.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/23.DJerRiZ2.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{24.cDDvPQLh.js → 24.DOHyLmBO.js} +1 -1
  59. package/build/client/_app/immutable/nodes/24.DOHyLmBO.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/24.DOHyLmBO.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{27.lHQ_8tDM.js → 27.CkzNBFns.js} +1 -1
  62. package/build/client/_app/immutable/nodes/27.CkzNBFns.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/27.CkzNBFns.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/{28.DZO_WZjq.js → 28.BGNl-6WV.js} +1 -1
  65. package/build/client/_app/immutable/nodes/28.BGNl-6WV.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/28.BGNl-6WV.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{29.BBkvtbbm.js → 29.BF0JasWQ.js} +1 -1
  68. package/build/client/_app/immutable/nodes/29.BF0JasWQ.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/29.BF0JasWQ.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/{3.Clu5JbAY.js → 3.BLNJLcvR.js} +1 -1
  71. package/build/client/_app/immutable/nodes/3.BLNJLcvR.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/3.BLNJLcvR.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/{30.CunrYTKW.js → 30.C33KvKLy.js} +1 -1
  74. package/build/client/_app/immutable/nodes/30.C33KvKLy.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/30.C33KvKLy.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{5.CwEyn2eq.js → 5.DcViAFBY.js} +1 -1
  77. package/build/client/_app/immutable/nodes/5.DcViAFBY.js.br +1 -0
  78. package/build/client/_app/immutable/nodes/5.DcViAFBY.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{6.Cybg-4zL.js → 6.Jpw_unqM.js} +1 -1
  80. package/build/client/_app/immutable/nodes/6.Jpw_unqM.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/6.Jpw_unqM.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/{7.U-nwvAMy.js → 7.DI4lv1qr.js} +1 -1
  83. package/build/client/_app/immutable/nodes/7.DI4lv1qr.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/7.DI4lv1qr.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/{8.Ds78IC3h.js → 8.BJeZ3Zka.js} +1 -1
  86. package/build/client/_app/immutable/nodes/8.BJeZ3Zka.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/8.BJeZ3Zka.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/{9.B4Dh5-cJ.js → 9.BS42pKml.js} +1 -1
  89. package/build/client/_app/immutable/nodes/9.BS42pKml.js.br +0 -0
  90. package/build/client/_app/immutable/nodes/9.BS42pKml.js.gz +0 -0
  91. package/build/client/_app/version.json +1 -1
  92. package/build/client/_app/version.json.br +0 -0
  93. package/build/client/_app/version.json.gz +0 -0
  94. package/build/server/chunks/{1-B3qAsEuf.js → 1-CCtIB9oC.js} +2 -2
  95. package/build/server/chunks/{1-B3qAsEuf.js.map → 1-CCtIB9oC.js.map} +1 -1
  96. package/build/server/chunks/{10-YMBFU3cy.js → 10-Cj20BodR.js} +3 -3
  97. package/build/server/chunks/{10-YMBFU3cy.js.map → 10-Cj20BodR.js.map} +1 -1
  98. package/build/server/chunks/{11-DEH3nbKm.js → 11-C-goGrGx.js} +5 -5
  99. package/build/server/chunks/{11-DEH3nbKm.js.map → 11-C-goGrGx.js.map} +1 -1
  100. package/build/server/chunks/{13-D_djeolg.js → 13-DN-4EHom.js} +2 -2
  101. package/build/server/chunks/{13-D_djeolg.js.map → 13-DN-4EHom.js.map} +1 -1
  102. package/build/server/chunks/{14-B1A-3AIw.js → 14-j22gtg6q.js} +2 -2
  103. package/build/server/chunks/{14-B1A-3AIw.js.map → 14-j22gtg6q.js.map} +1 -1
  104. package/build/server/chunks/{15-KF7YQWQR.js → 15-CJJTHKeq.js} +2 -2
  105. package/build/server/chunks/{15-KF7YQWQR.js.map → 15-CJJTHKeq.js.map} +1 -1
  106. package/build/server/chunks/{16-27Ug2Gl4.js → 16-CPVRxJfK.js} +4 -4
  107. package/build/server/chunks/{16-27Ug2Gl4.js.map → 16-CPVRxJfK.js.map} +1 -1
  108. package/build/server/chunks/{17-B9EWzdfY.js → 17-CEs6NSIj.js} +2 -2
  109. package/build/server/chunks/{17-B9EWzdfY.js.map → 17-CEs6NSIj.js.map} +1 -1
  110. package/build/server/chunks/{19-DFpWVk9Q.js → 19-BK_uDFHq.js} +3 -3
  111. package/build/server/chunks/{19-DFpWVk9Q.js.map → 19-BK_uDFHq.js.map} +1 -1
  112. package/build/server/chunks/{2-psSdZh8h.js → 2-BBFUEdIk.js} +5 -5
  113. package/build/server/chunks/{2-psSdZh8h.js.map → 2-BBFUEdIk.js.map} +1 -1
  114. package/build/server/chunks/{20-B3RVyzHq.js → 20-TgvBHCqT.js} +7 -7
  115. package/build/server/chunks/{20-B3RVyzHq.js.map → 20-TgvBHCqT.js.map} +1 -1
  116. package/build/server/chunks/{21-DjJlF-s8.js → 21-CpVgaOZP.js} +2 -2
  117. package/build/server/chunks/{21-DjJlF-s8.js.map → 21-CpVgaOZP.js.map} +1 -1
  118. package/build/server/chunks/{23-Cv-iXsup.js → 23-DpZ-VAmj.js} +4 -4
  119. package/build/server/chunks/{23-Cv-iXsup.js.map → 23-DpZ-VAmj.js.map} +1 -1
  120. package/build/server/chunks/{24-C9N_eRrr.js → 24-IG8oF3LR.js} +2 -2
  121. package/build/server/chunks/{24-C9N_eRrr.js.map → 24-IG8oF3LR.js.map} +1 -1
  122. package/build/server/chunks/{27-HUwDEbMb.js → 27-BNuVmBlC.js} +2 -2
  123. package/build/server/chunks/{27-HUwDEbMb.js.map → 27-BNuVmBlC.js.map} +1 -1
  124. package/build/server/chunks/{28-l4BuMkhA.js → 28-O2gMewvR.js} +2 -2
  125. package/build/server/chunks/{28-l4BuMkhA.js.map → 28-O2gMewvR.js.map} +1 -1
  126. package/build/server/chunks/{29-DefkuWIf.js → 29-DeHI_lg6.js} +2 -2
  127. package/build/server/chunks/{29-DefkuWIf.js.map → 29-DeHI_lg6.js.map} +1 -1
  128. package/build/server/chunks/{3-FhxHeIS3.js → 3-_z4ofaYa.js} +2 -2
  129. package/build/server/chunks/{3-FhxHeIS3.js.map → 3-_z4ofaYa.js.map} +1 -1
  130. package/build/server/chunks/{30-BC7V7mS7.js → 30-B8zrsGBW.js} +2 -2
  131. package/build/server/chunks/{30-BC7V7mS7.js.map → 30-B8zrsGBW.js.map} +1 -1
  132. package/build/server/chunks/{5-BSabZ7B0.js → 5-jUoewty6.js} +3 -3
  133. package/build/server/chunks/{5-BSabZ7B0.js.map → 5-jUoewty6.js.map} +1 -1
  134. package/build/server/chunks/{6-BDAMjeLc.js → 6-Da49O-RB.js} +3 -3
  135. package/build/server/chunks/{6-BDAMjeLc.js.map → 6-Da49O-RB.js.map} +1 -1
  136. package/build/server/chunks/{7-C5uuYI8Y.js → 7-C4TEFQmD.js} +3 -3
  137. package/build/server/chunks/{7-C5uuYI8Y.js.map → 7-C4TEFQmD.js.map} +1 -1
  138. package/build/server/chunks/{8-Yg3bHJY8.js → 8-6Lblm8Bu.js} +2 -2
  139. package/build/server/chunks/{8-Yg3bHJY8.js.map → 8-6Lblm8Bu.js.map} +1 -1
  140. package/build/server/chunks/{9-BOWShy6C.js → 9-bV3k1piX.js} +3 -3
  141. package/build/server/chunks/{9-BOWShy6C.js.map → 9-bV3k1piX.js.map} +1 -1
  142. package/build/server/chunks/{AppHeader-vae2Doza.js → AppHeader-C76PLheq.js} +2 -2
  143. package/build/server/chunks/{AppHeader-vae2Doza.js.map → AppHeader-C76PLheq.js.map} +1 -1
  144. package/build/server/chunks/{UserChip-BPLEgzMp.js → UserChip-i0_3jHOb.js} +8 -3
  145. package/build/server/chunks/UserChip-i0_3jHOb.js.map +1 -0
  146. package/build/server/chunks/{_layout.svelte-D5GiNGr6.js → _layout.svelte-B-tWsdy4.js} +3 -3
  147. package/build/server/chunks/{_layout.svelte-D5GiNGr6.js.map → _layout.svelte-B-tWsdy4.js.map} +1 -1
  148. package/build/server/chunks/{_layout.svelte-_enyp5QE.js → _layout.svelte-B2RbgABg.js} +3 -3
  149. package/build/server/chunks/{_layout.svelte-_enyp5QE.js.map → _layout.svelte-B2RbgABg.js.map} +1 -1
  150. package/build/server/chunks/{_layout.svelte-aflz8r6I.js → _layout.svelte-DUeER8oS.js} +3 -3
  151. package/build/server/chunks/{_layout.svelte-aflz8r6I.js.map → _layout.svelte-DUeER8oS.js.map} +1 -1
  152. package/build/server/chunks/{_page.svelte-By_vYfbZ.js → _page.svelte-0KErHswo.js} +94 -4
  153. package/build/server/chunks/_page.svelte-0KErHswo.js.map +1 -0
  154. package/build/server/chunks/{_page.svelte-ZxjqrKH8.js → _page.svelte-BSHEM3UY.js} +3 -3
  155. package/build/server/chunks/{_page.svelte-ZxjqrKH8.js.map → _page.svelte-BSHEM3UY.js.map} +1 -1
  156. package/build/server/chunks/{_page.svelte-FDFRMnmB.js → _page.svelte-CDEfhXLp.js} +3 -3
  157. package/build/server/chunks/{_page.svelte-FDFRMnmB.js.map → _page.svelte-CDEfhXLp.js.map} +1 -1
  158. package/build/server/chunks/{_page.svelte-BDLD6pXj.js → _page.svelte-DDzV91b5.js} +124 -12
  159. package/build/server/chunks/{_page.svelte-BDLD6pXj.js.map → _page.svelte-DDzV91b5.js.map} +1 -1
  160. package/build/server/chunks/{_server.ts-DamGRKop.js → _server.ts-3LBSaM7L.js} +24 -12
  161. package/build/server/chunks/_server.ts-3LBSaM7L.js.map +1 -0
  162. package/build/server/chunks/{_server.ts-DRlwVsIx.js → _server.ts-B-un1ZTf.js} +3 -3
  163. package/build/server/chunks/{_server.ts-DRlwVsIx.js.map → _server.ts-B-un1ZTf.js.map} +1 -1
  164. package/build/server/chunks/{_server.ts-CF65FKS6.js → _server.ts-B6gtWjZd.js} +7 -7
  165. package/build/server/chunks/_server.ts-B6gtWjZd.js.map +1 -0
  166. package/build/server/chunks/{_server.ts-CMHRHdCD.js → _server.ts-B9Fdut8P.js} +14 -10
  167. package/build/server/chunks/_server.ts-B9Fdut8P.js.map +1 -0
  168. package/build/server/chunks/{_server.ts-kTCuqLDl.js → _server.ts-BJEEQ8tH.js} +15 -11
  169. package/build/server/chunks/_server.ts-BJEEQ8tH.js.map +1 -0
  170. package/build/server/chunks/{_server.ts-Ca_OJJFC.js → _server.ts-BKPaoj3Y.js} +14 -9
  171. package/build/server/chunks/_server.ts-BKPaoj3Y.js.map +1 -0
  172. package/build/server/chunks/{_server.ts-kbr9HYg5.js → _server.ts-BVpHuRup.js} +8 -8
  173. package/build/server/chunks/_server.ts-BVpHuRup.js.map +1 -0
  174. package/build/server/chunks/{_server.ts-DzA4EZf_.js → _server.ts-BplW_hNF.js} +7 -7
  175. package/build/server/chunks/_server.ts-BplW_hNF.js.map +1 -0
  176. package/build/server/chunks/{_server.ts-d6YTPmkY.js → _server.ts-Bv-G75Ze.js} +7 -7
  177. package/build/server/chunks/_server.ts-Bv-G75Ze.js.map +1 -0
  178. package/build/server/chunks/{_server.ts-DethCmgs.js → _server.ts-C5fD6gFa.js} +10 -10
  179. package/build/server/chunks/_server.ts-C5fD6gFa.js.map +1 -0
  180. package/build/server/chunks/{_server.ts-Cg6LtEov.js → _server.ts-C6rUlJpJ.js} +13 -6
  181. package/build/server/chunks/_server.ts-C6rUlJpJ.js.map +1 -0
  182. package/build/server/chunks/_server.ts-CLku3Kgz.js +66 -0
  183. package/build/server/chunks/_server.ts-CLku3Kgz.js.map +1 -0
  184. package/build/server/chunks/{_server.ts-AtxnIvMI.js → _server.ts-CNRwBoMm.js} +3 -3
  185. package/build/server/chunks/{_server.ts-AtxnIvMI.js.map → _server.ts-CNRwBoMm.js.map} +1 -1
  186. package/build/server/chunks/{_server.ts-BgVWq0qd.js → _server.ts-COuXITb8.js} +10 -10
  187. package/build/server/chunks/_server.ts-COuXITb8.js.map +1 -0
  188. package/build/server/chunks/{_server.ts-BZH3tqYX.js → _server.ts-CT1KXbVK.js} +34 -22
  189. package/build/server/chunks/_server.ts-CT1KXbVK.js.map +1 -0
  190. package/build/server/chunks/{_server.ts-Dz4bsmph.js → _server.ts-CTXCbdsb.js} +10 -9
  191. package/build/server/chunks/_server.ts-CTXCbdsb.js.map +1 -0
  192. package/build/server/chunks/{_server.ts-BQetLy9N.js → _server.ts-CXEl8kvu.js} +14 -13
  193. package/build/server/chunks/_server.ts-CXEl8kvu.js.map +1 -0
  194. package/build/server/chunks/{_server.ts-BmjNVAmP.js → _server.ts-CZ9lwb1J.js} +5 -5
  195. package/build/server/chunks/_server.ts-CZ9lwb1J.js.map +1 -0
  196. package/build/server/chunks/{_server.ts-Oi8Qzh0h.js → _server.ts-CaytsdFp.js} +7 -7
  197. package/build/server/chunks/_server.ts-CaytsdFp.js.map +1 -0
  198. package/build/server/chunks/{_server.ts-6F3Ly0cY.js → _server.ts-Cd6dVQ2J.js} +17 -9
  199. package/build/server/chunks/_server.ts-Cd6dVQ2J.js.map +1 -0
  200. package/build/server/chunks/{_server.ts-cHSphefi.js → _server.ts-CgRuMyJ9.js} +8 -8
  201. package/build/server/chunks/_server.ts-CgRuMyJ9.js.map +1 -0
  202. package/build/server/chunks/{_server.ts-PKbOblCf.js → _server.ts-CmCeYB9h.js} +25 -15
  203. package/build/server/chunks/_server.ts-CmCeYB9h.js.map +1 -0
  204. package/build/server/chunks/{_server.ts-13_Xvown.js → _server.ts-Codg_zX0.js} +8 -7
  205. package/build/server/chunks/_server.ts-Codg_zX0.js.map +1 -0
  206. package/build/server/chunks/{_server.ts-DW-Oh4l9.js → _server.ts-D-WjMJlD.js} +10 -6
  207. package/build/server/chunks/_server.ts-D-WjMJlD.js.map +1 -0
  208. package/build/server/chunks/{_server.ts-Bke_K04J.js → _server.ts-D4z7bYT1.js} +23 -10
  209. package/build/server/chunks/_server.ts-D4z7bYT1.js.map +1 -0
  210. package/build/server/chunks/{_server.ts-L9PpKy16.js → _server.ts-D7URpGBv.js} +13 -9
  211. package/build/server/chunks/_server.ts-D7URpGBv.js.map +1 -0
  212. package/build/server/chunks/{_server.ts-D2Qb9pui.js → _server.ts-DMwrtYEK.js} +13 -13
  213. package/build/server/chunks/_server.ts-DMwrtYEK.js.map +1 -0
  214. package/build/server/chunks/{_server.ts-B9uegfmw.js → _server.ts-DSVtVVVK.js} +16 -10
  215. package/build/server/chunks/_server.ts-DSVtVVVK.js.map +1 -0
  216. package/build/server/chunks/{_server.ts-Be15h83H.js → _server.ts-Df72lBuz.js} +23 -14
  217. package/build/server/chunks/_server.ts-Df72lBuz.js.map +1 -0
  218. package/build/server/chunks/{_server.ts-BlVwuKrl.js → _server.ts-DsXq-KLm.js} +25 -16
  219. package/build/server/chunks/_server.ts-DsXq-KLm.js.map +1 -0
  220. package/build/server/chunks/{_server.ts-DEBzt_W2.js → _server.ts-OQ5_sYi3.js} +30 -17
  221. package/build/server/chunks/_server.ts-OQ5_sYi3.js.map +1 -0
  222. package/build/server/chunks/{_server.ts-XAkApigL.js → _server.ts-UYOqhuxS.js} +11 -7
  223. package/build/server/chunks/_server.ts-UYOqhuxS.js.map +1 -0
  224. package/build/server/chunks/{_server.ts-DVOhTvBf.js → _server.ts-Xt4gRfAl.js} +15 -9
  225. package/build/server/chunks/_server.ts-Xt4gRfAl.js.map +1 -0
  226. package/build/server/chunks/{_server.ts-CpsGzKQC.js → _server.ts-ZtjukIa0.js} +15 -12
  227. package/build/server/chunks/_server.ts-ZtjukIa0.js.map +1 -0
  228. package/build/server/chunks/_server.ts-bR98vjY2.js +47 -0
  229. package/build/server/chunks/_server.ts-bR98vjY2.js.map +1 -0
  230. package/build/server/chunks/{_server.ts-Cg1WgIQn.js → _server.ts-deI69oUs.js} +7 -7
  231. package/build/server/chunks/_server.ts-deI69oUs.js.map +1 -0
  232. package/build/server/chunks/{_server.ts-bhjqtBoy.js → _server.ts-fxzTH5KH.js} +6 -6
  233. package/build/server/chunks/_server.ts-fxzTH5KH.js.map +1 -0
  234. package/build/server/chunks/{_server.ts-DvBucq0r.js → _server.ts-mFb6RwID.js} +6 -6
  235. package/build/server/chunks/_server.ts-mFb6RwID.js.map +1 -0
  236. package/build/server/chunks/{_server.ts-Cc-srcRk.js → _server.ts-sdl64bpd.js} +10 -7
  237. package/build/server/chunks/_server.ts-sdl64bpd.js.map +1 -0
  238. package/build/server/chunks/{access.server-CAPd1-c2.js → access.server-Rd56k7vs.js} +2 -2
  239. package/build/server/chunks/{access.server-CAPd1-c2.js.map → access.server-Rd56k7vs.js.map} +1 -1
  240. package/build/server/chunks/{api-errors-BhVEeWTV.js → api-errors-BrqxD-El.js} +52 -13
  241. package/build/server/chunks/api-errors-BrqxD-El.js.map +1 -0
  242. package/build/server/chunks/{computeLimits-DPO6NbLd.js → computeLimits-DnJ77wR9.js} +3 -3
  243. package/build/server/chunks/computeLimits-DnJ77wR9.js.map +1 -0
  244. package/build/server/chunks/{hooks.server-BEbVZKxO.js → hooks.server-BZKLAgww.js} +7 -6
  245. package/build/server/chunks/hooks.server-BZKLAgww.js.map +1 -0
  246. package/build/server/chunks/{package-MTlbeZ-4.js → package-K5EkWw87.js} +2 -2
  247. package/build/server/chunks/{package-MTlbeZ-4.js.map → package-K5EkWw87.js.map} +1 -1
  248. package/build/server/index.js +2 -2
  249. package/build/server/index.js.map +1 -1
  250. package/build/server/manifest.js +70 -63
  251. package/build/server/manifest.js.map +1 -1
  252. package/package.json +7 -7
  253. package/templates/.env.example +14 -5
  254. package/build/client/_app/immutable/chunks/D_C_YIH8.js.br +0 -0
  255. package/build/client/_app/immutable/chunks/D_C_YIH8.js.gz +0 -0
  256. package/build/client/_app/immutable/chunks/DnURu9OT.js.br +0 -0
  257. package/build/client/_app/immutable/chunks/DnURu9OT.js.gz +0 -0
  258. package/build/client/_app/immutable/chunks/DsuMOTav.js.br +0 -0
  259. package/build/client/_app/immutable/chunks/DsuMOTav.js.gz +0 -0
  260. package/build/client/_app/immutable/chunks/Dtx1M6QG.js.br +0 -0
  261. package/build/client/_app/immutable/chunks/Dtx1M6QG.js.gz +0 -0
  262. package/build/client/_app/immutable/chunks/DuHtWI31.js.br +0 -0
  263. package/build/client/_app/immutable/chunks/DuHtWI31.js.gz +0 -0
  264. package/build/client/_app/immutable/chunks/U_alzAUv.js.br +0 -0
  265. package/build/client/_app/immutable/chunks/U_alzAUv.js.gz +0 -0
  266. package/build/client/_app/immutable/entry/app.DXOixdTQ.js.br +0 -0
  267. package/build/client/_app/immutable/entry/app.DXOixdTQ.js.gz +0 -0
  268. package/build/client/_app/immutable/entry/start.lHsRDqJ_.js +0 -1
  269. package/build/client/_app/immutable/entry/start.lHsRDqJ_.js.br +0 -2
  270. package/build/client/_app/immutable/entry/start.lHsRDqJ_.js.gz +0 -0
  271. package/build/client/_app/immutable/nodes/1.Cgpx1yHy.js.br +0 -0
  272. package/build/client/_app/immutable/nodes/1.Cgpx1yHy.js.gz +0 -0
  273. package/build/client/_app/immutable/nodes/11.BIaqG9xz.js +0 -2
  274. package/build/client/_app/immutable/nodes/11.BIaqG9xz.js.br +0 -0
  275. package/build/client/_app/immutable/nodes/11.BIaqG9xz.js.gz +0 -0
  276. package/build/client/_app/immutable/nodes/13.ByWkldPP.js.br +0 -0
  277. package/build/client/_app/immutable/nodes/13.ByWkldPP.js.gz +0 -0
  278. package/build/client/_app/immutable/nodes/14.87fRSA-Y.js.br +0 -0
  279. package/build/client/_app/immutable/nodes/14.87fRSA-Y.js.gz +0 -0
  280. package/build/client/_app/immutable/nodes/16.DWG3CLUv.js.br +0 -0
  281. package/build/client/_app/immutable/nodes/16.DWG3CLUv.js.gz +0 -0
  282. package/build/client/_app/immutable/nodes/17.CgiETa37.js.br +0 -0
  283. package/build/client/_app/immutable/nodes/17.CgiETa37.js.gz +0 -0
  284. package/build/client/_app/immutable/nodes/19.DO2ja5iW.js.br +0 -0
  285. package/build/client/_app/immutable/nodes/19.DO2ja5iW.js.gz +0 -0
  286. package/build/client/_app/immutable/nodes/2.DIAYMP4_.js.br +0 -0
  287. package/build/client/_app/immutable/nodes/2.DIAYMP4_.js.gz +0 -0
  288. package/build/client/_app/immutable/nodes/20.DYgQYcr-.js.br +0 -0
  289. package/build/client/_app/immutable/nodes/20.DYgQYcr-.js.gz +0 -0
  290. package/build/client/_app/immutable/nodes/21.CTwryTPC.js.br +0 -0
  291. package/build/client/_app/immutable/nodes/21.CTwryTPC.js.gz +0 -0
  292. package/build/client/_app/immutable/nodes/23.uUN6jlSq.js.br +0 -0
  293. package/build/client/_app/immutable/nodes/23.uUN6jlSq.js.gz +0 -0
  294. package/build/client/_app/immutable/nodes/24.cDDvPQLh.js.br +0 -0
  295. package/build/client/_app/immutable/nodes/24.cDDvPQLh.js.gz +0 -0
  296. package/build/client/_app/immutable/nodes/27.lHQ_8tDM.js.br +0 -0
  297. package/build/client/_app/immutable/nodes/27.lHQ_8tDM.js.gz +0 -0
  298. package/build/client/_app/immutable/nodes/28.DZO_WZjq.js.br +0 -0
  299. package/build/client/_app/immutable/nodes/28.DZO_WZjq.js.gz +0 -0
  300. package/build/client/_app/immutable/nodes/29.BBkvtbbm.js.br +0 -0
  301. package/build/client/_app/immutable/nodes/29.BBkvtbbm.js.gz +0 -0
  302. package/build/client/_app/immutable/nodes/3.Clu5JbAY.js.br +0 -0
  303. package/build/client/_app/immutable/nodes/3.Clu5JbAY.js.gz +0 -0
  304. package/build/client/_app/immutable/nodes/30.CunrYTKW.js.br +0 -0
  305. package/build/client/_app/immutable/nodes/30.CunrYTKW.js.gz +0 -0
  306. package/build/client/_app/immutable/nodes/5.CwEyn2eq.js.br +0 -1
  307. package/build/client/_app/immutable/nodes/5.CwEyn2eq.js.gz +0 -0
  308. package/build/client/_app/immutable/nodes/6.Cybg-4zL.js.br +0 -0
  309. package/build/client/_app/immutable/nodes/6.Cybg-4zL.js.gz +0 -0
  310. package/build/client/_app/immutable/nodes/7.U-nwvAMy.js.br +0 -0
  311. package/build/client/_app/immutable/nodes/7.U-nwvAMy.js.gz +0 -0
  312. package/build/client/_app/immutable/nodes/8.Ds78IC3h.js.br +0 -0
  313. package/build/client/_app/immutable/nodes/8.Ds78IC3h.js.gz +0 -0
  314. package/build/client/_app/immutable/nodes/9.B4Dh5-cJ.js.br +0 -0
  315. package/build/client/_app/immutable/nodes/9.B4Dh5-cJ.js.gz +0 -0
  316. package/build/server/chunks/UserChip-BPLEgzMp.js.map +0 -1
  317. package/build/server/chunks/_page.svelte-By_vYfbZ.js.map +0 -1
  318. package/build/server/chunks/_server.ts-13_Xvown.js.map +0 -1
  319. package/build/server/chunks/_server.ts-6F3Ly0cY.js.map +0 -1
  320. package/build/server/chunks/_server.ts-B9uegfmw.js.map +0 -1
  321. package/build/server/chunks/_server.ts-BQetLy9N.js.map +0 -1
  322. package/build/server/chunks/_server.ts-BZH3tqYX.js.map +0 -1
  323. package/build/server/chunks/_server.ts-Be15h83H.js.map +0 -1
  324. package/build/server/chunks/_server.ts-BgVWq0qd.js.map +0 -1
  325. package/build/server/chunks/_server.ts-Bke_K04J.js.map +0 -1
  326. package/build/server/chunks/_server.ts-BlVwuKrl.js.map +0 -1
  327. package/build/server/chunks/_server.ts-BmjNVAmP.js.map +0 -1
  328. package/build/server/chunks/_server.ts-BwMyXo0z.js +0 -65
  329. package/build/server/chunks/_server.ts-BwMyXo0z.js.map +0 -1
  330. package/build/server/chunks/_server.ts-CF65FKS6.js.map +0 -1
  331. package/build/server/chunks/_server.ts-CMHRHdCD.js.map +0 -1
  332. package/build/server/chunks/_server.ts-Ca_OJJFC.js.map +0 -1
  333. package/build/server/chunks/_server.ts-Cc-srcRk.js.map +0 -1
  334. package/build/server/chunks/_server.ts-Cg1WgIQn.js.map +0 -1
  335. package/build/server/chunks/_server.ts-Cg6LtEov.js.map +0 -1
  336. package/build/server/chunks/_server.ts-CpsGzKQC.js.map +0 -1
  337. package/build/server/chunks/_server.ts-D2Qb9pui.js.map +0 -1
  338. package/build/server/chunks/_server.ts-DEBzt_W2.js.map +0 -1
  339. package/build/server/chunks/_server.ts-DVOhTvBf.js.map +0 -1
  340. package/build/server/chunks/_server.ts-DW-Oh4l9.js.map +0 -1
  341. package/build/server/chunks/_server.ts-DamGRKop.js.map +0 -1
  342. package/build/server/chunks/_server.ts-DethCmgs.js.map +0 -1
  343. package/build/server/chunks/_server.ts-DvBucq0r.js.map +0 -1
  344. package/build/server/chunks/_server.ts-Dz4bsmph.js.map +0 -1
  345. package/build/server/chunks/_server.ts-DzA4EZf_.js.map +0 -1
  346. package/build/server/chunks/_server.ts-L9PpKy16.js.map +0 -1
  347. package/build/server/chunks/_server.ts-Oi8Qzh0h.js.map +0 -1
  348. package/build/server/chunks/_server.ts-PKbOblCf.js.map +0 -1
  349. package/build/server/chunks/_server.ts-XAkApigL.js.map +0 -1
  350. package/build/server/chunks/_server.ts-bhjqtBoy.js.map +0 -1
  351. package/build/server/chunks/_server.ts-cHSphefi.js.map +0 -1
  352. package/build/server/chunks/_server.ts-d6YTPmkY.js.map +0 -1
  353. package/build/server/chunks/_server.ts-kTCuqLDl.js.map +0 -1
  354. package/build/server/chunks/_server.ts-kbr9HYg5.js.map +0 -1
  355. package/build/server/chunks/api-errors-BhVEeWTV.js.map +0 -1
  356. package/build/server/chunks/computeLimits-DPO6NbLd.js.map +0 -1
  357. package/build/server/chunks/hooks.server-BEbVZKxO.js.map +0 -1
@@ -1,13 +1,16 @@
1
- import { error, redirect } from '@sveltejs/kit';
1
+ import { redirect } from '@sveltejs/kit';
2
+ import { a as apiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
2
3
  import { a as getAuthProvider } from './providers.server-C3fQ7ZdV.js';
3
4
  import { b as bootstrapUserSession } from './auth-bootstrap.server-DKc9-3PR.js';
4
5
  import { h as setSessionCookie, f as setRefreshCookie, s as safeRedirectTarget } from './admin-auth.server-45kKyH82.js';
6
+ import './context-BJnJL8ES.js';
7
+ import 'zod';
8
+ import '@selvajs/compute/core';
9
+ import './utils2-BqfluBM6.js';
5
10
  import './shared-server-C3WdcJCQ.js';
6
11
  import 'node:url';
7
12
  import 'node:path';
8
13
  import 'node:fs';
9
- import './context-BJnJL8ES.js';
10
- import 'zod';
11
14
  import 'node:crypto';
12
15
  import 'node:fs/promises';
13
16
  import '@supabase/supabase-js';
@@ -16,10 +19,11 @@ import './slug-BGuFQjqe.js';
16
19
  const GET = async ({ url, cookies }) => {
17
20
  const emailLink = getAuthProvider().emailLink;
18
21
  if (!emailLink) {
19
- throw error(501, "Email sign-in is not supported by this provider.");
22
+ apiError(501, ApiErrorCode.INTERNAL, "Email sign-in is not supported by this provider.");
20
23
  }
21
24
  const result = await emailLink.verifyMagicLink(url.toString());
22
- if (!result) throw error(401, "This sign-in link is invalid or has expired.");
25
+ if (!result)
26
+ apiError(401, ApiErrorCode.UNAUTHORIZED, "This sign-in link is invalid or has expired.");
23
27
  await bootstrapUserSession(result.user);
24
28
  setSessionCookie(cookies, result.sessionToken);
25
29
  if (result.refreshToken) setRefreshCookie(cookies, result.refreshToken);
@@ -28,4 +32,4 @@ const GET = async ({ url, cookies }) => {
28
32
  };
29
33
 
30
34
  export { GET };
31
- //# sourceMappingURL=_server.ts-DW-Oh4l9.js.map
35
+ //# sourceMappingURL=_server.ts-D-WjMJlD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-D-WjMJlD.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/auth/email/callback/_server.ts.js"],"sourcesContent":["import { redirect } from \"@sveltejs/kit\";\nimport { a as apiError, A as ApiErrorCode } from \"../../../../../chunks/api-errors.js\";\nimport { a as getAuthProvider } from \"../../../../../chunks/providers.server.js\";\nimport { b as bootstrapUserSession } from \"../../../../../chunks/auth-bootstrap.server.js\";\nimport { h as setSessionCookie, f as setRefreshCookie, s as safeRedirectTarget } from \"../../../../../chunks/admin-auth.server.js\";\nconst GET = async ({ url, cookies }) => {\n const emailLink = getAuthProvider().emailLink;\n if (!emailLink) {\n apiError(501, ApiErrorCode.INTERNAL, \"Email sign-in is not supported by this provider.\");\n }\n const result = await emailLink.verifyMagicLink(url.toString());\n if (!result)\n apiError(401, ApiErrorCode.UNAUTHORIZED, \"This sign-in link is invalid or has expired.\");\n await bootstrapUserSession(result.user);\n setSessionCookie(cookies, result.sessionToken);\n if (result.refreshToken) setRefreshCookie(cookies, result.refreshToken);\n const dest = safeRedirectTarget(url.searchParams.get(\"redirectTo\"), \"/library\");\n redirect(303, dest);\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAKK,MAAC,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK;AACxC,EAAE,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC,SAAS;AAC/C,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,kDAAkD,CAAC;AAC5F,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAChE,EAAE,IAAI,CAAC,MAAM;AACb,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,8CAA8C,CAAC;AAC5F,EAAE,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AAChD,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AACzE,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;AACjF,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AACrB;;;;"}
@@ -1,9 +1,9 @@
1
- import { error, json } from '@sveltejs/kit';
1
+ import { json } from '@sveltejs/kit';
2
2
  import { z } from 'zod';
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { f as flag, k as getOrganizationProvider, n as getProjectProvider, P as ProviderError } from './providers.server-C3fQ7ZdV.js';
5
- import { u as requireInstanceAdmin } from './access.server-CAPd1-c2.js';
6
- import { h as handleApiError, t as throwZodError } from './api-errors-BhVEeWTV.js';
5
+ import { u as requireInstanceAdmin } from './access.server-Rd56k7vs.js';
6
+ import { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
7
7
  import { s as slugify } from './slug-BGuFQjqe.js';
8
8
  import { S as SYSTEM_CONTEXT } from './context-BJnJL8ES.js';
9
9
  import './shared-server-C3WdcJCQ.js';
@@ -36,7 +36,7 @@ const CreatePlatformProjectBody = z.object({
36
36
  });
37
37
  const GET = async ({ locals }) => {
38
38
  requireInstanceAdmin(locals);
39
- if (!flag("ENABLE_PLATFORM_PROJECTS")) throw error(404, "Not found");
39
+ if (!flag("ENABLE_PLATFORM_PROJECTS")) apiError(404, ApiErrorCode.NOT_FOUND, "Not found");
40
40
  try {
41
41
  const orgs = await getOrganizationProvider().listOrgs(SYSTEM_CONTEXT, { limit: 1e3 });
42
42
  const all = [];
@@ -55,17 +55,22 @@ const GET = async ({ locals }) => {
55
55
  };
56
56
  const POST = async ({ request, locals }) => {
57
57
  const user = requireInstanceAdmin(locals);
58
- if (!flag("ENABLE_PLATFORM_PROJECTS")) throw error(404, "Not found");
58
+ if (!flag("ENABLE_PLATFORM_PROJECTS")) apiError(404, ApiErrorCode.NOT_FOUND, "Not found");
59
59
  const ctx = locals.ctx;
60
60
  const body = await request.json().catch(() => null);
61
61
  const parsed = CreatePlatformProjectBody.safeParse(body);
62
62
  if (!parsed.success) throwZodError(parsed.error);
63
63
  const hostOrgId = parsed.data.orgId ?? ctx.actingOrgId;
64
64
  if (!hostOrgId) {
65
- throw error(400, "A host orgId is required (no active organization in context).");
65
+ apiError(
66
+ 400,
67
+ ApiErrorCode.VALIDATION_FAILED,
68
+ "A host orgId is required (no active organization in context)."
69
+ );
66
70
  }
67
71
  const hostOrg = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, hostOrgId);
68
- if (!hostOrg) throw error(400, `Host organization '${hostOrgId}' not found.`);
72
+ if (!hostOrg)
73
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, `Host organization '${hostOrgId}' not found.`);
69
74
  const projectStore = getProjectProvider();
70
75
  const baseSlug = slugify(parsed.data.name) || "platform-project";
71
76
  const now = (/* @__PURE__ */ new Date()).toISOString();
@@ -92,14 +97,22 @@ const POST = async ({ request, locals }) => {
92
97
  return json(project, { status: 201 });
93
98
  } catch (err) {
94
99
  if (isNameConflict(err)) {
95
- throw error(409, "A project with that name already exists in the host organization.");
100
+ apiError(
101
+ 409,
102
+ ApiErrorCode.CONFLICT,
103
+ "A project with that name already exists in the host organization."
104
+ );
96
105
  }
97
106
  if (isSlugConflict(err)) continue;
98
107
  handleApiError(err, "Failed to create platform project");
99
108
  }
100
109
  }
101
- throw error(409, "Could not pick a unique project slug after several attempts.");
110
+ apiError(
111
+ 409,
112
+ ApiErrorCode.CONFLICT,
113
+ "Could not pick a unique project slug after several attempts."
114
+ );
102
115
  };
103
116
 
104
117
  export { GET, POST };
105
- //# sourceMappingURL=_server.ts-Bke_K04J.js.map
118
+ //# sourceMappingURL=_server.ts-D4z7bYT1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-D4z7bYT1.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/projects/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { randomUUID } from \"node:crypto\";\nimport { f as flag, k as getOrganizationProvider, n as getProjectProvider, P as ProviderError } from \"../../../../../chunks/providers.server.js\";\nimport { u as requireInstanceAdmin } from \"../../../../../chunks/access.server.js\";\nimport { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } from \"../../../../../chunks/api-errors.js\";\nimport { s as slugify } from \"../../../../../chunks/slug.js\";\nimport { S as SYSTEM_CONTEXT } from \"../../../../../chunks/context.js\";\nconst MAX_SLUG_ATTEMPTS = 25;\nfunction isSlugConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_id_slug_key/.test(err.message);\n}\nfunction isNameConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_name_unique/.test(err.message);\n}\nconst CreatePlatformProjectBody = z.object({\n name: z.string().min(1, \"Project name is required\").max(128).trim(),\n description: z.string().max(2e3).optional(),\n /**\n * Org that physically hosts the project. Storage routing and compute\n * resolution use this — but org membership in this org does NOT grant\n * access. Visibility = 'platform' overrides those defaults.\n *\n * If omitted, the platform admin's first available org is used.\n */\n orgId: z.string().uuid().optional()\n});\nconst GET = async ({ locals }) => {\n requireInstanceAdmin(locals);\n if (!flag(\"ENABLE_PLATFORM_PROJECTS\")) apiError(404, ApiErrorCode.NOT_FOUND, \"Not found\");\n try {\n const orgs = await getOrganizationProvider().listOrgs(SYSTEM_CONTEXT, { limit: 1e3 });\n const all = [];\n for (const org of orgs.items) {\n const page = await getProjectProvider().listProjects(SYSTEM_CONTEXT, org.id, {\n limit: 1e3\n });\n for (const p of page.items) {\n if (p.visibility === \"platform\") all.push(p);\n }\n }\n return json({ projects: all });\n } catch (err) {\n handleApiError(err, \"Failed to list platform projects\");\n }\n};\nconst POST = async ({ request, locals }) => {\n const user = requireInstanceAdmin(locals);\n if (!flag(\"ENABLE_PLATFORM_PROJECTS\")) apiError(404, ApiErrorCode.NOT_FOUND, \"Not found\");\n const ctx = locals.ctx;\n const body = await request.json().catch(() => null);\n const parsed = CreatePlatformProjectBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const hostOrgId = parsed.data.orgId ?? ctx.actingOrgId;\n if (!hostOrgId) {\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n \"A host orgId is required (no active organization in context).\"\n );\n }\n const hostOrg = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, hostOrgId);\n if (!hostOrg)\n apiError(400, ApiErrorCode.VALIDATION_FAILED, `Host organization '${hostOrgId}' not found.`);\n const projectStore = getProjectProvider();\n const baseSlug = slugify(parsed.data.name) || \"platform-project\";\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const projectId = randomUUID();\n for (let attempt = 0; attempt < MAX_SLUG_ATTEMPTS; attempt++) {\n const slug = attempt === 0 ? baseSlug : `${baseSlug}-${attempt + 1}`;\n const project = {\n id: projectId,\n orgId: hostOrgId,\n name: parsed.data.name,\n slug,\n description: parsed.data.description,\n visibility: \"platform\",\n ownerId: user.id,\n createdBy: user.id,\n updatedBy: user.id,\n autoJoinOnUpload: false,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n try {\n await projectStore.createProject(SYSTEM_CONTEXT, project);\n return json(project, { status: 201 });\n } catch (err) {\n if (isNameConflict(err)) {\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"A project with that name already exists in the host organization.\"\n );\n }\n if (isSlugConflict(err)) continue;\n handleApiError(err, \"Failed to create platform project\");\n }\n }\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Could not pick a unique project slug after several attempts.\"\n );\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { error, json } from '@sveltejs/kit';
1
+ import { json } from '@sveltejs/kit';
2
2
  import { i as getDefinitionService } from './providers.server-C3fQ7ZdV.js';
3
- import { t as requireEditableDefinition } from './access.server-CAPd1-c2.js';
4
- import { h as handleApiError } from './api-errors-BhVEeWTV.js';
3
+ import { t as requireEditableDefinition } from './access.server-Rd56k7vs.js';
4
+ import { a as apiError, h as handleApiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
5
5
  import { G as GuidSchema } from './context-BJnJL8ES.js';
6
- import { b as MAX_IMAGE_FILE_SIZE } from './computeLimits-DPO6NbLd.js';
6
+ import { b as MAX_IMAGE_FILE_SIZE } from './computeLimits-DnJ77wR9.js';
7
7
  import './shared-server-C3WdcJCQ.js';
8
8
  import 'node:url';
9
9
  import 'node:path';
@@ -17,25 +17,29 @@ import './utils2-BqfluBM6.js';
17
17
 
18
18
  const POST = async ({ params, request, locals }) => {
19
19
  const guidParsed = GuidSchema.safeParse(params.guid);
20
- if (!guidParsed.success) throw error(400, "Invalid GUID");
20
+ if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid GUID");
21
21
  const guid = guidParsed.data;
22
22
  const { ctx } = await requireEditableDefinition(locals, guid);
23
23
  const formData = await request.formData();
24
24
  const file = formData.get("image");
25
25
  if (!(file instanceof File) || file.size === 0) {
26
- throw error(400, "Image file is required");
26
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "Image file is required");
27
27
  }
28
28
  if (file.size > MAX_IMAGE_FILE_SIZE) {
29
- throw error(400, `Image too large. Max size: ${MAX_IMAGE_FILE_SIZE / (1024 * 1024)} MB`);
29
+ apiError(
30
+ 400,
31
+ ApiErrorCode.VALIDATION_FAILED,
32
+ `Image too large. Max size: ${MAX_IMAGE_FILE_SIZE / (1024 * 1024)} MB`
33
+ );
30
34
  }
31
35
  try {
32
36
  const imageData = new Uint8Array(await file.arrayBuffer());
33
37
  const coverImage = await getDefinitionService().saveCoverImage(ctx, guid, imageData);
34
- return json({ success: true, coverImage });
38
+ return json({ coverImage });
35
39
  } catch (err) {
36
40
  handleApiError(err, "Failed to upload image");
37
41
  }
38
42
  };
39
43
 
40
44
  export { POST };
41
- //# sourceMappingURL=_server.ts-L9PpKy16.js.map
45
+ //# sourceMappingURL=_server.ts-D7URpGBv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-D7URpGBv.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/image/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { i as getDefinitionService } from \"../../../../../../chunks/providers.server.js\";\nimport { t as requireEditableDefinition } from \"../../../../../../chunks/access.server.js\";\nimport { a as apiError, h as handleApiError, A as ApiErrorCode } from \"../../../../../../chunks/api-errors.js\";\nimport { G as GuidSchema } from \"../../../../../../chunks/context.js\";\nimport { b as MAX_IMAGE_FILE_SIZE } from \"../../../../../../chunks/computeLimits.js\";\nconst POST = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Invalid GUID\");\n const guid = guidParsed.data;\n const { ctx } = await requireEditableDefinition(locals, guid);\n const formData = await request.formData();\n const file = formData.get(\"image\");\n if (!(file instanceof File) || file.size === 0) {\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Image file is required\");\n }\n if (file.size > MAX_IMAGE_FILE_SIZE) {\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n `Image too large. Max size: ${MAX_IMAGE_FILE_SIZE / (1024 * 1024)} MB`\n );\n }\n try {\n const imageData = new Uint8Array(await file.arrayBuffer());\n const coverImage = await getDefinitionService().saveCoverImage(ctx, guid, imageData);\n return json({ coverImage });\n } catch (err) {\n handleApiError(err, \"Failed to upload image\");\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAMK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;AACpD,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC;AACxF,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI;AAC9B,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/D,EAAE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;AAC3C,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;AAClD,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;AAC3E,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,mBAAmB,EAAE;AACvC,IAAI,QAAQ;AACZ,MAAM,GAAG;AACT,MAAM,YAAY,CAAC,iBAAiB;AACpC,MAAM,CAAC,2BAA2B,EAAE,mBAAmB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG;AAC3E,KAAK;AACL,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAC9D,IAAI,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC;AACxF,IAAI,OAAO,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;AAC/B,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,wBAAwB,CAAC;AACjD,EAAE;AACF;;;;"}
@@ -1,7 +1,10 @@
1
- import { error } from '@sveltejs/kit';
1
+ import { a as apiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
2
2
  import { h as getDefinitionMeta, d as definitionPaths, p as getStorageProvider } from './providers.server-C3fQ7ZdV.js';
3
3
  import { G as GuidSchema } from './context-BJnJL8ES.js';
4
- import { s as requireCanViewProject } from './access.server-CAPd1-c2.js';
4
+ import { s as requireCanViewProject } from './access.server-Rd56k7vs.js';
5
+ import '@sveltejs/kit';
6
+ import '@selvajs/compute/core';
7
+ import './utils2-BqfluBM6.js';
5
8
  import './shared-server-C3WdcJCQ.js';
6
9
  import 'node:url';
7
10
  import 'node:path';
@@ -10,9 +13,6 @@ import 'node:crypto';
10
13
  import 'node:fs/promises';
11
14
  import '@supabase/supabase-js';
12
15
  import 'zod';
13
- import './api-errors-BhVEeWTV.js';
14
- import '@selvajs/compute/core';
15
- import './utils2-BqfluBM6.js';
16
16
 
17
17
  const ALLOWED_EXTENSIONS = {
18
18
  ".webp": "image/webp",
@@ -24,21 +24,21 @@ const ALLOWED_EXTENSIONS = {
24
24
  const COVER_PATH_PATTERN = /^definitions\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\/cover\.([a-z]+)$/i;
25
25
  const GET = async ({ params, locals }) => {
26
26
  const storagePath = params.path;
27
- if (!storagePath) throw error(400, "Missing path");
27
+ if (!storagePath) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing path");
28
28
  const match = COVER_PATH_PATTERN.exec(storagePath);
29
- if (!match) throw error(404, "File not found");
29
+ if (!match) apiError(404, ApiErrorCode.NOT_FOUND, "File not found");
30
30
  const [, guid, rawExt] = match;
31
31
  const ext = `.${rawExt.toLowerCase()}`;
32
- if (!ALLOWED_EXTENSIONS[ext]) throw error(404, "File not found");
32
+ if (!ALLOWED_EXTENSIONS[ext]) apiError(404, ApiErrorCode.NOT_FOUND, "File not found");
33
33
  const guidParsed = GuidSchema.safeParse(guid);
34
- if (!guidParsed.success) throw error(404, "File not found");
35
- if (!locals.ctx) throw error(401, "Unauthorized");
34
+ if (!guidParsed.success) apiError(404, ApiErrorCode.NOT_FOUND, "File not found");
35
+ if (!locals.ctx) apiError(401, ApiErrorCode.UNAUTHORIZED, "Unauthorized");
36
36
  const record = await getDefinitionMeta().get(locals.ctx, guidParsed.data);
37
- if (!record) throw error(404, "File not found");
37
+ if (!record) apiError(404, ApiErrorCode.NOT_FOUND, "File not found");
38
38
  await requireCanViewProject(locals, record.projectId);
39
39
  const canonicalPath = definitionPaths.image(guidParsed.data);
40
40
  const bytes = await getStorageProvider().get(canonicalPath);
41
- if (!bytes) throw error(404, "File not found");
41
+ if (!bytes) apiError(404, ApiErrorCode.NOT_FOUND, "File not found");
42
42
  return new Response(Buffer.from(bytes), {
43
43
  headers: {
44
44
  "Content-Type": ALLOWED_EXTENSIONS[ext],
@@ -48,4 +48,4 @@ const GET = async ({ params, locals }) => {
48
48
  };
49
49
 
50
50
  export { GET };
51
- //# sourceMappingURL=_server.ts-D2Qb9pui.js.map
51
+ //# sourceMappingURL=_server.ts-DMwrtYEK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DMwrtYEK.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/files/_...path_/_server.ts.js"],"sourcesContent":["import { a as apiError, A as ApiErrorCode } from \"../../../../../chunks/api-errors.js\";\nimport { h as getDefinitionMeta, d as definitionPaths, p as getStorageProvider } from \"../../../../../chunks/providers.server.js\";\nimport { G as GuidSchema } from \"../../../../../chunks/context.js\";\nimport { s as requireCanViewProject } from \"../../../../../chunks/access.server.js\";\nconst ALLOWED_EXTENSIONS = {\n \".webp\": \"image/webp\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".png\": \"image/png\",\n \".gif\": \"image/gif\"\n};\nconst COVER_PATH_PATTERN = /^definitions\\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\/cover\\.([a-z]+)$/i;\nconst GET = async ({ params, locals }) => {\n const storagePath = params.path;\n if (!storagePath) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing path\");\n const match = COVER_PATH_PATTERN.exec(storagePath);\n if (!match) apiError(404, ApiErrorCode.NOT_FOUND, \"File not found\");\n const [, guid, rawExt] = match;\n const ext = `.${rawExt.toLowerCase()}`;\n if (!ALLOWED_EXTENSIONS[ext]) apiError(404, ApiErrorCode.NOT_FOUND, \"File not found\");\n const guidParsed = GuidSchema.safeParse(guid);\n if (!guidParsed.success) apiError(404, ApiErrorCode.NOT_FOUND, \"File not found\");\n if (!locals.ctx) apiError(401, ApiErrorCode.UNAUTHORIZED, \"Unauthorized\");\n const record = await getDefinitionMeta().get(locals.ctx, guidParsed.data);\n if (!record) apiError(404, ApiErrorCode.NOT_FOUND, \"File not found\");\n await requireCanViewProject(locals, record.projectId);\n const canonicalPath = definitionPaths.image(guidParsed.data);\n const bytes = await getStorageProvider().get(canonicalPath);\n if (!bytes) apiError(404, ApiErrorCode.NOT_FOUND, \"File not found\");\n return new Response(Buffer.from(bytes), {\n headers: {\n \"Content-Type\": ALLOWED_EXTENSIONS[ext],\n \"Cache-Control\": \"private, max-age=3600\"\n }\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIA,MAAM,kBAAkB,GAAG;AAC3B,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,MAAM,EAAE,WAAW;AACrB,EAAE,MAAM,EAAE;AACV,CAAC;AACD,MAAM,kBAAkB,GAAG,iGAAiG;AACvH,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC1C,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI;AACjC,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC;AACjF,EAAE,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACrE,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK;AAChC,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACvF,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AAClF,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,cAAc,CAAC;AAC3E,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAC3E,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACtE,EAAE,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AACvD,EAAE,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9D,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;AAC7D,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACrE,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1C,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,kBAAkB,CAAC,GAAG,CAAC;AAC7C,MAAM,eAAe,EAAE;AACvB;AACA,GAAG,CAAC;AACJ;;;;"}
@@ -1,9 +1,9 @@
1
- import { error, json } from '@sveltejs/kit';
1
+ import { json } from '@sveltejs/kit';
2
2
  import { z } from 'zod';
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { m as getPlatformProjectGrantStore, k as getOrganizationProvider, r as getUserProfileStore, f as flag, n as getProjectProvider } from './providers.server-C3fQ7ZdV.js';
5
- import { u as requireInstanceAdmin } from './access.server-CAPd1-c2.js';
6
- import { h as handleApiError, t as throwZodError } from './api-errors-BhVEeWTV.js';
5
+ import { u as requireInstanceAdmin } from './access.server-Rd56k7vs.js';
6
+ import { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
7
7
  import { S as SYSTEM_CONTEXT } from './context-BJnJL8ES.js';
8
8
  import './shared-server-C3WdcJCQ.js';
9
9
  import 'node:url';
@@ -20,17 +20,17 @@ const CreateGrantBody = z.object({
20
20
  canSolve: z.boolean()
21
21
  });
22
22
  async function assertPlatformProject(id) {
23
- if (!flag("ENABLE_PLATFORM_PROJECTS")) throw error(404, "Not found");
23
+ if (!flag("ENABLE_PLATFORM_PROJECTS")) apiError(404, ApiErrorCode.NOT_FOUND, "Not found");
24
24
  const project = await getProjectProvider().getProject(SYSTEM_CONTEXT, id);
25
25
  if (!project || project.visibility !== "platform") {
26
- throw error(404, "Platform project not found");
26
+ apiError(404, ApiErrorCode.NOT_FOUND, "Platform project not found");
27
27
  }
28
28
  return project;
29
29
  }
30
30
  const GET = async ({ params, locals }) => {
31
31
  requireInstanceAdmin(locals);
32
32
  const { id } = params;
33
- if (!id) throw error(400, "Missing project ID");
33
+ if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing project ID");
34
34
  try {
35
35
  await assertPlatformProject(id);
36
36
  const grants = await getPlatformProjectGrantStore().listByProject(SYSTEM_CONTEXT, id);
@@ -42,7 +42,7 @@ const GET = async ({ params, locals }) => {
42
42
  const POST = async ({ params, request, locals }) => {
43
43
  const user = requireInstanceAdmin(locals);
44
44
  const { id } = params;
45
- if (!id) throw error(400, "Missing project ID");
45
+ if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing project ID");
46
46
  const body = await request.json().catch(() => null);
47
47
  const parsed = CreateGrantBody.safeParse(body);
48
48
  if (!parsed.success) throwZodError(parsed.error);
@@ -50,10 +50,16 @@ const POST = async ({ params, request, locals }) => {
50
50
  await assertPlatformProject(id);
51
51
  if (parsed.data.granteeType === "org") {
52
52
  const org = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, parsed.data.granteeId);
53
- if (!org) throw error(400, `Organization '${parsed.data.granteeId}' not found`);
53
+ if (!org)
54
+ apiError(
55
+ 400,
56
+ ApiErrorCode.VALIDATION_FAILED,
57
+ `Organization '${parsed.data.granteeId}' not found`
58
+ );
54
59
  } else {
55
60
  const profile = await getUserProfileStore().getProfile(SYSTEM_CONTEXT, parsed.data.granteeId);
56
- if (!profile) throw error(400, `User '${parsed.data.granteeId}' not found`);
61
+ if (!profile)
62
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, `User '${parsed.data.granteeId}' not found`);
57
63
  }
58
64
  const grant = {
59
65
  id: randomUUID(),
@@ -72,4 +78,4 @@ const POST = async ({ params, request, locals }) => {
72
78
  };
73
79
 
74
80
  export { GET, POST };
75
- //# sourceMappingURL=_server.ts-B9uegfmw.js.map
81
+ //# sourceMappingURL=_server.ts-DSVtVVVK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DSVtVVVK.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/projects/_id_/grants/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { randomUUID } from \"node:crypto\";\nimport { m as getPlatformProjectGrantStore, k as getOrganizationProvider, r as getUserProfileStore, f as flag, n as getProjectProvider } from \"../../../../../../../chunks/providers.server.js\";\nimport { u as requireInstanceAdmin } from \"../../../../../../../chunks/access.server.js\";\nimport { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } from \"../../../../../../../chunks/api-errors.js\";\nimport { S as SYSTEM_CONTEXT } from \"../../../../../../../chunks/context.js\";\nconst CreateGrantBody = z.object({\n granteeType: z.enum([\"org\", \"user\"]),\n granteeId: z.string().min(1),\n canSolve: z.boolean()\n});\nasync function assertPlatformProject(id) {\n if (!flag(\"ENABLE_PLATFORM_PROJECTS\")) apiError(404, ApiErrorCode.NOT_FOUND, \"Not found\");\n const project = await getProjectProvider().getProject(SYSTEM_CONTEXT, id);\n if (!project || project.visibility !== \"platform\") {\n apiError(404, ApiErrorCode.NOT_FOUND, \"Platform project not found\");\n }\n return project;\n}\nconst GET = async ({ params, locals }) => {\n requireInstanceAdmin(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing project ID\");\n try {\n await assertPlatformProject(id);\n const grants = await getPlatformProjectGrantStore().listByProject(SYSTEM_CONTEXT, id);\n return json({ grants });\n } catch (err) {\n handleApiError(err, \"Failed to list grants\");\n }\n};\nconst POST = async ({ params, request, locals }) => {\n const user = requireInstanceAdmin(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing project ID\");\n const body = await request.json().catch(() => null);\n const parsed = CreateGrantBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n try {\n await assertPlatformProject(id);\n if (parsed.data.granteeType === \"org\") {\n const org = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, parsed.data.granteeId);\n if (!org)\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n `Organization '${parsed.data.granteeId}' not found`\n );\n } else {\n const profile = await getUserProfileStore().getProfile(SYSTEM_CONTEXT, parsed.data.granteeId);\n if (!profile)\n apiError(400, ApiErrorCode.VALIDATION_FAILED, `User '${parsed.data.granteeId}' not found`);\n }\n const grant = {\n id: randomUUID(),\n projectId: id,\n granteeType: parsed.data.granteeType,\n granteeId: parsed.data.granteeId,\n canSolve: parsed.data.canSolve,\n createdBy: user.id,\n createdAt: (/* @__PURE__ */ new Date()).toISOString()\n };\n await getPlatformProjectGrantStore().create(SYSTEM_CONTEXT, grant);\n return json(grant, { status: 201 });\n } catch (err) {\n handleApiError(err, \"Failed to create grant\");\n }\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { error, json } from '@sveltejs/kit';
1
+ import { json } from '@sveltejs/kit';
2
2
  import { i as getDefinitionService, n as getProjectProvider } from './providers.server-C3fQ7ZdV.js';
3
- import { t as requireEditableDefinition } from './access.server-CAPd1-c2.js';
4
- import { h as handleApiError, r as resolveServerForOrg, f as fetchSchemaFromCompute, t as throwZodError } from './api-errors-BhVEeWTV.js';
3
+ import { t as requireEditableDefinition } from './access.server-Rd56k7vs.js';
4
+ import { a as apiError, h as handleApiError, r as resolveServerForOrg, f as fetchSchemaFromCompute, t as throwZodError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
5
5
  import { G as GH_EXTENSIONS } from './types-DxzJoaA4.js';
6
6
  import { G as GuidSchema, U as UpdateMetadataInputSchema } from './context-BJnJL8ES.js';
7
- import { M as MAX_GH_FILE_SIZE } from './computeLimits-DPO6NbLd.js';
7
+ import { M as MAX_GH_FILE_SIZE } from './computeLimits-DnJ77wR9.js';
8
8
  import './shared-server-C3WdcJCQ.js';
9
9
  import 'node:url';
10
10
  import 'node:path';
@@ -18,18 +18,27 @@ import './utils2-BqfluBM6.js';
18
18
 
19
19
  const POST = async ({ params, request, locals }) => {
20
20
  const guidParsed = GuidSchema.safeParse(params.guid);
21
- if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
21
+ if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid or missing GUID");
22
22
  const formData = await request.formData();
23
23
  const file = formData.get("file");
24
- if (!(file instanceof File)) throw error(400, "A Grasshopper (.gh or .ghx) file is required");
24
+ if (!(file instanceof File))
25
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "A Grasshopper (.gh or .ghx) file is required");
25
26
  const changeNoteRaw = formData.get("changeNote");
26
27
  const changeNote = typeof changeNoteRaw === "string" ? changeNoteRaw.slice(0, 1e3) : void 0;
27
28
  const ext = file.name.slice(file.name.lastIndexOf(".")).toLowerCase();
28
29
  if (!GH_EXTENSIONS.includes(ext)) {
29
- throw error(400, `File type not allowed. Allowed: ${GH_EXTENSIONS.join(", ")}`);
30
+ apiError(
31
+ 400,
32
+ ApiErrorCode.VALIDATION_FAILED,
33
+ `File type not allowed. Allowed: ${GH_EXTENSIONS.join(", ")}`
34
+ );
30
35
  }
31
36
  if (file.size > MAX_GH_FILE_SIZE) {
32
- throw error(400, `File too large. Max size: ${MAX_GH_FILE_SIZE / (1024 * 1024)} MB`);
37
+ apiError(
38
+ 400,
39
+ ApiErrorCode.VALIDATION_FAILED,
40
+ `File too large. Max size: ${MAX_GH_FILE_SIZE / (1024 * 1024)} MB`
41
+ );
33
42
  }
34
43
  const { ctx, record } = await requireEditableDefinition(locals, guidParsed.data);
35
44
  const fileExt = ext.slice(1);
@@ -49,36 +58,36 @@ const POST = async ({ params, request, locals }) => {
49
58
  schema,
50
59
  changeNote
51
60
  );
52
- return json({ success: true, version });
61
+ return json({ version }, { status: 201 });
53
62
  } catch (err) {
54
63
  handleApiError(err, "Failed to upload definition version");
55
64
  }
56
65
  };
57
66
  const DELETE = async ({ params, locals }) => {
58
67
  const guidParsed = GuidSchema.safeParse(params.guid);
59
- if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
68
+ if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid or missing GUID");
60
69
  const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
61
70
  try {
62
71
  await getDefinitionService().delete(ctx, guidParsed.data);
63
- return json({ success: true });
72
+ return new Response(null, { status: 204 });
64
73
  } catch (err) {
65
74
  handleApiError(err, "Failed to delete definition");
66
75
  }
67
76
  };
68
77
  const PUT = async ({ params, request, locals }) => {
69
78
  const guidParsed = GuidSchema.safeParse(params.guid);
70
- if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
79
+ if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid or missing GUID");
71
80
  const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
72
81
  const body = await request.json().catch(() => null);
73
82
  const parsed = UpdateMetadataInputSchema.safeParse(body);
74
83
  if (!parsed.success) throwZodError(parsed.error);
75
84
  try {
76
85
  await getDefinitionService().updateMeta(ctx, guidParsed.data, parsed.data);
77
- return json({ success: true });
86
+ return new Response(null, { status: 204 });
78
87
  } catch (err) {
79
88
  handleApiError(err, "Failed to update definition");
80
89
  }
81
90
  };
82
91
 
83
92
  export { DELETE, POST, PUT };
84
- //# sourceMappingURL=_server.ts-Be15h83H.js.map
93
+ //# sourceMappingURL=_server.ts-Df72lBuz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-Df72lBuz.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { i as getDefinitionService, n as getProjectProvider } from \"../../../../../chunks/providers.server.js\";\nimport { t as requireEditableDefinition } from \"../../../../../chunks/access.server.js\";\nimport { a as apiError, h as handleApiError, r as resolveServerForOrg, f as fetchSchemaFromCompute, t as throwZodError, A as ApiErrorCode } from \"../../../../../chunks/api-errors.js\";\nimport { G as GH_EXTENSIONS } from \"../../../../../chunks/types.js\";\nimport { G as GuidSchema, U as UpdateMetadataInputSchema } from \"../../../../../chunks/context.js\";\nimport { M as MAX_GH_FILE_SIZE } from \"../../../../../chunks/computeLimits.js\";\nconst POST = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Invalid or missing GUID\");\n const formData = await request.formData();\n const file = formData.get(\"file\");\n if (!(file instanceof File))\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"A Grasshopper (.gh or .ghx) file is required\");\n const changeNoteRaw = formData.get(\"changeNote\");\n const changeNote = typeof changeNoteRaw === \"string\" ? changeNoteRaw.slice(0, 1e3) : void 0;\n const ext = file.name.slice(file.name.lastIndexOf(\".\")).toLowerCase();\n if (!GH_EXTENSIONS.includes(ext)) {\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n `File type not allowed. Allowed: ${GH_EXTENSIONS.join(\", \")}`\n );\n }\n if (file.size > MAX_GH_FILE_SIZE) {\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n `File too large. Max size: ${MAX_GH_FILE_SIZE / (1024 * 1024)} MB`\n );\n }\n const { ctx, record } = await requireEditableDefinition(locals, guidParsed.data);\n const fileExt = ext.slice(1);\n try {\n const data = new Uint8Array(await file.arrayBuffer());\n const project = await getProjectProvider().getProject(ctx, record.projectId);\n const server = await resolveServerForOrg(ctx, project?.orgId ?? null, {\n definitionPin: record.computeServerId ?? null\n });\n const schema = await fetchSchemaFromCompute(data, server);\n const version = await getDefinitionService().uploadVersion(\n ctx,\n guidParsed.data,\n data,\n fileExt,\n file.name,\n schema,\n changeNote\n );\n return json({ version }, { status: 201 });\n } catch (err) {\n handleApiError(err, \"Failed to upload definition version\");\n }\n};\nconst DELETE = async ({ params, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n await getDefinitionService().delete(ctx, guidParsed.data);\n return new Response(null, { status: 204 });\n } catch (err) {\n handleApiError(err, \"Failed to delete definition\");\n }\n};\nconst PUT = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const body = await request.json().catch(() => null);\n const parsed = UpdateMetadataInputSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n try {\n await getDefinitionService().updateMeta(ctx, guidParsed.data, parsed.data);\n return new Response(null, { status: 204 });\n } catch (err) {\n handleApiError(err, \"Failed to update definition\");\n }\n};\nexport {\n DELETE,\n POST,\n PUT\n};\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
- import { error, json } from '@sveltejs/kit';
1
+ import { json } from '@sveltejs/kit';
2
+ import { a as apiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
2
3
  import { c as getComputeServerConfigStore, s as isOrgServer, t as isPlatformServer, f as flag } from './providers.server-C3fQ7ZdV.js';
3
- import { x as requireManageOrgCompute } from './access.server-CAPd1-c2.js';
4
+ import { x as requireManageOrgCompute } from './access.server-Rd56k7vs.js';
4
5
  import './context-BJnJL8ES.js';
5
6
  import { s as serversVisibleTo } from './utils2-BqfluBM6.js';
7
+ import '@selvajs/compute/core';
6
8
  import './shared-server-C3WdcJCQ.js';
7
9
  import 'node:url';
8
10
  import 'node:path';
@@ -10,14 +12,13 @@ import 'node:fs';
10
12
  import 'node:crypto';
11
13
  import 'node:fs/promises';
12
14
  import '@supabase/supabase-js';
13
- import './api-errors-BhVEeWTV.js';
14
- import '@selvajs/compute/core';
15
15
  import 'zod';
16
16
 
17
17
  function requireFlag() {
18
18
  if (!flag("ALLOW_ORG_COMPUTE_OVERRIDE")) {
19
- throw error(
19
+ apiError(
20
20
  403,
21
+ ApiErrorCode.FORBIDDEN,
21
22
  "Per-org compute override is disabled on this instance (ALLOW_ORG_COMPUTE_OVERRIDE)."
22
23
  );
23
24
  }
@@ -26,7 +27,7 @@ const GET = async ({ locals }) => {
26
27
  requireFlag();
27
28
  requireManageOrgCompute(locals);
28
29
  const ctx = locals.ctx;
29
- if (!ctx.actingOrgId) throw error(400, "No active organization");
30
+ if (!ctx.actingOrgId) apiError(400, ApiErrorCode.VALIDATION_FAILED, "No active organization");
30
31
  const config = await getComputeServerConfigStore().getConfig(ctx);
31
32
  const orgId = ctx.actingOrgId;
32
33
  const owned = config.servers.filter((s) => isOrgServer(s) && s.ownerOrgId === orgId).map((s) => {
@@ -55,24 +56,28 @@ const PUT = async ({ request, locals }) => {
55
56
  requireFlag();
56
57
  requireManageOrgCompute(locals);
57
58
  const ctx = locals.ctx;
58
- if (!ctx.actingOrgId) throw error(400, "No active organization");
59
+ if (!ctx.actingOrgId) apiError(400, ApiErrorCode.VALIDATION_FAILED, "No active organization");
59
60
  const orgId = ctx.actingOrgId;
60
61
  const body = await request.json().catch(() => null);
61
- if (!body || typeof body !== "object") throw error(400, "Invalid request body");
62
+ if (!body || typeof body !== "object")
63
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid request body");
62
64
  const incoming = body;
63
- if (!Array.isArray(incoming.servers)) throw error(400, "servers must be an array");
65
+ if (!Array.isArray(incoming.servers))
66
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "servers must be an array");
64
67
  for (const s of incoming.servers) {
65
- if (!s.id || typeof s.id !== "string") throw error(400, "Each server needs an id");
66
- if (!s.label || typeof s.label !== "string") throw error(400, "Each server needs a label");
68
+ if (!s.id || typeof s.id !== "string")
69
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "Each server needs an id");
70
+ if (!s.label || typeof s.label !== "string")
71
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "Each server needs a label");
67
72
  if (!s.serverUrl || typeof s.serverUrl !== "string")
68
- throw error(400, "Each server needs a serverUrl");
73
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "Each server needs a serverUrl");
69
74
  try {
70
75
  new URL(s.serverUrl);
71
76
  } catch {
72
- throw error(400, `Invalid serverUrl: ${s.serverUrl}`);
77
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, `Invalid serverUrl: ${s.serverUrl}`);
73
78
  }
74
79
  if (s.apiKey !== void 0 && s.apiKey !== null && typeof s.apiKey !== "string")
75
- throw error(400, "apiKey must be a string, null, or omitted");
80
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "apiKey must be a string, null, or omitted");
76
81
  }
77
82
  const provider = getComputeServerConfigStore();
78
83
  const existing = await provider.getConfig(ctx);
@@ -100,7 +105,11 @@ const PUT = async ({ request, locals }) => {
100
105
  };
101
106
  const visibleIds = new Set(serversVisibleTo(projected, orgId).map((s) => s.id));
102
107
  if (!visibleIds.has(incoming.defaultServerId)) {
103
- throw error(400, "defaultServerId must reference a server visible to this organization");
108
+ apiError(
109
+ 400,
110
+ ApiErrorCode.VALIDATION_FAILED,
111
+ "defaultServerId must reference a server visible to this organization"
112
+ );
104
113
  }
105
114
  }
106
115
  await provider.saveOrgServers(ctx, orgId, next, incoming.defaultServerId);
@@ -108,4 +117,4 @@ const PUT = async ({ request, locals }) => {
108
117
  };
109
118
 
110
119
  export { GET, PUT };
111
- //# sourceMappingURL=_server.ts-BlVwuKrl.js.map
120
+ //# sourceMappingURL=_server.ts-DsXq-KLm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DsXq-KLm.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/org/compute/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { a as apiError, A as ApiErrorCode } from \"../../../../../chunks/api-errors.js\";\nimport { c as getComputeServerConfigStore, s as isOrgServer, t as isPlatformServer, f as flag } from \"../../../../../chunks/providers.server.js\";\nimport { x as requireManageOrgCompute } from \"../../../../../chunks/access.server.js\";\nimport \"../../../../../chunks/context.js\";\nimport { s as serversVisibleTo } from \"../../../../../chunks/utils2.js\";\nfunction requireFlag() {\n if (!flag(\"ALLOW_ORG_COMPUTE_OVERRIDE\")) {\n apiError(\n 403,\n ApiErrorCode.FORBIDDEN,\n \"Per-org compute override is disabled on this instance (ALLOW_ORG_COMPUTE_OVERRIDE).\"\n );\n }\n}\nconst GET = async ({ locals }) => {\n requireFlag();\n requireManageOrgCompute(locals);\n const ctx = locals.ctx;\n if (!ctx.actingOrgId) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"No active organization\");\n const config = await getComputeServerConfigStore().getConfig(ctx);\n const orgId = ctx.actingOrgId;\n const owned = config.servers.filter((s) => isOrgServer(s) && s.ownerOrgId === orgId).map((s) => {\n const orgServer = s;\n const { apiKey, ...rest } = orgServer;\n return { ...rest, hasApiKey: !!apiKey };\n });\n const visible = serversVisibleTo(config, orgId);\n const catalog = visible.map((s) => ({\n id: s.id,\n label: s.label,\n serverUrl: s.serverUrl,\n scope: s.scope,\n source: isPlatformServer(s) ? \"platform\" : \"org\",\n timeoutMs: s.timeoutMs,\n retryCount: s.retryCount\n }));\n return json({\n servers: owned,\n defaultServerId: config.orgDefaults?.[orgId] ?? null,\n globalDefaultServerId: config.defaultServerId ?? null,\n catalog\n });\n};\nconst PUT = async ({ request, locals }) => {\n requireFlag();\n requireManageOrgCompute(locals);\n const ctx = locals.ctx;\n if (!ctx.actingOrgId) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"No active organization\");\n const orgId = ctx.actingOrgId;\n const body = await request.json().catch(() => null);\n if (!body || typeof body !== \"object\")\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Invalid request body\");\n const incoming = body;\n if (!Array.isArray(incoming.servers))\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"servers must be an array\");\n for (const s of incoming.servers) {\n if (!s.id || typeof s.id !== \"string\")\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Each server needs an id\");\n if (!s.label || typeof s.label !== \"string\")\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Each server needs a label\");\n if (!s.serverUrl || typeof s.serverUrl !== \"string\")\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Each server needs a serverUrl\");\n try {\n new URL(s.serverUrl);\n } catch {\n apiError(400, ApiErrorCode.VALIDATION_FAILED, `Invalid serverUrl: ${s.serverUrl}`);\n }\n if (s.apiKey !== void 0 && s.apiKey !== null && typeof s.apiKey !== \"string\")\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"apiKey must be a string, null, or omitted\");\n }\n const provider = getComputeServerConfigStore();\n const existing = await provider.getConfig(ctx);\n const storedKeyById = new Map(\n existing.servers.filter((s) => isOrgServer(s) && s.ownerOrgId === orgId).map((s) => [s.id, s.apiKey])\n );\n const next = incoming.servers.map((s) => ({\n id: s.id,\n scope: \"org\",\n ownerOrgId: orgId,\n label: s.label,\n serverUrl: s.serverUrl,\n timeoutMs: s.timeoutMs,\n retryCount: s.retryCount,\n apiKey: s.apiKey === null ? void 0 : s.apiKey ? s.apiKey : storedKeyById.get(s.id)\n }));\n if (typeof incoming.defaultServerId === \"string\") {\n const projected = {\n servers: [\n ...existing.servers.filter((s) => !(isOrgServer(s) && s.ownerOrgId === orgId)),\n ...next\n ],\n defaultServerId: existing.defaultServerId,\n orgDefaults: existing.orgDefaults\n };\n const visibleIds = new Set(serversVisibleTo(projected, orgId).map((s) => s.id));\n if (!visibleIds.has(incoming.defaultServerId)) {\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n \"defaultServerId must reference a server visible to this organization\"\n );\n }\n }\n await provider.saveOrgServers(ctx, orgId, next, incoming.defaultServerId);\n return new Response(null, { status: 204 });\n};\nexport {\n GET,\n PUT\n};\n"],"names":[],"mappings":"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"}