@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CT1KXbVK.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/compute/_server.ts.js"],"sourcesContent":["import { a as apiError, A as ApiErrorCode, r as resolveServerForOrg, f as fetchSchemaFromCompute, C as ComputeServerUnconfiguredError } from \"../../../../chunks/api-errors.js\";\nimport { enableDebugLogging, TreeBuilder, GrasshopperClient } from \"@selvajs/compute\";\nimport { p as private_env } from \"../../../../chunks/shared-server.js\";\nimport { isHttpError } from \"@sveltejs/kit\";\nimport { lookup } from \"node:dns/promises\";\nimport { isIP } from \"node:net\";\nimport { d as RATE_LIMIT_WINDOW_MS, R as RATE_LIMIT_MAX_REQUESTS, c as MAX_SOLVE_DURATION_MS, a as COMPUTE_RESPONSE_MAX_BYTES, D as DEFINITION_CACHE_TTL_MS, e as REMOTE_DEFINITION_FETCH_TIMEOUT_MS, f as REMOTE_DEFINITION_MAX_BYTES, C as COMPUTE_REQUEST_MAX_BYTES } from \"../../../../chunks/computeLimits.js\";\nimport { e as requireMaxBodySize } from \"../../../../chunks/admin-auth.server.js\";\nimport { p as getStorageProvider, o as getSolveMetricSink, u as providers } from \"../../../../chunks/providers.server.js\";\nimport { k as requireCanEditDefinition, q as requireCanSolve } from \"../../../../chunks/access.server.js\";\nimport { t as tryResolveShareToken } from \"../../../../chunks/resolve.server.js\";\nfunction isBlockedIp(ip) {\n let addr = ip.toLowerCase();\n const mappedDotted = /^::ffff:(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})$/.exec(addr);\n if (mappedDotted) {\n addr = mappedDotted[1];\n } else {\n const mappedHex = /^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(addr);\n if (mappedHex) {\n const hi = parseInt(mappedHex[1], 16);\n const lo = parseInt(mappedHex[2], 16);\n addr = [hi >> 8 & 255, hi & 255, lo >> 8 & 255, lo & 255].join(\".\");\n }\n }\n if (isIP(addr) === 4) {\n const octets = addr.split(\".\").map(Number);\n if (octets.length !== 4 || octets.some((o) => o > 255)) return true;\n const [a, b] = octets;\n if (a === 0) return true;\n if (a === 127) return true;\n if (a === 10) return true;\n if (a === 192 && b === 168) return true;\n if (a === 172 && b >= 16 && b <= 31) return true;\n if (a === 169 && b === 254) return true;\n return false;\n }\n if (addr === \"::1\" || addr === \"::\") return true;\n if (/^(fc|fd)[0-9a-f]{0,2}:/.test(addr)) return true;\n if (/^fe[89ab][0-9a-f]:/.test(addr)) return true;\n return false;\n}\nfunction canonicalizeNumericIpv4(host) {\n if (isIP(host) === 4) return host;\n const rawParts = host.split(\".\");\n if (rawParts.length === 0 || rawParts.length > 4) return null;\n const parseUInt = (s) => {\n if (s === \"\") return null;\n let n;\n if (/^0x[0-9a-f]+$/i.test(s)) n = parseInt(s, 16);\n else if (/^0[0-7]+$/.test(s)) n = parseInt(s, 8);\n else if (/^[0-9]+$/.test(s)) n = parseInt(s, 10);\n else return null;\n return Number.isFinite(n) ? n : null;\n };\n const nums = rawParts.map(parseUInt);\n if (nums.some((n) => n === null)) return null;\n const parts = nums;\n let value;\n switch (parts.length) {\n case 1:\n value = parts[0];\n break;\n case 2:\n if (parts[0] > 255 || parts[1] > 16777215) return null;\n value = parts[0] << 24 | parts[1];\n break;\n case 3:\n if (parts[0] > 255 || parts[1] > 255 || parts[2] > 65535) return null;\n value = parts[0] << 24 | parts[1] << 16 | parts[2];\n break;\n default:\n if (parts.some((p) => p > 255)) return null;\n value = parts[0] << 24 | parts[1] << 16 | parts[2] << 8 | parts[3];\n }\n value = value >>> 0;\n if (value > 4294967295) return null;\n return [value >>> 24 & 255, value >>> 16 & 255, value >>> 8 & 255, value & 255].join(\n \".\"\n );\n}\nfunction isSafeRemoteDefinitionUrl(raw) {\n let parsed;\n try {\n parsed = new URL(raw);\n } catch {\n return false;\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") return false;\n let host = parsed.hostname.toLowerCase();\n if (!host) return false;\n if (host === \"localhost\" || host.endsWith(\".localhost\")) return false;\n const isBracketed = host.startsWith(\"[\") && host.endsWith(\"]\");\n if (isBracketed) host = host.slice(1, -1);\n if (isIP(host) === 6) return !isBlockedIp(host);\n const canonical = canonicalizeNumericIpv4(host);\n if (canonical) return !isBlockedIp(canonical);\n return true;\n}\nasync function assertSafeRemoteDefinitionUrl(raw) {\n if (!isSafeRemoteDefinitionUrl(raw)) {\n throw new Error(\"Remote definition URL is not allowed\");\n }\n const host = new URL(raw).hostname.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n if (isIP(host) !== 0 || canonicalizeNumericIpv4(host)) return raw;\n let resolved;\n try {\n resolved = await lookup(host, { all: true });\n } catch {\n throw new Error(\"Remote definition URL is not allowed\");\n }\n if (resolved.length === 0 || resolved.some((r) => isBlockedIp(r.address))) {\n throw new Error(\"Remote definition URL is not allowed\");\n }\n return raw;\n}\nconst WINDOW_MS = RATE_LIMIT_WINDOW_MS;\nconst MAX_PER_WINDOW = RATE_LIMIT_MAX_REQUESTS;\nconst buckets = /* @__PURE__ */ new Map();\nfunction checkComputeRateLimit(key) {\n const now = Date.now();\n const entry = buckets.get(key);\n if (!entry || now > entry.resetAt) {\n buckets.set(key, { count: 1, resetAt: now + WINDOW_MS });\n return { allowed: true };\n }\n if (entry.count >= MAX_PER_WINDOW) {\n return { allowed: false, retryAfter: Math.ceil((entry.resetAt - now) / 1e3) };\n }\n entry.count += 1;\n return { allowed: true };\n}\nconst COMPUTE_DEBUG = [\"true\", \"1\", \"yes\"].includes(\n (private_env.SELVA_FLAG_COMPUTE_DEBUG ?? \"\").toLowerCase()\n);\nif (COMPUTE_DEBUG) enableDebugLogging();\nconst definitionCache = /* @__PURE__ */ new Map();\nconst MAX_CACHED_CLIENTS = 16;\nconst clientCache = /* @__PURE__ */ new Map();\nfunction clientCacheKey(serverConfig) {\n return `${serverConfig.serverUrl}\\0${serverConfig.apiKey ?? \"\"}`;\n}\nasync function getClient(serverConfig) {\n const key = clientCacheKey(serverConfig);\n const existing = clientCache.get(key);\n if (existing) {\n clientCache.delete(key);\n clientCache.set(key, existing);\n return existing;\n }\n const client = await GrasshopperClient.create({\n serverUrl: serverConfig.serverUrl,\n apiKey: serverConfig.apiKey,\n debug: COMPUTE_DEBUG\n });\n const scheduler = client.createScheduler({\n mode: \"queue\",\n timeoutMs: MAX_SOLVE_DURATION_MS,\n cache: { maxEntries: 20, ttlMs: 5 * 6e4 },\n // VektorNode fork returns empty 200 on stale pointer; disable until it errors.\n reuseServerDefinitionCache: false\n });\n const entry = { client, scheduler };\n if (clientCache.size >= MAX_CACHED_CLIENTS) {\n const oldestKey = clientCache.keys().next().value;\n if (oldestKey !== void 0) {\n clientCache.get(oldestKey)?.scheduler.dispose();\n clientCache.delete(oldestKey);\n }\n }\n clientCache.set(key, entry);\n return entry;\n}\nasync function readBodyWithCap(response, maxBytes, controller) {\n if (!response.body) {\n const buffer = await response.arrayBuffer();\n if (buffer.byteLength > maxBytes) throw new Error(\"Remote definition exceeds size limit\");\n return new Uint8Array(buffer);\n }\n const reader = response.body.getReader();\n const chunks = [];\n let total = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n total += value.byteLength;\n if (total > maxBytes) {\n controller.abort();\n throw new Error(\"Remote definition exceeds size limit\");\n }\n chunks.push(value);\n }\n const out = new Uint8Array(total);\n let offset = 0;\n for (const chunk of chunks) {\n out.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return out;\n}\nasync function loadRemoteDefinition(url) {\n await assertSafeRemoteDefinitionUrl(url);\n const now = Date.now();\n const cached = definitionCache.get(url);\n if (cached && now - cached.fetchedAt < DEFINITION_CACHE_TTL_MS) {\n return cached.data;\n }\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), REMOTE_DEFINITION_FETCH_TIMEOUT_MS);\n let data;\n try {\n const response = await fetch(url, {\n signal: controller.signal,\n redirect: \"error\"\n });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n const declared = Number(response.headers.get(\"content-length\"));\n if (Number.isFinite(declared) && declared > REMOTE_DEFINITION_MAX_BYTES) {\n throw new Error(\"Remote definition exceeds size limit\");\n }\n data = await readBodyWithCap(response, REMOTE_DEFINITION_MAX_BYTES, controller);\n } finally {\n clearTimeout(timeout);\n }\n definitionCache.set(url, { data, fetchedAt: now });\n if (definitionCache.size > 50) {\n const entries = Array.from(definitionCache.entries());\n entries.sort((a, b) => a[1].fetchedAt - b[1].fetchedAt);\n for (let i = 0; i < 10; i++) {\n definitionCache.delete(entries[i][0]);\n }\n }\n return data;\n}\nfunction transformInputParameter(input, value) {\n const base = {\n description: input.description || \"\",\n name: input.nickname,\n nickname: input.nickname || null,\n id: input.id\n };\n if (input.paramType === \"number\" || input.paramType === \"integer\") {\n return {\n ...base,\n paramType: input.paramType === \"integer\" ? \"Integer\" : \"Number\",\n minimum: input.minimum,\n maximum: input.maximum,\n stepSize: input.paramType === \"integer\" ? 1 : input.stepSize,\n default: value ?? input.default\n };\n } else if (input.paramType === \"text\") {\n return {\n ...base,\n paramType: \"Text\",\n default: value ?? input.default ?? \"\"\n };\n } else if (input.paramType === \"boolean\") {\n return {\n ...base,\n paramType: \"Boolean\",\n default: value ?? input.default ?? false\n };\n }\n return {\n ...base,\n paramType: \"Text\",\n default: value ?? \"\"\n };\n}\nconst POST = async ({ request, locals, url }) => {\n const storage = getStorageProvider();\n requireMaxBodySize(request, COMPUTE_REQUEST_MAX_BYTES);\n try {\n const body = await request.json();\n const { inputs, values } = body;\n const definitionUrl = body.definitionUrl;\n const channel = body.channel ?? \"live\";\n if (!inputs || !values || !definitionUrl) {\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n \"Missing required fields: inputs, values, or definitionUrl\"\n );\n }\n if (channel !== \"live\" && channel !== \"draft\") {\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n `Invalid channel: ${channel}. Must be 'live' or 'draft'.`\n );\n }\n let definitionSource;\n let localVersionForBackfill = null;\n let solveOrgId = null;\n let definitionPin = null;\n let metricDefinitionId = null;\n let metricVersionId = null;\n const isLocal = definitionUrl.startsWith(\"local:\");\n const guid = isLocal ? definitionUrl.substring(6) : null;\n const sharedAccess = isLocal && guid ? await tryResolveShareToken(request, url, guid, channel, { requireSolve: true }) : null;\n if (!sharedAccess && (!locals.ctx || !locals.user)) {\n apiError(401, ApiErrorCode.UNAUTHORIZED, \"Unauthorized\");\n }\n const solveCtx = sharedAccess?.ctx ?? locals.ctx;\n const recordMetric = (failureKind, extra = {}) => {\n void getSolveMetricSink().record(solveCtx, {\n definitionUrl,\n definitionId: metricDefinitionId,\n versionId: metricVersionId,\n channel,\n orgId: solveOrgId,\n durationMs: extra.durationMs ?? 0,\n ok: failureKind === \"ok\",\n failureKind,\n errorCount: extra.errorCount ?? 0,\n warningCount: extra.warningCount ?? 0\n });\n };\n const rateLimitKey = sharedAccess ? `share:${sharedAccess.link.id}` : `user:${locals.user.id}`;\n const rateLimit = checkComputeRateLimit(rateLimitKey);\n if (!rateLimit.allowed) {\n recordMetric(\"rate_limited\");\n const retryAfter = rateLimit.retryAfter ?? 1;\n return new Response(\n JSON.stringify({\n message: `Too many compute requests. Retry in ${retryAfter}s.`,\n retryAfter\n }),\n {\n status: 429,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Retry-After\": String(retryAfter)\n }\n }\n );\n }\n if (isLocal && guid) {\n let record;\n try {\n record = await providers.data.definitions.get(solveCtx, guid);\n } catch (err) {\n console.error(`Failed to load local definition: ${guid}`, err);\n apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' not found`);\n }\n if (!record) apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' not found`);\n const project = await providers.data.projects.getProject(solveCtx, record.projectId);\n solveOrgId = project?.orgId ?? null;\n definitionPin = record.computeServerId ?? null;\n if (!sharedAccess) {\n if (channel === \"draft\") {\n await requireCanEditDefinition(locals, record.projectId, guid);\n } else {\n await requireCanSolve(locals, record.projectId);\n }\n }\n const versionId = channel === \"live\" ? record.liveVersionId : record.draftVersionId;\n if (!versionId) {\n apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' has no ${channel} version yet`);\n }\n const version = await providers.data.definitions.getVersion(solveCtx, versionId);\n if (!version || version.definitionId !== guid) {\n apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' ${channel} version is missing`);\n }\n localVersionForBackfill = { id: version.id, hasSchema: version.schema !== void 0 };\n metricDefinitionId = guid;\n metricVersionId = version.id;\n try {\n const bytes = await storage.get(version.fileKey);\n if (!bytes) throw new Error(`Version blob missing: ${version.fileKey}`);\n definitionSource = bytes;\n } catch (err) {\n console.error(`Failed to load local definition blob: ${guid}`, err);\n apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' not found`);\n }\n } else {\n try {\n definitionSource = await loadRemoteDefinition(definitionUrl);\n } catch (err) {\n console.error(`Failed to fetch definition from ${definitionUrl}:`, err);\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n `Failed to load definition: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n }\n const inputTree = TreeBuilder.fromInputParams(\n inputs.filter((input) => input.paramType).map((input) => transformInputParameter(input, values[input.id]))\n );\n if (sharedAccess) {\n const next = await providers.data.shareLinks.tryIncrementSolveCount(\n solveCtx,\n sharedAccess.link.id\n );\n if (next === null) {\n recordMetric(\"share_cap\");\n apiError(429, ApiErrorCode.INTERNAL, \"Share link solve cap reached.\");\n }\n }\n const serverConfig = await resolveServerForOrg(solveCtx, solveOrgId, { definitionPin });\n if (localVersionForBackfill && !localVersionForBackfill.hasSchema) {\n const versionId = localVersionForBackfill.id;\n try {\n const schema = await fetchSchemaFromCompute(definitionSource, serverConfig);\n await providers.data.definitions.setVersionSchema(solveCtx, versionId, schema);\n } catch (err) {\n console.warn(`[API/Compute] Schema backfill failed for version ${versionId}:`, err);\n }\n }\n const { scheduler } = await getClient(serverConfig);\n let solvedDefinition;\n const solveStart = performance.now();\n try {\n solvedDefinition = await scheduler.solve(definitionSource, inputTree, {\n signal: request.signal\n });\n recordMetric(\"ok\", {\n durationMs: performance.now() - solveStart,\n errorCount: solvedDefinition.errors?.length ?? 0,\n warningCount: solvedDefinition.warnings?.length ?? 0\n });\n if (metricDefinitionId) {\n providers.data.definitions.incrementSolveCount(solveCtx, metricDefinitionId).catch(\n (err) => console.warn(\n `[API/Compute] solveCount increment failed for ${metricDefinitionId}:`,\n err\n )\n );\n }\n } catch (err) {\n const isAbort = err instanceof Error && err.name === \"AbortError\";\n const timedOut = isAbort && !request.signal.aborted;\n recordMetric(timedOut ? \"timeout\" : isAbort ? \"client_abort\" : \"compute_error\", {\n durationMs: performance.now() - solveStart\n });\n if (isAbort) {\n if (request.signal.aborted) {\n apiError(499, ApiErrorCode.INTERNAL, \"Client closed request\");\n }\n apiError(\n 504,\n ApiErrorCode.INTERNAL,\n `Solve exceeded the ${Math.round(MAX_SOLVE_DURATION_MS / 1e3)}s deadline.`\n );\n }\n throw err;\n }\n let serialized;\n try {\n serialized = JSON.stringify(solvedDefinition);\n } catch (err) {\n if (err instanceof RangeError) {\n recordMetric(\"too_large\");\n apiError(\n 413,\n ApiErrorCode.INTERNAL,\n \"Solve result is too large to return. This usually means a file output exceeds the supported size.\"\n );\n }\n throw err;\n }\n if (serialized.length > COMPUTE_RESPONSE_MAX_BYTES) {\n recordMetric(\"too_large\");\n apiError(\n 413,\n ApiErrorCode.INTERNAL,\n \"Solve result is too large to return. This usually means a file output exceeds the supported size.\"\n );\n }\n return new Response(serialized, {\n headers: { \"Content-Type\": \"application/json\" }\n });\n } catch (err) {\n if (isHttpError(err)) throw err;\n if (err instanceof ComputeServerUnconfiguredError) {\n apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message);\n }\n const message = err instanceof Error ? err.message : \"Unknown error\";\n console.error(\"[API/Compute] Error:\", message);\n if (err instanceof TypeError && message === \"fetch failed\") {\n apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, \"Compute server is unreachable\");\n }\n apiError(500, ApiErrorCode.INTERNAL, message);\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAWA,SAAS,WAAW,CAAC,EAAE,EAAE;AACzB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE;AAC7B,EAAE,MAAM,YAAY,GAAG,+CAA+C,CAAC,IAAI,CAAC,IAAI,CAAC;AACjF,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;AAC1B,EAAE,CAAC,MAAM;AACT,IAAI,MAAM,SAAS,GAAG,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3E,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,MAAM,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACzE,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI;AACvE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM;AACzB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;AAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,IAAI;AAC9B,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,IAAI;AAC7B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,IAAI;AAC3C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,IAAI;AACpD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,IAAI;AAC3C,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE,OAAO,IAAI;AAClD,EAAE,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AACtD,EAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AAClD,EAAE,OAAO,KAAK;AACd;AACA,SAAS,uBAAuB,CAAC,IAAI,EAAE;AACvC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;AACnC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAClC,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI;AAC/D,EAAE,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK;AAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,IAAI;AAC7B,IAAI,IAAI,CAAC;AACT,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AACrD,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACpD,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AACpD,SAAS,OAAO,IAAI;AACpB,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AACxC,EAAE,CAAC;AACH,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;AACtC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,OAAO,IAAI;AAC/C,EAAE,MAAM,KAAK,GAAG,IAAI;AACpB,EAAE,IAAI,KAAK;AACX,EAAE,QAAQ,KAAK,CAAC,MAAM;AACtB,IAAI,KAAK,CAAC;AACV,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AACtB,MAAM;AACN,IAAI,KAAK,CAAC;AACV,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,IAAI;AAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACvC,MAAM;AACN,IAAI,KAAK,CAAC;AACV,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,OAAO,IAAI;AAC3E,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACxD,MAAM;AACN,IAAI;AACJ,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI;AACjD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACxE;AACA,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC;AACrB,EAAE,IAAI,KAAK,GAAG,UAAU,EAAE,OAAO,IAAI;AACrC,EAAE,OAAO,CAAC,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI;AACtF,IAAI;AACJ,GAAG;AACH;AACA,SAAS,yBAAyB,CAAC,GAAG,EAAE;AACxC,EAAE,IAAI,MAAM;AACZ,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AACzB,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,OAAO,KAAK;AAC/E,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC1C,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AACzB,EAAE,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK;AACvE,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAChE,EAAE,IAAI,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;AACjD,EAAE,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC;AACjD,EAAE,IAAI,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;AAC/C,EAAE,OAAO,IAAI;AACb;AACA,eAAe,6BAA6B,CAAC,GAAG,EAAE;AAClD,EAAE,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE;AACvC,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAC3D,EAAE;AACF,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC1E,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG;AACnE,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI;AACN,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAChD,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAC3D,EAAE;AACF,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC7E,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAC3D,EAAE;AACF,EAAE,OAAO,GAAG;AACZ;AACA,MAAM,SAAS,GAAG,oBAAoB;AACtC,MAAM,cAAc,GAAG,uBAAuB;AAC9C,MAAM,OAAO,mBAAmB,IAAI,GAAG,EAAE;AACzC,SAAS,qBAAqB,CAAC,GAAG,EAAE;AACpC,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACxB,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE;AACrC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,SAAS,EAAE,CAAC;AAC5D,IAAI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAC5B,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,KAAK,IAAI,cAAc,EAAE;AACrC,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE;AACjF,EAAE;AACF,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;AAClB,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1B;AACA,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ;AACnD,EAAE,CAAC,WAAW,CAAC,wBAAwB,IAAI,EAAE,EAAE,WAAW;AAC1D,CAAC;AACD,IAAI,aAAa,EAAE,kBAAkB,EAAE;AACvC,MAAM,eAAe,mBAAmB,IAAI,GAAG,EAAE;AACjD,MAAM,kBAAkB,GAAG,EAAE;AAC7B,MAAM,WAAW,mBAAmB,IAAI,GAAG,EAAE;AAC7C,SAAS,cAAc,CAAC,YAAY,EAAE;AACtC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAClE;AACA,eAAe,SAAS,CAAC,YAAY,EAAE;AACvC,EAAE,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,CAAC;AAC1C,EAAE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;AACvC,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;AAC3B,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;AAClC,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC;AAChD,IAAI,SAAS,EAAE,YAAY,CAAC,SAAS;AACrC,IAAI,MAAM,EAAE,YAAY,CAAC,MAAM;AAC/B,IAAI,KAAK,EAAE;AACX,GAAG,CAAC;AACJ,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC;AAC3C,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,SAAS,EAAE,qBAAqB;AACpC,IAAI,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE;AAC7C;AACA,IAAI,0BAA0B,EAAE;AAChC,GAAG,CAAC;AACJ,EAAE,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;AACrC,EAAE,IAAI,WAAW,CAAC,IAAI,IAAI,kBAAkB,EAAE;AAC9C,IAAI,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AACrD,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE;AAC9B,MAAM,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,OAAO,EAAE;AACrD,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;AACnC,IAAI;AACJ,EAAE;AACF,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC7B,EAAE,OAAO,KAAK;AACd;AACA,eAAe,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC/D,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtB,IAAI,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE;AAC/C,IAAI,IAAI,MAAM,CAAC,UAAU,GAAG,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAC7F,IAAI,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;AACjC,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;AAC1C,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,OAAO,IAAI,EAAE;AACf,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE;AAC/C,IAAI,IAAI,IAAI,EAAE;AACd,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU;AAC7B,IAAI,IAAI,KAAK,GAAG,QAAQ,EAAE;AAC1B,MAAM,UAAU,CAAC,KAAK,EAAE;AACxB,MAAM,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAC7D,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC;AACnC,EAAE,IAAI,MAAM,GAAG,CAAC;AAChB,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC9B,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1B,IAAI,MAAM,IAAI,KAAK,CAAC,UAAU;AAC9B,EAAE;AACF,EAAE,OAAO,GAAG;AACZ;AACA,eAAe,oBAAoB,CAAC,GAAG,EAAE;AACzC,EAAE,MAAM,6BAA6B,CAAC,GAAG,CAAC;AAC1C,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACxB,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;AACzC,EAAE,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,uBAAuB,EAAE;AAClE,IAAI,OAAO,MAAM,CAAC,IAAI;AACtB,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE;AAC1C,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE,EAAE,kCAAkC,CAAC;AAC1F,EAAE,IAAI,IAAI;AACV,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;AACtC,MAAM,MAAM,EAAE,UAAU,CAAC,MAAM;AAC/B,MAAM,QAAQ,EAAE;AAChB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACxE,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACnE,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,2BAA2B,EAAE;AAC7E,MAAM,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAC7D,IAAI;AACJ,IAAI,IAAI,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,2BAA2B,EAAE,UAAU,CAAC;AACnF,EAAE,CAAC,SAAS;AACZ,IAAI,YAAY,CAAC,OAAO,CAAC;AACzB,EAAE;AACF,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AACpD,EAAE,IAAI,eAAe,CAAC,IAAI,GAAG,EAAE,EAAE;AACjC,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACzD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,MAAM,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI;AACb;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/C,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;AACxC,IAAI,IAAI,EAAE,KAAK,CAAC,QAAQ;AACxB,IAAI,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;AACpC,IAAI,EAAE,EAAE,KAAK,CAAC;AACd,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AACrE,IAAI,OAAO;AACX,MAAM,GAAG,IAAI;AACb,MAAM,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,QAAQ;AACrE,MAAM,OAAO,EAAE,KAAK,CAAC,OAAO;AAC5B,MAAM,OAAO,EAAE,KAAK,CAAC,OAAO;AAC5B,MAAM,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ;AAClE,MAAM,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;AAC9B,KAAK;AACL,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE;AACzC,IAAI,OAAO;AACX,MAAM,GAAG,IAAI;AACb,MAAM,SAAS,EAAE,MAAM;AACvB,MAAM,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI;AACzC,KAAK;AACL,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AAC5C,IAAI,OAAO;AACX,MAAM,GAAG,IAAI;AACb,MAAM,SAAS,EAAE,SAAS;AAC1B,MAAM,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI;AACzC,KAAK;AACL,EAAE;AACF,EAAE,OAAO;AACT,IAAI,GAAG,IAAI;AACX,IAAI,SAAS,EAAE,MAAM;AACrB,IAAI,OAAO,EAAE,KAAK,IAAI;AACtB,GAAG;AACH;AACK,MAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACjD,EAAE,MAAM,OAAO,GAAG,kBAAkB,EAAE;AACtC,EAAE,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,CAAC;AACxD,EAAE,IAAI;AACN,IAAI,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACrC,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AACnC,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;AAC5C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM;AAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE;AAC9C,MAAM,QAAQ;AACd,QAAQ,GAAG;AACX,QAAQ,YAAY,CAAC,iBAAiB;AACtC,QAAQ;AACR,OAAO;AACP,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,OAAO,EAAE;AACnD,MAAM,QAAQ;AACd,QAAQ,GAAG;AACX,QAAQ,YAAY,CAAC,iBAAiB;AACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,4BAA4B;AAChE,OAAO;AACP,IAAI;AACJ,IAAI,IAAI,gBAAgB;AACxB,IAAI,IAAI,uBAAuB,GAAG,IAAI;AACtC,IAAI,IAAI,UAAU,GAAG,IAAI;AACzB,IAAI,IAAI,aAAa,GAAG,IAAI;AAC5B,IAAI,IAAI,kBAAkB,GAAG,IAAI;AACjC,IAAI,IAAI,eAAe,GAAG,IAAI;AAC9B,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;AACtD,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;AAC5D,IAAI,MAAM,YAAY,GAAG,OAAO,IAAI,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;AACjI,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACxD,MAAM,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,cAAc,CAAC;AAC9D,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,YAAY,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG;AACpD,IAAI,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,KAAK;AACtD,MAAM,KAAK,kBAAkB,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE;AACjD,QAAQ,aAAa;AACrB,QAAQ,YAAY,EAAE,kBAAkB;AACxC,QAAQ,SAAS,EAAE,eAAe;AAClC,QAAQ,OAAO;AACf,QAAQ,KAAK,EAAE,UAAU;AACzB,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC;AACzC,QAAQ,EAAE,EAAE,WAAW,KAAK,IAAI;AAChC,QAAQ,WAAW;AACnB,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC;AACzC,QAAQ,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI;AAC5C,OAAO,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,YAAY,GAAG,YAAY,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClG,IAAI,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC;AACzD,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC5B,MAAM,YAAY,CAAC,cAAc,CAAC;AAClC,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,CAAC;AAClD,MAAM,OAAO,IAAI,QAAQ;AACzB,QAAQ,IAAI,CAAC,SAAS,CAAC;AACvB,UAAU,OAAO,EAAE,CAAC,oCAAoC,EAAE,UAAU,CAAC,EAAE,CAAC;AACxE,UAAU;AACV,SAAS,CAAC;AACV,QAAQ;AACR,UAAU,MAAM,EAAE,GAAG;AACrB,UAAU,OAAO,EAAE;AACnB,YAAY,cAAc,EAAE,kBAAkB;AAC9C,YAAY,aAAa,EAAE,MAAM,CAAC,UAAU;AAC5C;AACA;AACA,OAAO;AACP,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE;AACzB,MAAM,IAAI,MAAM;AAChB,MAAM,IAAI;AACV,QAAQ,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AACrE,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC;AACtE,QAAQ,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/E,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1F,MAAM,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC;AAC1F,MAAM,UAAU,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI;AACzC,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI;AACpD,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB,QAAQ,IAAI,OAAO,KAAK,OAAO,EAAE;AACjC,UAAU,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;AACxE,QAAQ,CAAC,MAAM;AACf,UAAU,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AACzD,QAAQ;AACR,MAAM;AACN,MAAM,MAAM,SAAS,GAAG,OAAO,KAAK,MAAM,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc;AACzF,MAAM,IAAI,CAAC,SAAS,EAAE;AACtB,QAAQ,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AACnG,MAAM;AACN,MAAM,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;AACtF,MAAM,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE;AACrD,QAAQ,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACnG,MAAM;AACN,MAAM,uBAAuB,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE;AACxF,MAAM,kBAAkB,GAAG,IAAI;AAC/B,MAAM,eAAe,GAAG,OAAO,CAAC,EAAE;AAClC,MAAM,IAAI;AACV,QAAQ,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AACxD,QAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/E,QAAQ,gBAAgB,GAAG,KAAK;AAChC,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3E,QAAQ,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/E,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,IAAI;AACV,QAAQ,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,aAAa,CAAC;AACpE,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,gCAAgC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAC/E,QAAQ,QAAQ;AAChB,UAAU,GAAG;AACb,UAAU,YAAY,CAAC,iBAAiB;AACxC,UAAU,CAAC,2BAA2B,EAAE,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACzF,SAAS;AACT,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe;AACjD,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB;AACzE,QAAQ,QAAQ;AAChB,QAAQ,YAAY,CAAC,IAAI,CAAC;AAC1B,OAAO;AACP,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACzB,QAAQ,YAAY,CAAC,WAAW,CAAC;AACjC,QAAQ,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,+BAA+B,CAAC;AAC7E,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,CAAC;AAC3F,IAAI,IAAI,uBAAuB,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE;AACvE,MAAM,MAAM,SAAS,GAAG,uBAAuB,CAAC,EAAE;AAClD,MAAM,IAAI;AACV,QAAQ,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,gBAAgB,EAAE,YAAY,CAAC;AACnF,QAAQ,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC;AACtF,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,iDAAiD,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3F,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC;AACvD,IAAI,IAAI,gBAAgB;AACxB,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;AACxC,IAAI,IAAI;AACR,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS,EAAE;AAC5E,QAAQ,MAAM,EAAE,OAAO,CAAC;AACxB,OAAO,CAAC;AACR,MAAM,YAAY,CAAC,IAAI,EAAE;AACzB,QAAQ,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU;AAClD,QAAQ,UAAU,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;AACxD,QAAQ,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI;AAC3D,OAAO,CAAC;AACR,MAAM,IAAI,kBAAkB,EAAE;AAC9B,QAAQ,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,KAAK;AAC1F,UAAU,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI;AAC/B,YAAY,CAAC,8CAA8C,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAClF,YAAY;AACZ;AACA,SAAS;AACT,MAAM;AACN,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;AACvE,MAAM,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;AACzD,MAAM,YAAY,CAAC,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,eAAe,EAAE;AACtF,QAAQ,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG;AACxC,OAAO,CAAC;AACR,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;AACpC,UAAU,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,uBAAuB,CAAC;AACvE,QAAQ;AACR,QAAQ,QAAQ;AAChB,UAAU,GAAG;AACb,UAAU,YAAY,CAAC,QAAQ;AAC/B,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC,WAAW;AACnF,SAAS;AACT,MAAM;AACN,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI;AACR,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;AACnD,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,UAAU,EAAE;AACrC,QAAQ,YAAY,CAAC,WAAW,CAAC;AACjC,QAAQ,QAAQ;AAChB,UAAU,GAAG;AACb,UAAU,YAAY,CAAC,QAAQ;AAC/B,UAAU;AACV,SAAS;AACT,MAAM;AACN,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,0BAA0B,EAAE;AACxD,MAAM,YAAY,CAAC,WAAW,CAAC;AAC/B,MAAM,QAAQ;AACd,QAAQ,GAAG;AACX,QAAQ,YAAY,CAAC,QAAQ;AAC7B,QAAQ;AACR,OAAO;AACP,IAAI;AACJ,IAAI,OAAO,IAAI,QAAQ,CAAC,UAAU,EAAE;AACpC,MAAM,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AACnD,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG;AACnC,IAAI,IAAI,GAAG,YAAY,8BAA8B,EAAE;AACvD,MAAM,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,mBAAmB,EAAE,GAAG,CAAC,OAAO,CAAC;AAClE,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,eAAe;AACxE,IAAI,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,OAAO,CAAC;AAClD,IAAI,IAAI,GAAG,YAAY,SAAS,IAAI,OAAO,KAAK,cAAc,EAAE;AAChE,MAAM,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;AACtF,IAAI;AACJ,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;AACjD,EAAE;AACF;;;;"}
@@ -1,7 +1,7 @@
1
- import { r as resolveServerForOrg, C as ComputeServerUnconfiguredError } from './api-errors-BhVEeWTV.js';
2
- import { r as requireCanCreateDefinition } from './access.server-CAPd1-c2.js';
3
- import { error } from '@sveltejs/kit';
1
+ import { a as apiError, r as resolveServerForOrg, C as ComputeServerUnconfiguredError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
2
+ import { r as requireCanCreateDefinition } from './access.server-Rd56k7vs.js';
4
3
  import { camelcaseKeys } from '@selvajs/compute/core';
4
+ import '@sveltejs/kit';
5
5
  import './context-BJnJL8ES.js';
6
6
  import 'zod';
7
7
  import './providers.server-C3fQ7ZdV.js';
@@ -17,7 +17,7 @@ import './utils2-BqfluBM6.js';
17
17
  const POST = async ({ request, locals, url }) => {
18
18
  const projectId = url.searchParams.get("projectId");
19
19
  if (!projectId) {
20
- throw error(400, "projectId query parameter is required");
20
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "projectId query parameter is required");
21
21
  }
22
22
  const { project } = await requireCanCreateDefinition(locals, projectId);
23
23
  const computeServerId = url.searchParams.get("computeServerId");
@@ -27,7 +27,8 @@ const POST = async ({ request, locals, url }) => {
27
27
  definitionPin: computeServerId
28
28
  });
29
29
  } catch (err) {
30
- if (err instanceof ComputeServerUnconfiguredError) throw error(503, err.message);
30
+ if (err instanceof ComputeServerUnconfiguredError)
31
+ apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message);
31
32
  throw err;
32
33
  }
33
34
  const formData = await request.formData();
@@ -40,16 +41,16 @@ const POST = async ({ request, locals, url }) => {
40
41
  try {
41
42
  response = await fetch(schemaUrl, { method: "POST", headers, body: formData });
42
43
  } catch {
43
- throw error(503, "Compute server is unreachable");
44
+ apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, "Compute server is unreachable");
44
45
  }
45
46
  if (!response.ok) {
46
- throw error(response.status, "Compute server error");
47
+ apiError(response.status, ApiErrorCode.COMPUTE_UNAVAILABLE, "Compute server error");
47
48
  }
48
49
  const raw = await response.json();
49
50
  const results = camelcaseKeys(Array.isArray(raw) ? raw : [raw]);
50
51
  const schemas = results.flatMap((r) => r.schemas ?? []);
51
52
  if (schemas.length === 0) {
52
- throw error(422, "No schemas found in definition");
53
+ apiError(422, ApiErrorCode.UNPROCESSABLE, "No schemas found in definition");
53
54
  }
54
55
  return new Response(JSON.stringify(schemas), {
55
56
  headers: { "Content-Type": "application/json" }
@@ -57,4 +58,4 @@ const POST = async ({ request, locals, url }) => {
57
58
  };
58
59
 
59
60
  export { POST };
60
- //# sourceMappingURL=_server.ts-Dz4bsmph.js.map
61
+ //# sourceMappingURL=_server.ts-CTXCbdsb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CTXCbdsb.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/compute/schema/_server.ts.js"],"sourcesContent":["import { a as apiError, r as resolveServerForOrg, C as ComputeServerUnconfiguredError, A as ApiErrorCode } from \"../../../../../chunks/api-errors.js\";\nimport { r as requireCanCreateDefinition } from \"../../../../../chunks/access.server.js\";\nimport { camelcaseKeys } from \"@selvajs/compute/core\";\nconst POST = async ({ request, locals, url }) => {\n const projectId = url.searchParams.get(\"projectId\");\n if (!projectId) {\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"projectId query parameter is required\");\n }\n const { project } = await requireCanCreateDefinition(locals, projectId);\n const computeServerId = url.searchParams.get(\"computeServerId\");\n let server;\n try {\n server = await resolveServerForOrg(locals.ctx, project.orgId, {\n definitionPin: computeServerId\n });\n } catch (err) {\n if (err instanceof ComputeServerUnconfiguredError)\n apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message);\n throw err;\n }\n const formData = await request.formData();\n const schemaUrl = new URL(\"/grasshopper/schema\", server.serverUrl).toString();\n const headers = {};\n if (server.apiKey) {\n headers[\"RhinoComputeKey\"] = server.apiKey;\n }\n let response;\n try {\n response = await fetch(schemaUrl, { method: \"POST\", headers, body: formData });\n } catch {\n apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, \"Compute server is unreachable\");\n }\n if (!response.ok) {\n apiError(response.status, ApiErrorCode.COMPUTE_UNAVAILABLE, \"Compute server error\");\n }\n const raw = await response.json();\n const results = camelcaseKeys(Array.isArray(raw) ? raw : [raw]);\n const schemas = results.flatMap((r) => r.schemas ?? []);\n if (schemas.length === 0) {\n apiError(422, ApiErrorCode.UNPROCESSABLE, \"No schemas found in definition\");\n }\n return new Response(JSON.stringify(schemas), {\n headers: { \"Content-Type\": \"application/json\" }\n });\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGK,MAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACjD,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;AACrD,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;AAC1F,EAAE;AACF,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC;AACzE,EAAE,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACjE,EAAE,IAAI,MAAM;AACZ,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE;AAClE,MAAM,aAAa,EAAE;AACrB,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,GAAG,YAAY,8BAA8B;AACrD,MAAM,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,mBAAmB,EAAE,GAAG,CAAC,OAAO,CAAC;AAClE,IAAI,MAAM,GAAG;AACb,EAAE;AACF,EAAE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;AAC3C,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;AAC/E,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM;AAC9C,EAAE;AACF,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI;AACN,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClF,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;AACpF,EAAE;AACF,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpB,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;AACvF,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACjE,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AACzD,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,aAAa,EAAE,gCAAgC,CAAC;AAC/E,EAAE;AACF,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC/C,IAAI,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AACjD,GAAG,CAAC;AACJ;;;;"}
@@ -1,39 +1,40 @@
1
- import { error, json } from '@sveltejs/kit';
1
+ import { a as apiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
2
2
  import { l as getPermissionStore, a as getAuthProvider } from './providers.server-C3fQ7ZdV.js';
3
- import { w as requireManageInstanceUsers } from './access.server-CAPd1-c2.js';
3
+ import { w as requireManageInstanceUsers } from './access.server-Rd56k7vs.js';
4
+ import '@sveltejs/kit';
5
+ import './context-BJnJL8ES.js';
6
+ import 'zod';
7
+ import '@selvajs/compute/core';
8
+ import './utils2-BqfluBM6.js';
4
9
  import './shared-server-C3WdcJCQ.js';
5
10
  import 'node:url';
6
11
  import 'node:path';
7
12
  import 'node:fs';
8
- import './context-BJnJL8ES.js';
9
- import 'zod';
10
13
  import 'node:crypto';
11
14
  import 'node:fs/promises';
12
15
  import '@supabase/supabase-js';
13
- import './api-errors-BhVEeWTV.js';
14
- import '@selvajs/compute/core';
15
- import './utils2-BqfluBM6.js';
16
16
 
17
17
  const POST = async ({ params, locals }) => {
18
18
  requireManageInstanceUsers(locals);
19
19
  const { id } = params;
20
- if (!id) throw error(400, "Missing user ID");
20
+ if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing user ID");
21
21
  const targetPerms = await getPermissionStore().getFor(locals.ctx, id);
22
22
  if (targetPerms.includes("instance_admin")) {
23
23
  const others = await getPermissionStore().countInstanceAdminsExcluding(locals.ctx, id);
24
24
  if (others === 0) {
25
- throw error(
25
+ apiError(
26
26
  409,
27
+ ApiErrorCode.CONFLICT,
27
28
  "Cannot disable the last instance admin. Promote another user to instance admin first."
28
29
  );
29
30
  }
30
31
  }
31
32
  const result = await getAuthProvider().disableUser(id);
32
- if (result === "not_found") throw error(404, "User not found");
33
+ if (result === "not_found") apiError(404, ApiErrorCode.NOT_FOUND, "User not found");
33
34
  if (result === "not_supported")
34
- throw error(501, "Disabling users is not supported by this auth provider");
35
- return json({ success: true });
35
+ apiError(501, ApiErrorCode.INTERNAL, "Disabling users is not supported by this auth provider");
36
+ return new Response(null, { status: 204 });
36
37
  };
37
38
 
38
39
  export { POST };
39
- //# sourceMappingURL=_server.ts-BQetLy9N.js.map
40
+ //# sourceMappingURL=_server.ts-CXEl8kvu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CXEl8kvu.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/users/_id_/disable/_server.ts.js"],"sourcesContent":["import { a as apiError, A as ApiErrorCode } from \"../../../../../../../chunks/api-errors.js\";\nimport { l as getPermissionStore, a as getAuthProvider } from \"../../../../../../../chunks/providers.server.js\";\nimport { w 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,8 +1,8 @@
1
- import { json, error } from '@sveltejs/kit';
1
+ import { json } from '@sveltejs/kit';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { k as getOrganizationProvider, P as ProviderError, M as MAX_PAGE_LIMIT } from './providers.server-C3fQ7ZdV.js';
4
- import { u as requireInstanceAdmin } from './access.server-CAPd1-c2.js';
5
- import { h as handleApiError, t as throwZodError } from './api-errors-BhVEeWTV.js';
4
+ import { u as requireInstanceAdmin } from './access.server-Rd56k7vs.js';
5
+ import { h as handleApiError, t as throwZodError, a as apiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
6
6
  import { b as CreateOrgSchema } from './context-BJnJL8ES.js';
7
7
  import './shared-server-C3WdcJCQ.js';
8
8
  import 'node:url';
@@ -50,11 +50,11 @@ const POST = async ({ request, locals }) => {
50
50
  return json(org, { status: 201 });
51
51
  } catch (err) {
52
52
  if (err instanceof ProviderError && err.statusCode === 409) {
53
- throw error(409, err.message);
53
+ apiError(409, ApiErrorCode.CONFLICT, err.message);
54
54
  }
55
55
  handleApiError(err, "Failed to create org");
56
56
  }
57
57
  };
58
58
 
59
59
  export { GET, POST };
60
- //# sourceMappingURL=_server.ts-BmjNVAmP.js.map
60
+ //# sourceMappingURL=_server.ts-CZ9lwb1J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CZ9lwb1J.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/orgs/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { randomUUID } from \"node:crypto\";\nimport { k as getOrganizationProvider, P as ProviderError, M as MAX_PAGE_LIMIT } from \"../../../../../chunks/providers.server.js\";\nimport { u as requireInstanceAdmin } from \"../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError, a as apiError, A as ApiErrorCode } from \"../../../../../chunks/api-errors.js\";\nimport { b as CreateOrgSchema } from \"../../../../../chunks/context.js\";\nconst GET = async ({ locals, url }) => {\n requireInstanceAdmin(locals);\n const ctx = locals.ctx;\n const rawLimit = Number(url.searchParams.get(\"limit\") ?? 200);\n const limit = Number.isFinite(rawLimit) ? Math.min(Math.max(rawLimit, 1), MAX_PAGE_LIMIT) : 200;\n const cursor = url.searchParams.get(\"cursor\") ?? void 0;\n try {\n const page = await getOrganizationProvider().listOrgs(ctx, { limit, cursor });\n return json({ orgs: page.items, nextCursor: page.nextCursor });\n } catch (err) {\n handleApiError(err, \"Failed to list orgs\");\n }\n};\nconst POST = async ({ request, locals }) => {\n const user = requireInstanceAdmin(locals);\n const ctx = locals.ctx;\n const body = await request.json().catch(() => null);\n const parsed = CreateOrgSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const org = {\n id: randomUUID(),\n name: parsed.data.name,\n slug: parsed.data.slug,\n ownerId: user.id,\n createdBy: user.id,\n updatedBy: user.id,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n try {\n await getOrganizationProvider().createOrg(ctx, org);\n return json(org, { status: 201 });\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 409) {\n apiError(409, ApiErrorCode.CONFLICT, err.message);\n }\n handleApiError(err, \"Failed to create org\");\n }\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAMK,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACvC,EAAE,oBAAoB,CAAC,MAAM,CAAC;AAC9B,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;AAC/D,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,GAAG;AACjG,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM;AACzD,EAAE,IAAI;AACN,IAAI,MAAM,IAAI,GAAG,MAAM,uBAAuB,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACjF,IAAI,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAClE,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,qBAAqB,CAAC;AAC9C,EAAE;AACF;AACK,MAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;AAC5C,EAAE,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC;AAC3C,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;AACrD,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;AAChD,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,EAAE,MAAM,GAAG,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACxD,EAAE,MAAM,GAAG,GAAG;AACd,IAAI,EAAE,EAAE,UAAU,EAAE;AACpB,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;AAC1B,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;AAC1B,IAAI,OAAO,EAAE,IAAI,CAAC,EAAE;AACpB,IAAI,SAAS,EAAE,IAAI,CAAC,EAAE;AACtB,IAAI,SAAS,EAAE,IAAI,CAAC,EAAE;AACtB,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,SAAS,EAAE;AACf,GAAG;AACH,EAAE,IAAI;AACN,IAAI,MAAM,uBAAuB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;AACvD,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrC,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;AAChE,MAAM,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AACvD,IAAI;AACJ,IAAI,cAAc,CAAC,GAAG,EAAE,sBAAsB,CAAC;AAC/C,EAAE;AACF;;;;"}
@@ -1,7 +1,7 @@
1
- import { error, json } from '@sveltejs/kit';
1
+ import { json } from '@sveltejs/kit';
2
2
  import { h as getDefinitionMeta, M as MAX_PAGE_LIMIT } from './providers.server-C3fQ7ZdV.js';
3
- import { h as handleApiError } from './api-errors-BhVEeWTV.js';
4
- import { s as requireCanViewProject } from './access.server-CAPd1-c2.js';
3
+ import { a as apiError, A as ApiErrorCode, h as handleApiError } from './api-errors-BrqxD-El.js';
4
+ import { s as requireCanViewProject } from './access.server-Rd56k7vs.js';
5
5
  import { G as GuidSchema } from './context-BJnJL8ES.js';
6
6
  import './shared-server-C3WdcJCQ.js';
7
7
  import 'node:url';
@@ -16,14 +16,14 @@ import 'zod';
16
16
 
17
17
  const GET = async ({ params, locals, url }) => {
18
18
  const guidParsed = GuidSchema.safeParse(params.guid);
19
- if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
20
- if (!locals.ctx) throw error(401, "Unauthorized");
19
+ if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid or missing GUID");
20
+ if (!locals.ctx) apiError(401, ApiErrorCode.UNAUTHORIZED, "Unauthorized");
21
21
  const rawLimit = Number(url.searchParams.get("limit") ?? 50);
22
22
  const limit = Number.isFinite(rawLimit) ? Math.min(Math.max(rawLimit, 1), MAX_PAGE_LIMIT) : 50;
23
23
  const cursor = url.searchParams.get("cursor") ?? void 0;
24
24
  try {
25
25
  const def = await getDefinitionMeta().get(locals.ctx, guidParsed.data);
26
- if (!def) throw error(404, "Definition not found");
26
+ if (!def) apiError(404, ApiErrorCode.NOT_FOUND, "Definition not found");
27
27
  await requireCanViewProject(locals, def.projectId);
28
28
  const page = await getDefinitionMeta().listVersions(locals.ctx, guidParsed.data, {
29
29
  limit,
@@ -41,4 +41,4 @@ const GET = async ({ params, locals, url }) => {
41
41
  };
42
42
 
43
43
  export { GET };
44
- //# sourceMappingURL=_server.ts-Oi8Qzh0h.js.map
44
+ //# sourceMappingURL=_server.ts-CaytsdFp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CaytsdFp.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/versions/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { h as getDefinitionMeta, M as MAX_PAGE_LIMIT } from \"../../../../../../chunks/providers.server.js\";\nimport { a as apiError, A as ApiErrorCode, h as handleApiError } from \"../../../../../../chunks/api-errors.js\";\nimport { s as requireCanViewProject } from \"../../../../../../chunks/access.server.js\";\nimport { G as GuidSchema } from \"../../../../../../chunks/context.js\";\nconst GET = async ({ params, locals, url }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Invalid or missing GUID\");\n if (!locals.ctx) apiError(401, ApiErrorCode.UNAUTHORIZED, \"Unauthorized\");\n const rawLimit = Number(url.searchParams.get(\"limit\") ?? 50);\n const limit = Number.isFinite(rawLimit) ? Math.min(Math.max(rawLimit, 1), MAX_PAGE_LIMIT) : 50;\n const cursor = url.searchParams.get(\"cursor\") ?? void 0;\n try {\n const def = await getDefinitionMeta().get(locals.ctx, guidParsed.data);\n if (!def) apiError(404, ApiErrorCode.NOT_FOUND, \"Definition not found\");\n await requireCanViewProject(locals, def.projectId);\n const page = await getDefinitionMeta().listVersions(locals.ctx, guidParsed.data, {\n limit,\n cursor\n });\n return json({\n versions: page.items,\n nextCursor: page.nextCursor,\n liveVersionId: def.liveVersionId,\n draftVersionId: def.draftVersionId\n });\n } catch (err) {\n handleApiError(err, \"Failed to list versions\");\n }\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKK,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AAC/C,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,yBAAyB,CAAC;AACnG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,cAAc,CAAC;AAC3E,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAC9D,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE;AAChG,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM;AACzD,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAC1E,IAAI,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,sBAAsB,CAAC;AAC3E,IAAI,MAAM,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC;AACtD,IAAI,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE;AACrF,MAAM,KAAK;AACX,MAAM;AACN,KAAK,CAAC;AACN,IAAI,OAAO,IAAI,CAAC;AAChB,MAAM,QAAQ,EAAE,IAAI,CAAC,KAAK;AAC1B,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,aAAa,EAAE,GAAG,CAAC,aAAa;AACtC,MAAM,cAAc,EAAE,GAAG,CAAC;AAC1B,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC;AAClD,EAAE;AACF;;;;"}
@@ -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 { n as getProjectProvider, P as ProviderError } from './providers.server-C3fQ7ZdV.js';
5
- import { j as requireCanCreateProject } from './access.server-CAPd1-c2.js';
6
- import { h as handleApiError, t as throwZodError } from './api-errors-BhVEeWTV.js';
5
+ import { j as requireCanCreateProject } 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 { g as ProjectVisibilitySchema } from './context-BJnJL8ES.js';
9
9
  import './shared-server-C3WdcJCQ.js';
@@ -30,7 +30,7 @@ const CreateProjectBody = z.object({
30
30
  });
31
31
  const GET = async ({ locals }) => {
32
32
  const ctx = locals.ctx;
33
- if (!ctx.actingOrgId) throw error(400, "No active organization");
33
+ if (!ctx.actingOrgId) apiError(400, ApiErrorCode.VALIDATION_FAILED, "No active organization");
34
34
  try {
35
35
  const page = await getProjectProvider().listProjects(ctx, ctx.actingOrgId, { limit: 200 });
36
36
  return json({ projects: page.items });
@@ -40,14 +40,14 @@ const GET = async ({ locals }) => {
40
40
  };
41
41
  const POST = async ({ request, locals }) => {
42
42
  const ctx = locals.ctx;
43
- if (!ctx.actingOrgId) throw error(400, "No active organization");
43
+ if (!ctx.actingOrgId) apiError(400, ApiErrorCode.VALIDATION_FAILED, "No active organization");
44
44
  await requireCanCreateProject(locals, ctx.actingOrgId);
45
45
  const body = await request.json().catch(() => null);
46
46
  const parsed = CreateProjectBody.safeParse(body);
47
47
  if (!parsed.success) throwZodError(parsed.error);
48
48
  const autoJoinOnUpload = parsed.data.autoJoinOnUpload ?? false;
49
49
  if (autoJoinOnUpload && parsed.data.visibility !== "public") {
50
- throw error(400, "autoJoinOnUpload requires visibility=public");
50
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "autoJoinOnUpload requires visibility=public");
51
51
  }
52
52
  const projectStore = getProjectProvider();
53
53
  const baseSlug = slugify(parsed.data.name) || "project";
@@ -75,14 +75,22 @@ const POST = async ({ request, locals }) => {
75
75
  return json(project, { status: 201 });
76
76
  } catch (err) {
77
77
  if (isNameConflict(err)) {
78
- throw error(409, "A project with that name already exists in this organization.");
78
+ apiError(
79
+ 409,
80
+ ApiErrorCode.CONFLICT,
81
+ "A project with that name already exists in this organization."
82
+ );
79
83
  }
80
84
  if (isSlugConflict(err)) continue;
81
85
  handleApiError(err, "Failed to create project");
82
86
  }
83
87
  }
84
- throw error(409, "Could not pick a unique project slug after several attempts.");
88
+ apiError(
89
+ 409,
90
+ ApiErrorCode.CONFLICT,
91
+ "Could not pick a unique project slug after several attempts."
92
+ );
85
93
  };
86
94
 
87
95
  export { GET, POST };
88
- //# sourceMappingURL=_server.ts-6F3Ly0cY.js.map
96
+ //# sourceMappingURL=_server.ts-Cd6dVQ2J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-Cd6dVQ2J.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { randomUUID } from \"node:crypto\";\nimport { n as getProjectProvider, P as ProviderError } from \"../../../../chunks/providers.server.js\";\nimport { j as requireCanCreateProject } 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 { g as ProjectVisibilitySchema } 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 CreateProjectBody = z.object({\n name: z.string().min(1, \"Project name is required\").max(128).trim(),\n description: z.string().max(2e3).optional(),\n visibility: ProjectVisibilitySchema.default(\"private\"),\n autoJoinOnUpload: z.boolean().optional()\n});\nconst GET = async ({ locals }) => {\n const ctx = locals.ctx;\n if (!ctx.actingOrgId) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"No active organization\");\n try {\n const page = await getProjectProvider().listProjects(ctx, ctx.actingOrgId, { limit: 200 });\n return json({ projects: page.items });\n } catch (err) {\n handleApiError(err, \"Failed to load projects\");\n }\n};\nconst POST = async ({ request, locals }) => {\n const ctx = locals.ctx;\n if (!ctx.actingOrgId) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"No active organization\");\n await requireCanCreateProject(locals, ctx.actingOrgId);\n const body = await request.json().catch(() => null);\n const parsed = CreateProjectBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const autoJoinOnUpload = parsed.data.autoJoinOnUpload ?? false;\n if (autoJoinOnUpload && parsed.data.visibility !== \"public\") {\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"autoJoinOnUpload requires visibility=public\");\n }\n const projectStore = getProjectProvider();\n const baseSlug = slugify(parsed.data.name) || \"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: ctx.actingOrgId,\n name: parsed.data.name,\n slug,\n description: parsed.data.description,\n visibility: parsed.data.visibility,\n ownerId: locals.user.id,\n createdBy: locals.user.id,\n updatedBy: locals.user.id,\n autoJoinOnUpload,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n try {\n await projectStore.createProject(ctx, 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 this organization.\"\n );\n }\n if (isSlugConflict(err)) continue;\n handleApiError(err, \"Failed to create 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,7 +1,7 @@
1
- import { error, json } from '@sveltejs/kit';
1
+ import { json } from '@sveltejs/kit';
2
2
  import { k as getOrganizationProvider, P as ProviderError } from './providers.server-C3fQ7ZdV.js';
3
- import { u as requireInstanceAdmin } from './access.server-CAPd1-c2.js';
4
- import { h as handleApiError, t as throwZodError } from './api-errors-BhVEeWTV.js';
3
+ import { u as requireInstanceAdmin } from './access.server-Rd56k7vs.js';
4
+ import { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
5
5
  import { i as UpdateOrgSchema } from './context-BJnJL8ES.js';
6
6
  import './shared-server-C3WdcJCQ.js';
7
7
  import 'node:url';
@@ -17,7 +17,7 @@ import './utils2-BqfluBM6.js';
17
17
  const PATCH = async ({ params, request, locals }) => {
18
18
  requireInstanceAdmin(locals);
19
19
  const { id } = params;
20
- if (!id) throw error(400, "Missing org ID");
20
+ if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing org ID");
21
21
  const ctx = locals.ctx;
22
22
  const body = await request.json().catch(() => null);
23
23
  const parsed = UpdateOrgSchema.safeParse(body);
@@ -28,7 +28,7 @@ const PATCH = async ({ params, request, locals }) => {
28
28
  return json(updated);
29
29
  } catch (err) {
30
30
  if (err instanceof ProviderError && err.statusCode === 409) {
31
- throw error(409, err.message);
31
+ apiError(409, ApiErrorCode.CONFLICT, err.message);
32
32
  }
33
33
  handleApiError(err, "Failed to update org");
34
34
  }
@@ -36,15 +36,15 @@ const PATCH = async ({ params, request, locals }) => {
36
36
  const DELETE = async ({ params, locals }) => {
37
37
  requireInstanceAdmin(locals);
38
38
  const { id } = params;
39
- if (!id) throw error(400, "Missing org ID");
39
+ if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing org ID");
40
40
  const ctx = locals.ctx;
41
41
  try {
42
42
  await getOrganizationProvider().deleteOrg(ctx, id);
43
- return json({ success: true });
43
+ return new Response(null, { status: 204 });
44
44
  } catch (err) {
45
45
  handleApiError(err, "Failed to delete org");
46
46
  }
47
47
  };
48
48
 
49
49
  export { DELETE, PATCH };
50
- //# sourceMappingURL=_server.ts-cHSphefi.js.map
50
+ //# sourceMappingURL=_server.ts-CgRuMyJ9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CgRuMyJ9.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/orgs/_id_/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { k as getOrganizationProvider, 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 { i as UpdateOrgSchema } from \"../../../../../../chunks/context.js\";\nconst PATCH = async ({ params, request, locals }) => {\n requireInstanceAdmin(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing org ID\");\n const ctx = locals.ctx;\n const body = await request.json().catch(() => null);\n const parsed = UpdateOrgSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n try {\n await getOrganizationProvider().updateOrg(ctx, id, parsed.data);\n const updated = await getOrganizationProvider().getOrg(ctx, id);\n return json(updated);\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 409) {\n apiError(409, ApiErrorCode.CONFLICT, err.message);\n }\n handleApiError(err, \"Failed to update org\");\n }\n};\nconst DELETE = async ({ params, locals }) => {\n requireInstanceAdmin(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing org ID\");\n const ctx = locals.ctx;\n try {\n await getOrganizationProvider().deleteOrg(ctx, id);\n return new Response(null, { status: 204 });\n } catch (err) {\n handleApiError(err, \"Failed to delete org\");\n }\n};\nexport {\n DELETE,\n PATCH\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKK,MAAC,KAAK,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;AACrD,EAAE,oBAAoB,CAAC,MAAM,CAAC;AAC9B,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AACvB,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;AAC1E,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;AACrD,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;AAChD,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,EAAE,IAAI;AACN,IAAI,MAAM,uBAAuB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;AACnE,IAAI,MAAM,OAAO,GAAG,MAAM,uBAAuB,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AACnE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;AAChE,MAAM,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AACvD,IAAI;AACJ,IAAI,cAAc,CAAC,GAAG,EAAE,sBAAsB,CAAC;AAC/C,EAAE;AACF;AACK,MAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC7C,EAAE,oBAAoB,CAAC,MAAM,CAAC;AAC9B,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AACvB,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;AAC1E,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,IAAI;AACN,IAAI,MAAM,uBAAuB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC;AACtD,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC9C,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,sBAAsB,CAAC;AAC/C,EAAE;AACF;;;;"}
@@ -1,8 +1,7 @@
1
- import { error, json } from '@sveltejs/kit';
2
1
  import { z } from 'zod';
3
2
  import { l as getPermissionStore, a as getAuthProvider, e as getDataProvider, k as getOrganizationProvider } from './providers.server-C3fQ7ZdV.js';
4
- import { w as requireManageInstanceUsers } from './access.server-CAPd1-c2.js';
5
- import { t as throwZodError } from './api-errors-BhVEeWTV.js';
3
+ import { w as requireManageInstanceUsers } from './access.server-Rd56k7vs.js';
4
+ import { a as apiError, t as throwZodError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
6
5
  import { S as SYSTEM_CONTEXT, j as hasPermission, D as DEFAULT_ORG_PERMISSIONS, M as MEMBER_ASSIGNABLE_PERMISSIONS, P as PlatformPermissionSchema, d as OrgPermissionSchema } from './context-BJnJL8ES.js';
7
6
  import { s as splitFlatPermissions } from './permissions-compat.server-G174xsh6.js';
8
7
  import { s as setUserPlatformPermissions } from './permissions.server-zs4XAJCp.js';
@@ -13,6 +12,7 @@ import 'node:fs';
13
12
  import 'node:crypto';
14
13
  import 'node:fs/promises';
15
14
  import '@supabase/supabase-js';
15
+ import '@sveltejs/kit';
16
16
  import '@selvajs/compute/core';
17
17
  import './utils2-BqfluBM6.js';
18
18
 
@@ -23,7 +23,7 @@ const UpdatePermissionsBody = z.object({
23
23
  const PATCH = async ({ params, request, locals }) => {
24
24
  requireManageInstanceUsers(locals);
25
25
  const { id } = params;
26
- if (!id) throw error(400, "Missing user ID");
26
+ if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing user ID");
27
27
  const body = await request.json().catch(() => null);
28
28
  const parsed = UpdatePermissionsBody.safeParse(body);
29
29
  if (!parsed.success) throwZodError(parsed.error);
@@ -31,15 +31,24 @@ const PATCH = async ({ params, request, locals }) => {
31
31
  const existingPlatform = await getPermissionStore().getFor(locals.ctx, id);
32
32
  const platformChanged = platform.length !== existingPlatform.length || platform.some((p) => !existingPlatform.includes(p)) || existingPlatform.some((p) => !platform.includes(p));
33
33
  if (platformChanged && !hasPermission(locals.ctx, "instance_admin")) {
34
- throw error(403, "Only a platform admin can change platform-scope permissions");
34
+ apiError(
35
+ 403,
36
+ ApiErrorCode.FORBIDDEN,
37
+ "Only a platform admin can change platform-scope permissions"
38
+ );
35
39
  }
36
40
  const platformResult = await setUserPlatformPermissions(locals.ctx, id, platform);
37
- if (platformResult === "not_found") throw error(404, "User not found");
41
+ if (platformResult === "not_found") apiError(404, ApiErrorCode.NOT_FOUND, "User not found");
38
42
  if (platformResult === "not_supported")
39
- throw error(501, "Platform permission updates not supported by this auth provider");
43
+ apiError(
44
+ 501,
45
+ ApiErrorCode.INTERNAL,
46
+ "Platform permission updates not supported by this auth provider"
47
+ );
40
48
  if (platformResult === "last_admin")
41
- throw error(
49
+ apiError(
42
50
  409,
51
+ ApiErrorCode.CONFLICT,
43
52
  "Cannot remove the last instance admin. Promote another user to instance admin first."
44
53
  );
45
54
  const orgId = locals.ctx?.actingOrgId;
@@ -68,29 +77,30 @@ const PATCH = async ({ params, request, locals }) => {
68
77
  });
69
78
  }
70
79
  }
71
- return json({ success: true });
80
+ return new Response(null, { status: 204 });
72
81
  };
73
82
  const DELETE = async ({ params, locals }) => {
74
83
  requireManageInstanceUsers(locals);
75
84
  const { id } = params;
76
- if (!id) throw error(400, "Missing user ID");
85
+ if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing user ID");
77
86
  const targetPerms = await getPermissionStore().getFor(locals.ctx, id);
78
87
  if (targetPerms.includes("instance_admin")) {
79
88
  const others = await getPermissionStore().countInstanceAdminsExcluding(locals.ctx, id);
80
89
  if (others === 0) {
81
- throw error(
90
+ apiError(
82
91
  409,
92
+ ApiErrorCode.CONFLICT,
83
93
  "Cannot delete the last instance admin. Promote another user to instance admin first."
84
94
  );
85
95
  }
86
96
  }
87
97
  const result = await getAuthProvider().deleteUser(id);
88
- if (result === "not_found") throw error(404, "User not found");
98
+ if (result === "not_found") apiError(404, ApiErrorCode.NOT_FOUND, "User not found");
89
99
  if (result === "not_supported")
90
- throw error(501, "User deletion not supported by this auth provider");
100
+ apiError(501, ApiErrorCode.INTERNAL, "User deletion not supported by this auth provider");
91
101
  await getDataProvider().onUserDeleted(SYSTEM_CONTEXT, id);
92
- return json({ success: true });
102
+ return new Response(null, { status: 204 });
93
103
  };
94
104
 
95
105
  export { DELETE, PATCH };
96
- //# sourceMappingURL=_server.ts-PKbOblCf.js.map
106
+ //# sourceMappingURL=_server.ts-CmCeYB9h.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CmCeYB9h.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/users/_id_/_server.ts.js"],"sourcesContent":["import { z } from \"zod\";\nimport { l as getPermissionStore, a as getAuthProvider, e as getDataProvider, k as getOrganizationProvider } from \"../../../../../../chunks/providers.server.js\";\nimport { w 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, d as OrgPermissionSchema, S as SYSTEM_CONTEXT, j 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,7 +1,6 @@
1
- import { error, json } from '@sveltejs/kit';
2
1
  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';
2
+ import { t as requireEditableDefinition } from './access.server-Rd56k7vs.js';
3
+ import { a as apiError, h as handleApiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
5
4
  import { G as GuidSchema } from './context-BJnJL8ES.js';
6
5
  import './shared-server-C3WdcJCQ.js';
7
6
  import 'node:url';
@@ -10,23 +9,25 @@ import 'node:fs';
10
9
  import 'node:crypto';
11
10
  import 'node:fs/promises';
12
11
  import '@supabase/supabase-js';
12
+ import '@sveltejs/kit';
13
13
  import 'zod';
14
14
  import '@selvajs/compute/core';
15
15
  import './utils2-BqfluBM6.js';
16
16
 
17
17
  const DELETE = async ({ params, locals }) => {
18
18
  const guidParsed = GuidSchema.safeParse(params.guid);
19
- if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
19
+ if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid or missing GUID");
20
20
  const versionParsed = GuidSchema.safeParse(params.versionId);
21
- if (!versionParsed.success) throw error(400, "Invalid or missing version ID");
21
+ if (!versionParsed.success)
22
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid or missing version ID");
22
23
  const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
23
24
  try {
24
25
  await getDefinitionService().deleteVersion(ctx, guidParsed.data, versionParsed.data);
25
- return json({ success: true });
26
+ return new Response(null, { status: 204 });
26
27
  } catch (err) {
27
28
  handleApiError(err, "Failed to delete version");
28
29
  }
29
30
  };
30
31
 
31
32
  export { DELETE };
32
- //# sourceMappingURL=_server.ts-13_Xvown.js.map
33
+ //# sourceMappingURL=_server.ts-Codg_zX0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-Codg_zX0.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/versions/_versionId_/_server.ts.js"],"sourcesContent":["import { 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\";\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 versionParsed = GuidSchema.safeParse(params.versionId);\n if (!versionParsed.success)\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Invalid or missing version ID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n await getDefinitionService().deleteVersion(ctx, guidParsed.data, versionParsed.data);\n return new Response(null, { status: 204 });\n } catch (err) {\n handleApiError(err, \"Failed to delete version\");\n }\n};\nexport {\n DELETE\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIK,MAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC7C,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,yBAAyB,CAAC;AACnG,EAAE,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9D,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO;AAC5B,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;AAClF,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;AAC1E,EAAE,IAAI;AACN,IAAI,MAAM,oBAAoB,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;AACxF,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC9C,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,0BAA0B,CAAC;AACnD,EAAE;AACF;;;;"}