@selvajs/selva 4.4.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 (386) hide show
  1. package/build/client/_app/immutable/chunks/{D7wuDTx2.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/{B-fj8b7K.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/{D-jj-Uww.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/{j-UbJSFZ.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/{CdGNQgyw.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/jJihnyaB.js +3 -0
  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.CsJrZk_i.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.wSjQD-9E.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.CZxapN5I.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.ChDvrNjp.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.Cewxge5m.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.NlvAvTSP.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.qNGlcD7l.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.CgydK0lI.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.93bCfNGI.js +5021 -0
  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.CdZLvQ68.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.CmSUvEas.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.CmSUvEas.js.gz → 23.DJerRiZ2.js.gz} +0 -0
  58. package/build/client/_app/immutable/nodes/{24.BLrWFvpH.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.DF8_FNgX.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.u-nHYDMp.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.zcWmCBtG.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.CGYG-fBC.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.CFRFw3XM.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.BIDVFrKz.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.G8VTWVfQ.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.DaJ_YKCW.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.c3ONIRmr.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.BucDMSoZ.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/{0-DIp1vX-0.js → 0-DhT7yxre.js} +2 -2
  95. package/build/server/chunks/{0-DIp1vX-0.js.map → 0-DhT7yxre.js.map} +1 -1
  96. package/build/server/chunks/{1-2fHcSF9r.js → 1-CCtIB9oC.js} +2 -2
  97. package/build/server/chunks/{1-2fHcSF9r.js.map → 1-CCtIB9oC.js.map} +1 -1
  98. package/build/server/chunks/{10-D4slAhbl.js → 10-Cj20BodR.js} +5 -5
  99. package/build/server/chunks/{10-D4slAhbl.js.map → 10-Cj20BodR.js.map} +1 -1
  100. package/build/server/chunks/{11-BIn4AcHz.js → 11-C-goGrGx.js} +7 -7
  101. package/build/server/chunks/{11-BIn4AcHz.js.map → 11-C-goGrGx.js.map} +1 -1
  102. package/build/server/chunks/{12-BTFEd1df.js → 12-Bra8rAOu.js} +2 -2
  103. package/build/server/chunks/{12-BTFEd1df.js.map → 12-Bra8rAOu.js.map} +1 -1
  104. package/build/server/chunks/{13-DoxggNWI.js → 13-DN-4EHom.js} +3 -3
  105. package/build/server/chunks/{13-DoxggNWI.js.map → 13-DN-4EHom.js.map} +1 -1
  106. package/build/server/chunks/{14-dn1AxT2y.js → 14-j22gtg6q.js} +3 -3
  107. package/build/server/chunks/{14-dn1AxT2y.js.map → 14-j22gtg6q.js.map} +1 -1
  108. package/build/server/chunks/{15-CwlxfscS.js → 15-CJJTHKeq.js} +3 -3
  109. package/build/server/chunks/{15-CwlxfscS.js.map → 15-CJJTHKeq.js.map} +1 -1
  110. package/build/server/chunks/{16-CYmJwOTN.js → 16-CPVRxJfK.js} +6 -6
  111. package/build/server/chunks/{16-CYmJwOTN.js.map → 16-CPVRxJfK.js.map} +1 -1
  112. package/build/server/chunks/{17-2g3z6ge8.js → 17-CEs6NSIj.js} +2 -2
  113. package/build/server/chunks/{17-2g3z6ge8.js.map → 17-CEs6NSIj.js.map} +1 -1
  114. package/build/server/chunks/{18-DS1IDuFS.js → 18-Lwe4TEuf.js} +2 -2
  115. package/build/server/chunks/{18-DS1IDuFS.js.map → 18-Lwe4TEuf.js.map} +1 -1
  116. package/build/server/chunks/{19-D7P-oKm4.js → 19-BK_uDFHq.js} +4 -4
  117. package/build/server/chunks/{19-D7P-oKm4.js.map → 19-BK_uDFHq.js.map} +1 -1
  118. package/build/server/chunks/{2-x36H91MM.js → 2-BBFUEdIk.js} +7 -7
  119. package/build/server/chunks/{2-x36H91MM.js.map → 2-BBFUEdIk.js.map} +1 -1
  120. package/build/server/chunks/{20-Cb9g4A7Q.js → 20-TgvBHCqT.js} +10 -10
  121. package/build/server/chunks/{20-Cb9g4A7Q.js.map → 20-TgvBHCqT.js.map} +1 -1
  122. package/build/server/chunks/{21-CpI2moj3.js → 21-CpVgaOZP.js} +3 -3
  123. package/build/server/chunks/{21-CpI2moj3.js.map → 21-CpVgaOZP.js.map} +1 -1
  124. package/build/server/chunks/{23-cbMfA5sY.js → 23-DpZ-VAmj.js} +6 -6
  125. package/build/server/chunks/{23-cbMfA5sY.js.map → 23-DpZ-VAmj.js.map} +1 -1
  126. package/build/server/chunks/{24-CA3DPT0t.js → 24-IG8oF3LR.js} +4 -4
  127. package/build/server/chunks/{24-CA3DPT0t.js.map → 24-IG8oF3LR.js.map} +1 -1
  128. package/build/server/chunks/{25-DludrCpg.js → 25-DL8VLuLg.js} +2 -2
  129. package/build/server/chunks/{25-DludrCpg.js.map → 25-DL8VLuLg.js.map} +1 -1
  130. package/build/server/chunks/{27-BDtKZzPl.js → 27-BNuVmBlC.js} +4 -4
  131. package/build/server/chunks/{27-BDtKZzPl.js.map → 27-BNuVmBlC.js.map} +1 -1
  132. package/build/server/chunks/{28-Dvh0YyMK.js → 28-O2gMewvR.js} +3 -3
  133. package/build/server/chunks/{28-Dvh0YyMK.js.map → 28-O2gMewvR.js.map} +1 -1
  134. package/build/server/chunks/{29-OZbtFuyd.js → 29-DeHI_lg6.js} +3 -3
  135. package/build/server/chunks/{29-OZbtFuyd.js.map → 29-DeHI_lg6.js.map} +1 -1
  136. package/build/server/chunks/{3-BFx3bdEz.js → 3-_z4ofaYa.js} +2 -2
  137. package/build/server/chunks/{3-BFx3bdEz.js.map → 3-_z4ofaYa.js.map} +1 -1
  138. package/build/server/chunks/{30-BuoO_cIR.js → 30-B8zrsGBW.js} +3 -3
  139. package/build/server/chunks/{30-BuoO_cIR.js.map → 30-B8zrsGBW.js.map} +1 -1
  140. package/build/server/chunks/{31-Dzl1y1lc.js → 31-DJIq1bRM.js} +2 -2
  141. package/build/server/chunks/{31-Dzl1y1lc.js.map → 31-DJIq1bRM.js.map} +1 -1
  142. package/build/server/chunks/{32-DEYwWtss.js → 32-fvzIyQyk.js} +2 -2
  143. package/build/server/chunks/{32-DEYwWtss.js.map → 32-fvzIyQyk.js.map} +1 -1
  144. package/build/server/chunks/{5-BNfM-tOw.js → 5-jUoewty6.js} +3 -3
  145. package/build/server/chunks/{5-BNfM-tOw.js.map → 5-jUoewty6.js.map} +1 -1
  146. package/build/server/chunks/{6-CEx1JO4m.js → 6-Da49O-RB.js} +4 -4
  147. package/build/server/chunks/{6-CEx1JO4m.js.map → 6-Da49O-RB.js.map} +1 -1
  148. package/build/server/chunks/{7-Cz-fnTMA.js → 7-C4TEFQmD.js} +3 -3
  149. package/build/server/chunks/{7-Cz-fnTMA.js.map → 7-C4TEFQmD.js.map} +1 -1
  150. package/build/server/chunks/{8-CFNvkchb.js → 8-6Lblm8Bu.js} +3 -3
  151. package/build/server/chunks/{8-CFNvkchb.js.map → 8-6Lblm8Bu.js.map} +1 -1
  152. package/build/server/chunks/{9-DrF9Yg9r.js → 9-bV3k1piX.js} +4 -4
  153. package/build/server/chunks/{9-DrF9Yg9r.js.map → 9-bV3k1piX.js.map} +1 -1
  154. package/build/server/chunks/{AppHeader-vae2Doza.js → AppHeader-C76PLheq.js} +2 -2
  155. package/build/server/chunks/{AppHeader-vae2Doza.js.map → AppHeader-C76PLheq.js.map} +1 -1
  156. package/build/server/chunks/{UserChip-BPLEgzMp.js → UserChip-i0_3jHOb.js} +8 -3
  157. package/build/server/chunks/UserChip-i0_3jHOb.js.map +1 -0
  158. package/build/server/chunks/{_layout.svelte-D5GiNGr6.js → _layout.svelte-B-tWsdy4.js} +3 -3
  159. package/build/server/chunks/{_layout.svelte-D5GiNGr6.js.map → _layout.svelte-B-tWsdy4.js.map} +1 -1
  160. package/build/server/chunks/{_layout.svelte-_enyp5QE.js → _layout.svelte-B2RbgABg.js} +3 -3
  161. package/build/server/chunks/{_layout.svelte-_enyp5QE.js.map → _layout.svelte-B2RbgABg.js.map} +1 -1
  162. package/build/server/chunks/{_layout.svelte-aflz8r6I.js → _layout.svelte-DUeER8oS.js} +3 -3
  163. package/build/server/chunks/{_layout.svelte-aflz8r6I.js.map → _layout.svelte-DUeER8oS.js.map} +1 -1
  164. package/build/server/chunks/{_page.svelte-By_vYfbZ.js → _page.svelte-0KErHswo.js} +94 -4
  165. package/build/server/chunks/_page.svelte-0KErHswo.js.map +1 -0
  166. package/build/server/chunks/{_page.svelte-ZxjqrKH8.js → _page.svelte-BSHEM3UY.js} +3 -3
  167. package/build/server/chunks/{_page.svelte-ZxjqrKH8.js.map → _page.svelte-BSHEM3UY.js.map} +1 -1
  168. package/build/server/chunks/{_page.svelte-FDFRMnmB.js → _page.svelte-CDEfhXLp.js} +3 -3
  169. package/build/server/chunks/{_page.svelte-FDFRMnmB.js.map → _page.svelte-CDEfhXLp.js.map} +1 -1
  170. package/build/server/chunks/{_page.svelte-wUV5pt7K.js → _page.svelte-DDzV91b5.js} +305 -54
  171. package/build/server/chunks/_page.svelte-DDzV91b5.js.map +1 -0
  172. package/build/server/chunks/{_server.ts-CYnQlbaG.js → _server.ts-3LBSaM7L.js} +26 -14
  173. package/build/server/chunks/_server.ts-3LBSaM7L.js.map +1 -0
  174. package/build/server/chunks/{_server.ts-C4BxZ2rC.js → _server.ts-B-un1ZTf.js} +5 -5
  175. package/build/server/chunks/{_server.ts-C4BxZ2rC.js.map → _server.ts-B-un1ZTf.js.map} +1 -1
  176. package/build/server/chunks/{_server.ts-aJ-1nqR3.js → _server.ts-B6gtWjZd.js} +9 -9
  177. package/build/server/chunks/_server.ts-B6gtWjZd.js.map +1 -0
  178. package/build/server/chunks/{_server.ts-A5TZCqa5.js → _server.ts-B9Fdut8P.js} +16 -12
  179. package/build/server/chunks/_server.ts-B9Fdut8P.js.map +1 -0
  180. package/build/server/chunks/{_server.ts-Ck8MaVCN.js → _server.ts-BJEEQ8tH.js} +17 -13
  181. package/build/server/chunks/_server.ts-BJEEQ8tH.js.map +1 -0
  182. package/build/server/chunks/{_server.ts-pUwXCS2e.js → _server.ts-BKPaoj3Y.js} +16 -11
  183. package/build/server/chunks/_server.ts-BKPaoj3Y.js.map +1 -0
  184. package/build/server/chunks/{_server.ts-CVgSO8yh.js → _server.ts-BVpHuRup.js} +10 -10
  185. package/build/server/chunks/_server.ts-BVpHuRup.js.map +1 -0
  186. package/build/server/chunks/{_server.ts-Ctmv-46q.js → _server.ts-BplW_hNF.js} +9 -9
  187. package/build/server/chunks/_server.ts-BplW_hNF.js.map +1 -0
  188. package/build/server/chunks/{_server.ts-Dsn1xqkb.js → _server.ts-Bv-G75Ze.js} +9 -9
  189. package/build/server/chunks/_server.ts-Bv-G75Ze.js.map +1 -0
  190. package/build/server/chunks/{_server.ts-DzoHhw3c.js → _server.ts-C5fD6gFa.js} +12 -12
  191. package/build/server/chunks/_server.ts-C5fD6gFa.js.map +1 -0
  192. package/build/server/chunks/{_server.ts-jICcnrLz.js → _server.ts-C6rUlJpJ.js} +14 -7
  193. package/build/server/chunks/_server.ts-C6rUlJpJ.js.map +1 -0
  194. package/build/server/chunks/_server.ts-CLku3Kgz.js +66 -0
  195. package/build/server/chunks/_server.ts-CLku3Kgz.js.map +1 -0
  196. package/build/server/chunks/{_server.ts-CmB_7_VV.js → _server.ts-CNRwBoMm.js} +5 -5
  197. package/build/server/chunks/{_server.ts-CmB_7_VV.js.map → _server.ts-CNRwBoMm.js.map} +1 -1
  198. package/build/server/chunks/{_server.ts-DOepVbAV.js → _server.ts-COuXITb8.js} +11 -11
  199. package/build/server/chunks/_server.ts-COuXITb8.js.map +1 -0
  200. package/build/server/chunks/{_server.ts-vGCP86Du.js → _server.ts-CT1KXbVK.js} +79 -26
  201. package/build/server/chunks/_server.ts-CT1KXbVK.js.map +1 -0
  202. package/build/server/chunks/{_server.ts-BBenjXRj.js → _server.ts-CTXCbdsb.js} +12 -11
  203. package/build/server/chunks/_server.ts-CTXCbdsb.js.map +1 -0
  204. package/build/server/chunks/{_server.ts-CvjBKoOG.js → _server.ts-CXEl8kvu.js} +15 -14
  205. package/build/server/chunks/_server.ts-CXEl8kvu.js.map +1 -0
  206. package/build/server/chunks/{_server.ts-DCmcZ1Gb.js → _server.ts-CZ9lwb1J.js} +7 -7
  207. package/build/server/chunks/_server.ts-CZ9lwb1J.js.map +1 -0
  208. package/build/server/chunks/{_server.ts-Drk8mhhT.js → _server.ts-CaytsdFp.js} +9 -9
  209. package/build/server/chunks/_server.ts-CaytsdFp.js.map +1 -0
  210. package/build/server/chunks/{_server.ts-C8hNi-NM.js → _server.ts-Cd6dVQ2J.js} +19 -11
  211. package/build/server/chunks/_server.ts-Cd6dVQ2J.js.map +1 -0
  212. package/build/server/chunks/{_server.ts-Bel_bV82.js → _server.ts-CgRuMyJ9.js} +10 -10
  213. package/build/server/chunks/_server.ts-CgRuMyJ9.js.map +1 -0
  214. package/build/server/chunks/{_server.ts-TGu9dCIM.js → _server.ts-CmCeYB9h.js} +28 -18
  215. package/build/server/chunks/_server.ts-CmCeYB9h.js.map +1 -0
  216. package/build/server/chunks/{_server.ts-Mywogv28.js → _server.ts-Codg_zX0.js} +10 -9
  217. package/build/server/chunks/_server.ts-Codg_zX0.js.map +1 -0
  218. package/build/server/chunks/{_server.ts-Cu7fT_h2.js → _server.ts-D-WjMJlD.js} +12 -8
  219. package/build/server/chunks/_server.ts-D-WjMJlD.js.map +1 -0
  220. package/build/server/chunks/{_server.ts-BnV_32U5.js → _server.ts-D4z7bYT1.js} +25 -12
  221. package/build/server/chunks/_server.ts-D4z7bYT1.js.map +1 -0
  222. package/build/server/chunks/{_server.ts-BDVOe9oZ.js → _server.ts-D7URpGBv.js} +15 -11
  223. package/build/server/chunks/_server.ts-D7URpGBv.js.map +1 -0
  224. package/build/server/chunks/{_server.ts-CtwHDS7C.js → _server.ts-DMwrtYEK.js} +14 -14
  225. package/build/server/chunks/_server.ts-DMwrtYEK.js.map +1 -0
  226. package/build/server/chunks/{_server.ts-DgbeoluB.js → _server.ts-DSVtVVVK.js} +18 -12
  227. package/build/server/chunks/_server.ts-DSVtVVVK.js.map +1 -0
  228. package/build/server/chunks/{_server.ts-CXvixtRW.js → _server.ts-Df72lBuz.js} +25 -16
  229. package/build/server/chunks/_server.ts-Df72lBuz.js.map +1 -0
  230. package/build/server/chunks/{_server.ts-_nasPzxH.js → _server.ts-DlN3WSBT.js} +3 -3
  231. package/build/server/chunks/{_server.ts-_nasPzxH.js.map → _server.ts-DlN3WSBT.js.map} +1 -1
  232. package/build/server/chunks/{_server.ts-BNSHTRhw.js → _server.ts-DsXq-KLm.js} +27 -18
  233. package/build/server/chunks/_server.ts-DsXq-KLm.js.map +1 -0
  234. package/build/server/chunks/{_server.ts-eAeNUEse.js → _server.ts-OQ5_sYi3.js} +32 -19
  235. package/build/server/chunks/_server.ts-OQ5_sYi3.js.map +1 -0
  236. package/build/server/chunks/{_server.ts-CoZrqfhl.js → _server.ts-UYOqhuxS.js} +13 -9
  237. package/build/server/chunks/_server.ts-UYOqhuxS.js.map +1 -0
  238. package/build/server/chunks/{_server.ts-C4lve0n9.js → _server.ts-Xt4gRfAl.js} +18 -12
  239. package/build/server/chunks/_server.ts-Xt4gRfAl.js.map +1 -0
  240. package/build/server/chunks/{_server.ts-CFmfnLGv.js → _server.ts-ZtjukIa0.js} +17 -14
  241. package/build/server/chunks/_server.ts-ZtjukIa0.js.map +1 -0
  242. package/build/server/chunks/_server.ts-bR98vjY2.js +47 -0
  243. package/build/server/chunks/_server.ts-bR98vjY2.js.map +1 -0
  244. package/build/server/chunks/{_server.ts-DgjIv5VO.js → _server.ts-deI69oUs.js} +9 -9
  245. package/build/server/chunks/_server.ts-deI69oUs.js.map +1 -0
  246. package/build/server/chunks/{_server.ts-DaL0WEpS.js → _server.ts-fxzTH5KH.js} +8 -8
  247. package/build/server/chunks/_server.ts-fxzTH5KH.js.map +1 -0
  248. package/build/server/chunks/{_server.ts-DQdxI18h.js → _server.ts-mFb6RwID.js} +8 -8
  249. package/build/server/chunks/_server.ts-mFb6RwID.js.map +1 -0
  250. package/build/server/chunks/{_server.ts-y7PjdP_H.js → _server.ts-sdl64bpd.js} +12 -9
  251. package/build/server/chunks/_server.ts-sdl64bpd.js.map +1 -0
  252. package/build/server/chunks/{access.server-BueyYEoY.js → access.server-Rd56k7vs.js} +4 -4
  253. package/build/server/chunks/{access.server-BueyYEoY.js.map → access.server-Rd56k7vs.js.map} +1 -1
  254. package/build/server/chunks/{api-errors-BckwXK7Q.js → api-errors-BrqxD-El.js} +54 -15
  255. package/build/server/chunks/api-errors-BrqxD-El.js.map +1 -0
  256. package/build/server/chunks/{auth-bootstrap.server-BOTw9HkY.js → auth-bootstrap.server-DKc9-3PR.js} +2 -2
  257. package/build/server/chunks/{auth-bootstrap.server-BOTw9HkY.js.map → auth-bootstrap.server-DKc9-3PR.js.map} +1 -1
  258. package/build/server/chunks/{bootHealth.server-BwEi-Qp8.js → bootHealth.server-IPXOSqqQ.js} +2 -2
  259. package/build/server/chunks/{bootHealth.server-BwEi-Qp8.js.map → bootHealth.server-IPXOSqqQ.js.map} +1 -1
  260. package/build/server/chunks/{computeLimits-DPO6NbLd.js → computeLimits-DnJ77wR9.js} +3 -3
  261. package/build/server/chunks/computeLimits-DnJ77wR9.js.map +1 -0
  262. package/build/server/chunks/{hooks.server-BHmZpgdz.js → hooks.server-BZKLAgww.js} +10 -9
  263. package/build/server/chunks/hooks.server-BZKLAgww.js.map +1 -0
  264. package/build/server/chunks/{package-CGdqH7nx.js → package-K5EkWw87.js} +2 -2
  265. package/build/server/chunks/{package-CGdqH7nx.js.map → package-K5EkWw87.js.map} +1 -1
  266. package/build/server/chunks/{permissions.server-D1KUdeD1.js → permissions.server-zs4XAJCp.js} +2 -2
  267. package/build/server/chunks/{permissions.server-D1KUdeD1.js.map → permissions.server-zs4XAJCp.js.map} +1 -1
  268. package/build/server/chunks/{providers.server-BYk2ehLM.js → providers.server-C3fQ7ZdV.js} +78 -21
  269. package/build/server/chunks/providers.server-C3fQ7ZdV.js.map +1 -0
  270. package/build/server/chunks/{resolve.server-D79ZavTd.js → resolve.server-t1UmqtsG.js} +2 -2
  271. package/build/server/chunks/{resolve.server-D79ZavTd.js.map → resolve.server-t1UmqtsG.js.map} +1 -1
  272. package/build/server/chunks/{utils2-UQQTHTw-.js → utils2-BqfluBM6.js} +2 -2
  273. package/build/server/chunks/{utils2-UQQTHTw-.js.map → utils2-BqfluBM6.js.map} +1 -1
  274. package/build/server/index.js +2 -2
  275. package/build/server/index.js.map +1 -1
  276. package/build/server/manifest.js +77 -70
  277. package/build/server/manifest.js.map +1 -1
  278. package/package.json +7 -7
  279. package/templates/.env.example +14 -5
  280. package/build/client/_app/immutable/chunks/B-fj8b7K.js.br +0 -0
  281. package/build/client/_app/immutable/chunks/B-fj8b7K.js.gz +0 -0
  282. package/build/client/_app/immutable/chunks/BU70HLVx.js +0 -3
  283. package/build/client/_app/immutable/chunks/BU70HLVx.js.br +0 -0
  284. package/build/client/_app/immutable/chunks/BU70HLVx.js.gz +0 -0
  285. package/build/client/_app/immutable/chunks/CdGNQgyw.js.br +0 -0
  286. package/build/client/_app/immutable/chunks/CdGNQgyw.js.gz +0 -0
  287. package/build/client/_app/immutable/chunks/D-jj-Uww.js.br +0 -0
  288. package/build/client/_app/immutable/chunks/D-jj-Uww.js.gz +0 -0
  289. package/build/client/_app/immutable/chunks/D7wuDTx2.js.br +0 -0
  290. package/build/client/_app/immutable/chunks/D7wuDTx2.js.gz +0 -0
  291. package/build/client/_app/immutable/chunks/j-UbJSFZ.js.br +0 -0
  292. package/build/client/_app/immutable/chunks/j-UbJSFZ.js.gz +0 -0
  293. package/build/client/_app/immutable/entry/app.CsJrZk_i.js.br +0 -0
  294. package/build/client/_app/immutable/entry/app.CsJrZk_i.js.gz +0 -0
  295. package/build/client/_app/immutable/entry/start.vCkjGHiU.js +0 -1
  296. package/build/client/_app/immutable/entry/start.vCkjGHiU.js.br +0 -2
  297. package/build/client/_app/immutable/entry/start.vCkjGHiU.js.gz +0 -0
  298. package/build/client/_app/immutable/nodes/1.wSjQD-9E.js.br +0 -0
  299. package/build/client/_app/immutable/nodes/1.wSjQD-9E.js.gz +0 -0
  300. package/build/client/_app/immutable/nodes/11.cZPocN3B.js +0 -2
  301. package/build/client/_app/immutable/nodes/11.cZPocN3B.js.br +0 -0
  302. package/build/client/_app/immutable/nodes/11.cZPocN3B.js.gz +0 -0
  303. package/build/client/_app/immutable/nodes/13.CZxapN5I.js.br +0 -0
  304. package/build/client/_app/immutable/nodes/13.CZxapN5I.js.gz +0 -0
  305. package/build/client/_app/immutable/nodes/14.ChDvrNjp.js.br +0 -0
  306. package/build/client/_app/immutable/nodes/14.ChDvrNjp.js.gz +0 -0
  307. package/build/client/_app/immutable/nodes/16.Cewxge5m.js.br +0 -0
  308. package/build/client/_app/immutable/nodes/16.Cewxge5m.js.gz +0 -0
  309. package/build/client/_app/immutable/nodes/17.NlvAvTSP.js.br +0 -0
  310. package/build/client/_app/immutable/nodes/17.NlvAvTSP.js.gz +0 -0
  311. package/build/client/_app/immutable/nodes/19.qNGlcD7l.js.br +0 -0
  312. package/build/client/_app/immutable/nodes/19.qNGlcD7l.js.gz +0 -0
  313. package/build/client/_app/immutable/nodes/2.CgydK0lI.js.br +0 -0
  314. package/build/client/_app/immutable/nodes/2.CgydK0lI.js.gz +0 -0
  315. package/build/client/_app/immutable/nodes/20.CoGCSB-X.js +0 -5021
  316. package/build/client/_app/immutable/nodes/20.CoGCSB-X.js.br +0 -0
  317. package/build/client/_app/immutable/nodes/20.CoGCSB-X.js.gz +0 -0
  318. package/build/client/_app/immutable/nodes/21.CdZLvQ68.js.br +0 -0
  319. package/build/client/_app/immutable/nodes/21.CdZLvQ68.js.gz +0 -0
  320. package/build/client/_app/immutable/nodes/23.CmSUvEas.js.br +0 -0
  321. package/build/client/_app/immutable/nodes/24.BLrWFvpH.js.br +0 -0
  322. package/build/client/_app/immutable/nodes/24.BLrWFvpH.js.gz +0 -0
  323. package/build/client/_app/immutable/nodes/27.DF8_FNgX.js.br +0 -0
  324. package/build/client/_app/immutable/nodes/27.DF8_FNgX.js.gz +0 -0
  325. package/build/client/_app/immutable/nodes/28.u-nHYDMp.js.br +0 -0
  326. package/build/client/_app/immutable/nodes/28.u-nHYDMp.js.gz +0 -0
  327. package/build/client/_app/immutable/nodes/29.zcWmCBtG.js.br +0 -0
  328. package/build/client/_app/immutable/nodes/29.zcWmCBtG.js.gz +0 -0
  329. package/build/client/_app/immutable/nodes/3.CGYG-fBC.js.br +0 -0
  330. package/build/client/_app/immutable/nodes/3.CGYG-fBC.js.gz +0 -0
  331. package/build/client/_app/immutable/nodes/30.CFRFw3XM.js.br +0 -0
  332. package/build/client/_app/immutable/nodes/30.CFRFw3XM.js.gz +0 -0
  333. package/build/client/_app/immutable/nodes/5.BIDVFrKz.js.br +0 -2
  334. package/build/client/_app/immutable/nodes/5.BIDVFrKz.js.gz +0 -0
  335. package/build/client/_app/immutable/nodes/6.G8VTWVfQ.js.br +0 -0
  336. package/build/client/_app/immutable/nodes/6.G8VTWVfQ.js.gz +0 -0
  337. package/build/client/_app/immutable/nodes/7.DaJ_YKCW.js.br +0 -0
  338. package/build/client/_app/immutable/nodes/7.DaJ_YKCW.js.gz +0 -0
  339. package/build/client/_app/immutable/nodes/8.c3ONIRmr.js.br +0 -0
  340. package/build/client/_app/immutable/nodes/8.c3ONIRmr.js.gz +0 -0
  341. package/build/client/_app/immutable/nodes/9.BucDMSoZ.js.br +0 -0
  342. package/build/client/_app/immutable/nodes/9.BucDMSoZ.js.gz +0 -0
  343. package/build/server/chunks/UserChip-BPLEgzMp.js.map +0 -1
  344. package/build/server/chunks/_page.svelte-By_vYfbZ.js.map +0 -1
  345. package/build/server/chunks/_page.svelte-wUV5pt7K.js.map +0 -1
  346. package/build/server/chunks/_server.ts-A5TZCqa5.js.map +0 -1
  347. package/build/server/chunks/_server.ts-BBenjXRj.js.map +0 -1
  348. package/build/server/chunks/_server.ts-BDVOe9oZ.js.map +0 -1
  349. package/build/server/chunks/_server.ts-BNSHTRhw.js.map +0 -1
  350. package/build/server/chunks/_server.ts-Bel_bV82.js.map +0 -1
  351. package/build/server/chunks/_server.ts-BnV_32U5.js.map +0 -1
  352. package/build/server/chunks/_server.ts-C4lve0n9.js.map +0 -1
  353. package/build/server/chunks/_server.ts-C8hNi-NM.js.map +0 -1
  354. package/build/server/chunks/_server.ts-CFmfnLGv.js.map +0 -1
  355. package/build/server/chunks/_server.ts-CVgSO8yh.js.map +0 -1
  356. package/build/server/chunks/_server.ts-CXvixtRW.js.map +0 -1
  357. package/build/server/chunks/_server.ts-CYnQlbaG.js.map +0 -1
  358. package/build/server/chunks/_server.ts-Ck8MaVCN.js.map +0 -1
  359. package/build/server/chunks/_server.ts-CoZrqfhl.js.map +0 -1
  360. package/build/server/chunks/_server.ts-Ctmv-46q.js.map +0 -1
  361. package/build/server/chunks/_server.ts-CtwHDS7C.js.map +0 -1
  362. package/build/server/chunks/_server.ts-Cu7fT_h2.js.map +0 -1
  363. package/build/server/chunks/_server.ts-CvjBKoOG.js.map +0 -1
  364. package/build/server/chunks/_server.ts-DCmcZ1Gb.js.map +0 -1
  365. package/build/server/chunks/_server.ts-DOepVbAV.js.map +0 -1
  366. package/build/server/chunks/_server.ts-DQdxI18h.js.map +0 -1
  367. package/build/server/chunks/_server.ts-DaL0WEpS.js.map +0 -1
  368. package/build/server/chunks/_server.ts-DbcwlSqy.js +0 -65
  369. package/build/server/chunks/_server.ts-DbcwlSqy.js.map +0 -1
  370. package/build/server/chunks/_server.ts-DgbeoluB.js.map +0 -1
  371. package/build/server/chunks/_server.ts-DgjIv5VO.js.map +0 -1
  372. package/build/server/chunks/_server.ts-Drk8mhhT.js.map +0 -1
  373. package/build/server/chunks/_server.ts-Dsn1xqkb.js.map +0 -1
  374. package/build/server/chunks/_server.ts-DzoHhw3c.js.map +0 -1
  375. package/build/server/chunks/_server.ts-Mywogv28.js.map +0 -1
  376. package/build/server/chunks/_server.ts-TGu9dCIM.js.map +0 -1
  377. package/build/server/chunks/_server.ts-aJ-1nqR3.js.map +0 -1
  378. package/build/server/chunks/_server.ts-eAeNUEse.js.map +0 -1
  379. package/build/server/chunks/_server.ts-jICcnrLz.js.map +0 -1
  380. package/build/server/chunks/_server.ts-pUwXCS2e.js.map +0 -1
  381. package/build/server/chunks/_server.ts-vGCP86Du.js.map +0 -1
  382. package/build/server/chunks/_server.ts-y7PjdP_H.js.map +0 -1
  383. package/build/server/chunks/api-errors-BckwXK7Q.js.map +0 -1
  384. package/build/server/chunks/computeLimits-DPO6NbLd.js.map +0 -1
  385. package/build/server/chunks/hooks.server-BHmZpgdz.js.map +0 -1
  386. package/build/server/chunks/providers.server-BYk2ehLM.js.map +0 -1
@@ -1,18 +1,18 @@
1
+ import { a as apiError, A as ApiErrorCode, r as resolveServerForOrg, f as fetchSchemaFromCompute, C as ComputeServerUnconfiguredError } from './api-errors-BrqxD-El.js';
1
2
  import { TreeBuilder, GrasshopperClient, enableDebugLogging } from '@selvajs/compute';
2
3
  import { p as private_env } from './shared-server-C3WdcJCQ.js';
3
- import { error, isHttpError } from '@sveltejs/kit';
4
- import { r as resolveServerForOrg, f as fetchSchemaFromCompute, C as ComputeServerUnconfiguredError } from './api-errors-BckwXK7Q.js';
4
+ import { isHttpError } from '@sveltejs/kit';
5
5
  import { lookup } from 'node:dns/promises';
6
6
  import { isIP } from 'node:net';
7
- import { 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, d as RATE_LIMIT_WINDOW_MS, R as RATE_LIMIT_MAX_REQUESTS, C as COMPUTE_REQUEST_MAX_BYTES } from './computeLimits-DPO6NbLd.js';
7
+ import { 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, d as RATE_LIMIT_WINDOW_MS, R as RATE_LIMIT_MAX_REQUESTS, C as COMPUTE_REQUEST_MAX_BYTES } from './computeLimits-DnJ77wR9.js';
8
8
  import { e as requireMaxBodySize } from './admin-auth.server-45kKyH82.js';
9
- import { o as getStorageProvider, t as providers } from './providers.server-BYk2ehLM.js';
10
- import { k as requireCanEditDefinition, q as requireCanSolve } from './access.server-BueyYEoY.js';
11
- import { t as tryResolveShareToken } from './resolve.server-D79ZavTd.js';
9
+ import { p as getStorageProvider, o as getSolveMetricSink, u as providers } from './providers.server-C3fQ7ZdV.js';
10
+ import { k as requireCanEditDefinition, q as requireCanSolve } from './access.server-Rd56k7vs.js';
11
+ import { t as tryResolveShareToken } from './resolve.server-t1UmqtsG.js';
12
12
  import './context-BJnJL8ES.js';
13
13
  import 'zod';
14
14
  import '@selvajs/compute/core';
15
- import './utils2-UQQTHTw-.js';
15
+ import './utils2-BqfluBM6.js';
16
16
  import 'node:url';
17
17
  import 'node:path';
18
18
  import 'node:fs';
@@ -289,25 +289,50 @@ const POST = async ({ request, locals, url }) => {
289
289
  const definitionUrl = body.definitionUrl;
290
290
  const channel = body.channel ?? "live";
291
291
  if (!inputs || !values || !definitionUrl) {
292
- throw error(400, "Missing required fields: inputs, values, or definitionUrl");
292
+ apiError(
293
+ 400,
294
+ ApiErrorCode.VALIDATION_FAILED,
295
+ "Missing required fields: inputs, values, or definitionUrl"
296
+ );
293
297
  }
294
298
  if (channel !== "live" && channel !== "draft") {
295
- throw error(400, `Invalid channel: ${channel}. Must be 'live' or 'draft'.`);
299
+ apiError(
300
+ 400,
301
+ ApiErrorCode.VALIDATION_FAILED,
302
+ `Invalid channel: ${channel}. Must be 'live' or 'draft'.`
303
+ );
296
304
  }
297
305
  let definitionSource;
298
306
  let localVersionForBackfill = null;
299
307
  let solveOrgId = null;
300
308
  let definitionPin = null;
309
+ let metricDefinitionId = null;
310
+ let metricVersionId = null;
301
311
  const isLocal = definitionUrl.startsWith("local:");
302
312
  const guid = isLocal ? definitionUrl.substring(6) : null;
303
313
  const sharedAccess = isLocal && guid ? await tryResolveShareToken(request, url, guid, channel, { requireSolve: true }) : null;
304
314
  if (!sharedAccess && (!locals.ctx || !locals.user)) {
305
- throw error(401, "Unauthorized");
315
+ apiError(401, ApiErrorCode.UNAUTHORIZED, "Unauthorized");
306
316
  }
307
317
  const solveCtx = sharedAccess?.ctx ?? locals.ctx;
318
+ const recordMetric = (failureKind, extra = {}) => {
319
+ void getSolveMetricSink().record(solveCtx, {
320
+ definitionUrl,
321
+ definitionId: metricDefinitionId,
322
+ versionId: metricVersionId,
323
+ channel,
324
+ orgId: solveOrgId,
325
+ durationMs: extra.durationMs ?? 0,
326
+ ok: failureKind === "ok",
327
+ failureKind,
328
+ errorCount: extra.errorCount ?? 0,
329
+ warningCount: extra.warningCount ?? 0
330
+ });
331
+ };
308
332
  const rateLimitKey = sharedAccess ? `share:${sharedAccess.link.id}` : `user:${locals.user.id}`;
309
333
  const rateLimit = checkComputeRateLimit(rateLimitKey);
310
334
  if (!rateLimit.allowed) {
335
+ recordMetric("rate_limited");
311
336
  const retryAfter = rateLimit.retryAfter ?? 1;
312
337
  return new Response(
313
338
  JSON.stringify({
@@ -329,9 +354,9 @@ const POST = async ({ request, locals, url }) => {
329
354
  record = await providers.data.definitions.get(solveCtx, guid);
330
355
  } catch (err) {
331
356
  console.error(`Failed to load local definition: ${guid}`, err);
332
- throw error(404, `Definition '${guid}' not found`);
357
+ apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' not found`);
333
358
  }
334
- if (!record) throw error(404, `Definition '${guid}' not found`);
359
+ if (!record) apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' not found`);
335
360
  const project = await providers.data.projects.getProject(solveCtx, record.projectId);
336
361
  solveOrgId = project?.orgId ?? null;
337
362
  definitionPin = record.computeServerId ?? null;
@@ -344,28 +369,31 @@ const POST = async ({ request, locals, url }) => {
344
369
  }
345
370
  const versionId = channel === "live" ? record.liveVersionId : record.draftVersionId;
346
371
  if (!versionId) {
347
- throw error(404, `Definition '${guid}' has no ${channel} version yet`);
372
+ apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' has no ${channel} version yet`);
348
373
  }
349
374
  const version = await providers.data.definitions.getVersion(solveCtx, versionId);
350
375
  if (!version || version.definitionId !== guid) {
351
- throw error(404, `Definition '${guid}' ${channel} version is missing`);
376
+ apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' ${channel} version is missing`);
352
377
  }
353
378
  localVersionForBackfill = { id: version.id, hasSchema: version.schema !== void 0 };
379
+ metricDefinitionId = guid;
380
+ metricVersionId = version.id;
354
381
  try {
355
382
  const bytes = await storage.get(version.fileKey);
356
383
  if (!bytes) throw new Error(`Version blob missing: ${version.fileKey}`);
357
384
  definitionSource = bytes;
358
385
  } catch (err) {
359
386
  console.error(`Failed to load local definition blob: ${guid}`, err);
360
- throw error(404, `Definition '${guid}' not found`);
387
+ apiError(404, ApiErrorCode.NOT_FOUND, `Definition '${guid}' not found`);
361
388
  }
362
389
  } else {
363
390
  try {
364
391
  definitionSource = await loadRemoteDefinition(definitionUrl);
365
392
  } catch (err) {
366
393
  console.error(`Failed to fetch definition from ${definitionUrl}:`, err);
367
- throw error(
394
+ apiError(
368
395
  400,
396
+ ApiErrorCode.VALIDATION_FAILED,
369
397
  `Failed to load definition: ${err instanceof Error ? err.message : String(err)}`
370
398
  );
371
399
  }
@@ -379,7 +407,8 @@ const POST = async ({ request, locals, url }) => {
379
407
  sharedAccess.link.id
380
408
  );
381
409
  if (next === null) {
382
- throw error(429, "Share link solve cap reached.");
410
+ recordMetric("share_cap");
411
+ apiError(429, ApiErrorCode.INTERNAL, "Share link solve cap reached.");
383
412
  }
384
413
  }
385
414
  const serverConfig = await resolveServerForOrg(solveCtx, solveOrgId, { definitionPin });
@@ -394,17 +423,37 @@ const POST = async ({ request, locals, url }) => {
394
423
  }
395
424
  const { scheduler } = await getClient(serverConfig);
396
425
  let solvedDefinition;
426
+ const solveStart = performance.now();
397
427
  try {
398
428
  solvedDefinition = await scheduler.solve(definitionSource, inputTree, {
399
429
  signal: request.signal
400
430
  });
431
+ recordMetric("ok", {
432
+ durationMs: performance.now() - solveStart,
433
+ errorCount: solvedDefinition.errors?.length ?? 0,
434
+ warningCount: solvedDefinition.warnings?.length ?? 0
435
+ });
436
+ if (metricDefinitionId) {
437
+ providers.data.definitions.incrementSolveCount(solveCtx, metricDefinitionId).catch(
438
+ (err) => console.warn(
439
+ `[API/Compute] solveCount increment failed for ${metricDefinitionId}:`,
440
+ err
441
+ )
442
+ );
443
+ }
401
444
  } catch (err) {
402
- if (err instanceof Error && err.name === "AbortError") {
445
+ const isAbort = err instanceof Error && err.name === "AbortError";
446
+ const timedOut = isAbort && !request.signal.aborted;
447
+ recordMetric(timedOut ? "timeout" : isAbort ? "client_abort" : "compute_error", {
448
+ durationMs: performance.now() - solveStart
449
+ });
450
+ if (isAbort) {
403
451
  if (request.signal.aborted) {
404
- throw error(499, "Client closed request");
452
+ apiError(499, ApiErrorCode.INTERNAL, "Client closed request");
405
453
  }
406
- throw error(
454
+ apiError(
407
455
  504,
456
+ ApiErrorCode.INTERNAL,
408
457
  `Solve exceeded the ${Math.round(MAX_SOLVE_DURATION_MS / 1e3)}s deadline.`
409
458
  );
410
459
  }
@@ -415,16 +464,20 @@ const POST = async ({ request, locals, url }) => {
415
464
  serialized = JSON.stringify(solvedDefinition);
416
465
  } catch (err) {
417
466
  if (err instanceof RangeError) {
418
- throw error(
467
+ recordMetric("too_large");
468
+ apiError(
419
469
  413,
470
+ ApiErrorCode.INTERNAL,
420
471
  "Solve result is too large to return. This usually means a file output exceeds the supported size."
421
472
  );
422
473
  }
423
474
  throw err;
424
475
  }
425
476
  if (serialized.length > COMPUTE_RESPONSE_MAX_BYTES) {
426
- throw error(
477
+ recordMetric("too_large");
478
+ apiError(
427
479
  413,
480
+ ApiErrorCode.INTERNAL,
428
481
  "Solve result is too large to return. This usually means a file output exceeds the supported size."
429
482
  );
430
483
  }
@@ -434,16 +487,16 @@ const POST = async ({ request, locals, url }) => {
434
487
  } catch (err) {
435
488
  if (isHttpError(err)) throw err;
436
489
  if (err instanceof ComputeServerUnconfiguredError) {
437
- throw error(503, err.message);
490
+ apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message);
438
491
  }
439
492
  const message = err instanceof Error ? err.message : "Unknown error";
440
493
  console.error("[API/Compute] Error:", message);
441
494
  if (err instanceof TypeError && message === "fetch failed") {
442
- throw error(503, "Compute server is unreachable");
495
+ apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, "Compute server is unreachable");
443
496
  }
444
- throw error(500, message);
497
+ apiError(500, ApiErrorCode.INTERNAL, message);
445
498
  }
446
499
  };
447
500
 
448
501
  export { POST };
449
- //# sourceMappingURL=_server.ts-vGCP86Du.js.map
502
+ //# sourceMappingURL=_server.ts-CT1KXbVK.js.map
@@ -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,10 +1,10 @@
1
- import { r as resolveServerForOrg, C as ComputeServerUnconfiguredError } from './api-errors-BckwXK7Q.js';
2
- import { r as requireCanCreateDefinition } from './access.server-BueyYEoY.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
- import './providers.server-BYk2ehLM.js';
7
+ import './providers.server-C3fQ7ZdV.js';
8
8
  import './shared-server-C3WdcJCQ.js';
9
9
  import 'node:url';
10
10
  import 'node:path';
@@ -12,12 +12,12 @@ import 'node:fs';
12
12
  import 'node:crypto';
13
13
  import 'node:fs/promises';
14
14
  import '@supabase/supabase-js';
15
- import './utils2-UQQTHTw-.js';
15
+ import './utils2-BqfluBM6.js';
16
16
 
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-BBenjXRj.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';
2
- import { l as getPermissionStore, a as getAuthProvider } from './providers.server-BYk2ehLM.js';
3
- import { w as requireManageInstanceUsers } from './access.server-BueyYEoY.js';
1
+ import { a as apiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
2
+ import { l as getPermissionStore, a as getAuthProvider } from './providers.server-C3fQ7ZdV.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-BckwXK7Q.js';
14
- import '@selvajs/compute/core';
15
- import './utils2-UQQTHTw-.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-CvjBKoOG.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
- import { k as getOrganizationProvider, P as ProviderError, M as MAX_PAGE_LIMIT } from './providers.server-BYk2ehLM.js';
4
- import { u as requireInstanceAdmin } from './access.server-BueyYEoY.js';
5
- import { h as handleApiError, t as throwZodError } from './api-errors-BckwXK7Q.js';
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-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';
@@ -12,7 +12,7 @@ import 'node:fs/promises';
12
12
  import '@supabase/supabase-js';
13
13
  import 'zod';
14
14
  import '@selvajs/compute/core';
15
- import './utils2-UQQTHTw-.js';
15
+ import './utils2-BqfluBM6.js';
16
16
 
17
17
  const GET = async ({ locals, url }) => {
18
18
  requireInstanceAdmin(locals);
@@ -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-DCmcZ1Gb.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';
2
- import { h as getDefinitionMeta, M as MAX_PAGE_LIMIT } from './providers.server-BYk2ehLM.js';
3
- import { h as handleApiError } from './api-errors-BckwXK7Q.js';
4
- import { s as requireCanViewProject } from './access.server-BueyYEoY.js';
1
+ import { json } from '@sveltejs/kit';
2
+ import { h as getDefinitionMeta, M as MAX_PAGE_LIMIT } from './providers.server-C3fQ7ZdV.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';
@@ -11,19 +11,19 @@ import 'node:crypto';
11
11
  import 'node:fs/promises';
12
12
  import '@supabase/supabase-js';
13
13
  import '@selvajs/compute/core';
14
- import './utils2-UQQTHTw-.js';
14
+ import './utils2-BqfluBM6.js';
15
15
  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-Drk8mhhT.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
- import { n as getProjectProvider, P as ProviderError } from './providers.server-BYk2ehLM.js';
5
- import { j as requireCanCreateProject } from './access.server-BueyYEoY.js';
6
- import { h as handleApiError, t as throwZodError } from './api-errors-BckwXK7Q.js';
4
+ import { n as getProjectProvider, P as ProviderError } from './providers.server-C3fQ7ZdV.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';
@@ -13,7 +13,7 @@ import 'node:fs';
13
13
  import 'node:fs/promises';
14
14
  import '@supabase/supabase-js';
15
15
  import '@selvajs/compute/core';
16
- import './utils2-UQQTHTw-.js';
16
+ import './utils2-BqfluBM6.js';
17
17
 
18
18
  const MAX_SLUG_ATTEMPTS = 25;
19
19
  function isSlugConflict(err) {
@@ -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-C8hNi-NM.js.map
96
+ //# sourceMappingURL=_server.ts-Cd6dVQ2J.js.map