@selvajs/selva 2.0.0

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 (769) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/build/client/_app/immutable/assets/0.B0phAlf7.css +1 -0
  4. package/build/client/_app/immutable/assets/0.B0phAlf7.css.br +0 -0
  5. package/build/client/_app/immutable/assets/0.B0phAlf7.css.gz +0 -0
  6. package/build/client/_app/immutable/assets/20.DzF5JyuX.css +1 -0
  7. package/build/client/_app/immutable/assets/20.DzF5JyuX.css.br +0 -0
  8. package/build/client/_app/immutable/assets/20.DzF5JyuX.css.gz +0 -0
  9. package/build/client/_app/immutable/assets/index.CV-KWLNP.css +1 -0
  10. package/build/client/_app/immutable/assets/index.CV-KWLNP.css.br +1 -0
  11. package/build/client/_app/immutable/assets/index.CV-KWLNP.css.gz +0 -0
  12. package/build/client/_app/immutable/chunks/1s2jTHrf.js +1 -0
  13. package/build/client/_app/immutable/chunks/1s2jTHrf.js.br +0 -0
  14. package/build/client/_app/immutable/chunks/1s2jTHrf.js.gz +0 -0
  15. package/build/client/_app/immutable/chunks/2XlIPTRw.js +1 -0
  16. package/build/client/_app/immutable/chunks/2XlIPTRw.js.br +1 -0
  17. package/build/client/_app/immutable/chunks/2XlIPTRw.js.gz +0 -0
  18. package/build/client/_app/immutable/chunks/2_FEXmq1.js +9 -0
  19. package/build/client/_app/immutable/chunks/2_FEXmq1.js.br +0 -0
  20. package/build/client/_app/immutable/chunks/2_FEXmq1.js.gz +0 -0
  21. package/build/client/_app/immutable/chunks/2dX6Wjni.js +1 -0
  22. package/build/client/_app/immutable/chunks/2dX6Wjni.js.br +0 -0
  23. package/build/client/_app/immutable/chunks/2dX6Wjni.js.gz +0 -0
  24. package/build/client/_app/immutable/chunks/4tskcAVN.js +1 -0
  25. package/build/client/_app/immutable/chunks/4tskcAVN.js.br +0 -0
  26. package/build/client/_app/immutable/chunks/4tskcAVN.js.gz +0 -0
  27. package/build/client/_app/immutable/chunks/4y4xLOS_.js +1 -0
  28. package/build/client/_app/immutable/chunks/4y4xLOS_.js.br +0 -0
  29. package/build/client/_app/immutable/chunks/4y4xLOS_.js.gz +0 -0
  30. package/build/client/_app/immutable/chunks/AEyooZaf.js +1 -0
  31. package/build/client/_app/immutable/chunks/AEyooZaf.js.br +0 -0
  32. package/build/client/_app/immutable/chunks/AEyooZaf.js.gz +0 -0
  33. package/build/client/_app/immutable/chunks/B1aRL9Hz.js +1 -0
  34. package/build/client/_app/immutable/chunks/B1aRL9Hz.js.br +0 -0
  35. package/build/client/_app/immutable/chunks/B1aRL9Hz.js.gz +0 -0
  36. package/build/client/_app/immutable/chunks/B8uG8z2c.js +1 -0
  37. package/build/client/_app/immutable/chunks/B8uG8z2c.js.br +0 -0
  38. package/build/client/_app/immutable/chunks/B8uG8z2c.js.gz +0 -0
  39. package/build/client/_app/immutable/chunks/B8zY50Bc.js +1 -0
  40. package/build/client/_app/immutable/chunks/B8zY50Bc.js.br +5 -0
  41. package/build/client/_app/immutable/chunks/B8zY50Bc.js.gz +0 -0
  42. package/build/client/_app/immutable/chunks/BCse3N0b.js +1 -0
  43. package/build/client/_app/immutable/chunks/BCse3N0b.js.br +0 -0
  44. package/build/client/_app/immutable/chunks/BCse3N0b.js.gz +0 -0
  45. package/build/client/_app/immutable/chunks/BFXFuY-o.js +3 -0
  46. package/build/client/_app/immutable/chunks/BFXFuY-o.js.br +0 -0
  47. package/build/client/_app/immutable/chunks/BFXFuY-o.js.gz +0 -0
  48. package/build/client/_app/immutable/chunks/BGxzXVpM.js +1 -0
  49. package/build/client/_app/immutable/chunks/BGxzXVpM.js.br +0 -0
  50. package/build/client/_app/immutable/chunks/BGxzXVpM.js.gz +0 -0
  51. package/build/client/_app/immutable/chunks/BM4_iXSA.js +1 -0
  52. package/build/client/_app/immutable/chunks/BM4_iXSA.js.br +0 -0
  53. package/build/client/_app/immutable/chunks/BM4_iXSA.js.gz +0 -0
  54. package/build/client/_app/immutable/chunks/BMGykAfL.js +2 -0
  55. package/build/client/_app/immutable/chunks/BMGykAfL.js.br +0 -0
  56. package/build/client/_app/immutable/chunks/BMGykAfL.js.gz +0 -0
  57. package/build/client/_app/immutable/chunks/BNScKugQ.js +1 -0
  58. package/build/client/_app/immutable/chunks/BNScKugQ.js.br +0 -0
  59. package/build/client/_app/immutable/chunks/BNScKugQ.js.gz +0 -0
  60. package/build/client/_app/immutable/chunks/BNzEBMy8.js +1 -0
  61. package/build/client/_app/immutable/chunks/BNzEBMy8.js.br +0 -0
  62. package/build/client/_app/immutable/chunks/BNzEBMy8.js.gz +0 -0
  63. package/build/client/_app/immutable/chunks/BU9URCkw.js +1 -0
  64. package/build/client/_app/immutable/chunks/BU9URCkw.js.br +0 -0
  65. package/build/client/_app/immutable/chunks/BU9URCkw.js.gz +0 -0
  66. package/build/client/_app/immutable/chunks/BW4xleRz.js +1 -0
  67. package/build/client/_app/immutable/chunks/BW4xleRz.js.br +0 -0
  68. package/build/client/_app/immutable/chunks/BW4xleRz.js.gz +0 -0
  69. package/build/client/_app/immutable/chunks/BZmrLQwT.js +1 -0
  70. package/build/client/_app/immutable/chunks/BZmrLQwT.js.br +0 -0
  71. package/build/client/_app/immutable/chunks/BZmrLQwT.js.gz +0 -0
  72. package/build/client/_app/immutable/chunks/B_Lmgh7q.js +1 -0
  73. package/build/client/_app/immutable/chunks/B_Lmgh7q.js.br +0 -0
  74. package/build/client/_app/immutable/chunks/B_Lmgh7q.js.gz +0 -0
  75. package/build/client/_app/immutable/chunks/BapAUJpM.js +1 -0
  76. package/build/client/_app/immutable/chunks/BapAUJpM.js.br +0 -0
  77. package/build/client/_app/immutable/chunks/BapAUJpM.js.gz +0 -0
  78. package/build/client/_app/immutable/chunks/Bb9xebuT.js +1 -0
  79. package/build/client/_app/immutable/chunks/Bb9xebuT.js.br +0 -0
  80. package/build/client/_app/immutable/chunks/Bb9xebuT.js.gz +0 -0
  81. package/build/client/_app/immutable/chunks/BjkQG7dw.js +1 -0
  82. package/build/client/_app/immutable/chunks/BjkQG7dw.js.br +0 -0
  83. package/build/client/_app/immutable/chunks/BjkQG7dw.js.gz +0 -0
  84. package/build/client/_app/immutable/chunks/Bmz9gLBz.js +1 -0
  85. package/build/client/_app/immutable/chunks/Bmz9gLBz.js.br +0 -0
  86. package/build/client/_app/immutable/chunks/Bmz9gLBz.js.gz +0 -0
  87. package/build/client/_app/immutable/chunks/Bnpwcepm.js +1 -0
  88. package/build/client/_app/immutable/chunks/Bnpwcepm.js.br +0 -0
  89. package/build/client/_app/immutable/chunks/Bnpwcepm.js.gz +0 -0
  90. package/build/client/_app/immutable/chunks/BoR6OKl6.js +1 -0
  91. package/build/client/_app/immutable/chunks/BoR6OKl6.js.br +0 -0
  92. package/build/client/_app/immutable/chunks/BoR6OKl6.js.gz +0 -0
  93. package/build/client/_app/immutable/chunks/Br5bpmJC.js +1 -0
  94. package/build/client/_app/immutable/chunks/Br5bpmJC.js.br +0 -0
  95. package/build/client/_app/immutable/chunks/Br5bpmJC.js.gz +0 -0
  96. package/build/client/_app/immutable/chunks/BxCHY0iG.js +1 -0
  97. package/build/client/_app/immutable/chunks/BxCHY0iG.js.br +0 -0
  98. package/build/client/_app/immutable/chunks/BxCHY0iG.js.gz +0 -0
  99. package/build/client/_app/immutable/chunks/C1Sz0rtw.js +1 -0
  100. package/build/client/_app/immutable/chunks/C1Sz0rtw.js.br +0 -0
  101. package/build/client/_app/immutable/chunks/C1Sz0rtw.js.gz +0 -0
  102. package/build/client/_app/immutable/chunks/C1aQuqo_.js +2 -0
  103. package/build/client/_app/immutable/chunks/C1aQuqo_.js.br +0 -0
  104. package/build/client/_app/immutable/chunks/C1aQuqo_.js.gz +0 -0
  105. package/build/client/_app/immutable/chunks/C26nmevH.js +1 -0
  106. package/build/client/_app/immutable/chunks/C26nmevH.js.br +0 -0
  107. package/build/client/_app/immutable/chunks/C26nmevH.js.gz +0 -0
  108. package/build/client/_app/immutable/chunks/C8ko2SLk.js +1 -0
  109. package/build/client/_app/immutable/chunks/C8ko2SLk.js.br +0 -0
  110. package/build/client/_app/immutable/chunks/C8ko2SLk.js.gz +0 -0
  111. package/build/client/_app/immutable/chunks/CAMhfNhW.js +1 -0
  112. package/build/client/_app/immutable/chunks/CAMhfNhW.js.br +0 -0
  113. package/build/client/_app/immutable/chunks/CAMhfNhW.js.gz +0 -0
  114. package/build/client/_app/immutable/chunks/CEnIp_6Y.js +1 -0
  115. package/build/client/_app/immutable/chunks/CEnIp_6Y.js.br +3 -0
  116. package/build/client/_app/immutable/chunks/CEnIp_6Y.js.gz +0 -0
  117. package/build/client/_app/immutable/chunks/CMjc_m7Z.js +1 -0
  118. package/build/client/_app/immutable/chunks/CMjc_m7Z.js.br +0 -0
  119. package/build/client/_app/immutable/chunks/CMjc_m7Z.js.gz +0 -0
  120. package/build/client/_app/immutable/chunks/CRRzXoPz.js +5 -0
  121. package/build/client/_app/immutable/chunks/CRRzXoPz.js.br +0 -0
  122. package/build/client/_app/immutable/chunks/CRRzXoPz.js.gz +0 -0
  123. package/build/client/_app/immutable/chunks/CXh1ITwj.js +1 -0
  124. package/build/client/_app/immutable/chunks/CXh1ITwj.js.br +0 -0
  125. package/build/client/_app/immutable/chunks/CXh1ITwj.js.gz +0 -0
  126. package/build/client/_app/immutable/chunks/CZ1oTCKP.js +1 -0
  127. package/build/client/_app/immutable/chunks/CZ1oTCKP.js.br +0 -0
  128. package/build/client/_app/immutable/chunks/CZ1oTCKP.js.gz +0 -0
  129. package/build/client/_app/immutable/chunks/Cbu9Tg11.js +1 -0
  130. package/build/client/_app/immutable/chunks/Cbu9Tg11.js.br +0 -0
  131. package/build/client/_app/immutable/chunks/Cbu9Tg11.js.gz +0 -0
  132. package/build/client/_app/immutable/chunks/CcYNc8-G.js +1 -0
  133. package/build/client/_app/immutable/chunks/CcYNc8-G.js.br +0 -0
  134. package/build/client/_app/immutable/chunks/CcYNc8-G.js.gz +0 -0
  135. package/build/client/_app/immutable/chunks/Cdcajer6.js +1 -0
  136. package/build/client/_app/immutable/chunks/Cdcajer6.js.br +0 -0
  137. package/build/client/_app/immutable/chunks/Cdcajer6.js.gz +0 -0
  138. package/build/client/_app/immutable/chunks/Ce2MupFq.js +1 -0
  139. package/build/client/_app/immutable/chunks/Ce2MupFq.js.br +0 -0
  140. package/build/client/_app/immutable/chunks/Ce2MupFq.js.gz +0 -0
  141. package/build/client/_app/immutable/chunks/CfP1DoGT.js +1 -0
  142. package/build/client/_app/immutable/chunks/CfP1DoGT.js.br +0 -0
  143. package/build/client/_app/immutable/chunks/CfP1DoGT.js.gz +0 -0
  144. package/build/client/_app/immutable/chunks/CfhPDo21.js +1 -0
  145. package/build/client/_app/immutable/chunks/CfhPDo21.js.br +1 -0
  146. package/build/client/_app/immutable/chunks/CfhPDo21.js.gz +0 -0
  147. package/build/client/_app/immutable/chunks/ChSMnQMB.js +2 -0
  148. package/build/client/_app/immutable/chunks/ChSMnQMB.js.br +0 -0
  149. package/build/client/_app/immutable/chunks/ChSMnQMB.js.gz +0 -0
  150. package/build/client/_app/immutable/chunks/CkW8YtSm.js +1 -0
  151. package/build/client/_app/immutable/chunks/CkW8YtSm.js.br +0 -0
  152. package/build/client/_app/immutable/chunks/CkW8YtSm.js.gz +0 -0
  153. package/build/client/_app/immutable/chunks/CoR7xVWs.js +1 -0
  154. package/build/client/_app/immutable/chunks/CoR7xVWs.js.br +0 -0
  155. package/build/client/_app/immutable/chunks/CoR7xVWs.js.gz +0 -0
  156. package/build/client/_app/immutable/chunks/CpGv0MSX.js +1 -0
  157. package/build/client/_app/immutable/chunks/CpGv0MSX.js.br +0 -0
  158. package/build/client/_app/immutable/chunks/CpGv0MSX.js.gz +0 -0
  159. package/build/client/_app/immutable/chunks/Cvr8AlQE.js +1 -0
  160. package/build/client/_app/immutable/chunks/Cvr8AlQE.js.br +0 -0
  161. package/build/client/_app/immutable/chunks/Cvr8AlQE.js.gz +0 -0
  162. package/build/client/_app/immutable/chunks/D0QMYypb.js +1 -0
  163. package/build/client/_app/immutable/chunks/D0QMYypb.js.br +0 -0
  164. package/build/client/_app/immutable/chunks/D0QMYypb.js.gz +0 -0
  165. package/build/client/_app/immutable/chunks/D40b34QZ.js +1 -0
  166. package/build/client/_app/immutable/chunks/D40b34QZ.js.br +0 -0
  167. package/build/client/_app/immutable/chunks/D40b34QZ.js.gz +0 -0
  168. package/build/client/_app/immutable/chunks/D6MI_dhi.js +1 -0
  169. package/build/client/_app/immutable/chunks/D6MI_dhi.js.br +0 -0
  170. package/build/client/_app/immutable/chunks/D6MI_dhi.js.gz +0 -0
  171. package/build/client/_app/immutable/chunks/D7PHp8xb.js +1 -0
  172. package/build/client/_app/immutable/chunks/D7PHp8xb.js.br +0 -0
  173. package/build/client/_app/immutable/chunks/D7PHp8xb.js.gz +0 -0
  174. package/build/client/_app/immutable/chunks/D7l1JayF.js +1 -0
  175. package/build/client/_app/immutable/chunks/D7l1JayF.js.br +0 -0
  176. package/build/client/_app/immutable/chunks/D7l1JayF.js.gz +0 -0
  177. package/build/client/_app/immutable/chunks/D99uXqZb.js +1 -0
  178. package/build/client/_app/immutable/chunks/D99uXqZb.js.br +0 -0
  179. package/build/client/_app/immutable/chunks/D99uXqZb.js.gz +0 -0
  180. package/build/client/_app/immutable/chunks/DEBBEmC0.js +1 -0
  181. package/build/client/_app/immutable/chunks/DEBBEmC0.js.br +0 -0
  182. package/build/client/_app/immutable/chunks/DEBBEmC0.js.gz +0 -0
  183. package/build/client/_app/immutable/chunks/DHWrMZkd.js +1 -0
  184. package/build/client/_app/immutable/chunks/DHWrMZkd.js.br +0 -0
  185. package/build/client/_app/immutable/chunks/DHWrMZkd.js.gz +0 -0
  186. package/build/client/_app/immutable/chunks/DNsLImlA.js +64 -0
  187. package/build/client/_app/immutable/chunks/DNsLImlA.js.br +0 -0
  188. package/build/client/_app/immutable/chunks/DNsLImlA.js.gz +0 -0
  189. package/build/client/_app/immutable/chunks/DRDjLZb3.js +1 -0
  190. package/build/client/_app/immutable/chunks/DRDjLZb3.js.br +3 -0
  191. package/build/client/_app/immutable/chunks/DRDjLZb3.js.gz +0 -0
  192. package/build/client/_app/immutable/chunks/DTJeGfAL.js +1 -0
  193. package/build/client/_app/immutable/chunks/DTJeGfAL.js.br +0 -0
  194. package/build/client/_app/immutable/chunks/DTJeGfAL.js.gz +0 -0
  195. package/build/client/_app/immutable/chunks/DZFqETAQ.js +1 -0
  196. package/build/client/_app/immutable/chunks/DZFqETAQ.js.br +0 -0
  197. package/build/client/_app/immutable/chunks/DZFqETAQ.js.gz +0 -0
  198. package/build/client/_app/immutable/chunks/D_wr-JLf.js +1 -0
  199. package/build/client/_app/immutable/chunks/D_wr-JLf.js.br +0 -0
  200. package/build/client/_app/immutable/chunks/D_wr-JLf.js.gz +0 -0
  201. package/build/client/_app/immutable/chunks/DdaJZmuM.js +1 -0
  202. package/build/client/_app/immutable/chunks/DdaJZmuM.js.br +0 -0
  203. package/build/client/_app/immutable/chunks/DdaJZmuM.js.gz +0 -0
  204. package/build/client/_app/immutable/chunks/Dl4WTuMB.js +1 -0
  205. package/build/client/_app/immutable/chunks/Dl4WTuMB.js.br +0 -0
  206. package/build/client/_app/immutable/chunks/Dl4WTuMB.js.gz +0 -0
  207. package/build/client/_app/immutable/chunks/Doks8ISn.js +1 -0
  208. package/build/client/_app/immutable/chunks/Doks8ISn.js.br +0 -0
  209. package/build/client/_app/immutable/chunks/Doks8ISn.js.gz +0 -0
  210. package/build/client/_app/immutable/chunks/DsnmJJEf.js +1 -0
  211. package/build/client/_app/immutable/chunks/DsnmJJEf.js.br +2 -0
  212. package/build/client/_app/immutable/chunks/DsnmJJEf.js.gz +0 -0
  213. package/build/client/_app/immutable/chunks/E3yOQTT0.js +1 -0
  214. package/build/client/_app/immutable/chunks/E3yOQTT0.js.br +0 -0
  215. package/build/client/_app/immutable/chunks/E3yOQTT0.js.gz +0 -0
  216. package/build/client/_app/immutable/chunks/Gxlzmh6y.js +1 -0
  217. package/build/client/_app/immutable/chunks/Gxlzmh6y.js.br +0 -0
  218. package/build/client/_app/immutable/chunks/Gxlzmh6y.js.gz +0 -0
  219. package/build/client/_app/immutable/chunks/Ib-7xmHT.js +1 -0
  220. package/build/client/_app/immutable/chunks/Ib-7xmHT.js.br +0 -0
  221. package/build/client/_app/immutable/chunks/Ib-7xmHT.js.gz +0 -0
  222. package/build/client/_app/immutable/chunks/P4Np3c9O.js +1 -0
  223. package/build/client/_app/immutable/chunks/P4Np3c9O.js.br +0 -0
  224. package/build/client/_app/immutable/chunks/P4Np3c9O.js.gz +0 -0
  225. package/build/client/_app/immutable/chunks/Zf7VV5ZB.js +1 -0
  226. package/build/client/_app/immutable/chunks/Zf7VV5ZB.js.br +0 -0
  227. package/build/client/_app/immutable/chunks/Zf7VV5ZB.js.gz +0 -0
  228. package/build/client/_app/immutable/chunks/_OLpdTiI.js +1 -0
  229. package/build/client/_app/immutable/chunks/_OLpdTiI.js.br +0 -0
  230. package/build/client/_app/immutable/chunks/_OLpdTiI.js.gz +0 -0
  231. package/build/client/_app/immutable/chunks/azBeeLR0.js +1 -0
  232. package/build/client/_app/immutable/chunks/azBeeLR0.js.br +0 -0
  233. package/build/client/_app/immutable/chunks/azBeeLR0.js.gz +0 -0
  234. package/build/client/_app/immutable/chunks/gMllmzma.js +1 -0
  235. package/build/client/_app/immutable/chunks/gMllmzma.js.br +0 -0
  236. package/build/client/_app/immutable/chunks/gMllmzma.js.gz +0 -0
  237. package/build/client/_app/immutable/chunks/hRoV10UM.js +1 -0
  238. package/build/client/_app/immutable/chunks/hRoV10UM.js.br +0 -0
  239. package/build/client/_app/immutable/chunks/hRoV10UM.js.gz +0 -0
  240. package/build/client/_app/immutable/chunks/iEBlyxZv.js +1 -0
  241. package/build/client/_app/immutable/chunks/iEBlyxZv.js.br +0 -0
  242. package/build/client/_app/immutable/chunks/iEBlyxZv.js.gz +0 -0
  243. package/build/client/_app/immutable/chunks/jFKgkeON.js +1 -0
  244. package/build/client/_app/immutable/chunks/jFKgkeON.js.br +0 -0
  245. package/build/client/_app/immutable/chunks/jFKgkeON.js.gz +0 -0
  246. package/build/client/_app/immutable/chunks/ooPBmYPj.js +1 -0
  247. package/build/client/_app/immutable/chunks/ooPBmYPj.js.br +0 -0
  248. package/build/client/_app/immutable/chunks/ooPBmYPj.js.gz +0 -0
  249. package/build/client/_app/immutable/chunks/pRg-f8xU.js +1 -0
  250. package/build/client/_app/immutable/chunks/pRg-f8xU.js.br +0 -0
  251. package/build/client/_app/immutable/chunks/pRg-f8xU.js.gz +0 -0
  252. package/build/client/_app/immutable/chunks/uINs3xv3.js +1 -0
  253. package/build/client/_app/immutable/chunks/uINs3xv3.js.br +0 -0
  254. package/build/client/_app/immutable/chunks/uINs3xv3.js.gz +0 -0
  255. package/build/client/_app/immutable/chunks/wamM80bu.js +1 -0
  256. package/build/client/_app/immutable/chunks/wamM80bu.js.br +0 -0
  257. package/build/client/_app/immutable/chunks/wamM80bu.js.gz +0 -0
  258. package/build/client/_app/immutable/entry/app.CY1cyDxx.js +2 -0
  259. package/build/client/_app/immutable/entry/app.CY1cyDxx.js.br +0 -0
  260. package/build/client/_app/immutable/entry/app.CY1cyDxx.js.gz +0 -0
  261. package/build/client/_app/immutable/entry/start.ByTVZFMZ.js +1 -0
  262. package/build/client/_app/immutable/entry/start.ByTVZFMZ.js.br +2 -0
  263. package/build/client/_app/immutable/entry/start.ByTVZFMZ.js.gz +0 -0
  264. package/build/client/_app/immutable/nodes/0.CQbbSrko.js +1 -0
  265. package/build/client/_app/immutable/nodes/0.CQbbSrko.js.br +0 -0
  266. package/build/client/_app/immutable/nodes/0.CQbbSrko.js.gz +0 -0
  267. package/build/client/_app/immutable/nodes/1.WcE6FOcF.js +1 -0
  268. package/build/client/_app/immutable/nodes/1.WcE6FOcF.js.br +0 -0
  269. package/build/client/_app/immutable/nodes/1.WcE6FOcF.js.gz +0 -0
  270. package/build/client/_app/immutable/nodes/10.Bl4yPogx.js +3 -0
  271. package/build/client/_app/immutable/nodes/10.Bl4yPogx.js.br +0 -0
  272. package/build/client/_app/immutable/nodes/10.Bl4yPogx.js.gz +0 -0
  273. package/build/client/_app/immutable/nodes/11.kVvSmSNV.js +2 -0
  274. package/build/client/_app/immutable/nodes/11.kVvSmSNV.js.br +0 -0
  275. package/build/client/_app/immutable/nodes/11.kVvSmSNV.js.gz +0 -0
  276. package/build/client/_app/immutable/nodes/12.BoPfAFdi.js +1 -0
  277. package/build/client/_app/immutable/nodes/12.BoPfAFdi.js.br +0 -0
  278. package/build/client/_app/immutable/nodes/12.BoPfAFdi.js.gz +0 -0
  279. package/build/client/_app/immutable/nodes/13.JyGUEsdb.js +2 -0
  280. package/build/client/_app/immutable/nodes/13.JyGUEsdb.js.br +0 -0
  281. package/build/client/_app/immutable/nodes/13.JyGUEsdb.js.gz +0 -0
  282. package/build/client/_app/immutable/nodes/14.BbJglRXt.js +2 -0
  283. package/build/client/_app/immutable/nodes/14.BbJglRXt.js.br +0 -0
  284. package/build/client/_app/immutable/nodes/14.BbJglRXt.js.gz +0 -0
  285. package/build/client/_app/immutable/nodes/15.94-Zje0s.js +13 -0
  286. package/build/client/_app/immutable/nodes/15.94-Zje0s.js.br +0 -0
  287. package/build/client/_app/immutable/nodes/15.94-Zje0s.js.gz +0 -0
  288. package/build/client/_app/immutable/nodes/16.DRADdurD.js +6 -0
  289. package/build/client/_app/immutable/nodes/16.DRADdurD.js.br +0 -0
  290. package/build/client/_app/immutable/nodes/16.DRADdurD.js.gz +0 -0
  291. package/build/client/_app/immutable/nodes/17.DOsqdwdd.js +2 -0
  292. package/build/client/_app/immutable/nodes/17.DOsqdwdd.js.br +0 -0
  293. package/build/client/_app/immutable/nodes/17.DOsqdwdd.js.gz +0 -0
  294. package/build/client/_app/immutable/nodes/18.BpVlwZ30.js +1 -0
  295. package/build/client/_app/immutable/nodes/18.BpVlwZ30.js.br +0 -0
  296. package/build/client/_app/immutable/nodes/18.BpVlwZ30.js.gz +0 -0
  297. package/build/client/_app/immutable/nodes/19.S2J54AdY.js +2 -0
  298. package/build/client/_app/immutable/nodes/19.S2J54AdY.js.br +0 -0
  299. package/build/client/_app/immutable/nodes/19.S2J54AdY.js.gz +0 -0
  300. package/build/client/_app/immutable/nodes/2.CKVtP2Ky.js +1 -0
  301. package/build/client/_app/immutable/nodes/2.CKVtP2Ky.js.br +0 -0
  302. package/build/client/_app/immutable/nodes/2.CKVtP2Ky.js.gz +0 -0
  303. package/build/client/_app/immutable/nodes/20.BCasu2g4.js +4116 -0
  304. package/build/client/_app/immutable/nodes/20.BCasu2g4.js.br +0 -0
  305. package/build/client/_app/immutable/nodes/20.BCasu2g4.js.gz +0 -0
  306. package/build/client/_app/immutable/nodes/21.C1aTaoAB.js +3 -0
  307. package/build/client/_app/immutable/nodes/21.C1aTaoAB.js.br +0 -0
  308. package/build/client/_app/immutable/nodes/21.C1aTaoAB.js.gz +0 -0
  309. package/build/client/_app/immutable/nodes/23.DP5Be3HR.js +16 -0
  310. package/build/client/_app/immutable/nodes/23.DP5Be3HR.js.br +0 -0
  311. package/build/client/_app/immutable/nodes/23.DP5Be3HR.js.gz +0 -0
  312. package/build/client/_app/immutable/nodes/24.BB6fXxnh.js +6 -0
  313. package/build/client/_app/immutable/nodes/24.BB6fXxnh.js.br +0 -0
  314. package/build/client/_app/immutable/nodes/24.BB6fXxnh.js.gz +0 -0
  315. package/build/client/_app/immutable/nodes/25.oeBaWIUn.js +1 -0
  316. package/build/client/_app/immutable/nodes/25.oeBaWIUn.js.br +0 -0
  317. package/build/client/_app/immutable/nodes/25.oeBaWIUn.js.gz +0 -0
  318. package/build/client/_app/immutable/nodes/26.lPx5SjN1.js +3 -0
  319. package/build/client/_app/immutable/nodes/26.lPx5SjN1.js.br +0 -0
  320. package/build/client/_app/immutable/nodes/26.lPx5SjN1.js.gz +0 -0
  321. package/build/client/_app/immutable/nodes/27.DB7PVQXo.js +4 -0
  322. package/build/client/_app/immutable/nodes/27.DB7PVQXo.js.br +0 -0
  323. package/build/client/_app/immutable/nodes/27.DB7PVQXo.js.gz +0 -0
  324. package/build/client/_app/immutable/nodes/28.Cf2R7A3f.js +4 -0
  325. package/build/client/_app/immutable/nodes/28.Cf2R7A3f.js.br +0 -0
  326. package/build/client/_app/immutable/nodes/28.Cf2R7A3f.js.gz +0 -0
  327. package/build/client/_app/immutable/nodes/29.CyJS5sye.js +2 -0
  328. package/build/client/_app/immutable/nodes/29.CyJS5sye.js.br +0 -0
  329. package/build/client/_app/immutable/nodes/29.CyJS5sye.js.gz +0 -0
  330. package/build/client/_app/immutable/nodes/3.DWyky0UV.js +1 -0
  331. package/build/client/_app/immutable/nodes/3.DWyky0UV.js.br +0 -0
  332. package/build/client/_app/immutable/nodes/3.DWyky0UV.js.gz +0 -0
  333. package/build/client/_app/immutable/nodes/30.BFpYKBJh.js +2 -0
  334. package/build/client/_app/immutable/nodes/30.BFpYKBJh.js.br +0 -0
  335. package/build/client/_app/immutable/nodes/30.BFpYKBJh.js.gz +0 -0
  336. package/build/client/_app/immutable/nodes/31.DKnO7o1W.js +2 -0
  337. package/build/client/_app/immutable/nodes/31.DKnO7o1W.js.br +0 -0
  338. package/build/client/_app/immutable/nodes/31.DKnO7o1W.js.gz +0 -0
  339. package/build/client/_app/immutable/nodes/32.D4xYDWvG.js +3 -0
  340. package/build/client/_app/immutable/nodes/32.D4xYDWvG.js.br +0 -0
  341. package/build/client/_app/immutable/nodes/32.D4xYDWvG.js.gz +0 -0
  342. package/build/client/_app/immutable/nodes/4.0a-qdY5B.js +1 -0
  343. package/build/client/_app/immutable/nodes/4.0a-qdY5B.js.br +0 -0
  344. package/build/client/_app/immutable/nodes/4.0a-qdY5B.js.gz +0 -0
  345. package/build/client/_app/immutable/nodes/5.BzQBSRbS.js +1 -0
  346. package/build/client/_app/immutable/nodes/5.BzQBSRbS.js.br +0 -0
  347. package/build/client/_app/immutable/nodes/5.BzQBSRbS.js.gz +0 -0
  348. package/build/client/_app/immutable/nodes/6.gJ2nhxWc.js +1 -0
  349. package/build/client/_app/immutable/nodes/6.gJ2nhxWc.js.br +0 -0
  350. package/build/client/_app/immutable/nodes/6.gJ2nhxWc.js.gz +0 -0
  351. package/build/client/_app/immutable/nodes/7.tBTDolnc.js +1 -0
  352. package/build/client/_app/immutable/nodes/7.tBTDolnc.js.br +0 -0
  353. package/build/client/_app/immutable/nodes/7.tBTDolnc.js.gz +0 -0
  354. package/build/client/_app/immutable/nodes/8.BJK9n85D.js +2 -0
  355. package/build/client/_app/immutable/nodes/8.BJK9n85D.js.br +0 -0
  356. package/build/client/_app/immutable/nodes/8.BJK9n85D.js.gz +0 -0
  357. package/build/client/_app/immutable/nodes/9.un0j6nRP.js +1 -0
  358. package/build/client/_app/immutable/nodes/9.un0j6nRP.js.br +0 -0
  359. package/build/client/_app/immutable/nodes/9.un0j6nRP.js.gz +0 -0
  360. package/build/client/_app/version.json +1 -0
  361. package/build/client/_app/version.json.br +1 -0
  362. package/build/client/_app/version.json.gz +0 -0
  363. package/build/client/baseHDR.hdr +0 -0
  364. package/build/client/favicon/apple-touch-icon.png +0 -0
  365. package/build/client/favicon/favicon-96x96.png +0 -0
  366. package/build/client/favicon/favicon.ico +0 -0
  367. package/build/client/favicon/favicon.svg +1 -0
  368. package/build/client/favicon/favicon.svg.br +0 -0
  369. package/build/client/favicon/favicon.svg.gz +0 -0
  370. package/build/client/favicon/site.webmanifest +21 -0
  371. package/build/client/favicon/web-app-manifest-192x192.png +0 -0
  372. package/build/client/favicon/web-app-manifest-512x512.png +0 -0
  373. package/build/client/robots.txt +3 -0
  374. package/build/client/robots.txt.br +0 -0
  375. package/build/client/robots.txt.gz +0 -0
  376. package/build/env.js +94 -0
  377. package/build/handler.js +1494 -0
  378. package/build/index.js +345 -0
  379. package/build/server/chunks/0-BRU03dEw.js +55 -0
  380. package/build/server/chunks/0-BRU03dEw.js.map +1 -0
  381. package/build/server/chunks/1-m_oCIIXD.js +9 -0
  382. package/build/server/chunks/1-m_oCIIXD.js.map +1 -0
  383. package/build/server/chunks/10-J_ZMrbXX.js +220 -0
  384. package/build/server/chunks/10-J_ZMrbXX.js.map +1 -0
  385. package/build/server/chunks/11-Dz77N9MO.js +57 -0
  386. package/build/server/chunks/11-Dz77N9MO.js.map +1 -0
  387. package/build/server/chunks/12-CrOqT0Q5.js +52 -0
  388. package/build/server/chunks/12-CrOqT0Q5.js.map +1 -0
  389. package/build/server/chunks/13-DQGOyx8W.js +56 -0
  390. package/build/server/chunks/13-DQGOyx8W.js.map +1 -0
  391. package/build/server/chunks/14-Dl5jyPyO.js +99 -0
  392. package/build/server/chunks/14-Dl5jyPyO.js.map +1 -0
  393. package/build/server/chunks/15-CNzxJkd-.js +38 -0
  394. package/build/server/chunks/15-CNzxJkd-.js.map +1 -0
  395. package/build/server/chunks/16-5ZcnQNjK.js +83 -0
  396. package/build/server/chunks/16-5ZcnQNjK.js.map +1 -0
  397. package/build/server/chunks/17-C4Zpziyd.js +9 -0
  398. package/build/server/chunks/17-C4Zpziyd.js.map +1 -0
  399. package/build/server/chunks/18-DFxW4YE_.js +74 -0
  400. package/build/server/chunks/18-DFxW4YE_.js.map +1 -0
  401. package/build/server/chunks/19-C8RtlFzY.js +92 -0
  402. package/build/server/chunks/19-C8RtlFzY.js.map +1 -0
  403. package/build/server/chunks/2-tPIqsVg3.js +40 -0
  404. package/build/server/chunks/2-tPIqsVg3.js.map +1 -0
  405. package/build/server/chunks/20-DLtIYsB6.js +172 -0
  406. package/build/server/chunks/20-DLtIYsB6.js.map +1 -0
  407. package/build/server/chunks/21-Bs7WlXoO.js +74 -0
  408. package/build/server/chunks/21-Bs7WlXoO.js.map +1 -0
  409. package/build/server/chunks/22-Bweil5nd.js +23 -0
  410. package/build/server/chunks/22-Bweil5nd.js.map +1 -0
  411. package/build/server/chunks/23-dTtOINB8.js +136 -0
  412. package/build/server/chunks/23-dTtOINB8.js.map +1 -0
  413. package/build/server/chunks/24-DFoVUKXD.js +144 -0
  414. package/build/server/chunks/24-DFoVUKXD.js.map +1 -0
  415. package/build/server/chunks/25-DstWRI72.js +51 -0
  416. package/build/server/chunks/25-DstWRI72.js.map +1 -0
  417. package/build/server/chunks/26-CI8uo3hW.js +9 -0
  418. package/build/server/chunks/26-CI8uo3hW.js.map +1 -0
  419. package/build/server/chunks/27-CpQEotb7.js +57 -0
  420. package/build/server/chunks/27-CpQEotb7.js.map +1 -0
  421. package/build/server/chunks/28-B-G5uvxa.js +68 -0
  422. package/build/server/chunks/28-B-G5uvxa.js.map +1 -0
  423. package/build/server/chunks/29-BFo4HkLa.js +55 -0
  424. package/build/server/chunks/29-BFo4HkLa.js.map +1 -0
  425. package/build/server/chunks/3-BU-Ucrf8.js +9 -0
  426. package/build/server/chunks/3-BU-Ucrf8.js.map +1 -0
  427. package/build/server/chunks/30-zdVVQ-al.js +57 -0
  428. package/build/server/chunks/30-zdVVQ-al.js.map +1 -0
  429. package/build/server/chunks/31-Cba3pMW9.js +42 -0
  430. package/build/server/chunks/31-Cba3pMW9.js.map +1 -0
  431. package/build/server/chunks/32-BmfoNY4G.js +34 -0
  432. package/build/server/chunks/32-BmfoNY4G.js.map +1 -0
  433. package/build/server/chunks/4-rU40n2rV.js +9 -0
  434. package/build/server/chunks/4-rU40n2rV.js.map +1 -0
  435. package/build/server/chunks/5-CsoWfpGS.js +32 -0
  436. package/build/server/chunks/5-CsoWfpGS.js.map +1 -0
  437. package/build/server/chunks/6-D7wR-syA.js +40 -0
  438. package/build/server/chunks/6-D7wR-syA.js.map +1 -0
  439. package/build/server/chunks/7-uEz6AFkY.js +19 -0
  440. package/build/server/chunks/7-uEz6AFkY.js.map +1 -0
  441. package/build/server/chunks/8-BF-aCqND.js +130 -0
  442. package/build/server/chunks/8-BF-aCqND.js.map +1 -0
  443. package/build/server/chunks/9-BSxBuZbd.js +46 -0
  444. package/build/server/chunks/9-BSxBuZbd.js.map +1 -0
  445. package/build/server/chunks/AppHeader-BGs-cVxu.js +270 -0
  446. package/build/server/chunks/AppHeader-BGs-cVxu.js.map +1 -0
  447. package/build/server/chunks/DataTable-Calmth3f.js +26 -0
  448. package/build/server/chunks/DataTable-Calmth3f.js.map +1 -0
  449. package/build/server/chunks/DefinitionCard-p4VxRESg.js +257 -0
  450. package/build/server/chunks/DefinitionCard-p4VxRESg.js.map +1 -0
  451. package/build/server/chunks/EmptyState-Vs823elu.js +53 -0
  452. package/build/server/chunks/EmptyState-Vs823elu.js.map +1 -0
  453. package/build/server/chunks/ErrorScreen-Btv-WHiu.js +131 -0
  454. package/build/server/chunks/ErrorScreen-Btv-WHiu.js.map +1 -0
  455. package/build/server/chunks/FilterableDropdown-B2_HPO_D.js +61 -0
  456. package/build/server/chunks/FilterableDropdown-B2_HPO_D.js.map +1 -0
  457. package/build/server/chunks/SectionHeader-C1XxBz32.js +32 -0
  458. package/build/server/chunks/SectionHeader-C1XxBz32.js.map +1 -0
  459. package/build/server/chunks/SideNav-B8LeM-P_.js +87 -0
  460. package/build/server/chunks/SideNav-B8LeM-P_.js.map +1 -0
  461. package/build/server/chunks/StatCard--Plm6nsA.js +50 -0
  462. package/build/server/chunks/StatCard--Plm6nsA.js.map +1 -0
  463. package/build/server/chunks/UserAvatar-CaOe1AcR.js +13 -0
  464. package/build/server/chunks/UserAvatar-CaOe1AcR.js.map +1 -0
  465. package/build/server/chunks/UserChip-vdJXrk99.js +1113 -0
  466. package/build/server/chunks/UserChip-vdJXrk99.js.map +1 -0
  467. package/build/server/chunks/_error.svelte-Bifw6LEZ.js +27 -0
  468. package/build/server/chunks/_error.svelte-Bifw6LEZ.js.map +1 -0
  469. package/build/server/chunks/_error.svelte-C2KGldTD.js +29 -0
  470. package/build/server/chunks/_error.svelte-C2KGldTD.js.map +1 -0
  471. package/build/server/chunks/_layout.svelte-1of9r1N3.js +42 -0
  472. package/build/server/chunks/_layout.svelte-1of9r1N3.js.map +1 -0
  473. package/build/server/chunks/_layout.svelte-CGIvkx7D.js +152 -0
  474. package/build/server/chunks/_layout.svelte-CGIvkx7D.js.map +1 -0
  475. package/build/server/chunks/_layout.svelte-CyAPRqZR.js +10 -0
  476. package/build/server/chunks/_layout.svelte-CyAPRqZR.js.map +1 -0
  477. package/build/server/chunks/_layout.svelte-Czx3WsTK.js +795 -0
  478. package/build/server/chunks/_layout.svelte-Czx3WsTK.js.map +1 -0
  479. package/build/server/chunks/_layout.svelte-HGSVxA0R.js +105 -0
  480. package/build/server/chunks/_layout.svelte-HGSVxA0R.js.map +1 -0
  481. package/build/server/chunks/_page.svelte-4090fhI5.js +83 -0
  482. package/build/server/chunks/_page.svelte-4090fhI5.js.map +1 -0
  483. package/build/server/chunks/_page.svelte-5X2iRv32.js +711 -0
  484. package/build/server/chunks/_page.svelte-5X2iRv32.js.map +1 -0
  485. package/build/server/chunks/_page.svelte-BO2coOCw.js +10510 -0
  486. package/build/server/chunks/_page.svelte-BO2coOCw.js.map +1 -0
  487. package/build/server/chunks/_page.svelte-BfQQ6DpG.js +276 -0
  488. package/build/server/chunks/_page.svelte-BfQQ6DpG.js.map +1 -0
  489. package/build/server/chunks/_page.svelte-Br3YjZJA.js +595 -0
  490. package/build/server/chunks/_page.svelte-Br3YjZJA.js.map +1 -0
  491. package/build/server/chunks/_page.svelte-BvG__sle.js +119 -0
  492. package/build/server/chunks/_page.svelte-BvG__sle.js.map +1 -0
  493. package/build/server/chunks/_page.svelte-C2Pa9XCr.js +119 -0
  494. package/build/server/chunks/_page.svelte-C2Pa9XCr.js.map +1 -0
  495. package/build/server/chunks/_page.svelte-C48Yzxtt.js +330 -0
  496. package/build/server/chunks/_page.svelte-C48Yzxtt.js.map +1 -0
  497. package/build/server/chunks/_page.svelte-C4V_xDVU.js +329 -0
  498. package/build/server/chunks/_page.svelte-C4V_xDVU.js.map +1 -0
  499. package/build/server/chunks/_page.svelte-CFbpEr-L.js +249 -0
  500. package/build/server/chunks/_page.svelte-CFbpEr-L.js.map +1 -0
  501. package/build/server/chunks/_page.svelte-CGuEBnqj.js +168 -0
  502. package/build/server/chunks/_page.svelte-CGuEBnqj.js.map +1 -0
  503. package/build/server/chunks/_page.svelte-CWJ99QbZ.js +500 -0
  504. package/build/server/chunks/_page.svelte-CWJ99QbZ.js.map +1 -0
  505. package/build/server/chunks/_page.svelte-CX9DKxIH.js +520 -0
  506. package/build/server/chunks/_page.svelte-CX9DKxIH.js.map +1 -0
  507. package/build/server/chunks/_page.svelte-Cn6-gBTd.js +56 -0
  508. package/build/server/chunks/_page.svelte-Cn6-gBTd.js.map +1 -0
  509. package/build/server/chunks/_page.svelte-D2rnbrpK.js +423 -0
  510. package/build/server/chunks/_page.svelte-D2rnbrpK.js.map +1 -0
  511. package/build/server/chunks/_page.svelte-DIgP7KVt.js +549 -0
  512. package/build/server/chunks/_page.svelte-DIgP7KVt.js.map +1 -0
  513. package/build/server/chunks/_page.svelte-DMn46_VU.js +301 -0
  514. package/build/server/chunks/_page.svelte-DMn46_VU.js.map +1 -0
  515. package/build/server/chunks/_page.svelte-DQeDu6UN.js +146 -0
  516. package/build/server/chunks/_page.svelte-DQeDu6UN.js.map +1 -0
  517. package/build/server/chunks/_page.svelte-DSpONoJg.js +252 -0
  518. package/build/server/chunks/_page.svelte-DSpONoJg.js.map +1 -0
  519. package/build/server/chunks/_page.svelte-DciqGYJp.js +609 -0
  520. package/build/server/chunks/_page.svelte-DciqGYJp.js.map +1 -0
  521. package/build/server/chunks/_page.svelte-DfCFSzaO.js +3847 -0
  522. package/build/server/chunks/_page.svelte-DfCFSzaO.js.map +1 -0
  523. package/build/server/chunks/_page.svelte-DtUlWJaB.js +113 -0
  524. package/build/server/chunks/_page.svelte-DtUlWJaB.js.map +1 -0
  525. package/build/server/chunks/_page.svelte-KapMJV5_.js +452 -0
  526. package/build/server/chunks/_page.svelte-KapMJV5_.js.map +1 -0
  527. package/build/server/chunks/_page.svelte-wsvtYRRE.js +69 -0
  528. package/build/server/chunks/_page.svelte-wsvtYRRE.js.map +1 -0
  529. package/build/server/chunks/_page.svelte-zL7ihDzp.js +13 -0
  530. package/build/server/chunks/_page.svelte-zL7ihDzp.js.map +1 -0
  531. package/build/server/chunks/_server.ts-0ncRaWJ_.js +39 -0
  532. package/build/server/chunks/_server.ts-0ncRaWJ_.js.map +1 -0
  533. package/build/server/chunks/_server.ts-7hKc3tb_.js +28 -0
  534. package/build/server/chunks/_server.ts-7hKc3tb_.js.map +1 -0
  535. package/build/server/chunks/_server.ts-B0wiCYbB.js +36 -0
  536. package/build/server/chunks/_server.ts-B0wiCYbB.js.map +1 -0
  537. package/build/server/chunks/_server.ts-BJWFkEuu.js +94 -0
  538. package/build/server/chunks/_server.ts-BJWFkEuu.js.map +1 -0
  539. package/build/server/chunks/_server.ts-BLHjzdRp.js +30 -0
  540. package/build/server/chunks/_server.ts-BLHjzdRp.js.map +1 -0
  541. package/build/server/chunks/_server.ts-BUc1sqlR.js +58 -0
  542. package/build/server/chunks/_server.ts-BUc1sqlR.js.map +1 -0
  543. package/build/server/chunks/_server.ts-B_MVq_5r.js +72 -0
  544. package/build/server/chunks/_server.ts-B_MVq_5r.js.map +1 -0
  545. package/build/server/chunks/_server.ts-Bb3Kpo0Y.js +38 -0
  546. package/build/server/chunks/_server.ts-Bb3Kpo0Y.js.map +1 -0
  547. package/build/server/chunks/_server.ts-BemU6FO1.js +64 -0
  548. package/build/server/chunks/_server.ts-BemU6FO1.js.map +1 -0
  549. package/build/server/chunks/_server.ts-BkKg2yyC.js +75 -0
  550. package/build/server/chunks/_server.ts-BkKg2yyC.js.map +1 -0
  551. package/build/server/chunks/_server.ts-BpAINcOs.js +276 -0
  552. package/build/server/chunks/_server.ts-BpAINcOs.js.map +1 -0
  553. package/build/server/chunks/_server.ts-BpkR7TzP.js +30 -0
  554. package/build/server/chunks/_server.ts-BpkR7TzP.js.map +1 -0
  555. package/build/server/chunks/_server.ts-BrZXNFlK.js +78 -0
  556. package/build/server/chunks/_server.ts-BrZXNFlK.js.map +1 -0
  557. package/build/server/chunks/_server.ts-C-XniPo8.js +41 -0
  558. package/build/server/chunks/_server.ts-C-XniPo8.js.map +1 -0
  559. package/build/server/chunks/_server.ts-C0F30GT4.js +61 -0
  560. package/build/server/chunks/_server.ts-C0F30GT4.js.map +1 -0
  561. package/build/server/chunks/_server.ts-C4WRZSco.js +32 -0
  562. package/build/server/chunks/_server.ts-C4WRZSco.js.map +1 -0
  563. package/build/server/chunks/_server.ts-CAcgx11J.js +37 -0
  564. package/build/server/chunks/_server.ts-CAcgx11J.js.map +1 -0
  565. package/build/server/chunks/_server.ts-CFIgn6q6.js +293 -0
  566. package/build/server/chunks/_server.ts-CFIgn6q6.js.map +1 -0
  567. package/build/server/chunks/_server.ts-CaHe7mo6.js +81 -0
  568. package/build/server/chunks/_server.ts-CaHe7mo6.js.map +1 -0
  569. package/build/server/chunks/_server.ts-CcQbKaET.js +38 -0
  570. package/build/server/chunks/_server.ts-CcQbKaET.js.map +1 -0
  571. package/build/server/chunks/_server.ts-Ch_RLYHQ.js +48 -0
  572. package/build/server/chunks/_server.ts-Ch_RLYHQ.js.map +1 -0
  573. package/build/server/chunks/_server.ts-CkXnisqg.js +85 -0
  574. package/build/server/chunks/_server.ts-CkXnisqg.js.map +1 -0
  575. package/build/server/chunks/_server.ts-CmGWhrdf.js +110 -0
  576. package/build/server/chunks/_server.ts-CmGWhrdf.js.map +1 -0
  577. package/build/server/chunks/_server.ts-CmUr8pln.js +37 -0
  578. package/build/server/chunks/_server.ts-CmUr8pln.js.map +1 -0
  579. package/build/server/chunks/_server.ts-D-QkfF2o.js +106 -0
  580. package/build/server/chunks/_server.ts-D-QkfF2o.js.map +1 -0
  581. package/build/server/chunks/_server.ts-D1AD48e8.js +81 -0
  582. package/build/server/chunks/_server.ts-D1AD48e8.js.map +1 -0
  583. package/build/server/chunks/_server.ts-DBh0rJrm.js +86 -0
  584. package/build/server/chunks/_server.ts-DBh0rJrm.js.map +1 -0
  585. package/build/server/chunks/_server.ts-DJUYnHrj.js +49 -0
  586. package/build/server/chunks/_server.ts-DJUYnHrj.js.map +1 -0
  587. package/build/server/chunks/_server.ts-DNPb5zS6.js +76 -0
  588. package/build/server/chunks/_server.ts-DNPb5zS6.js.map +1 -0
  589. package/build/server/chunks/_server.ts-DXPhlUCi.js +101 -0
  590. package/build/server/chunks/_server.ts-DXPhlUCi.js.map +1 -0
  591. package/build/server/chunks/_server.ts-Dmo73WWA.js +42 -0
  592. package/build/server/chunks/_server.ts-Dmo73WWA.js.map +1 -0
  593. package/build/server/chunks/_server.ts-DxKERFAd.js +35 -0
  594. package/build/server/chunks/_server.ts-DxKERFAd.js.map +1 -0
  595. package/build/server/chunks/_server.ts-MOiQ4br_.js +31 -0
  596. package/build/server/chunks/_server.ts-MOiQ4br_.js.map +1 -0
  597. package/build/server/chunks/_server.ts-Z87uowZI.js +71 -0
  598. package/build/server/chunks/_server.ts-Z87uowZI.js.map +1 -0
  599. package/build/server/chunks/_server.ts-_NTv7i9z.js +94 -0
  600. package/build/server/chunks/_server.ts-_NTv7i9z.js.map +1 -0
  601. package/build/server/chunks/_server.ts-gic0t4mu.js +52 -0
  602. package/build/server/chunks/_server.ts-gic0t4mu.js.map +1 -0
  603. package/build/server/chunks/_server.ts-la-ySldK.js +39 -0
  604. package/build/server/chunks/_server.ts-la-ySldK.js.map +1 -0
  605. package/build/server/chunks/_server.ts-pDmNGXOa.js +70 -0
  606. package/build/server/chunks/_server.ts-pDmNGXOa.js.map +1 -0
  607. package/build/server/chunks/access.server-GvriCjXN.js +389 -0
  608. package/build/server/chunks/access.server-GvriCjXN.js.map +1 -0
  609. package/build/server/chunks/activity-5BrQjmZv.js +18 -0
  610. package/build/server/chunks/activity-5BrQjmZv.js.map +1 -0
  611. package/build/server/chunks/admin-auth.server-CdTfBMI5.js +78 -0
  612. package/build/server/chunks/admin-auth.server-CdTfBMI5.js.map +1 -0
  613. package/build/server/chunks/alert-description-CJHDA62x.js +59 -0
  614. package/build/server/chunks/alert-description-CJHDA62x.js.map +1 -0
  615. package/build/server/chunks/api-errors-Dk5z97zb.js +36 -0
  616. package/build/server/chunks/api-errors-Dk5z97zb.js.map +1 -0
  617. package/build/server/chunks/arrow-left-Bg-KTjhY.js +14 -0
  618. package/build/server/chunks/arrow-left-Bg-KTjhY.js.map +1 -0
  619. package/build/server/chunks/arrow-right-BvyjMBhI.js +14 -0
  620. package/build/server/chunks/arrow-right-BvyjMBhI.js.map +1 -0
  621. package/build/server/chunks/auth-bootstrap.server-CfD5CPTj.js +38 -0
  622. package/build/server/chunks/auth-bootstrap.server-CfD5CPTj.js.map +1 -0
  623. package/build/server/chunks/badge-DP8t-wkc.js +50 -0
  624. package/build/server/chunks/badge-DP8t-wkc.js.map +1 -0
  625. package/build/server/chunks/bootHealth.server-Bn7taneH.js +58 -0
  626. package/build/server/chunks/bootHealth.server-Bn7taneH.js.map +1 -0
  627. package/build/server/chunks/building-2-DzHZbdjX.js +22 -0
  628. package/build/server/chunks/building-2-DzHZbdjX.js.map +1 -0
  629. package/build/server/chunks/button-5YNnSoty.js +73 -0
  630. package/build/server/chunks/button-5YNnSoty.js.map +1 -0
  631. package/build/server/chunks/card-content-PfaaTs7O.js +46 -0
  632. package/build/server/chunks/card-content-PfaaTs7O.js.map +1 -0
  633. package/build/server/chunks/card-description-BfE_PWv4.js +26 -0
  634. package/build/server/chunks/card-description-BfE_PWv4.js.map +1 -0
  635. package/build/server/chunks/card-title-CV7CjSMp.js +46 -0
  636. package/build/server/chunks/card-title-CV7CjSMp.js.map +1 -0
  637. package/build/server/chunks/check-6xLpsphW.js +11 -0
  638. package/build/server/chunks/check-6xLpsphW.js.map +1 -0
  639. package/build/server/chunks/chevron-down-DdRkfYjQ.js +11 -0
  640. package/build/server/chunks/chevron-down-DdRkfYjQ.js.map +1 -0
  641. package/build/server/chunks/chevron-right-yB_oBTHp.js +11 -0
  642. package/build/server/chunks/chevron-right-yB_oBTHp.js.map +1 -0
  643. package/build/server/chunks/chevron-up-CskoDtlM.js +11 -0
  644. package/build/server/chunks/chevron-up-CskoDtlM.js.map +1 -0
  645. package/build/server/chunks/circle-CcD9wKGy.js +11 -0
  646. package/build/server/chunks/circle-CcD9wKGy.js.map +1 -0
  647. package/build/server/chunks/circle-alert-DKo6GQWU.js +18 -0
  648. package/build/server/chunks/circle-alert-DKo6GQWU.js.map +1 -0
  649. package/build/server/chunks/client-CUfa2kzY.js +39 -0
  650. package/build/server/chunks/client-CUfa2kzY.js.map +1 -0
  651. package/build/server/chunks/computeLimits-FIJ-Mzn4.js +26 -0
  652. package/build/server/chunks/computeLimits-FIJ-Mzn4.js.map +1 -0
  653. package/build/server/chunks/context-9tV9WxQ5.js +134 -0
  654. package/build/server/chunks/context-9tV9WxQ5.js.map +1 -0
  655. package/build/server/chunks/copy-B82RxBlo.js +29 -0
  656. package/build/server/chunks/copy-B82RxBlo.js.map +1 -0
  657. package/build/server/chunks/create-id-BYuAt6fp.js +653 -0
  658. package/build/server/chunks/create-id-BYuAt6fp.js.map +1 -0
  659. package/build/server/chunks/dialog-description-Cp1dB1if.js +523 -0
  660. package/build/server/chunks/dialog-description-Cp1dB1if.js.map +1 -0
  661. package/build/server/chunks/events-Dh5zddQQ.js +119 -0
  662. package/build/server/chunks/events-Dh5zddQQ.js.map +1 -0
  663. package/build/server/chunks/folder-kanban-srfqpNh0.js +21 -0
  664. package/build/server/chunks/folder-kanban-srfqpNh0.js.map +1 -0
  665. package/build/server/chunks/folder-open-LjMDYW2a.js +18 -0
  666. package/build/server/chunks/folder-open-LjMDYW2a.js.map +1 -0
  667. package/build/server/chunks/folders-BMeWz5-X.js +24 -0
  668. package/build/server/chunks/folders-BMeWz5-X.js.map +1 -0
  669. package/build/server/chunks/footerContext.svelte-QTotPOm_.js +523 -0
  670. package/build/server/chunks/footerContext.svelte-QTotPOm_.js.map +1 -0
  671. package/build/server/chunks/hooks.server-CMWyl1Gd.js +197 -0
  672. package/build/server/chunks/hooks.server-CMWyl1Gd.js.map +1 -0
  673. package/build/server/chunks/html-FW6Ia4bL.js +8 -0
  674. package/build/server/chunks/html-FW6Ia4bL.js.map +1 -0
  675. package/build/server/chunks/index-DwB9DMAB.js +28 -0
  676. package/build/server/chunks/index-DwB9DMAB.js.map +1 -0
  677. package/build/server/chunks/index-server-DMc-UvjC.js +19 -0
  678. package/build/server/chunks/index-server-DMc-UvjC.js.map +1 -0
  679. package/build/server/chunks/index2-olcdaqbX.js +4379 -0
  680. package/build/server/chunks/index2-olcdaqbX.js.map +1 -0
  681. package/build/server/chunks/index3-Ye-aF_FM.js +541 -0
  682. package/build/server/chunks/index3-Ye-aF_FM.js.map +1 -0
  683. package/build/server/chunks/input-BIyn3mzZ.js +53 -0
  684. package/build/server/chunks/input-BIyn3mzZ.js.map +1 -0
  685. package/build/server/chunks/label-CTvvOsnE.js +112 -0
  686. package/build/server/chunks/label-CTvvOsnE.js.map +1 -0
  687. package/build/server/chunks/link-2-DyFf_-Tu.js +15 -0
  688. package/build/server/chunks/link-2-DyFf_-Tu.js.map +1 -0
  689. package/build/server/chunks/mail-DS_q8hHt.js +17 -0
  690. package/build/server/chunks/mail-DS_q8hHt.js.map +1 -0
  691. package/build/server/chunks/noop-CzO8kTeB.js +138 -0
  692. package/build/server/chunks/noop-CzO8kTeB.js.map +1 -0
  693. package/build/server/chunks/permissions-compat.server-DSV7bClF.js +19 -0
  694. package/build/server/chunks/permissions-compat.server-DSV7bClF.js.map +1 -0
  695. package/build/server/chunks/permissions.server-Co6VKW9f.js +8 -0
  696. package/build/server/chunks/permissions.server-Co6VKW9f.js.map +1 -0
  697. package/build/server/chunks/plus-kUAGz2vQ.js +11 -0
  698. package/build/server/chunks/plus-kUAGz2vQ.js.map +1 -0
  699. package/build/server/chunks/providers.server-C32WKtDL.js +4486 -0
  700. package/build/server/chunks/providers.server-C32WKtDL.js.map +1 -0
  701. package/build/server/chunks/randomId-8gj3Lbuq.js +25 -0
  702. package/build/server/chunks/randomId-8gj3Lbuq.js.map +1 -0
  703. package/build/server/chunks/renderer-BFEBS3DQ.js +3757 -0
  704. package/build/server/chunks/renderer-BFEBS3DQ.js.map +1 -0
  705. package/build/server/chunks/resolve.server-DYsU4jL3.js +11 -0
  706. package/build/server/chunks/resolve.server-DYsU4jL3.js.map +1 -0
  707. package/build/server/chunks/resolve.server2-Co65XNMI.js +50 -0
  708. package/build/server/chunks/resolve.server2-Co65XNMI.js.map +1 -0
  709. package/build/server/chunks/root-DfWNVuNE.js +1134 -0
  710. package/build/server/chunks/root-DfWNVuNE.js.map +1 -0
  711. package/build/server/chunks/rotate-ccw-BhVSWSeP.js +17 -0
  712. package/build/server/chunks/rotate-ccw-BhVSWSeP.js.map +1 -0
  713. package/build/server/chunks/scroll-lock-BNv9iOMl.js +1558 -0
  714. package/build/server/chunks/scroll-lock-BNv9iOMl.js.map +1 -0
  715. package/build/server/chunks/scroll-text-DqHQWAWm.js +21 -0
  716. package/build/server/chunks/scroll-text-DqHQWAWm.js.map +1 -0
  717. package/build/server/chunks/server-CtTftue_.js +36 -0
  718. package/build/server/chunks/server-CtTftue_.js.map +1 -0
  719. package/build/server/chunks/settings-DUGFWkVU.js +19 -0
  720. package/build/server/chunks/settings-DUGFWkVU.js.map +1 -0
  721. package/build/server/chunks/shared-server-DaWdgxVh.js +11 -0
  722. package/build/server/chunks/shared-server-DaWdgxVh.js.map +1 -0
  723. package/build/server/chunks/shield-DcFe9IEC.js +18 -0
  724. package/build/server/chunks/shield-DcFe9IEC.js.map +1 -0
  725. package/build/server/chunks/shield-check-BpiYOxKK.js +19 -0
  726. package/build/server/chunks/shield-check-BpiYOxKK.js.map +1 -0
  727. package/build/server/chunks/slug-BGuFQjqe.js +6 -0
  728. package/build/server/chunks/slug-BGuFQjqe.js.map +1 -0
  729. package/build/server/chunks/star-CyFkn9su.js +18 -0
  730. package/build/server/chunks/star-CyFkn9su.js.map +1 -0
  731. package/build/server/chunks/stores-r9x46ujW.js +31 -0
  732. package/build/server/chunks/stores-r9x46ujW.js.map +1 -0
  733. package/build/server/chunks/textarea-BCZD0juO.js +685 -0
  734. package/build/server/chunks/textarea-BCZD0juO.js.map +1 -0
  735. package/build/server/chunks/toast-state.svelte-CW-nObZ9.js +185 -0
  736. package/build/server/chunks/toast-state.svelte-CW-nObZ9.js.map +1 -0
  737. package/build/server/chunks/token.server-B8XVPI0F.js +25 -0
  738. package/build/server/chunks/token.server-B8XVPI0F.js.map +1 -0
  739. package/build/server/chunks/token.server2-D0Z99lBB.js +22 -0
  740. package/build/server/chunks/token.server2-D0Z99lBB.js.map +1 -0
  741. package/build/server/chunks/trash-2-DWN_oRG7.js +17 -0
  742. package/build/server/chunks/trash-2-DWN_oRG7.js.map +1 -0
  743. package/build/server/chunks/triangle-alert-DYYSX_Mf.js +444 -0
  744. package/build/server/chunks/triangle-alert-DYYSX_Mf.js.map +1 -0
  745. package/build/server/chunks/types-DxzJoaA4.js +11 -0
  746. package/build/server/chunks/types-DxzJoaA4.js.map +1 -0
  747. package/build/server/chunks/types2-DdHhYSMF.js +4 -0
  748. package/build/server/chunks/types2-DdHhYSMF.js.map +1 -0
  749. package/build/server/chunks/upload-DREoObmA.js +62 -0
  750. package/build/server/chunks/upload-DREoObmA.js.map +1 -0
  751. package/build/server/chunks/user-plus-Nb35DNnT.js +16 -0
  752. package/build/server/chunks/user-plus-Nb35DNnT.js.map +1 -0
  753. package/build/server/chunks/users-DMh0XDYp.js +16 -0
  754. package/build/server/chunks/users-DMh0XDYp.js.map +1 -0
  755. package/build/server/chunks/utils2-Sy-_rI-0.js +56 -0
  756. package/build/server/chunks/utils2-Sy-_rI-0.js.map +1 -0
  757. package/build/server/chunks/utils3-AZ8FPfBW.js +80 -0
  758. package/build/server/chunks/utils3-AZ8FPfBW.js.map +1 -0
  759. package/build/server/chunks/x-wRP5erhc.js +14 -0
  760. package/build/server/chunks/x-wRP5erhc.js.map +1 -0
  761. package/build/server/index.js +5380 -0
  762. package/build/server/index.js.map +1 -0
  763. package/build/server/manifest.js +517 -0
  764. package/build/server/manifest.js.map +1 -0
  765. package/build/shims.js +32 -0
  766. package/package.json +57 -0
  767. package/templates/.env.example +339 -0
  768. package/templates/ecosystem.config.cjs +52 -0
  769. package/templates/selva.config.example.js +338 -0
@@ -0,0 +1,86 @@
1
+ import { error, json } from '@sveltejs/kit';
2
+ import { z } from 'zod';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { h as getProjectProvider, P as ProviderError } from './providers.server-C32WKtDL.js';
5
+ import { k as requireCanCreateProject } from './access.server-GvriCjXN.js';
6
+ import { h as handleApiError, t as throwZodError } from './api-errors-Dk5z97zb.js';
7
+ import { s as slugify } from './slug-BGuFQjqe.js';
8
+ import { g as ProjectVisibilitySchema } from './context-9tV9WxQ5.js';
9
+ import './shared-server-DaWdgxVh.js';
10
+ import 'node:url';
11
+ import 'node:path';
12
+ import 'node:fs';
13
+ import 'node:fs/promises';
14
+ import '@supabase/supabase-js';
15
+
16
+ const MAX_SLUG_ATTEMPTS = 25;
17
+ function isSlugConflict(err) {
18
+ return err instanceof ProviderError && err.statusCode === 409 && /projects_org_id_slug_key/.test(err.message);
19
+ }
20
+ function isNameConflict(err) {
21
+ return err instanceof ProviderError && err.statusCode === 409 && /projects_org_name_unique/.test(err.message);
22
+ }
23
+ const CreateProjectBody = z.object({
24
+ name: z.string().min(1, "Project name is required").max(128).trim(),
25
+ description: z.string().max(2e3).optional(),
26
+ visibility: ProjectVisibilitySchema.default("private"),
27
+ autoJoinOnUpload: z.boolean().optional()
28
+ });
29
+ const GET = async ({ locals }) => {
30
+ const ctx = locals.ctx;
31
+ if (!ctx.actingOrgId) throw error(400, "No active organization");
32
+ try {
33
+ const page = await getProjectProvider().listProjects(ctx, ctx.actingOrgId, { limit: 200 });
34
+ return json({ projects: page.items });
35
+ } catch (err) {
36
+ handleApiError(err, "Failed to load projects");
37
+ }
38
+ };
39
+ const POST = async ({ request, locals }) => {
40
+ const ctx = locals.ctx;
41
+ if (!ctx.actingOrgId) throw error(400, "No active organization");
42
+ await requireCanCreateProject(locals, ctx.actingOrgId);
43
+ const body = await request.json().catch(() => null);
44
+ const parsed = CreateProjectBody.safeParse(body);
45
+ if (!parsed.success) throwZodError(parsed.error);
46
+ const autoJoinOnUpload = parsed.data.autoJoinOnUpload ?? false;
47
+ if (autoJoinOnUpload && parsed.data.visibility !== "public") {
48
+ throw error(400, "autoJoinOnUpload requires visibility=public");
49
+ }
50
+ const projectStore = getProjectProvider();
51
+ const baseSlug = slugify(parsed.data.name) || "project";
52
+ const now = (/* @__PURE__ */ new Date()).toISOString();
53
+ const projectId = randomUUID();
54
+ for (let attempt = 0; attempt < MAX_SLUG_ATTEMPTS; attempt++) {
55
+ const slug = attempt === 0 ? baseSlug : `${baseSlug}-${attempt + 1}`;
56
+ const project = {
57
+ id: projectId,
58
+ orgId: ctx.actingOrgId,
59
+ name: parsed.data.name,
60
+ slug,
61
+ description: parsed.data.description,
62
+ visibility: parsed.data.visibility,
63
+ ownerId: locals.user.id,
64
+ createdBy: locals.user.id,
65
+ updatedBy: locals.user.id,
66
+ autoJoinOnUpload,
67
+ createdAt: now,
68
+ updatedAt: now,
69
+ deletedAt: null
70
+ };
71
+ try {
72
+ await projectStore.createProject(ctx, project);
73
+ return json(project, { status: 201 });
74
+ } catch (err) {
75
+ if (isNameConflict(err)) {
76
+ throw error(409, "A project with that name already exists in this organization.");
77
+ }
78
+ if (isSlugConflict(err)) continue;
79
+ handleApiError(err, "Failed to create project");
80
+ }
81
+ }
82
+ throw error(409, "Could not pick a unique project slug after several attempts.");
83
+ };
84
+
85
+ export { GET, POST };
86
+ //# sourceMappingURL=_server.ts-DBh0rJrm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DBh0rJrm.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { randomUUID } from \"node:crypto\";\nimport { b as getProjectProvider, P as ProviderError } from \"../../../../chunks/providers.server.js\";\nimport { k as requireCanCreateProject } from \"../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../chunks/api-errors.js\";\nimport { s as slugify } from \"../../../../chunks/slug.js\";\nimport { g as ProjectVisibilitySchema } from \"../../../../chunks/context.js\";\nconst MAX_SLUG_ATTEMPTS = 25;\nfunction isSlugConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_id_slug_key/.test(err.message);\n}\nfunction isNameConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_name_unique/.test(err.message);\n}\nconst CreateProjectBody = z.object({\n name: z.string().min(1, \"Project name is required\").max(128).trim(),\n description: z.string().max(2e3).optional(),\n visibility: ProjectVisibilitySchema.default(\"private\"),\n autoJoinOnUpload: z.boolean().optional()\n});\nconst GET = async ({ locals }) => {\n const ctx = locals.ctx;\n if (!ctx.actingOrgId) throw error(400, \"No active organization\");\n try {\n const page = await getProjectProvider().listProjects(ctx, ctx.actingOrgId, { limit: 200 });\n return json({ projects: page.items });\n } catch (err) {\n handleApiError(err, \"Failed to load projects\");\n }\n};\nconst POST = async ({ request, locals }) => {\n const ctx = locals.ctx;\n if (!ctx.actingOrgId) throw error(400, \"No active organization\");\n await requireCanCreateProject(locals, ctx.actingOrgId);\n const body = await request.json().catch(() => null);\n const parsed = CreateProjectBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const autoJoinOnUpload = parsed.data.autoJoinOnUpload ?? false;\n if (autoJoinOnUpload && parsed.data.visibility !== \"public\") {\n throw error(400, \"autoJoinOnUpload requires visibility=public\");\n }\n const projectStore = getProjectProvider();\n const baseSlug = slugify(parsed.data.name) || \"project\";\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const projectId = randomUUID();\n for (let attempt = 0; attempt < MAX_SLUG_ATTEMPTS; attempt++) {\n const slug = attempt === 0 ? baseSlug : `${baseSlug}-${attempt + 1}`;\n const project = {\n id: projectId,\n orgId: ctx.actingOrgId,\n name: parsed.data.name,\n slug,\n description: parsed.data.description,\n visibility: parsed.data.visibility,\n ownerId: locals.user.id,\n createdBy: locals.user.id,\n updatedBy: locals.user.id,\n autoJoinOnUpload,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n try {\n await projectStore.createProject(ctx, project);\n return json(project, { status: 201 });\n } catch (err) {\n if (isNameConflict(err)) {\n throw error(409, \"A project with that name already exists in this organization.\");\n }\n if (isSlugConflict(err)) continue;\n handleApiError(err, \"Failed to create project\");\n }\n }\n throw error(409, \"Could not pick a unique project slug after several attempts.\");\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { error } from '@sveltejs/kit';
2
+ import { i as getDefinitionMeta, s as definitionPaths, m as getStorageProvider } from './providers.server-C32WKtDL.js';
3
+ import { G as GuidSchema } from './context-9tV9WxQ5.js';
4
+ import { h as requireCanViewProject } from './access.server-GvriCjXN.js';
5
+ import './shared-server-DaWdgxVh.js';
6
+ import 'node:url';
7
+ import 'node:path';
8
+ import 'node:fs';
9
+ import 'node:crypto';
10
+ import 'node:fs/promises';
11
+ import '@supabase/supabase-js';
12
+ import 'zod';
13
+ import './api-errors-Dk5z97zb.js';
14
+
15
+ const ALLOWED_EXTENSIONS = {
16
+ ".webp": "image/webp",
17
+ ".jpg": "image/jpeg",
18
+ ".jpeg": "image/jpeg",
19
+ ".png": "image/png",
20
+ ".gif": "image/gif"
21
+ };
22
+ const COVER_PATH_PATTERN = /^definitions\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\/cover\.([a-z]+)$/i;
23
+ const GET = async ({ params, locals }) => {
24
+ const storagePath = params.path;
25
+ if (!storagePath) throw error(400, "Missing path");
26
+ const match = COVER_PATH_PATTERN.exec(storagePath);
27
+ if (!match) throw error(404, "File not found");
28
+ const [, guid, rawExt] = match;
29
+ const ext = `.${rawExt.toLowerCase()}`;
30
+ if (!ALLOWED_EXTENSIONS[ext]) throw error(404, "File not found");
31
+ const guidParsed = GuidSchema.safeParse(guid);
32
+ if (!guidParsed.success) throw error(404, "File not found");
33
+ if (!locals.ctx) throw error(401, "Unauthorized");
34
+ const record = await getDefinitionMeta().get(locals.ctx, guidParsed.data);
35
+ if (!record) throw error(404, "File not found");
36
+ await requireCanViewProject(locals, record.projectId);
37
+ const canonicalPath = definitionPaths.image(guidParsed.data);
38
+ const bytes = await getStorageProvider().get(canonicalPath);
39
+ if (!bytes) throw error(404, "File not found");
40
+ return new Response(Buffer.from(bytes), {
41
+ headers: {
42
+ "Content-Type": ALLOWED_EXTENSIONS[ext],
43
+ "Cache-Control": "private, max-age=3600"
44
+ }
45
+ });
46
+ };
47
+
48
+ export { GET };
49
+ //# sourceMappingURL=_server.ts-DJUYnHrj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DJUYnHrj.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/files/_...path_/_server.ts.js"],"sourcesContent":["import { error } from \"@sveltejs/kit\";\nimport { k as getDefinitionMeta, l as definitionPaths, i as getStorageProvider } from \"../../../../../chunks/providers.server.js\";\nimport { G as GuidSchema } from \"../../../../../chunks/context.js\";\nimport { h as requireCanViewProject } from \"../../../../../chunks/access.server.js\";\nconst ALLOWED_EXTENSIONS = {\n \".webp\": \"image/webp\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".png\": \"image/png\",\n \".gif\": \"image/gif\"\n};\nconst COVER_PATH_PATTERN = /^definitions\\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\/cover\\.([a-z]+)$/i;\nconst GET = async ({ params, locals }) => {\n const storagePath = params.path;\n if (!storagePath) throw error(400, \"Missing path\");\n const match = COVER_PATH_PATTERN.exec(storagePath);\n if (!match) throw error(404, \"File not found\");\n const [, guid, rawExt] = match;\n const ext = `.${rawExt.toLowerCase()}`;\n if (!ALLOWED_EXTENSIONS[ext]) throw error(404, \"File not found\");\n const guidParsed = GuidSchema.safeParse(guid);\n if (!guidParsed.success) throw error(404, \"File not found\");\n if (!locals.ctx) throw error(401, \"Unauthorized\");\n const record = await getDefinitionMeta().get(locals.ctx, guidParsed.data);\n if (!record) throw error(404, \"File not found\");\n await requireCanViewProject(locals, record.projectId);\n const canonicalPath = definitionPaths.image(guidParsed.data);\n const bytes = await getStorageProvider().get(canonicalPath);\n if (!bytes) throw error(404, \"File not found\");\n return new Response(Buffer.from(bytes), {\n headers: {\n \"Content-Type\": ALLOWED_EXTENSIONS[ext],\n \"Cache-Control\": \"private, max-age=3600\"\n }\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,MAAM,kBAAkB,GAAG;AAC3B,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,MAAM,EAAE,WAAW;AACrB,EAAE,MAAM,EAAE;AACV,CAAC;AACD,MAAM,kBAAkB,GAAG,iGAAiG;AACvH,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC1C,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI;AACjC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACpD,EAAE,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAChD,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK;AAChC,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAClE,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC7D,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACnD,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAC3E,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AACjD,EAAE,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AACvD,EAAE,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9D,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;AAC7D,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAChD,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1C,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,kBAAkB,CAAC,GAAG,CAAC;AAC7C,MAAM,eAAe,EAAE;AACvB;AACA,GAAG,CAAC;AACJ;;;;"}
@@ -0,0 +1,76 @@
1
+ import { error, json } from '@sveltejs/kit';
2
+ import { r as definitionService } from './providers.server-C32WKtDL.js';
3
+ import { g as requireEditableDefinition } from './access.server-GvriCjXN.js';
4
+ import { h as handleApiError, t as throwZodError } from './api-errors-Dk5z97zb.js';
5
+ import { G as GH_EXTENSIONS } from './types-DxzJoaA4.js';
6
+ import { G as GuidSchema, c as UpdateMetadataInputSchema } from './context-9tV9WxQ5.js';
7
+ import { d as MAX_GH_FILE_SIZE } from './computeLimits-FIJ-Mzn4.js';
8
+ import './shared-server-DaWdgxVh.js';
9
+ import 'node:url';
10
+ import 'node:path';
11
+ import 'node:fs';
12
+ import 'node:crypto';
13
+ import 'node:fs/promises';
14
+ import '@supabase/supabase-js';
15
+ import 'zod';
16
+
17
+ const POST = async ({ params, request, locals }) => {
18
+ const guidParsed = GuidSchema.safeParse(params.guid);
19
+ if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
20
+ const formData = await request.formData();
21
+ const file = formData.get("file");
22
+ if (!(file instanceof File)) throw error(400, "A Grasshopper (.gh or .ghx) file is required");
23
+ const changeNoteRaw = formData.get("changeNote");
24
+ const changeNote = typeof changeNoteRaw === "string" ? changeNoteRaw.slice(0, 1e3) : void 0;
25
+ const ext = file.name.slice(file.name.lastIndexOf(".")).toLowerCase();
26
+ if (!GH_EXTENSIONS.includes(ext)) {
27
+ throw error(400, `File type not allowed. Allowed: ${GH_EXTENSIONS.join(", ")}`);
28
+ }
29
+ if (file.size > MAX_GH_FILE_SIZE) {
30
+ throw error(400, `File too large. Max size: ${MAX_GH_FILE_SIZE / (1024 * 1024)} MB`);
31
+ }
32
+ const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
33
+ const fileExt = ext.slice(1);
34
+ try {
35
+ const data = new Uint8Array(await file.arrayBuffer());
36
+ const version = await definitionService.uploadVersion(
37
+ ctx,
38
+ guidParsed.data,
39
+ data,
40
+ fileExt,
41
+ file.name,
42
+ changeNote
43
+ );
44
+ return json({ success: true, version });
45
+ } catch (err) {
46
+ handleApiError(err, "Failed to upload definition version");
47
+ }
48
+ };
49
+ const DELETE = async ({ params, locals }) => {
50
+ const guidParsed = GuidSchema.safeParse(params.guid);
51
+ if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
52
+ const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
53
+ try {
54
+ await definitionService.delete(ctx, guidParsed.data);
55
+ return json({ success: true });
56
+ } catch (err) {
57
+ handleApiError(err, "Failed to delete definition");
58
+ }
59
+ };
60
+ const PUT = async ({ params, request, locals }) => {
61
+ const guidParsed = GuidSchema.safeParse(params.guid);
62
+ if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
63
+ const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
64
+ const body = await request.json().catch(() => null);
65
+ const parsed = UpdateMetadataInputSchema.safeParse(body);
66
+ if (!parsed.success) throwZodError(parsed.error);
67
+ try {
68
+ await definitionService.updateMeta(ctx, guidParsed.data, parsed.data);
69
+ return json({ success: true });
70
+ } catch (err) {
71
+ handleApiError(err, "Failed to update definition");
72
+ }
73
+ };
74
+
75
+ export { DELETE, POST, PUT };
76
+ //# sourceMappingURL=_server.ts-DNPb5zS6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DNPb5zS6.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { j as definitionService } from \"../../../../../chunks/providers.server.js\";\nimport { g as requireEditableDefinition } from \"../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../chunks/api-errors.js\";\nimport { G as GH_EXTENSIONS } from \"../../../../../chunks/types.js\";\nimport { G as GuidSchema, b as UpdateMetadataInputSchema } from \"../../../../../chunks/context.js\";\nimport { d as MAX_GH_FILE_SIZE } from \"../../../../../chunks/computeLimits.js\";\nconst POST = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const formData = await request.formData();\n const file = formData.get(\"file\");\n if (!(file instanceof File)) throw error(400, \"A Grasshopper (.gh or .ghx) file is required\");\n const changeNoteRaw = formData.get(\"changeNote\");\n const changeNote = typeof changeNoteRaw === \"string\" ? changeNoteRaw.slice(0, 1e3) : void 0;\n const ext = file.name.slice(file.name.lastIndexOf(\".\")).toLowerCase();\n if (!GH_EXTENSIONS.includes(ext)) {\n throw error(400, `File type not allowed. Allowed: ${GH_EXTENSIONS.join(\", \")}`);\n }\n if (file.size > MAX_GH_FILE_SIZE) {\n throw error(400, `File too large. Max size: ${MAX_GH_FILE_SIZE / (1024 * 1024)} MB`);\n }\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const fileExt = ext.slice(1);\n try {\n const data = new Uint8Array(await file.arrayBuffer());\n const version = await definitionService.uploadVersion(\n ctx,\n guidParsed.data,\n data,\n fileExt,\n file.name,\n changeNote\n );\n return json({ success: true, version });\n } catch (err) {\n handleApiError(err, \"Failed to upload definition version\");\n }\n};\nconst DELETE = async ({ params, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n await definitionService.delete(ctx, guidParsed.data);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to delete definition\");\n }\n};\nconst PUT = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const body = await request.json().catch(() => null);\n const parsed = UpdateMetadataInputSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n try {\n await definitionService.updateMeta(ctx, guidParsed.data, parsed.data);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to update definition\");\n }\n};\nexport {\n DELETE,\n POST,\n PUT\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import { json, error } from '@sveltejs/kit';
2
+ import { z } from 'zod';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { c as getOrganizationProvider, h as getProjectProvider, P as ProviderError } from './providers.server-C32WKtDL.js';
5
+ import { a as requireInstanceAdmin } from './access.server-GvriCjXN.js';
6
+ import { h as handleApiError, t as throwZodError } from './api-errors-Dk5z97zb.js';
7
+ import { s as slugify } from './slug-BGuFQjqe.js';
8
+ import { S as SYSTEM_CONTEXT } from './context-9tV9WxQ5.js';
9
+ import './shared-server-DaWdgxVh.js';
10
+ import 'node:url';
11
+ import 'node:path';
12
+ import 'node:fs';
13
+ import 'node:fs/promises';
14
+ import '@supabase/supabase-js';
15
+
16
+ const MAX_SLUG_ATTEMPTS = 25;
17
+ function isSlugConflict(err) {
18
+ return err instanceof ProviderError && err.statusCode === 409 && /projects_org_id_slug_key/.test(err.message);
19
+ }
20
+ function isNameConflict(err) {
21
+ return err instanceof ProviderError && err.statusCode === 409 && /projects_org_name_unique/.test(err.message);
22
+ }
23
+ const CreatePlatformProjectBody = z.object({
24
+ name: z.string().min(1, "Project name is required").max(128).trim(),
25
+ description: z.string().max(2e3).optional(),
26
+ /**
27
+ * Org that physically hosts the project. Storage routing and compute
28
+ * resolution use this — but org membership in this org does NOT grant
29
+ * access. Visibility = 'platform' overrides those defaults.
30
+ *
31
+ * If omitted, the platform admin's first available org is used.
32
+ */
33
+ orgId: z.string().uuid().optional()
34
+ });
35
+ const GET = async ({ locals }) => {
36
+ requireInstanceAdmin(locals);
37
+ try {
38
+ const orgs = await getOrganizationProvider().listOrgs(SYSTEM_CONTEXT, { limit: 1e3 });
39
+ const all = [];
40
+ for (const org of orgs.items) {
41
+ const page = await getProjectProvider().listProjects(SYSTEM_CONTEXT, org.id, {
42
+ limit: 1e3
43
+ });
44
+ for (const p of page.items) {
45
+ if (p.visibility === "platform") all.push(p);
46
+ }
47
+ }
48
+ return json({ projects: all });
49
+ } catch (err) {
50
+ handleApiError(err, "Failed to list platform projects");
51
+ }
52
+ };
53
+ const POST = async ({ request, locals }) => {
54
+ const user = requireInstanceAdmin(locals);
55
+ const ctx = locals.ctx;
56
+ const body = await request.json().catch(() => null);
57
+ const parsed = CreatePlatformProjectBody.safeParse(body);
58
+ if (!parsed.success) throwZodError(parsed.error);
59
+ const hostOrgId = parsed.data.orgId ?? ctx.actingOrgId;
60
+ if (!hostOrgId) {
61
+ throw error(400, "A host orgId is required (no active organization in context).");
62
+ }
63
+ const hostOrg = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, hostOrgId);
64
+ if (!hostOrg) throw error(400, `Host organization '${hostOrgId}' not found.`);
65
+ const projectStore = getProjectProvider();
66
+ const baseSlug = slugify(parsed.data.name) || "platform-project";
67
+ const now = (/* @__PURE__ */ new Date()).toISOString();
68
+ const projectId = randomUUID();
69
+ for (let attempt = 0; attempt < MAX_SLUG_ATTEMPTS; attempt++) {
70
+ const slug = attempt === 0 ? baseSlug : `${baseSlug}-${attempt + 1}`;
71
+ const project = {
72
+ id: projectId,
73
+ orgId: hostOrgId,
74
+ name: parsed.data.name,
75
+ slug,
76
+ description: parsed.data.description,
77
+ visibility: "platform",
78
+ ownerId: user.id,
79
+ createdBy: user.id,
80
+ updatedBy: user.id,
81
+ autoJoinOnUpload: false,
82
+ createdAt: now,
83
+ updatedAt: now,
84
+ deletedAt: null
85
+ };
86
+ try {
87
+ await projectStore.createProject(SYSTEM_CONTEXT, project);
88
+ return json(project, { status: 201 });
89
+ } catch (err) {
90
+ if (isNameConflict(err)) {
91
+ throw error(409, "A project with that name already exists in the host organization.");
92
+ }
93
+ if (isSlugConflict(err)) continue;
94
+ handleApiError(err, "Failed to create platform project");
95
+ }
96
+ }
97
+ throw error(409, "Could not pick a unique project slug after several attempts.");
98
+ };
99
+
100
+ export { GET, POST };
101
+ //# sourceMappingURL=_server.ts-DXPhlUCi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DXPhlUCi.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/projects/_server.ts.js"],"sourcesContent":["import { json, error } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { randomUUID } from \"node:crypto\";\nimport { a as getOrganizationProvider, b as getProjectProvider, P as ProviderError } from \"../../../../../chunks/providers.server.js\";\nimport { a as requireInstanceAdmin } from \"../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../chunks/api-errors.js\";\nimport { s as slugify } from \"../../../../../chunks/slug.js\";\nimport { S as SYSTEM_CONTEXT } from \"../../../../../chunks/context.js\";\nconst MAX_SLUG_ATTEMPTS = 25;\nfunction isSlugConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_id_slug_key/.test(err.message);\n}\nfunction isNameConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_name_unique/.test(err.message);\n}\nconst CreatePlatformProjectBody = z.object({\n name: z.string().min(1, \"Project name is required\").max(128).trim(),\n description: z.string().max(2e3).optional(),\n /**\n * Org that physically hosts the project. Storage routing and compute\n * resolution use this — but org membership in this org does NOT grant\n * access. Visibility = 'platform' overrides those defaults.\n *\n * If omitted, the platform admin's first available org is used.\n */\n orgId: z.string().uuid().optional()\n});\nconst GET = async ({ locals }) => {\n requireInstanceAdmin(locals);\n try {\n const orgs = await getOrganizationProvider().listOrgs(SYSTEM_CONTEXT, { limit: 1e3 });\n const all = [];\n for (const org of orgs.items) {\n const page = await getProjectProvider().listProjects(SYSTEM_CONTEXT, org.id, {\n limit: 1e3\n });\n for (const p of page.items) {\n if (p.visibility === \"platform\") all.push(p);\n }\n }\n return json({ projects: all });\n } catch (err) {\n handleApiError(err, \"Failed to list platform projects\");\n }\n};\nconst POST = async ({ request, locals }) => {\n const user = requireInstanceAdmin(locals);\n const ctx = locals.ctx;\n const body = await request.json().catch(() => null);\n const parsed = CreatePlatformProjectBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const hostOrgId = parsed.data.orgId ?? ctx.actingOrgId;\n if (!hostOrgId) {\n throw error(400, \"A host orgId is required (no active organization in context).\");\n }\n const hostOrg = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, hostOrgId);\n if (!hostOrg) throw error(400, `Host organization '${hostOrgId}' not found.`);\n const projectStore = getProjectProvider();\n const baseSlug = slugify(parsed.data.name) || \"platform-project\";\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const projectId = randomUUID();\n for (let attempt = 0; attempt < MAX_SLUG_ATTEMPTS; attempt++) {\n const slug = attempt === 0 ? baseSlug : `${baseSlug}-${attempt + 1}`;\n const project = {\n id: projectId,\n orgId: hostOrgId,\n name: parsed.data.name,\n slug,\n description: parsed.data.description,\n visibility: \"platform\",\n ownerId: user.id,\n createdBy: user.id,\n updatedBy: user.id,\n autoJoinOnUpload: false,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n try {\n await projectStore.createProject(SYSTEM_CONTEXT, project);\n return json(project, { status: 201 });\n } catch (err) {\n if (isNameConflict(err)) {\n throw error(409, \"A project with that name already exists in the host organization.\");\n }\n if (isSlugConflict(err)) continue;\n handleApiError(err, \"Failed to create platform project\");\n }\n }\n throw error(409, \"Could not pick a unique project slug after several attempts.\");\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { error, json } from '@sveltejs/kit';
2
+ import { i as getDefinitionMeta, M as MAX_PAGE_LIMIT } from './providers.server-C32WKtDL.js';
3
+ import { h as handleApiError } from './api-errors-Dk5z97zb.js';
4
+ import { h as requireCanViewProject } from './access.server-GvriCjXN.js';
5
+ import { G as GuidSchema } from './context-9tV9WxQ5.js';
6
+ import './shared-server-DaWdgxVh.js';
7
+ import 'node:url';
8
+ import 'node:path';
9
+ import 'node:fs';
10
+ import 'node:crypto';
11
+ import 'node:fs/promises';
12
+ import '@supabase/supabase-js';
13
+ import 'zod';
14
+
15
+ const GET = async ({ params, locals, url }) => {
16
+ const guidParsed = GuidSchema.safeParse(params.guid);
17
+ if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
18
+ if (!locals.ctx) throw error(401, "Unauthorized");
19
+ const rawLimit = Number(url.searchParams.get("limit") ?? 50);
20
+ const limit = Number.isFinite(rawLimit) ? Math.min(Math.max(rawLimit, 1), MAX_PAGE_LIMIT) : 50;
21
+ const cursor = url.searchParams.get("cursor") ?? void 0;
22
+ try {
23
+ const def = await getDefinitionMeta().get(locals.ctx, guidParsed.data);
24
+ if (!def) throw error(404, "Definition not found");
25
+ await requireCanViewProject(locals, def.projectId);
26
+ const page = await getDefinitionMeta().listVersions(locals.ctx, guidParsed.data, {
27
+ limit,
28
+ cursor
29
+ });
30
+ return json({
31
+ versions: page.items,
32
+ nextCursor: page.nextCursor,
33
+ liveVersionId: def.liveVersionId,
34
+ draftVersionId: def.draftVersionId
35
+ });
36
+ } catch (err) {
37
+ handleApiError(err, "Failed to list versions");
38
+ }
39
+ };
40
+
41
+ export { GET };
42
+ //# sourceMappingURL=_server.ts-Dmo73WWA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-Dmo73WWA.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/versions/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { k as getDefinitionMeta, M as MAX_PAGE_LIMIT } from \"../../../../../../chunks/providers.server.js\";\nimport { h as handleApiError } from \"../../../../../../chunks/api-errors.js\";\nimport { h 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) throw error(400, \"Invalid or missing GUID\");\n if (!locals.ctx) throw error(401, \"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) throw error(404, \"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,MAAM,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACtE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACnD,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,MAAM,KAAK,CAAC,GAAG,EAAE,sBAAsB,CAAC;AACtD,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;;;;"}
@@ -0,0 +1,35 @@
1
+ import { json } from '@sveltejs/kit';
2
+ import { execSync } from 'child_process';
3
+ import { g as getBootHealth, i as isDegraded } from './bootHealth.server-Bn7taneH.js';
4
+ import './context-9tV9WxQ5.js';
5
+ import 'zod';
6
+ import './providers.server-C32WKtDL.js';
7
+ import './shared-server-DaWdgxVh.js';
8
+ import 'node:url';
9
+ import 'node:path';
10
+ import 'node:fs';
11
+ import 'node:crypto';
12
+ import 'node:fs/promises';
13
+ import '@supabase/supabase-js';
14
+
15
+ const STARTUP_COMMIT = (() => {
16
+ try {
17
+ return execSync("git rev-parse HEAD", { encoding: "utf8" }).trim();
18
+ } catch {
19
+ return null;
20
+ }
21
+ })();
22
+ const GET = async () => {
23
+ const boot = await getBootHealth();
24
+ const degraded = isDegraded(boot);
25
+ const body = {
26
+ status: degraded ? "degraded" : "ok",
27
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
28
+ commit: STARTUP_COMMIT,
29
+ boot
30
+ };
31
+ return json(body, { status: degraded ? 503 : 200 });
32
+ };
33
+
34
+ export { GET };
35
+ //# sourceMappingURL=_server.ts-DxKERFAd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DxKERFAd.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/health/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { execSync } from \"child_process\";\nimport { g as getBootHealth, i as isDegraded } from \"../../../../chunks/bootHealth.server.js\";\nconst STARTUP_COMMIT = (() => {\n try {\n return execSync(\"git rev-parse HEAD\", { encoding: \"utf8\" }).trim();\n } catch {\n return null;\n }\n})();\nconst GET = async () => {\n const boot = await getBootHealth();\n const degraded = isDegraded(boot);\n const body = {\n status: degraded ? \"degraded\" : \"ok\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n commit: STARTUP_COMMIT,\n boot\n };\n return json(body, { status: degraded ? 503 : 200 });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA,MAAM,cAAc,GAAG,CAAC,MAAM;AAC9B,EAAE,IAAI;AACN,IAAI,OAAO,QAAQ,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE;AACtE,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,IAAI;AACf,EAAE;AACF,CAAC,GAAG;AACC,MAAC,GAAG,GAAG,YAAY;AACxB,EAAE,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE;AACpC,EAAE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;AACnC,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI;AACxC,IAAI,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACzD,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI;AACJ,GAAG;AACH,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AACrD;;;;"}
@@ -0,0 +1,31 @@
1
+ import { error, json } from '@sveltejs/kit';
2
+ import { r as definitionService } from './providers.server-C32WKtDL.js';
3
+ import { g as requireEditableDefinition } from './access.server-GvriCjXN.js';
4
+ import { t as throwZodError, h as handleApiError } from './api-errors-Dk5z97zb.js';
5
+ import { G as GuidSchema, d as PublishVersionInputSchema } from './context-9tV9WxQ5.js';
6
+ import './shared-server-DaWdgxVh.js';
7
+ import 'node:url';
8
+ import 'node:path';
9
+ import 'node:fs';
10
+ import 'node:crypto';
11
+ import 'node:fs/promises';
12
+ import '@supabase/supabase-js';
13
+ import 'zod';
14
+
15
+ const POST = async ({ params, request, locals }) => {
16
+ const guidParsed = GuidSchema.safeParse(params.guid);
17
+ if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
18
+ const body = await request.json().catch(() => ({}));
19
+ const parsed = PublishVersionInputSchema.safeParse(body);
20
+ if (!parsed.success) throwZodError(parsed.error);
21
+ const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
22
+ try {
23
+ const version = await definitionService.publish(ctx, guidParsed.data, parsed.data.versionId);
24
+ return json({ success: true, version });
25
+ } catch (err) {
26
+ handleApiError(err, "Failed to publish version");
27
+ }
28
+ };
29
+
30
+ export { POST };
31
+ //# sourceMappingURL=_server.ts-MOiQ4br_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-MOiQ4br_.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/publish/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { j as definitionService } from \"../../../../../../chunks/providers.server.js\";\nimport { g as requireEditableDefinition } from \"../../../../../../chunks/access.server.js\";\nimport { t as throwZodError, h as handleApiError } from \"../../../../../../chunks/api-errors.js\";\nimport { G as GuidSchema, c as PublishVersionInputSchema } from \"../../../../../../chunks/context.js\";\nconst POST = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const body = await request.json().catch(() => ({}));\n const parsed = PublishVersionInputSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n const version = await definitionService.publish(ctx, guidParsed.data, parsed.data.versionId);\n return json({ success: true, version });\n } catch (err) {\n handleApiError(err, \"Failed to publish version\");\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAKK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;AACpD,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACtE,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACrD,EAAE,MAAM,MAAM,GAAG,yBAAyB,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1D,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;AAC1E,EAAE,IAAI;AACN,IAAI,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAChG,IAAI,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3C,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,2BAA2B,CAAC;AACpD,EAAE;AACF;;;;"}
@@ -0,0 +1,71 @@
1
+ import { error, json } from '@sveltejs/kit';
2
+ import { z } from 'zod';
3
+ import { h as getProjectProvider } from './providers.server-C32WKtDL.js';
4
+ import { o as requireCanManageMembers, q as checkOwnerRemoval } from './access.server-GvriCjXN.js';
5
+ import { h as handleApiError, t as throwZodError } from './api-errors-Dk5z97zb.js';
6
+ import { i as ProjectRoleSchema } from './context-9tV9WxQ5.js';
7
+ import './shared-server-DaWdgxVh.js';
8
+ import 'node:url';
9
+ import 'node:path';
10
+ import 'node:fs';
11
+ import 'node:crypto';
12
+ import 'node:fs/promises';
13
+ import '@supabase/supabase-js';
14
+
15
+ const UpdateRoleSchema = z.object({ role: ProjectRoleSchema });
16
+ const PATCH = async ({ params, request, locals }) => {
17
+ const { id, userId } = params;
18
+ if (!id || !userId) throw error(400, "Missing project ID or user ID");
19
+ await requireCanManageMembers(locals, id);
20
+ const ctx = locals.ctx;
21
+ const body = await request.json().catch(() => null);
22
+ const parsed = UpdateRoleSchema.safeParse(body);
23
+ if (!parsed.success) throwZodError(parsed.error);
24
+ try {
25
+ await getProjectProvider().updateProjectMemberRole(ctx, id, userId, parsed.data.role);
26
+ return json({ success: true });
27
+ } catch (err) {
28
+ handleApiError(err, "Failed to update role");
29
+ }
30
+ };
31
+ const DELETE = async ({ params, url, locals }) => {
32
+ const { id, userId } = params;
33
+ if (!id || !userId) throw error(400, "Missing project ID or user ID");
34
+ await requireCanManageMembers(locals, id);
35
+ const ctx = locals.ctx;
36
+ const confirmed = url.searchParams.get("confirm") === "true";
37
+ const projects = getProjectProvider();
38
+ const target = await projects.getProjectMember(ctx, id, userId);
39
+ if (!target) {
40
+ return json({ success: true });
41
+ }
42
+ if (target.role === "owner") {
43
+ const page = await projects.listProjectMembers(ctx, id, { limit: 200 });
44
+ const decision = checkOwnerRemoval({
45
+ target: { role: target.role },
46
+ allMembers: page.items.map((m) => ({ role: m.role })),
47
+ confirmed
48
+ });
49
+ if (decision === "sole_owner") {
50
+ throw error(
51
+ 409,
52
+ "Cannot remove the sole owner of a project. Assign another owner first, or use reclaim to add a co-owner."
53
+ );
54
+ }
55
+ if (decision === "needs_confirm") {
56
+ throw error(
57
+ 409,
58
+ "Removing another project owner requires explicit confirmation. Retry with ?confirm=true."
59
+ );
60
+ }
61
+ }
62
+ try {
63
+ await projects.removeProjectMember(ctx, id, userId);
64
+ return json({ success: true });
65
+ } catch (err) {
66
+ handleApiError(err, "Failed to remove member");
67
+ }
68
+ };
69
+
70
+ export { DELETE, PATCH };
71
+ //# sourceMappingURL=_server.ts-Z87uowZI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-Z87uowZI.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_id_/members/_userId_/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { b as getProjectProvider } from \"../../../../../../../chunks/providers.server.js\";\nimport { o as requireCanManageMembers, q as checkOwnerRemoval } from \"../../../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../../../chunks/api-errors.js\";\nimport { i as ProjectRoleSchema } from \"../../../../../../../chunks/context.js\";\nconst UpdateRoleSchema = z.object({ role: ProjectRoleSchema });\nconst PATCH = async ({ params, request, locals }) => {\n const { id, userId } = params;\n if (!id || !userId) throw error(400, \"Missing project ID or user ID\");\n await requireCanManageMembers(locals, id);\n const ctx = locals.ctx;\n const body = await request.json().catch(() => null);\n const parsed = UpdateRoleSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n try {\n await getProjectProvider().updateProjectMemberRole(ctx, id, userId, parsed.data.role);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to update role\");\n }\n};\nconst DELETE = async ({ params, url, locals }) => {\n const { id, userId } = params;\n if (!id || !userId) throw error(400, \"Missing project ID or user ID\");\n await requireCanManageMembers(locals, id);\n const ctx = locals.ctx;\n const confirmed = url.searchParams.get(\"confirm\") === \"true\";\n const projects = getProjectProvider();\n const target = await projects.getProjectMember(ctx, id, userId);\n if (!target) {\n return json({ success: true });\n }\n if (target.role === \"owner\") {\n const page = await projects.listProjectMembers(ctx, id, { limit: 200 });\n const decision = checkOwnerRemoval({\n target: { role: target.role },\n allMembers: page.items.map((m) => ({ role: m.role })),\n confirmed\n });\n if (decision === \"sole_owner\") {\n throw error(\n 409,\n \"Cannot remove the sole owner of a project. Assign another owner first, or use reclaim to add a co-owner.\"\n );\n }\n if (decision === \"needs_confirm\") {\n throw error(\n 409,\n \"Removing another project owner requires explicit confirmation. Retry with ?confirm=true.\"\n );\n }\n }\n try {\n await projects.removeProjectMember(ctx, id, userId);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to remove member\");\n }\n};\nexport {\n DELETE,\n PATCH\n};\n"],"names":[],"mappings":"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"}