@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,8 +1,8 @@
1
- import { error } from '@sveltejs/kit';
1
+ import { error, isHttpError } from '@sveltejs/kit';
2
2
  import './context-BJnJL8ES.js';
3
- import { P as ProviderError, c as getComputeServerConfigStore } from './providers.server-BYk2ehLM.js';
3
+ import { P as ProviderError, c as getComputeServerConfigStore } from './providers.server-C3fQ7ZdV.js';
4
4
  import { camelcaseKeys } from '@selvajs/compute/core';
5
- import { r as resolveServerForOrg$1 } from './utils2-UQQTHTw-.js';
5
+ import { r as resolveServerForOrg$1 } from './utils2-BqfluBM6.js';
6
6
 
7
7
  class SchemaExtractionError extends Error {
8
8
  constructor(kind, message) {
@@ -61,8 +61,39 @@ async function resolveServerForOrg(ctx, orgId, opts = {}) {
61
61
  throw new ComputeServerUnconfiguredError(err instanceof Error ? err.message : void 0);
62
62
  }
63
63
  }
64
- function isSvelteKitError(err) {
65
- return !!err && typeof err === "object" && "status" in err && "body" in err;
64
+ const ApiErrorCode = {
65
+ VALIDATION_FAILED: "VALIDATION_FAILED",
66
+ UNAUTHORIZED: "UNAUTHORIZED",
67
+ FORBIDDEN: "FORBIDDEN",
68
+ NOT_FOUND: "NOT_FOUND",
69
+ CONFLICT: "CONFLICT",
70
+ UNPROCESSABLE: "UNPROCESSABLE",
71
+ COMPUTE_UNAVAILABLE: "COMPUTE_UNAVAILABLE",
72
+ SETUP_REQUIRED: "SETUP_REQUIRED",
73
+ INTERNAL: "INTERNAL"
74
+ };
75
+ function apiError(status, code, message, fields) {
76
+ throw error(status, fields ? { message, code, fields } : { message, code });
77
+ }
78
+ function codeForStatus(status) {
79
+ switch (status) {
80
+ case 400:
81
+ return ApiErrorCode.VALIDATION_FAILED;
82
+ case 401:
83
+ return ApiErrorCode.UNAUTHORIZED;
84
+ case 403:
85
+ return ApiErrorCode.FORBIDDEN;
86
+ case 404:
87
+ return ApiErrorCode.NOT_FOUND;
88
+ case 409:
89
+ return ApiErrorCode.CONFLICT;
90
+ case 422:
91
+ return ApiErrorCode.UNPROCESSABLE;
92
+ case 503:
93
+ return ApiErrorCode.COMPUTE_UNAVAILABLE;
94
+ default:
95
+ return ApiErrorCode.INTERNAL;
96
+ }
66
97
  }
67
98
  const UNIQUE_CONSTRAINT_MESSAGES = {
68
99
  projects_org_name_unique: "A project with that name already exists in this organization.",
@@ -77,25 +108,33 @@ function friendlyConstraintMessage(raw) {
77
108
  return null;
78
109
  }
79
110
  function handleApiError(err, fallback) {
80
- if (isSvelteKitError(err)) throw err;
111
+ if (isHttpError(err)) throw err;
81
112
  if (err instanceof SchemaExtractionError) {
82
- throw error(err.kind === "unreachable" ? 503 : 422, err.message);
113
+ if (err.kind === "unreachable") {
114
+ apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message);
115
+ }
116
+ apiError(422, ApiErrorCode.UNPROCESSABLE, err.message);
83
117
  }
84
118
  if (err instanceof ComputeServerUnconfiguredError) {
85
- throw error(503, err.message);
119
+ apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message);
86
120
  }
87
121
  if (err instanceof ProviderError) {
88
122
  const friendly = friendlyConstraintMessage(err.message);
89
- throw error(err.statusCode, friendly ?? err.message);
123
+ apiError(err.statusCode, codeForStatus(err.statusCode), friendly ?? err.message);
90
124
  }
91
125
  console.error(`[API] ${fallback}:`, err);
92
- throw error(500, fallback);
126
+ apiError(500, ApiErrorCode.INTERNAL, fallback);
93
127
  }
94
128
  function throwZodError(err) {
95
- const issue = err.issues[0];
96
- const path = issue.path.length ? `${issue.path.join(".")}: ` : "";
97
- throw error(400, `${path}${issue.message}`);
129
+ const fields = {};
130
+ for (const issue of err.issues) {
131
+ const key = issue.path.length ? issue.path.join(".") : "_";
132
+ if (!(key in fields)) fields[key] = issue.message;
133
+ }
134
+ const first = err.issues[0];
135
+ const path = first.path.length ? `${first.path.join(".")}: ` : "";
136
+ apiError(400, ApiErrorCode.VALIDATION_FAILED, `${path}${first.message}`, fields);
98
137
  }
99
138
 
100
- export { ComputeServerUnconfiguredError as C, fetchSchemaFromCompute as f, handleApiError as h, resolveServerForOrg as r, throwZodError as t };
101
- //# sourceMappingURL=api-errors-BckwXK7Q.js.map
139
+ export { ApiErrorCode as A, ComputeServerUnconfiguredError as C, apiError as a, fetchSchemaFromCompute as f, handleApiError as h, resolveServerForOrg as r, throwZodError as t };
140
+ //# sourceMappingURL=api-errors-BrqxD-El.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-errors-BrqxD-El.js","sources":["../../../.svelte-kit/adapter-node/chunks/api-errors.js"],"sourcesContent":["import { error, isHttpError } from \"@sveltejs/kit\";\nimport \"./context.js\";\nimport { c as getComputeServerConfigStore, P as ProviderError } from \"./providers.server.js\";\nimport { camelcaseKeys } from \"@selvajs/compute/core\";\nimport { r as resolveServerForOrg$1 } from \"./utils2.js\";\nclass SchemaExtractionError extends Error {\n constructor(kind, message) {\n super(message);\n this.kind = kind;\n this.name = \"SchemaExtractionError\";\n }\n kind;\n}\nasync function fetchSchemaFromCompute(definitionBytes, server) {\n const schemaUrl = new URL(\"/grasshopper/schema\", server.serverUrl).toString();\n const formData = new FormData();\n const blob = new Blob([new Uint8Array(definitionBytes)], { type: \"application/octet-stream\" });\n formData.append(\"file\", blob, \"definition.gh\");\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 (err) {\n throw new SchemaExtractionError(\n \"unreachable\",\n `Compute server is unreachable: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n if (!response.ok) {\n throw new SchemaExtractionError(\n \"unreachable\",\n `Schema endpoint returned ${response.status}: ${response.statusText}`\n );\n }\n const raw = await response.json();\n const results = camelcaseKeys(Array.isArray(raw) ? raw : [raw]);\n const schemas = results.flatMap((r) => r.schemas ?? []);\n if (schemas.length === 0) {\n throw new SchemaExtractionError(\n \"invalid\",\n 'No schemas found in definition.\\n\\nIn Grasshopper, verify a Context Bake component with the output name \"Schema\" is present and wired to the solver.'\n );\n }\n return schemas[0];\n}\nclass ComputeServerUnconfiguredError extends Error {\n constructor(message = \"No compute server configured. Ask an admin to add one in /admin/compute.\") {\n super(message);\n this.name = \"ComputeServerUnconfiguredError\";\n }\n}\nasync function resolveServerForOrg(ctx, orgId, opts = {}) {\n const config = await getComputeServerConfigStore().getConfig(ctx);\n try {\n return resolveServerForOrg$1(config, orgId, { definitionPin: opts.definitionPin });\n } catch (err) {\n throw new ComputeServerUnconfiguredError(err instanceof Error ? err.message : void 0);\n }\n}\nconst ApiErrorCode = {\n VALIDATION_FAILED: \"VALIDATION_FAILED\",\n UNAUTHORIZED: \"UNAUTHORIZED\",\n FORBIDDEN: \"FORBIDDEN\",\n NOT_FOUND: \"NOT_FOUND\",\n CONFLICT: \"CONFLICT\",\n UNPROCESSABLE: \"UNPROCESSABLE\",\n COMPUTE_UNAVAILABLE: \"COMPUTE_UNAVAILABLE\",\n SETUP_REQUIRED: \"SETUP_REQUIRED\",\n INTERNAL: \"INTERNAL\"\n};\nfunction apiError(status, code, message, fields) {\n throw error(status, fields ? { message, code, fields } : { message, code });\n}\nfunction codeForStatus(status) {\n switch (status) {\n case 400:\n return ApiErrorCode.VALIDATION_FAILED;\n case 401:\n return ApiErrorCode.UNAUTHORIZED;\n case 403:\n return ApiErrorCode.FORBIDDEN;\n case 404:\n return ApiErrorCode.NOT_FOUND;\n case 409:\n return ApiErrorCode.CONFLICT;\n case 422:\n return ApiErrorCode.UNPROCESSABLE;\n case 503:\n return ApiErrorCode.COMPUTE_UNAVAILABLE;\n default:\n return ApiErrorCode.INTERNAL;\n }\n}\nconst UNIQUE_CONSTRAINT_MESSAGES = {\n projects_org_name_unique: \"A project with that name already exists in this organization.\",\n projects_org_id_slug_key: \"A project with that name already exists in this organization.\",\n orgs_slug_key: \"An organization with that slug already exists.\",\n definitions_pkey: \"A definition with that ID already exists.\"\n};\nfunction friendlyConstraintMessage(raw) {\n for (const [name, msg] of Object.entries(UNIQUE_CONSTRAINT_MESSAGES)) {\n if (raw.includes(name)) return msg;\n }\n return null;\n}\nfunction handleApiError(err, fallback) {\n if (isHttpError(err)) throw err;\n if (err instanceof SchemaExtractionError) {\n if (err.kind === \"unreachable\") {\n apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message);\n }\n apiError(422, ApiErrorCode.UNPROCESSABLE, err.message);\n }\n if (err instanceof ComputeServerUnconfiguredError) {\n apiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message);\n }\n if (err instanceof ProviderError) {\n const friendly = friendlyConstraintMessage(err.message);\n apiError(err.statusCode, codeForStatus(err.statusCode), friendly ?? err.message);\n }\n console.error(`[API] ${fallback}:`, err);\n apiError(500, ApiErrorCode.INTERNAL, fallback);\n}\nfunction throwZodError(err) {\n const fields = {};\n for (const issue of err.issues) {\n const key = issue.path.length ? issue.path.join(\".\") : \"_\";\n if (!(key in fields)) fields[key] = issue.message;\n }\n const first = err.issues[0];\n const path = first.path.length ? `${first.path.join(\".\")}: ` : \"\";\n apiError(400, ApiErrorCode.VALIDATION_FAILED, `${path}${first.message}`, fields);\n}\nexport {\n ApiErrorCode as A,\n ComputeServerUnconfiguredError as C,\n apiError as a,\n fetchSchemaFromCompute as f,\n handleApiError as h,\n resolveServerForOrg as r,\n throwZodError as t\n};\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { p as private_env } from './shared-server-C3WdcJCQ.js';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { S as SYSTEM_CONTEXT, a as ALL_PLATFORM_PERMISSIONS } from './context-BJnJL8ES.js';
4
- import { a as getAuthProvider, l as getPermissionStore, p as getTenancy, e as getDataProvider, k as getOrganizationProvider, n as getProjectProvider } from './providers.server-BYk2ehLM.js';
4
+ import { a as getAuthProvider, l as getPermissionStore, q as getTenancy, e as getDataProvider, k as getOrganizationProvider, n as getProjectProvider } from './providers.server-C3fQ7ZdV.js';
5
5
  import { s as slugify } from './slug-BGuFQjqe.js';
6
6
 
7
7
  async function bootstrapUserSession(user) {
@@ -96,4 +96,4 @@ function wireHeaderAuthBootstrap() {
96
96
  }
97
97
 
98
98
  export { bootstrapUserSession as b, wireHeaderAuthBootstrap as w };
99
- //# sourceMappingURL=auth-bootstrap.server-BOTw9HkY.js.map
99
+ //# sourceMappingURL=auth-bootstrap.server-DKc9-3PR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-bootstrap.server-BOTw9HkY.js","sources":["../../../.svelte-kit/adapter-node/chunks/auth-bootstrap.server.js"],"sourcesContent":["import { p as private_env } from \"./shared-server.js\";\nimport { randomUUID } from \"node:crypto\";\nimport { S as SYSTEM_CONTEXT, a as ALL_PLATFORM_PERMISSIONS } from \"./context.js\";\nimport { e as getDataProvider, p as getTenancy, l as getPermissionStore, k as getOrganizationProvider, a as getAuthProvider, n as getProjectProvider } from \"./providers.server.js\";\nimport { s as slugify } from \"./slug.js\";\nasync function bootstrapUserSession(user) {\n await getDataProvider().ensureUser(SYSTEM_CONTEXT, user.id);\n const tenancy = getTenancy();\n const perms = getPermissionStore();\n const hasAdmin = await perms.hasInstanceAdmin(SYSTEM_CONTEXT);\n let grantedAdminHere = false;\n if (!hasAdmin) {\n if (!shouldBootstrapAdmin(user, private_env.BOOTSTRAP_INSTANCE_ADMIN_EMAIL, tenancy)) return;\n await perms.set(SYSTEM_CONTEXT, user.id, [...ALL_PLATFORM_PERMISSIONS]);\n grantedAdminHere = true;\n }\n if (tenancy !== \"single\") return;\n const orgs = getOrganizationProvider();\n const existing = await orgs.listOrgs(SYSTEM_CONTEXT, { limit: 1 });\n if (existing.items.length > 0) return;\n if (!grantedAdminHere) {\n const userPerms = await perms.getFor(SYSTEM_CONTEXT, user.id);\n if (!userPerms.includes(\"instance_admin\")) return;\n }\n await ensureSingleTenantDefaultOrg(user);\n}\nasync function ensureSingleTenantDefaultOrg(user) {\n if (getTenancy() !== \"single\") return;\n const orgs = getOrganizationProvider();\n const existing = await orgs.listOrgs(SYSTEM_CONTEXT, { limit: 1 });\n if (existing.items.length > 0) return;\n const displayName = typeof user.metadata?.displayName === \"string\" ? user.metadata.displayName : void 0;\n const orgName = displayName?.trim() || user.email?.split(\"@\")[0]?.trim() || \"Default\";\n const slug = slugify(orgName).length >= 3 ? slugify(orgName) : \"default\";\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const org = {\n id: randomUUID(),\n name: orgName,\n slug,\n ownerId: user.id,\n createdBy: user.id,\n updatedBy: user.id,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n await orgs.createOrg(SYSTEM_CONTEXT, org);\n const projects = getProjectProvider();\n const project = {\n id: randomUUID(),\n orgId: org.id,\n name: \"Default\",\n slug: \"default\",\n visibility: \"public\",\n ownerId: user.id,\n createdBy: user.id,\n updatedBy: user.id,\n autoJoinOnUpload: false,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n await projects.createProject(SYSTEM_CONTEXT, project);\n}\nfunction shouldBootstrapAdmin(user, configuredEmail, mode) {\n const expected = configuredEmail?.trim().toLowerCase();\n if (mode === \"multi\" && !expected) return false;\n if (!expected) return true;\n const actual = user.email?.trim().toLowerCase();\n return !!actual && actual === expected;\n}\nfunction shouldBootstrapUpn(upn, email, configuredEmail, mode) {\n const expected = configuredEmail?.trim().toLowerCase();\n if (mode === \"multi\" && !expected) return false;\n if (!expected) return true;\n const candidate = (email ?? upn).trim().toLowerCase();\n return !!candidate && candidate === expected;\n}\nfunction wireHeaderAuthBootstrap() {\n const auth = getAuthProvider();\n if (!auth.proxyAuth) return;\n if (typeof auth.setBootstrapAllowlistPolicy !== \"function\") {\n if (private_env.BOOTSTRAP_INSTANCE_ADMIN_EMAIL?.trim()) {\n console.warn(\n \"[selva] BOOTSTRAP_INSTANCE_ADMIN_EMAIL is set but the installed @selvajs/header-auth-provider does not expose setBootstrapAllowlistPolicy. Upgrade the provider, or hand-seed header-allowlist.json.\"\n );\n }\n return;\n }\n auth.setBootstrapAllowlistPolicy(async ({ upn, email }) => {\n const hasAdmin = await getPermissionStore().hasInstanceAdmin(SYSTEM_CONTEXT);\n if (hasAdmin) return false;\n return shouldBootstrapUpn(upn, email, private_env.BOOTSTRAP_INSTANCE_ADMIN_EMAIL, getTenancy());\n });\n}\nexport {\n bootstrapUserSession as b,\n wireHeaderAuthBootstrap as w\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-bootstrap.server-DKc9-3PR.js","sources":["../../../.svelte-kit/adapter-node/chunks/auth-bootstrap.server.js"],"sourcesContent":["import { p as private_env } from \"./shared-server.js\";\nimport { randomUUID } from \"node:crypto\";\nimport { S as SYSTEM_CONTEXT, a as ALL_PLATFORM_PERMISSIONS } from \"./context.js\";\nimport { e as getDataProvider, q as getTenancy, l as getPermissionStore, k as getOrganizationProvider, a as getAuthProvider, n as getProjectProvider } from \"./providers.server.js\";\nimport { s as slugify } from \"./slug.js\";\nasync function bootstrapUserSession(user) {\n await getDataProvider().ensureUser(SYSTEM_CONTEXT, user.id);\n const tenancy = getTenancy();\n const perms = getPermissionStore();\n const hasAdmin = await perms.hasInstanceAdmin(SYSTEM_CONTEXT);\n let grantedAdminHere = false;\n if (!hasAdmin) {\n if (!shouldBootstrapAdmin(user, private_env.BOOTSTRAP_INSTANCE_ADMIN_EMAIL, tenancy)) return;\n await perms.set(SYSTEM_CONTEXT, user.id, [...ALL_PLATFORM_PERMISSIONS]);\n grantedAdminHere = true;\n }\n if (tenancy !== \"single\") return;\n const orgs = getOrganizationProvider();\n const existing = await orgs.listOrgs(SYSTEM_CONTEXT, { limit: 1 });\n if (existing.items.length > 0) return;\n if (!grantedAdminHere) {\n const userPerms = await perms.getFor(SYSTEM_CONTEXT, user.id);\n if (!userPerms.includes(\"instance_admin\")) return;\n }\n await ensureSingleTenantDefaultOrg(user);\n}\nasync function ensureSingleTenantDefaultOrg(user) {\n if (getTenancy() !== \"single\") return;\n const orgs = getOrganizationProvider();\n const existing = await orgs.listOrgs(SYSTEM_CONTEXT, { limit: 1 });\n if (existing.items.length > 0) return;\n const displayName = typeof user.metadata?.displayName === \"string\" ? user.metadata.displayName : void 0;\n const orgName = displayName?.trim() || user.email?.split(\"@\")[0]?.trim() || \"Default\";\n const slug = slugify(orgName).length >= 3 ? slugify(orgName) : \"default\";\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const org = {\n id: randomUUID(),\n name: orgName,\n slug,\n ownerId: user.id,\n createdBy: user.id,\n updatedBy: user.id,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n await orgs.createOrg(SYSTEM_CONTEXT, org);\n const projects = getProjectProvider();\n const project = {\n id: randomUUID(),\n orgId: org.id,\n name: \"Default\",\n slug: \"default\",\n visibility: \"public\",\n ownerId: user.id,\n createdBy: user.id,\n updatedBy: user.id,\n autoJoinOnUpload: false,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n await projects.createProject(SYSTEM_CONTEXT, project);\n}\nfunction shouldBootstrapAdmin(user, configuredEmail, mode) {\n const expected = configuredEmail?.trim().toLowerCase();\n if (mode === \"multi\" && !expected) return false;\n if (!expected) return true;\n const actual = user.email?.trim().toLowerCase();\n return !!actual && actual === expected;\n}\nfunction shouldBootstrapUpn(upn, email, configuredEmail, mode) {\n const expected = configuredEmail?.trim().toLowerCase();\n if (mode === \"multi\" && !expected) return false;\n if (!expected) return true;\n const candidate = (email ?? upn).trim().toLowerCase();\n return !!candidate && candidate === expected;\n}\nfunction wireHeaderAuthBootstrap() {\n const auth = getAuthProvider();\n if (!auth.proxyAuth) return;\n if (typeof auth.setBootstrapAllowlistPolicy !== \"function\") {\n if (private_env.BOOTSTRAP_INSTANCE_ADMIN_EMAIL?.trim()) {\n console.warn(\n \"[selva] BOOTSTRAP_INSTANCE_ADMIN_EMAIL is set but the installed @selvajs/header-auth-provider does not expose setBootstrapAllowlistPolicy. Upgrade the provider, or hand-seed header-allowlist.json.\"\n );\n }\n return;\n }\n auth.setBootstrapAllowlistPolicy(async ({ upn, email }) => {\n const hasAdmin = await getPermissionStore().hasInstanceAdmin(SYSTEM_CONTEXT);\n if (hasAdmin) return false;\n return shouldBootstrapUpn(upn, email, private_env.BOOTSTRAP_INSTANCE_ADMIN_EMAIL, getTenancy());\n });\n}\nexport {\n bootstrapUserSession as b,\n wireHeaderAuthBootstrap as w\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import './context-BJnJL8ES.js';
2
- import { t as providers, L as LocalComputeServerStore } from './providers.server-BYk2ehLM.js';
2
+ import { u as providers, L as LocalComputeServerStore } from './providers.server-C3fQ7ZdV.js';
3
3
 
4
4
  let cached = null;
5
5
  let inflight = null;
@@ -55,4 +55,4 @@ function isDegraded(report) {
55
55
  }
56
56
 
57
57
  export { getBootHealth as g, isDegraded as i };
58
- //# sourceMappingURL=bootHealth.server-BwEi-Qp8.js.map
58
+ //# sourceMappingURL=bootHealth.server-IPXOSqqQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootHealth.server-BwEi-Qp8.js","sources":["../../../.svelte-kit/adapter-node/chunks/bootHealth.server.js"],"sourcesContent":["import \"./context.js\";\nimport { t as providers, L as LocalComputeServerStore } from \"./providers.server.js\";\nlet cached = null;\nlet inflight = null;\nasync function run() {\n let atRestSecrets = null;\n const store = providers.data.computeServer;\n if (store instanceof LocalComputeServerStore) {\n try {\n atRestSecrets = await store.verifySecrets();\n } catch (err) {\n console.error(\"[selva][boot] verifySecrets threw — treating as failure\", err);\n atRestSecrets = {\n ok: false,\n plaintextFound: false,\n failures: [\n {\n serverId: \"(unknown)\",\n serverLabel: \"(unknown)\",\n reason: \"key_mismatch\",\n cause: err instanceof Error ? err.message : String(err)\n }\n ]\n };\n }\n }\n if (atRestSecrets && !atRestSecrets.ok) {\n for (const f of atRestSecrets.failures) {\n console.error(\n `[selva][boot] compute server \"${f.serverLabel}\" (${f.serverId}): ${f.reason}${f.cause ? ` — ${f.cause}` : \"\"}`\n );\n }\n console.error(\n \"[selva][boot] At-rest secret verification failed. /api/health will return 503. Recover by re-entering the affected apiKeys via /admin/compute, or by restoring the original SELVA_AT_REST_KEY. See docs/Troubleshooting.md.\"\n );\n }\n return {\n checkedAt: (/* @__PURE__ */ new Date()).toISOString(),\n atRestSecrets\n };\n}\nfunction getBootHealth() {\n if (cached) return Promise.resolve(cached);\n if (inflight) return inflight;\n inflight = run().then((result) => {\n cached = result;\n inflight = null;\n return result;\n });\n return inflight;\n}\nfunction isDegraded(report) {\n return report.atRestSecrets !== null && !report.atRestSecrets.ok;\n}\nexport {\n getBootHealth as g,\n isDegraded as i\n};\n"],"names":[],"mappings":";;;AAEA,IAAI,MAAM,GAAG,IAAI;AACjB,IAAI,QAAQ,GAAG,IAAI;AACnB,eAAe,GAAG,GAAG;AACrB,EAAE,IAAI,aAAa,GAAG,IAAI;AAC1B,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa;AAC5C,EAAE,IAAI,KAAK,YAAY,uBAAuB,EAAE;AAChD,IAAI,IAAI;AACR,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE;AACjD,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,GAAG,CAAC;AACnF,MAAM,aAAa,GAAG;AACtB,QAAQ,EAAE,EAAE,KAAK;AACjB,QAAQ,cAAc,EAAE,KAAK;AAC7B,QAAQ,QAAQ,EAAE;AAClB,UAAU;AACV,YAAY,QAAQ,EAAE,WAAW;AACjC,YAAY,WAAW,EAAE,WAAW;AACpC,YAAY,MAAM,EAAE,cAAc;AAClC,YAAY,KAAK,EAAE,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG;AAClE;AACA;AACA,OAAO;AACP,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE;AAC1C,IAAI,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5C,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,8BAA8B,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;AACtH,OAAO;AACP,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM;AACN,KAAK;AACL,EAAE;AACF,EAAE,OAAO;AACT,IAAI,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACzD,IAAI;AACJ,GAAG;AACH;AACA,SAAS,aAAa,GAAG;AACzB,EAAE,IAAI,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5C,EAAE,IAAI,QAAQ,EAAE,OAAO,QAAQ;AAC/B,EAAE,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AACpC,IAAI,MAAM,GAAG,MAAM;AACnB,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,QAAQ;AACjB;AACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,EAAE,OAAO,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AAClE;;;;"}
1
+ {"version":3,"file":"bootHealth.server-IPXOSqqQ.js","sources":["../../../.svelte-kit/adapter-node/chunks/bootHealth.server.js"],"sourcesContent":["import \"./context.js\";\nimport { u as providers, L as LocalComputeServerStore } from \"./providers.server.js\";\nlet cached = null;\nlet inflight = null;\nasync function run() {\n let atRestSecrets = null;\n const store = providers.data.computeServer;\n if (store instanceof LocalComputeServerStore) {\n try {\n atRestSecrets = await store.verifySecrets();\n } catch (err) {\n console.error(\"[selva][boot] verifySecrets threw — treating as failure\", err);\n atRestSecrets = {\n ok: false,\n plaintextFound: false,\n failures: [\n {\n serverId: \"(unknown)\",\n serverLabel: \"(unknown)\",\n reason: \"key_mismatch\",\n cause: err instanceof Error ? err.message : String(err)\n }\n ]\n };\n }\n }\n if (atRestSecrets && !atRestSecrets.ok) {\n for (const f of atRestSecrets.failures) {\n console.error(\n `[selva][boot] compute server \"${f.serverLabel}\" (${f.serverId}): ${f.reason}${f.cause ? ` — ${f.cause}` : \"\"}`\n );\n }\n console.error(\n \"[selva][boot] At-rest secret verification failed. /api/health will return 503. Recover by re-entering the affected apiKeys via /admin/compute, or by restoring the original SELVA_AT_REST_KEY. See docs/Troubleshooting.md.\"\n );\n }\n return {\n checkedAt: (/* @__PURE__ */ new Date()).toISOString(),\n atRestSecrets\n };\n}\nfunction getBootHealth() {\n if (cached) return Promise.resolve(cached);\n if (inflight) return inflight;\n inflight = run().then((result) => {\n cached = result;\n inflight = null;\n return result;\n });\n return inflight;\n}\nfunction isDegraded(report) {\n return report.atRestSecrets !== null && !report.atRestSecrets.ok;\n}\nexport {\n getBootHealth as g,\n isDegraded as i\n};\n"],"names":[],"mappings":";;;AAEA,IAAI,MAAM,GAAG,IAAI;AACjB,IAAI,QAAQ,GAAG,IAAI;AACnB,eAAe,GAAG,GAAG;AACrB,EAAE,IAAI,aAAa,GAAG,IAAI;AAC1B,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa;AAC5C,EAAE,IAAI,KAAK,YAAY,uBAAuB,EAAE;AAChD,IAAI,IAAI;AACR,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE;AACjD,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,GAAG,CAAC;AACnF,MAAM,aAAa,GAAG;AACtB,QAAQ,EAAE,EAAE,KAAK;AACjB,QAAQ,cAAc,EAAE,KAAK;AAC7B,QAAQ,QAAQ,EAAE;AAClB,UAAU;AACV,YAAY,QAAQ,EAAE,WAAW;AACjC,YAAY,WAAW,EAAE,WAAW;AACpC,YAAY,MAAM,EAAE,cAAc;AAClC,YAAY,KAAK,EAAE,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG;AAClE;AACA;AACA,OAAO;AACP,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE;AAC1C,IAAI,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5C,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,8BAA8B,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;AACtH,OAAO;AACP,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM;AACN,KAAK;AACL,EAAE;AACF,EAAE,OAAO;AACT,IAAI,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACzD,IAAI;AACJ,GAAG;AACH;AACA,SAAS,aAAa,GAAG;AACzB,EAAE,IAAI,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5C,EAAE,IAAI,QAAQ,EAAE,OAAO,QAAQ;AAC/B,EAAE,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AACpC,IAAI,MAAM,GAAG,MAAM;AACnB,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,QAAQ;AACjB;AACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,EAAE,OAAO,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AAClE;;;;"}
@@ -12,9 +12,9 @@ const MB = 1024 * 1024;
12
12
  const MAX_SOLVE_DURATION_MS = readPositiveInt("MAX_SOLVE_DURATION_MS", 1e5);
13
13
  const RATE_LIMIT_WINDOW_MS = readPositiveInt("COMPUTE_RATE_LIMIT_WINDOW_MS", 1e5);
14
14
  const RATE_LIMIT_MAX_REQUESTS = readPositiveInt("COMPUTE_RATE_LIMIT_MAX", 120);
15
- const MAX_GH_FILE_SIZE = readPositiveInt("MAX_GH_FILE_SIZE_BYTES", 50 * MB);
15
+ const MAX_GH_FILE_SIZE = readPositiveInt("MAX_GH_FILE_SIZE_BYTES", 300 * MB);
16
16
  const MAX_IMAGE_FILE_SIZE = readPositiveInt("MAX_IMAGE_FILE_SIZE_BYTES", 10 * MB);
17
- const COMPUTE_REQUEST_MAX_BYTES = readPositiveInt("COMPUTE_REQUEST_MAX_BYTES", 210 * MB);
17
+ const COMPUTE_REQUEST_MAX_BYTES = readPositiveInt("COMPUTE_REQUEST_MAX_BYTES", 300 * MB);
18
18
  const COMPUTE_RESPONSE_MAX_BYTES = readPositiveInt("COMPUTE_RESPONSE_MAX_BYTES", 300 * MB);
19
19
  const REMOTE_DEFINITION_MAX_BYTES = MAX_GH_FILE_SIZE;
20
20
  const REMOTE_DEFINITION_FETCH_TIMEOUT_MS = readPositiveInt(
@@ -24,4 +24,4 @@ const REMOTE_DEFINITION_FETCH_TIMEOUT_MS = readPositiveInt(
24
24
  const DEFINITION_CACHE_TTL_MS = readPositiveInt("DEFINITION_CACHE_TTL_MS", 5 * 60 * 1e3);
25
25
 
26
26
  export { COMPUTE_REQUEST_MAX_BYTES as C, DEFINITION_CACHE_TTL_MS as D, MAX_GH_FILE_SIZE as M, RATE_LIMIT_MAX_REQUESTS as R, COMPUTE_RESPONSE_MAX_BYTES as a, MAX_IMAGE_FILE_SIZE as b, MAX_SOLVE_DURATION_MS as c, RATE_LIMIT_WINDOW_MS as d, REMOTE_DEFINITION_FETCH_TIMEOUT_MS as e, REMOTE_DEFINITION_MAX_BYTES as f };
27
- //# sourceMappingURL=computeLimits-DPO6NbLd.js.map
27
+ //# sourceMappingURL=computeLimits-DnJ77wR9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeLimits-DnJ77wR9.js","sources":["../../../.svelte-kit/adapter-node/chunks/computeLimits.js"],"sourcesContent":["function readPositiveInt(name, fallback) {\n const raw = process.env[name];\n if (!raw) return fallback;\n const parsed = Number(raw);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n console.warn(`[computeLimits] Invalid ${name}=${raw}, falling back to ${fallback}`);\n return fallback;\n }\n return Math.floor(parsed);\n}\nconst MB = 1024 * 1024;\nconst MAX_SOLVE_DURATION_MS = readPositiveInt(\"MAX_SOLVE_DURATION_MS\", 1e5);\nconst RATE_LIMIT_WINDOW_MS = readPositiveInt(\"COMPUTE_RATE_LIMIT_WINDOW_MS\", 1e5);\nconst RATE_LIMIT_MAX_REQUESTS = readPositiveInt(\"COMPUTE_RATE_LIMIT_MAX\", 120);\nconst MAX_GH_FILE_SIZE = readPositiveInt(\"MAX_GH_FILE_SIZE_BYTES\", 300 * MB);\nconst MAX_IMAGE_FILE_SIZE = readPositiveInt(\"MAX_IMAGE_FILE_SIZE_BYTES\", 10 * MB);\nconst COMPUTE_REQUEST_MAX_BYTES = readPositiveInt(\"COMPUTE_REQUEST_MAX_BYTES\", 300 * MB);\nconst COMPUTE_RESPONSE_MAX_BYTES = readPositiveInt(\"COMPUTE_RESPONSE_MAX_BYTES\", 300 * MB);\nconst REMOTE_DEFINITION_MAX_BYTES = MAX_GH_FILE_SIZE;\nconst REMOTE_DEFINITION_FETCH_TIMEOUT_MS = readPositiveInt(\n \"REMOTE_DEFINITION_FETCH_TIMEOUT_MS\",\n 3e4\n);\nconst DEFINITION_CACHE_TTL_MS = readPositiveInt(\"DEFINITION_CACHE_TTL_MS\", 5 * 60 * 1e3);\nexport {\n COMPUTE_REQUEST_MAX_BYTES as C,\n DEFINITION_CACHE_TTL_MS as D,\n MAX_GH_FILE_SIZE as M,\n RATE_LIMIT_MAX_REQUESTS as R,\n COMPUTE_RESPONSE_MAX_BYTES as a,\n MAX_IMAGE_FILE_SIZE as b,\n MAX_SOLVE_DURATION_MS as c,\n RATE_LIMIT_WINDOW_MS as d,\n REMOTE_DEFINITION_FETCH_TIMEOUT_MS as e,\n REMOTE_DEFINITION_MAX_BYTES as f\n};\n"],"names":[],"mappings":"AAAA,SAAS,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE;AACzC,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,QAAQ;AAC3B,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;AAC5B,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;AAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvF,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3B;AACA,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI;AACjB,MAAC,qBAAqB,GAAG,eAAe,CAAC,uBAAuB,EAAE,GAAG;AACrE,MAAC,oBAAoB,GAAG,eAAe,CAAC,8BAA8B,EAAE,GAAG;AAC3E,MAAC,uBAAuB,GAAG,eAAe,CAAC,wBAAwB,EAAE,GAAG;AACxE,MAAC,gBAAgB,GAAG,eAAe,CAAC,wBAAwB,EAAE,GAAG,GAAG,EAAE;AACtE,MAAC,mBAAmB,GAAG,eAAe,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE;AAC3E,MAAC,yBAAyB,GAAG,eAAe,CAAC,2BAA2B,EAAE,GAAG,GAAG,EAAE;AAClF,MAAC,0BAA0B,GAAG,eAAe,CAAC,4BAA4B,EAAE,GAAG,GAAG,EAAE;AACpF,MAAC,2BAA2B,GAAG;AAC/B,MAAC,kCAAkC,GAAG,eAAe;AAC1D,EAAE,oCAAoC;AACtC,EAAE;AACF;AACK,MAAC,uBAAuB,GAAG,eAAe,CAAC,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { redirect, isHttpError } from '@sveltejs/kit';
2
2
  import { S as SYSTEM_CONTEXT } from './context-BJnJL8ES.js';
3
- import { t as providers } from './providers.server-BYk2ehLM.js';
4
- import { g as getBootHealth } from './bootHealth.server-BwEi-Qp8.js';
5
- import { w as wireHeaderAuthBootstrap, b as bootstrapUserSession } from './auth-bootstrap.server-BOTw9HkY.js';
3
+ import { u as providers } from './providers.server-C3fQ7ZdV.js';
4
+ import { g as getBootHealth } from './bootHealth.server-IPXOSqqQ.js';
5
+ import { w as wireHeaderAuthBootstrap, b as bootstrapUserSession } from './auth-bootstrap.server-DKc9-3PR.js';
6
6
  import { g as getRefreshToken, h as setSessionCookie, f as setRefreshCookie, b as clearRefreshCookie } from './admin-auth.server-45kKyH82.js';
7
7
  import 'zod';
8
8
  import './shared-server-C3WdcJCQ.js';
@@ -97,7 +97,7 @@ const handle = async ({ event, resolve }) => {
97
97
  if (await isFirstRun()) {
98
98
  if (isJsonApiRoute) {
99
99
  return applySecurityHeaders(
100
- new Response(JSON.stringify({ error: "Setup required" }), {
100
+ new Response(JSON.stringify({ message: "Setup required", code: "SETUP_REQUIRED" }), {
101
101
  status: 503,
102
102
  headers: { "Content-Type": "application/json" }
103
103
  }),
@@ -133,7 +133,7 @@ const handle = async ({ event, resolve }) => {
133
133
  if (!user) {
134
134
  if (isJsonApiRoute) {
135
135
  return applySecurityHeaders(
136
- new Response(JSON.stringify({ error: "Unauthorized" }), {
136
+ new Response(JSON.stringify({ message: "Unauthorized", code: "UNAUTHORIZED" }), {
137
137
  status: 401,
138
138
  headers: { "Content-Type": "application/json" }
139
139
  }),
@@ -200,10 +200,11 @@ const handleError = ({
200
200
  event
201
201
  }) => {
202
202
  if (isHttpError(error)) {
203
- return { message: error.body.message };
203
+ const body = error.body;
204
+ return { message: body.message, code: body.code, fields: body.fields };
204
205
  }
205
206
  if (status === 404) {
206
- return { message: "Page not found." };
207
+ return { message: "Page not found.", code: "NOT_FOUND" };
207
208
  }
208
209
  const rendered = error instanceof Error ? error.stack ?? error.message : (() => {
209
210
  try {
@@ -218,8 +219,8 @@ const handleError = ({
218
219
  `[Unhandled error] ${event.request.method} ${event.url.pathname}
219
220
  ${rendered}${cause}`
220
221
  );
221
- return { message: "An unexpected error occurred." };
222
+ return { message: "An unexpected error occurred.", code: "INTERNAL" };
222
223
  };
223
224
 
224
225
  export { handle, handleError, isPublicRoute, isStaticAsset };
225
- //# sourceMappingURL=hooks.server-BHmZpgdz.js.map
226
+ //# sourceMappingURL=hooks.server-BZKLAgww.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.server-BZKLAgww.js","sources":["../../../.svelte-kit/adapter-node/entries/hooks.server.js"],"sourcesContent":["import { redirect, isHttpError } from \"@sveltejs/kit\";\nimport { S as SYSTEM_CONTEXT } from \"../chunks/context.js\";\nimport { u as providers } from \"../chunks/providers.server.js\";\nimport { g as getBootHealth } from \"../chunks/bootHealth.server.js\";\nimport { w as wireHeaderAuthBootstrap, b as bootstrapUserSession } from \"../chunks/auth-bootstrap.server.js\";\nimport { g as getRefreshToken, h as setSessionCookie, f as setRefreshCookie, b as clearRefreshCookie } from \"../chunks/admin-auth.server.js\";\nfunction emptyProfile(userId) {\n return { userId, starredDefinitions: [], recentRuns: [] };\n}\nlet headerAuthBootstrapWired = false;\nlet bootHealthKicked = false;\nlet proxyAuthLoginMissWarned = false;\nlet firstRunResolved = false;\nasync function isFirstRun() {\n if (firstRunResolved) return false;\n const usersPage = await providers.auth.listUsers({ limit: 1 });\n if (usersPage === null) {\n firstRunResolved = true;\n return false;\n }\n if (usersPage.items.length === 0) return true;\n firstRunResolved = true;\n return false;\n}\nasync function buildContext(user, sessionToken) {\n let actingOrgId;\n let orgPermissions = [];\n const platformPermissions = await providers.data.permissions.getFor(SYSTEM_CONTEXT, user.id);\n const membership = await providers.data.orgs.findUserMembership(SYSTEM_CONTEXT, user.id);\n if (membership) {\n actingOrgId = membership.org.id;\n orgPermissions = membership.member.permissions;\n }\n if (!actingOrgId && platformPermissions.includes(\"instance_admin\")) {\n const firstOrgPage = await providers.data.orgs.listOrgs(SYSTEM_CONTEXT, { limit: 1 });\n const firstOrg = firstOrgPage.items[0];\n if (firstOrg) actingOrgId = firstOrg.id;\n }\n return {\n userId: user.id,\n actingOrgId,\n platformPermissions,\n orgPermissions,\n adapterContext: sessionToken ? { sessionToken } : void 0\n };\n}\nconst PUBLIC_PAGE_ROUTES = /* @__PURE__ */ new Set([\n \"/\",\n // landing — guests see it; authed users get redirected by +page.server.ts\n \"/login\",\n \"/setup\",\n \"/accept-invite\"\n]);\nconst PUBLIC_PATH_PREFIXES = [\"/auth/\", \"/logout\"];\nconst PUBLIC_API_ROUTES = /* @__PURE__ */ new Set([\"/api/health\"]);\nconst STATIC_ASSET_PREFIXES = [\"/_app/\", \"/favicon/\"];\nconst STATIC_ASSET_PATHS = /* @__PURE__ */ new Set([\"/favicon.svg\", \"/robots.txt\"]);\nfunction isStaticAsset(pathname) {\n if (STATIC_ASSET_PATHS.has(pathname)) return true;\n return STATIC_ASSET_PREFIXES.some((p) => pathname.startsWith(p));\n}\nfunction isPublicRoute(pathname) {\n if (PUBLIC_PAGE_ROUTES.has(pathname)) return true;\n if (PUBLIC_API_ROUTES.has(pathname)) return true;\n return PUBLIC_PATH_PREFIXES.some((p) => pathname.startsWith(p));\n}\nconst handle = async ({ event, resolve }) => {\n event.locals.providers = providers;\n if (!headerAuthBootstrapWired) {\n wireHeaderAuthBootstrap();\n headerAuthBootstrapWired = true;\n }\n if (!bootHealthKicked) {\n bootHealthKicked = true;\n void getBootHealth();\n }\n const { pathname } = event.url;\n if (isStaticAsset(pathname)) {\n return applySecurityHeaders(await resolve(event), pathname);\n }\n if (pathname === \"/api/health\") {\n return applySecurityHeaders(await resolve(event), pathname);\n }\n const publicRoute = isPublicRoute(pathname);\n const isJsonApiRoute = pathname.startsWith(\"/api/\") || pathname.startsWith(\"/admin/api/\");\n if (!publicRoute) {\n if (await isFirstRun()) {\n if (isJsonApiRoute) {\n return applySecurityHeaders(\n new Response(JSON.stringify({ message: \"Setup required\", code: \"SETUP_REQUIRED\" }), {\n status: 503,\n headers: { \"Content-Type\": \"application/json\" }\n }),\n pathname\n );\n }\n redirect(303, \"/setup\");\n }\n }\n const needsAuth = !publicRoute;\n if (needsAuth) {\n let token = event.cookies.get(\"admin_session\") ?? \"\";\n let user = await providers.auth.verifyToken(token);\n if (!user) {\n const refreshToken = getRefreshToken(event.cookies);\n const oauth = providers.auth.oauth;\n if (refreshToken && oauth) {\n const refreshed = await oauth.refreshSession(refreshToken);\n if (refreshed) {\n setSessionCookie(event.cookies, refreshed.sessionToken);\n setRefreshCookie(event.cookies, refreshed.refreshToken);\n token = refreshed.sessionToken;\n user = await providers.auth.verifyToken(token);\n } else {\n clearRefreshCookie(event.cookies);\n }\n }\n }\n if (!user && providers.auth.proxyAuth) {\n user = await providers.auth.proxyAuth.identifyFromHeaders(event.request.headers);\n if (user) await bootstrapUserSession(user);\n }\n if (!user) {\n if (isJsonApiRoute) {\n return applySecurityHeaders(\n new Response(JSON.stringify({ message: \"Unauthorized\", code: \"UNAUTHORIZED\" }), {\n status: 401,\n headers: { \"Content-Type\": \"application/json\" }\n }),\n pathname\n );\n }\n redirect(303, `/login?redirectTo=${encodeURIComponent(pathname)}`);\n }\n await providers.data.ensureUser(SYSTEM_CONTEXT, user.id);\n event.locals.user = user;\n event.locals.profile = await providers.data.userProfile.getProfile(SYSTEM_CONTEXT, user.id) ?? emptyProfile(user.id);\n event.locals.ctx = await buildContext(user, token);\n } else {\n const isPublicPage = PUBLIC_PAGE_ROUTES.has(pathname);\n const token = isPublicPage ? event.cookies.get(\"admin_session\") ?? \"\" : \"\";\n let user = token ? await providers.auth.verifyToken(token) : null;\n if (!user && isPublicPage && providers.auth.proxyAuth) {\n user = await providers.auth.proxyAuth.identifyFromHeaders(event.request.headers);\n if (!user && pathname === \"/login\" && !proxyAuthLoginMissWarned) {\n proxyAuthLoginMissWarned = true;\n const proxyAuth = providers.auth.proxyAuth;\n const noHeaders = proxyAuth.hasNoIdentityHeaders(event.request.headers);\n const configured = proxyAuth.configuredHeaderNames.join(\", \");\n if (noHeaders) {\n console.warn(\n `[HeaderAuth] /login was hit and NONE of the configured identity headers (${configured}) arrived on the request. The forward-auth proxy is not reaching this process, or it is not forwarding the configured headers. See the @selvajs/header-auth-provider README \"Verification\" section.`\n );\n } else {\n console.warn(\n `[HeaderAuth] /login was hit but the UPN header was missing or the user is not allowlisted. Configured headers: ${configured}. Some headers arrived but identification still failed — check that the UPN header is populated and that the user has been added to header-allowlist.json.`\n );\n }\n }\n }\n if (user) {\n await providers.data.ensureUser(SYSTEM_CONTEXT, user.id);\n event.locals.user = user;\n event.locals.profile = await providers.data.userProfile.getProfile(SYSTEM_CONTEXT, user.id) ?? emptyProfile(user.id);\n event.locals.ctx = await buildContext(user, token);\n }\n }\n return applySecurityHeaders(await resolve(event), pathname);\n};\nfunction applySecurityHeaders(response, pathname) {\n response.headers.set(\"X-Content-Type-Options\", \"nosniff\");\n response.headers.set(\"Referrer-Policy\", \"strict-origin-when-cross-origin\");\n response.headers.set(\n \"Permissions-Policy\",\n \"accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()\"\n );\n if (process.env.NODE_ENV === \"production\") {\n response.headers.set(\"Strict-Transport-Security\", \"max-age=31536000; includeSubDomains\");\n }\n if (pathname.startsWith(\"/_app/\")) {\n response.headers.set(\"Cache-Control\", \"public, max-age=31536000, immutable\");\n } else if (pathname.startsWith(\"/favicon/\") || pathname === \"/favicon.svg\" || pathname === \"/robots.txt\") {\n response.headers.set(\"Cache-Control\", \"public, max-age=604800\");\n }\n return response;\n}\nconst handleError = ({\n error,\n status,\n event\n}) => {\n if (isHttpError(error)) {\n const body = error.body;\n return { message: body.message, code: body.code, fields: body.fields };\n }\n if (status === 404) {\n return { message: \"Page not found.\", code: \"NOT_FOUND\" };\n }\n const rendered = error instanceof Error ? error.stack ?? error.message : (() => {\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n })();\n const cause = error instanceof Error && error.cause ? `\n caused by: ${error.cause}` : \"\";\n console.error(\n `[Unhandled error] ${event.request.method} ${event.url.pathname}\n ${rendered}${cause}`\n );\n return { message: \"An unexpected error occurred.\", code: \"INTERNAL\" };\n};\nexport {\n handle,\n handleError,\n isPublicRoute,\n isStaticAsset\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  const name = "@selvajs/selva";
2
- const version = "4.4.0";
2
+ const version = "4.5.1";
3
3
  const description = "Selva — self-contained Grasshopper-driven web app. Install, configure via .env, deploy.";
4
4
  const license = "MIT";
5
5
  const publishConfig = { "access": "public" };
@@ -26,4 +26,4 @@ const pkg = {
26
26
  };
27
27
 
28
28
  export { pkg as p };
29
- //# sourceMappingURL=package-CGdqH7nx.js.map
29
+ //# sourceMappingURL=package-K5EkWw87.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-CGdqH7nx.js","sources":["../../../.svelte-kit/adapter-node/chunks/package.js"],"sourcesContent":["const name = \"@selvajs/selva\";\nconst version = \"4.4.0\";\nconst description = \"Selva — self-contained Grasshopper-driven web app. Install, configure via .env, deploy.\";\nconst license = \"MIT\";\nconst publishConfig = { \"access\": \"public\" };\nconst type = \"module\";\nconst main = \"./build/index.js\";\nconst files = [\"build\", \"templates\"];\nconst engines = { \"node\": \">=20.6.0\" };\nconst scripts = { \"dev\": \"vite dev\", \"build\": \"rimraf build && vite build && node ./scripts/generate-templates.js\", \"preview\": \"vite preview\", \"start\": \"node build/index.js\", \"clean\": \"rimraf build templates\", \"prepare\": \"svelte-kit sync || echo ''\", \"check\": \"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json\", \"type-check\": \"tsc --noEmit\", \"test\": \"vitest run\", \"test:watch\": \"vitest\", \"test:e2e\": \"playwright test\" };\nconst dependencies = { \"@lucide/svelte\": \"catalog:\", \"@selvajs/compute\": \"catalog:\", \"@supabase/supabase-js\": \"^2.104.1\", \"@sveltejs/kit\": \"catalog:\", \"bits-ui\": \"^2.18.0\", \"clsx\": \"catalog:\", \"mode-watcher\": \"catalog:\", \"rhino3dm\": \"8.17.0\", \"sharp\": \"^0.34.5\", \"tailwind-merge\": \"catalog:\", \"tailwind-variants\": \"^3.2.2\", \"three\": \"catalog:\", \"zod\": \"^4.3.6\" };\nconst devDependencies = { \"@selvajs/config\": \"workspace:*\", \"@selvajs/header-auth-provider\": \"workspace:*\", \"@selvajs/local-provider\": \"workspace:*\", \"@selvajs/platform\": \"workspace:*\", \"@selvajs/schemas\": \"workspace:*\", \"@selvajs/supabase-provider\": \"workspace:*\", \"@selvajs/ui\": \"workspace:*\", \"@playwright/test\": \"catalog:\", \"@sveltejs/adapter-node\": \"^5.5.4\", \"@types/three\": \"catalog:\", \"rimraf\": \"catalog:\", \"tw-animate-css\": \"catalog:\", \"vitest\": \"catalog:\" };\nconst pkg = {\n name,\n version,\n description,\n license,\n publishConfig,\n type,\n main,\n files,\n engines,\n scripts,\n dependencies,\n devDependencies\n};\nexport {\n pkg as p\n};\n"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,gBAAgB;AAC7B,MAAM,OAAO,GAAG,OAAO;AACvB,MAAM,WAAW,GAAG,yFAAyF;AAC7G,MAAM,OAAO,GAAG,KAAK;AACrB,MAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC5C,MAAM,IAAI,GAAG,QAAQ;AACrB,MAAM,IAAI,GAAG,kBAAkB;AAC/B,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC;AACpC,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE;AACtC,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,oEAAoE,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,4BAA4B,EAAE,OAAO,EAAE,4DAA4D,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE;AAC7a,MAAM,YAAY,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,uBAAuB,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC1W,MAAM,eAAe,GAAG,EAAE,iBAAiB,EAAE,aAAa,EAAE,+BAA+B,EAAE,aAAa,EAAE,yBAAyB,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,4BAA4B,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,wBAAwB,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC7c,MAAC,GAAG,GAAG;AACZ,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,WAAW;AACb,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,YAAY;AACd,EAAE;AACF;;;;"}
1
+ {"version":3,"file":"package-K5EkWw87.js","sources":["../../../.svelte-kit/adapter-node/chunks/package.js"],"sourcesContent":["const name = \"@selvajs/selva\";\nconst version = \"4.5.1\";\nconst description = \"Selva — self-contained Grasshopper-driven web app. Install, configure via .env, deploy.\";\nconst license = \"MIT\";\nconst publishConfig = { \"access\": \"public\" };\nconst type = \"module\";\nconst main = \"./build/index.js\";\nconst files = [\"build\", \"templates\"];\nconst engines = { \"node\": \">=20.6.0\" };\nconst scripts = { \"dev\": \"vite dev\", \"build\": \"rimraf build && vite build && node ./scripts/generate-templates.js\", \"preview\": \"vite preview\", \"start\": \"node build/index.js\", \"clean\": \"rimraf build templates\", \"prepare\": \"svelte-kit sync || echo ''\", \"check\": \"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json\", \"type-check\": \"tsc --noEmit\", \"test\": \"vitest run\", \"test:watch\": \"vitest\", \"test:e2e\": \"playwright test\" };\nconst dependencies = { \"@lucide/svelte\": \"catalog:\", \"@selvajs/compute\": \"catalog:\", \"@supabase/supabase-js\": \"^2.104.1\", \"@sveltejs/kit\": \"catalog:\", \"bits-ui\": \"^2.18.0\", \"clsx\": \"catalog:\", \"mode-watcher\": \"catalog:\", \"rhino3dm\": \"8.17.0\", \"sharp\": \"^0.34.5\", \"tailwind-merge\": \"catalog:\", \"tailwind-variants\": \"^3.2.2\", \"three\": \"catalog:\", \"zod\": \"^4.3.6\" };\nconst devDependencies = { \"@selvajs/config\": \"workspace:*\", \"@selvajs/header-auth-provider\": \"workspace:*\", \"@selvajs/local-provider\": \"workspace:*\", \"@selvajs/platform\": \"workspace:*\", \"@selvajs/schemas\": \"workspace:*\", \"@selvajs/supabase-provider\": \"workspace:*\", \"@selvajs/ui\": \"workspace:*\", \"@playwright/test\": \"catalog:\", \"@sveltejs/adapter-node\": \"^5.5.4\", \"@types/three\": \"catalog:\", \"rimraf\": \"catalog:\", \"tw-animate-css\": \"catalog:\", \"vitest\": \"catalog:\" };\nconst pkg = {\n name,\n version,\n description,\n license,\n publishConfig,\n type,\n main,\n files,\n engines,\n scripts,\n dependencies,\n devDependencies\n};\nexport {\n pkg as p\n};\n"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,gBAAgB;AAC7B,MAAM,OAAO,GAAG,OAAO;AACvB,MAAM,WAAW,GAAG,yFAAyF;AAC7G,MAAM,OAAO,GAAG,KAAK;AACrB,MAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC5C,MAAM,IAAI,GAAG,QAAQ;AACrB,MAAM,IAAI,GAAG,kBAAkB;AAC/B,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC;AACpC,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE;AACtC,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,oEAAoE,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,4BAA4B,EAAE,OAAO,EAAE,4DAA4D,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE;AAC7a,MAAM,YAAY,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,uBAAuB,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC1W,MAAM,eAAe,GAAG,EAAE,iBAAiB,EAAE,aAAa,EAAE,+BAA+B,EAAE,aAAa,EAAE,yBAAyB,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,4BAA4B,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,wBAAwB,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC7c,MAAC,GAAG,GAAG;AACZ,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,WAAW;AACb,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,YAAY;AACd,EAAE;AACF;;;;"}
@@ -1,8 +1,8 @@
1
- import { l as getPermissionStore } from './providers.server-BYk2ehLM.js';
1
+ import { l as getPermissionStore } from './providers.server-C3fQ7ZdV.js';
2
2
 
3
3
  async function setUserPlatformPermissions(ctx, userId, permissions) {
4
4
  return getPermissionStore().set(ctx, userId, permissions);
5
5
  }
6
6
 
7
7
  export { setUserPlatformPermissions as s };
8
- //# sourceMappingURL=permissions.server-D1KUdeD1.js.map
8
+ //# sourceMappingURL=permissions.server-zs4XAJCp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.server-D1KUdeD1.js","sources":["../../../.svelte-kit/adapter-node/chunks/permissions.server.js"],"sourcesContent":["import { l as getPermissionStore } from \"./providers.server.js\";\nasync function setUserPlatformPermissions(ctx, userId, permissions) {\n return getPermissionStore().set(ctx, userId, permissions);\n}\nexport {\n setUserPlatformPermissions as s\n};\n"],"names":[],"mappings":";;AACA,eAAe,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AACpE,EAAE,OAAO,kBAAkB,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC;AAC3D;;;;"}
1
+ {"version":3,"file":"permissions.server-zs4XAJCp.js","sources":["../../../.svelte-kit/adapter-node/chunks/permissions.server.js"],"sourcesContent":["import { l as getPermissionStore } from \"./providers.server.js\";\nasync function setUserPlatformPermissions(ctx, userId, permissions) {\n return getPermissionStore().set(ctx, userId, permissions);\n}\nexport {\n setUserPlatformPermissions as s\n};\n"],"names":[],"mappings":";;AACA,eAAe,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AACpE,EAAE,OAAO,kBAAkB,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC;AAC3D;;;;"}
@@ -79,6 +79,10 @@ class NoopEventSink {
79
79
  async emit(_event) {
80
80
  }
81
81
  }
82
+ class NoopSolveMetricSink {
83
+ async record(_ctx, _metric) {
84
+ }
85
+ }
82
86
  const nowIso = () => (/* @__PURE__ */ new Date()).toISOString();
83
87
  function auditUpdate(ctx, fallbackActor) {
84
88
  return {
@@ -3197,6 +3201,34 @@ class SupabaseEventSink {
3197
3201
  }
3198
3202
  }
3199
3203
  }
3204
+ class SupabaseSolveMetricSink {
3205
+ constructor(clients) {
3206
+ this.clients = clients;
3207
+ }
3208
+ clients;
3209
+ async record(_ctx, metric) {
3210
+ try {
3211
+ const { error } = await this.clients.serviceClient.from("solve_metrics").insert({
3212
+ actor_id: _ctx.userId || "system",
3213
+ definition_url: metric.definitionUrl,
3214
+ definition_id: metric.definitionId,
3215
+ version_id: metric.versionId,
3216
+ channel: metric.channel,
3217
+ org_id: metric.orgId,
3218
+ duration_ms: metric.durationMs,
3219
+ ok: metric.ok,
3220
+ failure_kind: metric.failureKind,
3221
+ error_count: metric.errorCount,
3222
+ warning_count: metric.warningCount
3223
+ });
3224
+ if (error) {
3225
+ console.error("[SupabaseSolveMetricSink] insert failed:", error.message, { metric });
3226
+ }
3227
+ } catch (err) {
3228
+ console.error("[SupabaseSolveMetricSink] unexpected error:", err, { metric });
3229
+ }
3230
+ }
3231
+ }
3200
3232
  const MAX_LIMIT = 200;
3201
3233
  const DEFAULT_LIMIT = 100;
3202
3234
  const ISO_RE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})$/;
@@ -3451,6 +3483,7 @@ const notImplementedGrantStore = {
3451
3483
  class SupabaseDataProvider {
3452
3484
  constructor(clients, events) {
3453
3485
  this.clients = clients;
3486
+ this.solveMetrics = new SupabaseSolveMetricSink(clients);
3454
3487
  this.orgs = new SupabaseOrgStore(clients, events);
3455
3488
  this.projects = new SupabaseProjectStore(clients, events);
3456
3489
  this.definitions = new SupabaseDefinitionStore(clients, events);
@@ -3473,6 +3506,12 @@ class SupabaseDataProvider {
3473
3506
  permissions;
3474
3507
  platformProjectGrants;
3475
3508
  auditQuery;
3509
+ /**
3510
+ * Per-solve timing sink, built from the same client bundle. Exposed so the
3511
+ * app's provider wiring can hand it to `SelvaConfig.solveMetrics` without
3512
+ * constructing a second Supabase client.
3513
+ */
3514
+ solveMetrics;
3476
3515
  static fromEnv(env, events) {
3477
3516
  const supabaseUrl = env.SUPABASE_URL;
3478
3517
  const anonKey = env.SUPABASE_ANON_KEY;
@@ -4278,6 +4317,13 @@ function pickStorage(e) {
4278
4317
  throw new Error(`Unknown SELVA_STORAGE_PROVIDER="${choice}". Expected: local | supabase.`);
4279
4318
  }
4280
4319
  }
4320
+ function pickSolveMetrics(data) {
4321
+ const candidate = data.solveMetrics;
4322
+ if (candidate && typeof candidate.record === "function") {
4323
+ return candidate;
4324
+ }
4325
+ return void 0;
4326
+ }
4281
4327
  function pickTenancy(e) {
4282
4328
  const choice = (e.SELVA_TENANCY ?? "single").toLowerCase();
4283
4329
  if (choice !== "single" && choice !== "multi") {
@@ -4285,25 +4331,29 @@ function pickTenancy(e) {
4285
4331
  }
4286
4332
  return choice;
4287
4333
  }
4288
- const defaultConfig = defineConfig((e) => ({
4289
- tenancy: pickTenancy(e),
4290
- flags: {
4291
- ALLOW_CROSS_ORG_PUBLIC: envBool(e, "SELVA_FLAG_ALLOW_CROSS_ORG_PUBLIC"),
4292
- ALLOW_ORG_COMPUTE_OVERRIDE: envBool(e, "SELVA_FLAG_ALLOW_ORG_COMPUTE_OVERRIDE"),
4293
- ALLOW_ORG_CREATION: envBool(e, "SELVA_FLAG_ALLOW_ORG_CREATION"),
4294
- ENABLE_PLATFORM_PROJECTS: envBool(e, "SELVA_FLAG_ENABLE_PLATFORM_PROJECTS"),
4295
- ENABLE_SHARING: envBool(e, "SELVA_FLAG_ENABLE_SHARING")
4296
- },
4297
- branding: {
4298
- name: e.SELVA_BRAND_NAME,
4299
- copyrightName: e.SELVA_BRAND_COPYRIGHT_NAME,
4300
- tagline: e.SELVA_BRAND_TAGLINE,
4301
- description: e.SELVA_BRAND_DESCRIPTION
4302
- },
4303
- auth: pickAuth(e),
4304
- data: pickData(e),
4305
- storage: pickStorage(e)
4306
- }));
4334
+ const defaultConfig = defineConfig((e) => {
4335
+ const data = pickData(e);
4336
+ return {
4337
+ tenancy: pickTenancy(e),
4338
+ flags: {
4339
+ ALLOW_CROSS_ORG_PUBLIC: envBool(e, "SELVA_FLAG_ALLOW_CROSS_ORG_PUBLIC"),
4340
+ ALLOW_ORG_COMPUTE_OVERRIDE: envBool(e, "SELVA_FLAG_ALLOW_ORG_COMPUTE_OVERRIDE"),
4341
+ ALLOW_ORG_CREATION: envBool(e, "SELVA_FLAG_ALLOW_ORG_CREATION"),
4342
+ ENABLE_PLATFORM_PROJECTS: envBool(e, "SELVA_FLAG_ENABLE_PLATFORM_PROJECTS"),
4343
+ ENABLE_SHARING: envBool(e, "SELVA_FLAG_ENABLE_SHARING")
4344
+ },
4345
+ branding: {
4346
+ name: e.SELVA_BRAND_NAME,
4347
+ copyrightName: e.SELVA_BRAND_COPYRIGHT_NAME,
4348
+ tagline: e.SELVA_BRAND_TAGLINE,
4349
+ description: e.SELVA_BRAND_DESCRIPTION
4350
+ },
4351
+ auth: pickAuth(e),
4352
+ data,
4353
+ storage: pickStorage(e),
4354
+ solveMetrics: pickSolveMetrics(data)
4355
+ };
4356
+ });
4307
4357
  async function loadRawConfig() {
4308
4358
  const override = private_env.SELVA_CONFIG_PATH;
4309
4359
  if (!override) {
@@ -4391,9 +4441,16 @@ function getPermissionStore() {
4391
4441
  function getPlatformProjectGrantStore() {
4392
4442
  return resolveProviders().data.platformProjectGrants;
4393
4443
  }
4444
+ let _solveMetricSink;
4445
+ function getSolveMetricSink() {
4446
+ if (!_solveMetricSink) {
4447
+ _solveMetricSink = resolveProviders().solveMetrics ?? new NoopSolveMetricSink();
4448
+ }
4449
+ return _solveMetricSink;
4450
+ }
4394
4451
  function getAuditQuery() {
4395
4452
  return providers.data.auditQuery ?? null;
4396
4453
  }
4397
4454
 
4398
- export { LocalComputeServerStore as L, MAX_PAGE_LIMIT as M, ProviderError as P, getAuthProvider as a, getBranding as b, getComputeServerConfigStore as c, definitionPaths as d, getDataProvider as e, flag as f, getAuditQuery as g, getDefinitionMeta as h, getDefinitionService as i, getInviteStore as j, getOrganizationProvider as k, getPermissionStore as l, getPlatformProjectGrantStore as m, getProjectProvider as n, getStorageProvider as o, getTenancy as p, getUserProfileStore as q, isOrgServer as r, isPlatformServer as s, providers as t };
4399
- //# sourceMappingURL=providers.server-BYk2ehLM.js.map
4455
+ export { LocalComputeServerStore as L, MAX_PAGE_LIMIT as M, ProviderError as P, getAuthProvider as a, getBranding as b, getComputeServerConfigStore as c, definitionPaths as d, getDataProvider as e, flag as f, getAuditQuery as g, getDefinitionMeta as h, getDefinitionService as i, getInviteStore as j, getOrganizationProvider as k, getPermissionStore as l, getPlatformProjectGrantStore as m, getProjectProvider as n, getSolveMetricSink as o, getStorageProvider as p, getTenancy as q, getUserProfileStore as r, isOrgServer as s, isPlatformServer as t, providers as u };
4456
+ //# sourceMappingURL=providers.server-C3fQ7ZdV.js.map