mongoku 2.9.2-compat → 2.10.0-compat

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 (458) hide show
  1. package/build/client/_app/immutable/assets/0.D8aXA7G5.css +1 -0
  2. package/build/client/_app/immutable/assets/0.D8aXA7G5.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.D8aXA7G5.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/10.-WSj0hXT.css +1 -0
  5. package/build/client/_app/immutable/assets/10.-WSj0hXT.css.br +1 -0
  6. package/build/client/_app/immutable/assets/10.-WSj0hXT.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/16.BpmHh9U0.css +1 -0
  8. package/build/client/_app/immutable/assets/16.BpmHh9U0.css.br +0 -0
  9. package/build/client/_app/immutable/assets/16.BpmHh9U0.css.gz +0 -0
  10. package/build/client/_app/immutable/chunks/-8z-rXzu.js +1 -0
  11. package/build/client/_app/immutable/chunks/-8z-rXzu.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/-8z-rXzu.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/ADrS3reX.js +1 -0
  14. package/build/client/_app/immutable/chunks/ADrS3reX.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/ADrS3reX.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/B3A9hx44.js +1 -0
  17. package/build/client/_app/immutable/chunks/B3A9hx44.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/B3A9hx44.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/B48saTbS.js +1 -0
  20. package/build/client/_app/immutable/chunks/B48saTbS.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/B48saTbS.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{4lfD4F6g.js → BoF-bMzh.js} +2 -2
  23. package/build/client/_app/immutable/chunks/BoF-bMzh.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/BoF-bMzh.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/C5BvtFsa.js +1 -0
  26. package/build/client/_app/immutable/chunks/C5BvtFsa.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/C5BvtFsa.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/C5dXZyme.js +1 -0
  29. package/build/client/_app/immutable/chunks/C5dXZyme.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/C5dXZyme.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/CUBPtF8t.js +65 -0
  32. package/build/client/_app/immutable/chunks/CUBPtF8t.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/CUBPtF8t.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/{9xpgPu5N.js → Cf6RCjfg.js} +1 -1
  35. package/build/client/_app/immutable/chunks/Cf6RCjfg.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/Cf6RCjfg.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/CrLGr586.js +2 -0
  38. package/build/client/_app/immutable/chunks/CrLGr586.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/CrLGr586.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/CsbWzWJI.js +1 -0
  41. package/build/client/_app/immutable/chunks/CsbWzWJI.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/CsbWzWJI.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/CyTV7fHl.js +1 -0
  44. package/build/client/_app/immutable/chunks/CyTV7fHl.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/CyTV7fHl.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/{BpBdSxit.js → D3UCTJm-.js} +2 -2
  47. package/build/client/_app/immutable/chunks/D3UCTJm-.js.br +0 -0
  48. package/build/client/_app/immutable/chunks/D3UCTJm-.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/{BR2A-pfb.js → DH7nqg5-.js} +1 -1
  50. package/build/client/_app/immutable/chunks/DH7nqg5-.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/DH7nqg5-.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/DKMyRjux.js +1 -0
  53. package/build/client/_app/immutable/chunks/DKMyRjux.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/DKMyRjux.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/DO0gnjpd.js +1 -0
  56. package/build/client/_app/immutable/chunks/DO0gnjpd.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/DO0gnjpd.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/DVIi8uNn.js +1 -0
  59. package/build/client/_app/immutable/chunks/DVIi8uNn.js.br +0 -0
  60. package/build/client/_app/immutable/chunks/DVIi8uNn.js.gz +0 -0
  61. package/build/client/_app/immutable/chunks/Dc47-4iR.js +1 -0
  62. package/build/client/_app/immutable/chunks/Dc47-4iR.js.br +0 -0
  63. package/build/client/_app/immutable/chunks/Dc47-4iR.js.gz +0 -0
  64. package/build/client/_app/immutable/chunks/{Brvll8rV.js → Dcgd1m6P.js} +1 -1
  65. package/build/client/_app/immutable/chunks/Dcgd1m6P.js.br +0 -0
  66. package/build/client/_app/immutable/chunks/Dcgd1m6P.js.gz +0 -0
  67. package/build/client/_app/immutable/chunks/Ddz9xOa-.js +1 -0
  68. package/build/client/_app/immutable/chunks/Ddz9xOa-.js.br +0 -0
  69. package/build/client/_app/immutable/chunks/Ddz9xOa-.js.gz +0 -0
  70. package/build/client/_app/immutable/chunks/{IwGwbOe7.js → DfW1b8bA.js} +1 -1
  71. package/build/client/_app/immutable/chunks/DfW1b8bA.js.br +0 -0
  72. package/build/client/_app/immutable/chunks/{IwGwbOe7.js.gz → DfW1b8bA.js.gz} +0 -0
  73. package/build/client/_app/immutable/chunks/Dfjkeakv.js +1 -0
  74. package/build/client/_app/immutable/chunks/Dfjkeakv.js.br +0 -0
  75. package/build/client/_app/immutable/chunks/Dfjkeakv.js.gz +0 -0
  76. package/build/client/_app/immutable/chunks/{ChWGK2Ce.js → DgwByHCB.js} +1 -1
  77. package/build/client/_app/immutable/chunks/DgwByHCB.js.br +0 -0
  78. package/build/client/_app/immutable/chunks/DgwByHCB.js.gz +0 -0
  79. package/build/client/_app/immutable/chunks/{HPNCC8XI.js → DlVaABeK.js} +3 -3
  80. package/build/client/_app/immutable/chunks/DlVaABeK.js.br +0 -0
  81. package/build/client/_app/immutable/chunks/DlVaABeK.js.gz +0 -0
  82. package/build/client/_app/immutable/chunks/DupjJGFi.js +1 -0
  83. package/build/client/_app/immutable/chunks/DupjJGFi.js.br +0 -0
  84. package/build/client/_app/immutable/chunks/DupjJGFi.js.gz +0 -0
  85. package/build/client/_app/immutable/chunks/DymqlScG.js +1 -0
  86. package/build/client/_app/immutable/chunks/DymqlScG.js.br +0 -0
  87. package/build/client/_app/immutable/chunks/DymqlScG.js.gz +0 -0
  88. package/build/client/_app/immutable/chunks/{Z7BFksgg.js → J9ZSs_8c.js} +1 -1
  89. package/build/client/_app/immutable/chunks/J9ZSs_8c.js.br +0 -0
  90. package/build/client/_app/immutable/chunks/J9ZSs_8c.js.gz +0 -0
  91. package/build/client/_app/immutable/chunks/{CKvueigk.js → OvZJ6gNJ.js} +1 -1
  92. package/build/client/_app/immutable/chunks/OvZJ6gNJ.js.br +0 -0
  93. package/build/client/_app/immutable/chunks/OvZJ6gNJ.js.gz +0 -0
  94. package/build/client/_app/immutable/chunks/URA3nPWG.js +1 -0
  95. package/build/client/_app/immutable/chunks/URA3nPWG.js.br +0 -0
  96. package/build/client/_app/immutable/chunks/URA3nPWG.js.gz +0 -0
  97. package/build/client/_app/immutable/chunks/bZzTqofF.js +1 -0
  98. package/build/client/_app/immutable/chunks/bZzTqofF.js.br +0 -0
  99. package/build/client/_app/immutable/chunks/bZzTqofF.js.gz +0 -0
  100. package/build/client/_app/immutable/chunks/oSuzXE6i.js +1 -0
  101. package/build/client/_app/immutable/chunks/oSuzXE6i.js.br +0 -0
  102. package/build/client/_app/immutable/chunks/oSuzXE6i.js.gz +0 -0
  103. package/build/client/_app/immutable/chunks/wZh6TcLb.js +2 -0
  104. package/build/client/_app/immutable/chunks/wZh6TcLb.js.br +0 -0
  105. package/build/client/_app/immutable/chunks/wZh6TcLb.js.gz +0 -0
  106. package/build/client/_app/immutable/entry/app.G0Hwsu0f.js +2 -0
  107. package/build/client/_app/immutable/entry/app.G0Hwsu0f.js.br +0 -0
  108. package/build/client/_app/immutable/entry/app.G0Hwsu0f.js.gz +0 -0
  109. package/build/client/_app/immutable/entry/start.pOs5gHaO.js +1 -0
  110. package/build/client/_app/immutable/entry/start.pOs5gHaO.js.br +0 -0
  111. package/build/client/_app/immutable/entry/start.pOs5gHaO.js.gz +0 -0
  112. package/build/client/_app/immutable/nodes/0.BPw_KPrY.js +1 -0
  113. package/build/client/_app/immutable/nodes/0.BPw_KPrY.js.br +0 -0
  114. package/build/client/_app/immutable/nodes/0.BPw_KPrY.js.gz +0 -0
  115. package/build/client/_app/immutable/nodes/1.eWL7yJRK.js +1 -0
  116. package/build/client/_app/immutable/nodes/1.eWL7yJRK.js.br +4 -0
  117. package/build/client/_app/immutable/nodes/1.eWL7yJRK.js.gz +0 -0
  118. package/build/client/_app/immutable/nodes/10.AwBSgK4-.js +2 -0
  119. package/build/client/_app/immutable/nodes/10.AwBSgK4-.js.br +0 -0
  120. package/build/client/_app/immutable/nodes/10.AwBSgK4-.js.gz +0 -0
  121. package/build/client/_app/immutable/nodes/11.DS8hIvI2.js +6 -0
  122. package/build/client/_app/immutable/nodes/11.DS8hIvI2.js.br +0 -0
  123. package/build/client/_app/immutable/nodes/11.DS8hIvI2.js.gz +0 -0
  124. package/build/client/_app/immutable/nodes/{12.c15Q05Ym.js → 12.DP-oGzlU.js} +1 -1
  125. package/build/client/_app/immutable/nodes/12.DP-oGzlU.js.br +0 -0
  126. package/build/client/_app/immutable/nodes/12.DP-oGzlU.js.gz +0 -0
  127. package/build/client/_app/immutable/nodes/13.DCNBPtGq.js +1 -0
  128. package/build/client/_app/immutable/nodes/13.DCNBPtGq.js.br +0 -0
  129. package/build/client/_app/immutable/nodes/13.DCNBPtGq.js.gz +0 -0
  130. package/build/client/_app/immutable/nodes/14.B3qXj1Pz.js +65 -0
  131. package/build/client/_app/immutable/nodes/14.B3qXj1Pz.js.br +0 -0
  132. package/build/client/_app/immutable/nodes/14.B3qXj1Pz.js.gz +0 -0
  133. package/build/client/_app/immutable/nodes/15.DFTrPy3K.js +1 -0
  134. package/build/client/_app/immutable/nodes/15.DFTrPy3K.js.br +0 -0
  135. package/build/client/_app/immutable/nodes/15.DFTrPy3K.js.gz +0 -0
  136. package/build/client/_app/immutable/nodes/16.wrfG8awE.js +1 -0
  137. package/build/client/_app/immutable/nodes/16.wrfG8awE.js.br +0 -0
  138. package/build/client/_app/immutable/nodes/16.wrfG8awE.js.gz +0 -0
  139. package/build/client/_app/immutable/nodes/{2.Bai-TIgH.js → 2.6jE8uEJq.js} +1 -1
  140. package/build/client/_app/immutable/nodes/2.6jE8uEJq.js.br +0 -0
  141. package/build/client/_app/immutable/nodes/2.6jE8uEJq.js.gz +0 -0
  142. package/build/client/_app/immutable/nodes/{3.ev9oAmrG.js → 3.C59rlT3p.js} +1 -1
  143. package/build/client/_app/immutable/nodes/3.C59rlT3p.js.br +0 -0
  144. package/build/client/_app/immutable/nodes/3.C59rlT3p.js.gz +0 -0
  145. package/build/client/_app/immutable/nodes/4.DbZo8waJ.js +1 -0
  146. package/build/client/_app/immutable/nodes/4.DbZo8waJ.js.br +0 -0
  147. package/build/client/_app/immutable/nodes/4.DbZo8waJ.js.gz +0 -0
  148. package/build/client/_app/immutable/nodes/{5.CyK0fI1l.js → 5.Cu8LcB5H.js} +1 -1
  149. package/build/client/_app/immutable/nodes/5.Cu8LcB5H.js.br +0 -0
  150. package/build/client/_app/immutable/nodes/5.Cu8LcB5H.js.gz +0 -0
  151. package/build/client/_app/immutable/nodes/7.BSMf3Keu.js +1 -0
  152. package/build/client/_app/immutable/nodes/7.BSMf3Keu.js.br +0 -0
  153. package/build/client/_app/immutable/nodes/7.BSMf3Keu.js.gz +0 -0
  154. package/build/client/_app/immutable/nodes/8.CmQOYs57.js +2 -0
  155. package/build/client/_app/immutable/nodes/8.CmQOYs57.js.br +0 -0
  156. package/build/client/_app/immutable/nodes/8.CmQOYs57.js.gz +0 -0
  157. package/build/client/_app/immutable/nodes/9.6ZB3-a4j.js +1 -0
  158. package/build/client/_app/immutable/nodes/9.6ZB3-a4j.js.br +0 -0
  159. package/build/client/_app/immutable/nodes/9.6ZB3-a4j.js.gz +0 -0
  160. package/build/client/_app/version.json +1 -1
  161. package/build/client/_app/version.json.br +0 -0
  162. package/build/client/_app/version.json.gz +0 -0
  163. package/build/server/chunks/0-2tDL-Z_M.js +32 -0
  164. package/build/server/chunks/0-2tDL-Z_M.js.map +1 -0
  165. package/build/server/chunks/1-L1YRtIEr.js +9 -0
  166. package/build/server/chunks/{1-BYh6KkYd.js.map → 1-L1YRtIEr.js.map} +1 -1
  167. package/build/server/chunks/10-kSTe-NQK.js +43 -0
  168. package/build/server/chunks/10-kSTe-NQK.js.map +1 -0
  169. package/build/server/chunks/{11-DMGywj2z.js → 11-BSFyIooa.js} +5 -24
  170. package/build/server/chunks/11-BSFyIooa.js.map +1 -0
  171. package/build/server/chunks/{12-9nIP5JYI.js → 12-DhN9fz9p.js} +4 -5
  172. package/build/server/chunks/12-DhN9fz9p.js.map +1 -0
  173. package/build/server/chunks/{13-Cf1e9tDx.js → 13-B1mdDktE.js} +5 -24
  174. package/build/server/chunks/13-B1mdDktE.js.map +1 -0
  175. package/build/server/chunks/14-G2fvhIG4.js +38 -0
  176. package/build/server/chunks/14-G2fvhIG4.js.map +1 -0
  177. package/build/server/chunks/15-BxHbA5Ao.js +48 -0
  178. package/build/server/chunks/15-BxHbA5Ao.js.map +1 -0
  179. package/build/server/chunks/16-D0Gv3LNT.js +46 -0
  180. package/build/server/chunks/16-D0Gv3LNT.js.map +1 -0
  181. package/build/server/chunks/{2-ckJpvP-Z.js → 2-DGpX4fMQ.js} +2 -2
  182. package/build/server/chunks/{2-ckJpvP-Z.js.map → 2-DGpX4fMQ.js.map} +1 -1
  183. package/build/server/chunks/{3-TPjZ0P0_.js → 3-CwHfLh5P.js} +2 -2
  184. package/build/server/chunks/{3-TPjZ0P0_.js.map → 3-CwHfLh5P.js.map} +1 -1
  185. package/build/server/chunks/{4-DoW1zEiI.js → 4-B5F5-cxe.js} +10 -2
  186. package/build/server/chunks/4-B5F5-cxe.js.map +1 -0
  187. package/build/server/chunks/{5-cZ6VD-C-.js → 5-CxqBB_6c.js} +2 -2
  188. package/build/server/chunks/{5-cZ6VD-C-.js.map → 5-CxqBB_6c.js.map} +1 -1
  189. package/build/server/chunks/{6-eXO6RVDu.js → 6-Qus887OP.js} +3 -2
  190. package/build/server/chunks/{6-eXO6RVDu.js.map → 6-Qus887OP.js.map} +1 -1
  191. package/build/server/chunks/{7-Bgk2JW9z.js → 7-BNgFbh-a.js} +6 -5
  192. package/build/server/chunks/{7-Bgk2JW9z.js.map → 7-BNgFbh-a.js.map} +1 -1
  193. package/build/server/chunks/{8-D1BdB5RY.js → 8-DOgOgmwJ.js} +4 -5
  194. package/build/server/chunks/8-DOgOgmwJ.js.map +1 -0
  195. package/build/server/chunks/{9-DrFrZ-qH.js → 9-D-PO69az.js} +4 -5
  196. package/build/server/chunks/9-D-PO69az.js.map +1 -0
  197. package/build/server/chunks/IconChevronDown-D8V4kB6o.js +10 -0
  198. package/build/server/chunks/IconChevronDown-D8V4kB6o.js.map +1 -0
  199. package/build/server/chunks/{JsonValue-CGVfzyTL.js → JsonValue-B-iqFShN.js} +4 -3
  200. package/build/server/chunks/JsonValue-B-iqFShN.js.map +1 -0
  201. package/build/server/chunks/{Modal-D2E5OLRi.js → Modal-D10te4nR.js} +2 -2
  202. package/build/server/chunks/Modal-D10te4nR.js.map +1 -0
  203. package/build/server/chunks/{Panel-C6VWd6JD.js → Panel-CBztHh2Y.js} +2 -2
  204. package/build/server/chunks/Panel-CBztHh2Y.js.map +1 -0
  205. package/build/server/chunks/{PrettyJson-Bo4UtQ1o.js → PrettyJson-Dz5fCjPq.js} +6 -6
  206. package/build/server/chunks/PrettyJson-Dz5fCjPq.js.map +1 -0
  207. package/build/server/chunks/{Tooltip-OVylvwfb.js → Tooltip-BHX9gIpe.js} +2 -2
  208. package/build/server/chunks/Tooltip-BHX9gIpe.js.map +1 -0
  209. package/build/server/chunks/{TooltipTable-CLglfpck.js → TooltipTable-BIwNd3UB.js} +3 -3
  210. package/build/server/chunks/TooltipTable-BIwNd3UB.js.map +1 -0
  211. package/build/server/chunks/{_layout.svelte-CLPxHDiP.js → _layout.svelte-BX5H_goi.js} +38 -15
  212. package/build/server/chunks/_layout.svelte-BX5H_goi.js.map +1 -0
  213. package/build/server/chunks/{_page.svelte-zD7qndty.js → _page.svelte-Bh6uDLz6.js} +15 -15
  214. package/build/server/chunks/_page.svelte-Bh6uDLz6.js.map +1 -0
  215. package/build/server/chunks/_page.svelte-CHqJAnyH.js +258 -0
  216. package/build/server/chunks/_page.svelte-CHqJAnyH.js.map +1 -0
  217. package/build/server/chunks/{_page.svelte-CPcgVZQj.js → _page.svelte-CsCyoCpn.js} +15 -15
  218. package/build/server/chunks/_page.svelte-CsCyoCpn.js.map +1 -0
  219. package/build/server/chunks/{_page.svelte-CAAPpbun.js → _page.svelte-Cwyc6wIg.js} +14 -14
  220. package/build/server/chunks/_page.svelte-Cwyc6wIg.js.map +1 -0
  221. package/build/server/chunks/{_page.svelte-e5wWk327.js → _page.svelte-DE0XWW__.js} +12 -12
  222. package/build/server/chunks/_page.svelte-DE0XWW__.js.map +1 -0
  223. package/build/server/chunks/{_page.svelte-DVjTn-ck.js → _page.svelte-DIe5tQ3z.js} +14 -14
  224. package/build/server/chunks/_page.svelte-DIe5tQ3z.js.map +1 -0
  225. package/build/server/chunks/{_page.svelte-C3QVwl-z.js → _page.svelte-DT0U0FvS.js} +5 -4
  226. package/build/server/chunks/_page.svelte-DT0U0FvS.js.map +1 -0
  227. package/build/server/chunks/{_page.svelte-C_GX0K8M.js → _page.svelte-YOsljIow.js} +19 -22
  228. package/build/server/chunks/_page.svelte-YOsljIow.js.map +1 -0
  229. package/build/server/chunks/{_page.svelte-BeiSosXN.js → _page.svelte-aEFurJZ0.js} +55 -15
  230. package/build/server/chunks/_page.svelte-aEFurJZ0.js.map +1 -0
  231. package/build/server/chunks/{_page.svelte-CkZUu9Wh.js → _page.svelte-vWYc1vOs.js} +9 -9
  232. package/build/server/chunks/_page.svelte-vWYc1vOs.js.map +1 -0
  233. package/build/server/chunks/{_server.ts-i-glbZtX.js → _server.ts-BTmpua-U.js} +4 -3
  234. package/build/server/chunks/{_server.ts-i-glbZtX.js.map → _server.ts-BTmpua-U.js.map} +1 -1
  235. package/build/server/chunks/{_server.ts-CEBmCzTO.js → _server.ts-BhWrvCAV.js} +4 -3
  236. package/build/server/chunks/{_server.ts-CEBmCzTO.js.map → _server.ts-BhWrvCAV.js.map} +1 -1
  237. package/build/server/chunks/{_server.ts-CoUHVeKI.js → _server.ts-CUj-HfCf.js} +4 -3
  238. package/build/server/chunks/{_server.ts-CoUHVeKI.js.map → _server.ts-CUj-HfCf.js.map} +1 -1
  239. package/build/server/chunks/client-DrDUOhf5.js +7 -0
  240. package/build/server/chunks/{client-COtw9Xqw.js.map → client-DrDUOhf5.js.map} +1 -1
  241. package/build/server/chunks/{client2-BIa3wTXU.js → client2-Birk_77A.js} +4 -4
  242. package/build/server/chunks/{client2-BIa3wTXU.js.map → client2-Birk_77A.js.map} +1 -1
  243. package/build/server/chunks/error.svelte-DisWvlhZ.js +19 -0
  244. package/build/server/chunks/error.svelte-DisWvlhZ.js.map +1 -0
  245. package/build/server/chunks/{filters-B3U8Nh9P.js → filters-BTgp9cdC.js} +4 -7
  246. package/build/server/chunks/filters-BTgp9cdC.js.map +1 -0
  247. package/build/server/chunks/{hooks.server-BiUSRqj1.js → hooks.server-Cc7EKf-Z.js} +4 -3
  248. package/build/server/chunks/{hooks.server-BiUSRqj1.js.map → hooks.server-Cc7EKf-Z.js.map} +1 -1
  249. package/build/server/chunks/{index-CtYzvcG6.js → index-CDf-jMhD.js} +3 -2
  250. package/build/server/chunks/index-CDf-jMhD.js.map +1 -0
  251. package/build/server/chunks/{index2-B0RgZaJY.js → index2-DNcGQp0K.js} +3 -3
  252. package/build/server/chunks/index2-DNcGQp0K.js.map +1 -0
  253. package/build/server/chunks/{mongo-B92d7zNj.js → mongo-Du0OjH5b.js} +257 -24
  254. package/build/server/chunks/mongo-Du0OjH5b.js.map +1 -0
  255. package/build/server/chunks/{oauth-D6jTWKFd.js → oauth-CyIuK65I.js} +2 -2
  256. package/build/server/chunks/{oauth-D6jTWKFd.js.map → oauth-CyIuK65I.js.map} +1 -1
  257. package/build/server/chunks/{remote-xxtqbu-CDChJkWc.js → remote-xxtqbu-BCjbN3T4.js} +6 -6
  258. package/build/server/chunks/remote-xxtqbu-BCjbN3T4.js.map +1 -0
  259. package/build/server/chunks/renderer-wJWkLEmh.js +1844 -0
  260. package/build/server/chunks/renderer-wJWkLEmh.js.map +1 -0
  261. package/build/server/chunks/{root-otUAnOAR.js → root-Bs42DBih.js} +12 -1849
  262. package/build/server/chunks/root-Bs42DBih.js.map +1 -0
  263. package/build/server/chunks/{routing-EDfUNu8L.js → routing-CJRzZHIr.js} +2 -2
  264. package/build/server/chunks/{routing-EDfUNu8L.js.map → routing-CJRzZHIr.js.map} +1 -1
  265. package/build/server/chunks/{server2-D_y4YbpC.js → server2-B0ZXRoOj.js} +3 -3
  266. package/build/server/chunks/{server2-D_y4YbpC.js.map → server2-B0ZXRoOj.js.map} +1 -1
  267. package/build/server/chunks/{servers.remote-CGenkEHX.js → servers.remote-Bise-7j4.js} +5 -14
  268. package/build/server/chunks/servers.remote-Bise-7j4.js.map +1 -0
  269. package/build/server/chunks/shardKey-BnXqfB_r.js +11 -0
  270. package/build/server/chunks/shardKey-BnXqfB_r.js.map +1 -0
  271. package/build/server/chunks/{shared-DlqhoNLb.js → shared-BJTImRjE.js} +3 -2
  272. package/build/server/chunks/{shared-DlqhoNLb.js.map → shared-BJTImRjE.js.map} +1 -1
  273. package/build/server/chunks/{state.svelte-Bj5yxNNk.js → state.svelte-YUn1p3EK.js} +3 -2
  274. package/build/server/chunks/{state.svelte-Bj5yxNNk.js.map → state.svelte-YUn1p3EK.js.map} +1 -1
  275. package/build/server/index.js +7 -6
  276. package/build/server/index.js.map +1 -1
  277. package/build/server/manifest.js +29 -21
  278. package/build/server/manifest.js.map +1 -1
  279. package/package.json +1 -1
  280. package/src/api/servers.remote.ts +3 -12
  281. package/src/lib/collectionCategories.ts +25 -0
  282. package/src/lib/components/PageSwitcher.svelte +74 -6
  283. package/src/lib/components/ShardBadge.svelte +65 -0
  284. package/src/lib/server/connectionString.ts +50 -0
  285. package/src/lib/server/mongo.ts +208 -37
  286. package/src/lib/types.ts +34 -0
  287. package/src/lib/utils/filters.ts +5 -7
  288. package/src/lib/utils/mongoUri.ts +164 -0
  289. package/src/lib/utils/shardKey.ts +16 -0
  290. package/src/routes/servers/+page.svelte +1 -1
  291. package/src/routes/servers/[server]/databases/[database]/collections/+page.server.ts +5 -0
  292. package/src/routes/servers/[server]/databases/[database]/collections/+page.svelte +47 -9
  293. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/+layout.ts +3 -0
  294. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/sharding/+page.server.ts +26 -0
  295. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/sharding/+page.svelte +319 -0
  296. package/src/tests/server/connectionString.test.ts +108 -0
  297. package/build/client/_app/immutable/assets/0.DTh4C4pw.css +0 -1
  298. package/build/client/_app/immutable/assets/0.DTh4C4pw.css.br +0 -0
  299. package/build/client/_app/immutable/assets/0.DTh4C4pw.css.gz +0 -0
  300. package/build/client/_app/immutable/chunks/4lfD4F6g.js.br +0 -0
  301. package/build/client/_app/immutable/chunks/4lfD4F6g.js.gz +0 -0
  302. package/build/client/_app/immutable/chunks/8tf5Lvl3.js +0 -1
  303. package/build/client/_app/immutable/chunks/8tf5Lvl3.js.br +0 -0
  304. package/build/client/_app/immutable/chunks/8tf5Lvl3.js.gz +0 -0
  305. package/build/client/_app/immutable/chunks/951V-MIZ.js +0 -1
  306. package/build/client/_app/immutable/chunks/951V-MIZ.js.br +0 -0
  307. package/build/client/_app/immutable/chunks/951V-MIZ.js.gz +0 -0
  308. package/build/client/_app/immutable/chunks/9xpgPu5N.js.br +0 -0
  309. package/build/client/_app/immutable/chunks/9xpgPu5N.js.gz +0 -0
  310. package/build/client/_app/immutable/chunks/BDGd1aqF.js +0 -2
  311. package/build/client/_app/immutable/chunks/BDGd1aqF.js.br +0 -0
  312. package/build/client/_app/immutable/chunks/BDGd1aqF.js.gz +0 -0
  313. package/build/client/_app/immutable/chunks/BN_N9-2s.js +0 -1
  314. package/build/client/_app/immutable/chunks/BN_N9-2s.js.br +0 -0
  315. package/build/client/_app/immutable/chunks/BN_N9-2s.js.gz +0 -0
  316. package/build/client/_app/immutable/chunks/BR2A-pfb.js.br +0 -0
  317. package/build/client/_app/immutable/chunks/BR2A-pfb.js.gz +0 -0
  318. package/build/client/_app/immutable/chunks/BUO1EOQu.js +0 -1
  319. package/build/client/_app/immutable/chunks/BUO1EOQu.js.br +0 -0
  320. package/build/client/_app/immutable/chunks/BUO1EOQu.js.gz +0 -0
  321. package/build/client/_app/immutable/chunks/BiVfO0yo.js +0 -1
  322. package/build/client/_app/immutable/chunks/BiVfO0yo.js.br +0 -0
  323. package/build/client/_app/immutable/chunks/BiVfO0yo.js.gz +0 -0
  324. package/build/client/_app/immutable/chunks/BpBdSxit.js.br +0 -0
  325. package/build/client/_app/immutable/chunks/BpBdSxit.js.gz +0 -0
  326. package/build/client/_app/immutable/chunks/Brvll8rV.js.br +0 -0
  327. package/build/client/_app/immutable/chunks/Brvll8rV.js.gz +0 -0
  328. package/build/client/_app/immutable/chunks/C6P2UOyZ.js +0 -1
  329. package/build/client/_app/immutable/chunks/C6P2UOyZ.js.br +0 -0
  330. package/build/client/_app/immutable/chunks/C6P2UOyZ.js.gz +0 -0
  331. package/build/client/_app/immutable/chunks/CCOVnadf.js +0 -1
  332. package/build/client/_app/immutable/chunks/CCOVnadf.js.br +0 -0
  333. package/build/client/_app/immutable/chunks/CCOVnadf.js.gz +0 -0
  334. package/build/client/_app/immutable/chunks/CKvueigk.js.br +0 -0
  335. package/build/client/_app/immutable/chunks/CKvueigk.js.gz +0 -0
  336. package/build/client/_app/immutable/chunks/CQE8d3kg.js +0 -1
  337. package/build/client/_app/immutable/chunks/CQE8d3kg.js.br +0 -0
  338. package/build/client/_app/immutable/chunks/CQE8d3kg.js.gz +0 -0
  339. package/build/client/_app/immutable/chunks/ChWGK2Ce.js.br +0 -0
  340. package/build/client/_app/immutable/chunks/ChWGK2Ce.js.gz +0 -0
  341. package/build/client/_app/immutable/chunks/CkMoyTwc.js +0 -1
  342. package/build/client/_app/immutable/chunks/CkMoyTwc.js.br +0 -0
  343. package/build/client/_app/immutable/chunks/CkMoyTwc.js.gz +0 -0
  344. package/build/client/_app/immutable/chunks/DFXj4NOH.js +0 -1
  345. package/build/client/_app/immutable/chunks/DFXj4NOH.js.br +0 -0
  346. package/build/client/_app/immutable/chunks/DFXj4NOH.js.gz +0 -0
  347. package/build/client/_app/immutable/chunks/DaMh_eeB.js +0 -1
  348. package/build/client/_app/immutable/chunks/DaMh_eeB.js.br +0 -0
  349. package/build/client/_app/immutable/chunks/DaMh_eeB.js.gz +0 -0
  350. package/build/client/_app/immutable/chunks/DquSH6NB.js +0 -1
  351. package/build/client/_app/immutable/chunks/DquSH6NB.js.br +0 -0
  352. package/build/client/_app/immutable/chunks/DquSH6NB.js.gz +0 -0
  353. package/build/client/_app/immutable/chunks/DqxUmOYD.js +0 -66
  354. package/build/client/_app/immutable/chunks/DqxUmOYD.js.br +0 -0
  355. package/build/client/_app/immutable/chunks/DqxUmOYD.js.gz +0 -0
  356. package/build/client/_app/immutable/chunks/DrjoisE9.js +0 -1
  357. package/build/client/_app/immutable/chunks/DrjoisE9.js.br +0 -0
  358. package/build/client/_app/immutable/chunks/DrjoisE9.js.gz +0 -0
  359. package/build/client/_app/immutable/chunks/HPNCC8XI.js.br +0 -0
  360. package/build/client/_app/immutable/chunks/HPNCC8XI.js.gz +0 -0
  361. package/build/client/_app/immutable/chunks/IwGwbOe7.js.br +0 -0
  362. package/build/client/_app/immutable/chunks/Z7BFksgg.js.br +0 -0
  363. package/build/client/_app/immutable/chunks/Z7BFksgg.js.gz +0 -0
  364. package/build/client/_app/immutable/chunks/dlHwFtkV.js +0 -1
  365. package/build/client/_app/immutable/chunks/dlHwFtkV.js.br +0 -0
  366. package/build/client/_app/immutable/chunks/dlHwFtkV.js.gz +0 -0
  367. package/build/client/_app/immutable/entry/app.CwK9URvm.js +0 -2
  368. package/build/client/_app/immutable/entry/app.CwK9URvm.js.br +0 -0
  369. package/build/client/_app/immutable/entry/app.CwK9URvm.js.gz +0 -0
  370. package/build/client/_app/immutable/entry/start.CKUoiBjf.js +0 -1
  371. package/build/client/_app/immutable/entry/start.CKUoiBjf.js.br +0 -0
  372. package/build/client/_app/immutable/entry/start.CKUoiBjf.js.gz +0 -0
  373. package/build/client/_app/immutable/nodes/0.igpKm403.js +0 -1
  374. package/build/client/_app/immutable/nodes/0.igpKm403.js.br +0 -0
  375. package/build/client/_app/immutable/nodes/0.igpKm403.js.gz +0 -0
  376. package/build/client/_app/immutable/nodes/1.CG5ixvX3.js +0 -1
  377. package/build/client/_app/immutable/nodes/1.CG5ixvX3.js.br +0 -0
  378. package/build/client/_app/immutable/nodes/1.CG5ixvX3.js.gz +0 -0
  379. package/build/client/_app/immutable/nodes/10.Cb7K6zGk.js +0 -2
  380. package/build/client/_app/immutable/nodes/10.Cb7K6zGk.js.br +0 -0
  381. package/build/client/_app/immutable/nodes/10.Cb7K6zGk.js.gz +0 -0
  382. package/build/client/_app/immutable/nodes/11.BrNKE0qE.js +0 -6
  383. package/build/client/_app/immutable/nodes/11.BrNKE0qE.js.br +0 -0
  384. package/build/client/_app/immutable/nodes/11.BrNKE0qE.js.gz +0 -0
  385. package/build/client/_app/immutable/nodes/12.c15Q05Ym.js.br +0 -0
  386. package/build/client/_app/immutable/nodes/12.c15Q05Ym.js.gz +0 -0
  387. package/build/client/_app/immutable/nodes/13.XzvaMtWu.js +0 -1
  388. package/build/client/_app/immutable/nodes/13.XzvaMtWu.js.br +0 -0
  389. package/build/client/_app/immutable/nodes/13.XzvaMtWu.js.gz +0 -0
  390. package/build/client/_app/immutable/nodes/14.C-vtqL3t.js +0 -65
  391. package/build/client/_app/immutable/nodes/14.C-vtqL3t.js.br +0 -0
  392. package/build/client/_app/immutable/nodes/14.C-vtqL3t.js.gz +0 -0
  393. package/build/client/_app/immutable/nodes/15.CMsLE8xW.js +0 -1
  394. package/build/client/_app/immutable/nodes/15.CMsLE8xW.js.br +0 -0
  395. package/build/client/_app/immutable/nodes/15.CMsLE8xW.js.gz +0 -0
  396. package/build/client/_app/immutable/nodes/2.Bai-TIgH.js.br +0 -0
  397. package/build/client/_app/immutable/nodes/2.Bai-TIgH.js.gz +0 -0
  398. package/build/client/_app/immutable/nodes/3.ev9oAmrG.js.br +0 -0
  399. package/build/client/_app/immutable/nodes/3.ev9oAmrG.js.gz +0 -0
  400. package/build/client/_app/immutable/nodes/4.DS2d90xq.js +0 -1
  401. package/build/client/_app/immutable/nodes/4.DS2d90xq.js.br +0 -0
  402. package/build/client/_app/immutable/nodes/4.DS2d90xq.js.gz +0 -0
  403. package/build/client/_app/immutable/nodes/5.CyK0fI1l.js.br +0 -0
  404. package/build/client/_app/immutable/nodes/5.CyK0fI1l.js.gz +0 -0
  405. package/build/client/_app/immutable/nodes/7.CZR85XEM.js +0 -1
  406. package/build/client/_app/immutable/nodes/7.CZR85XEM.js.br +0 -0
  407. package/build/client/_app/immutable/nodes/7.CZR85XEM.js.gz +0 -0
  408. package/build/client/_app/immutable/nodes/8.D5Ms07Yy.js +0 -2
  409. package/build/client/_app/immutable/nodes/8.D5Ms07Yy.js.br +0 -0
  410. package/build/client/_app/immutable/nodes/8.D5Ms07Yy.js.gz +0 -0
  411. package/build/client/_app/immutable/nodes/9.PLQilhR3.js +0 -1
  412. package/build/client/_app/immutable/nodes/9.PLQilhR3.js.br +0 -0
  413. package/build/client/_app/immutable/nodes/9.PLQilhR3.js.gz +0 -0
  414. package/build/server/chunks/0-LilleyUU.js +0 -31
  415. package/build/server/chunks/0-LilleyUU.js.map +0 -1
  416. package/build/server/chunks/1-BYh6KkYd.js +0 -9
  417. package/build/server/chunks/10-DWWLXDRX.js +0 -42
  418. package/build/server/chunks/10-DWWLXDRX.js.map +0 -1
  419. package/build/server/chunks/11-DMGywj2z.js.map +0 -1
  420. package/build/server/chunks/12-9nIP5JYI.js.map +0 -1
  421. package/build/server/chunks/13-Cf1e9tDx.js.map +0 -1
  422. package/build/server/chunks/14-DjFKvp37.js +0 -57
  423. package/build/server/chunks/14-DjFKvp37.js.map +0 -1
  424. package/build/server/chunks/15-CBHdmxYs.js +0 -67
  425. package/build/server/chunks/15-CBHdmxYs.js.map +0 -1
  426. package/build/server/chunks/4-DoW1zEiI.js.map +0 -1
  427. package/build/server/chunks/8-D1BdB5RY.js.map +0 -1
  428. package/build/server/chunks/9-DrFrZ-qH.js.map +0 -1
  429. package/build/server/chunks/JsonValue-CGVfzyTL.js.map +0 -1
  430. package/build/server/chunks/Modal-D2E5OLRi.js.map +0 -1
  431. package/build/server/chunks/Panel-C6VWd6JD.js.map +0 -1
  432. package/build/server/chunks/PrettyJson-Bo4UtQ1o.js.map +0 -1
  433. package/build/server/chunks/Tooltip-OVylvwfb.js.map +0 -1
  434. package/build/server/chunks/TooltipTable-CLglfpck.js.map +0 -1
  435. package/build/server/chunks/_layout.svelte-CLPxHDiP.js.map +0 -1
  436. package/build/server/chunks/_page.svelte-BeiSosXN.js.map +0 -1
  437. package/build/server/chunks/_page.svelte-C3QVwl-z.js.map +0 -1
  438. package/build/server/chunks/_page.svelte-CAAPpbun.js.map +0 -1
  439. package/build/server/chunks/_page.svelte-CPcgVZQj.js.map +0 -1
  440. package/build/server/chunks/_page.svelte-C_GX0K8M.js.map +0 -1
  441. package/build/server/chunks/_page.svelte-CkZUu9Wh.js.map +0 -1
  442. package/build/server/chunks/_page.svelte-DVjTn-ck.js.map +0 -1
  443. package/build/server/chunks/_page.svelte-e5wWk327.js.map +0 -1
  444. package/build/server/chunks/_page.svelte-zD7qndty.js.map +0 -1
  445. package/build/server/chunks/client-COtw9Xqw.js +0 -7
  446. package/build/server/chunks/error.svelte-DUZ2SYyF.js +0 -18
  447. package/build/server/chunks/error.svelte-DUZ2SYyF.js.map +0 -1
  448. package/build/server/chunks/filters-B3U8Nh9P.js.map +0 -1
  449. package/build/server/chunks/index-CtYzvcG6.js.map +0 -1
  450. package/build/server/chunks/index2-B0RgZaJY.js.map +0 -1
  451. package/build/server/chunks/mongo-B92d7zNj.js.map +0 -1
  452. package/build/server/chunks/remote-xxtqbu-CDChJkWc.js.map +0 -1
  453. package/build/server/chunks/root-otUAnOAR.js.map +0 -1
  454. package/build/server/chunks/servers.remote-CGenkEHX.js.map +0 -1
  455. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/+page.ts +0 -11
  456. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/indexes/+page.ts +0 -11
  457. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/mappings/+page.ts +0 -11
  458. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/schema/+page.ts +0 -11
@@ -2,11 +2,121 @@ import { p as private_env } from './shared-server-BmU87nph.js';
2
2
  import { l as logger } from './logger-PfH_grbh.js';
3
3
  import { resolveSrv } from 'dns/promises';
4
4
  import { ReadPreference, MongoClient } from 'mongodb';
5
- import { URL } from 'url';
6
5
  import * as fs from 'node:fs';
7
6
  import * as os from 'node:os';
8
7
  import * as path from 'node:path';
9
8
 
9
+ function parseMongoUri(connectionString) {
10
+ const schemeMatch = connectionString.match(/^(mongodb(?:\+srv)?):\/\//);
11
+ if (!schemeMatch) {
12
+ throw new TypeError(`Unsupported MongoDB connection string: ${connectionString}`);
13
+ }
14
+ const protocol = `${schemeMatch[1]}:`;
15
+ const rest = connectionString.slice(schemeMatch[0].length);
16
+ const afterAuthDelimiter = rest.indexOf("/");
17
+ const authorityEnd = afterAuthDelimiter === -1 ? rest.length : afterAuthDelimiter;
18
+ const authority = rest.slice(0, authorityEnd);
19
+ const tail = rest.slice(authorityEnd);
20
+ let credentials = "";
21
+ let hostsRaw = authority;
22
+ const atIndex = authority.lastIndexOf("@");
23
+ if (atIndex !== -1) {
24
+ credentials = authority.slice(0, atIndex);
25
+ hostsRaw = authority.slice(atIndex + 1);
26
+ }
27
+ let username = "";
28
+ let password = "";
29
+ if (credentials) {
30
+ const colon = credentials.indexOf(":");
31
+ if (colon === -1) {
32
+ username = credentials;
33
+ } else {
34
+ username = credentials.slice(0, colon);
35
+ password = credentials.slice(colon + 1);
36
+ }
37
+ }
38
+ const queryIndex = tail.indexOf("?");
39
+ const pathname = queryIndex === -1 ? tail : tail.slice(0, queryIndex);
40
+ const search = queryIndex === -1 ? "" : tail.slice(queryIndex + 1);
41
+ const hosts = hostsRaw.split(",").map((h) => h.trim()).filter((h) => h.length > 0);
42
+ return { protocol, username, password, hostsRaw, hosts, pathname, search };
43
+ }
44
+ function mongoHostKey(connectionString) {
45
+ return parseMongoUri(connectionString).hostsRaw;
46
+ }
47
+ function mongoDisplayName(connectionString) {
48
+ let parsed;
49
+ try {
50
+ parsed = parseMongoUri(connectionString);
51
+ } catch {
52
+ return connectionString;
53
+ }
54
+ const hostnames = parsed.hosts.map((h) => stripPort(h)).filter((h) => h.length > 0);
55
+ if (hostnames.length === 0) {
56
+ return connectionString;
57
+ }
58
+ if (hostnames.length === 1) {
59
+ return hostnames[0];
60
+ }
61
+ const suffix = commonDomainSuffix(hostnames);
62
+ if (suffix) {
63
+ return `${suffix} (${hostnames.length} hosts)`;
64
+ }
65
+ return `${hostnames[0]} (+${hostnames.length - 1})`;
66
+ }
67
+ function stripPort(host) {
68
+ const lastColon = host.lastIndexOf(":");
69
+ if (lastColon === -1) {
70
+ return host;
71
+ }
72
+ const maybePort = host.slice(lastColon + 1);
73
+ if (/^\d+$/.test(maybePort) && !host.slice(0, lastColon).includes(":")) {
74
+ return host.slice(0, lastColon);
75
+ }
76
+ return host;
77
+ }
78
+ function commonDomainSuffix(hostnames) {
79
+ const split = hostnames.map((h) => h.split("."));
80
+ const minLen = Math.min(...split.map((s) => s.length));
81
+ let shared = 0;
82
+ for (let i = 1; i <= minLen; i++) {
83
+ const labels2 = split.map((s) => s[s.length - i]);
84
+ if (labels2.every((l) => l === labels2[0])) {
85
+ shared = i;
86
+ } else {
87
+ break;
88
+ }
89
+ }
90
+ if (shared < 2 || shared === minLen) {
91
+ return shared === minLen ? hostnames[0] : "";
92
+ }
93
+ const labels = split[0];
94
+ return labels.slice(labels.length - shared).join(".");
95
+ }
96
+
97
+ function sanitizeMongoUri(connectionString) {
98
+ try {
99
+ const parsed = parseMongoUri(connectionString);
100
+ if (!parsed.username && !parsed.password) {
101
+ return connectionString;
102
+ }
103
+ const tail = `${parsed.pathname}${parsed.search ? `?${parsed.search}` : ""}`;
104
+ return `${parsed.protocol}//***:***@${parsed.hostsRaw}${tail}`;
105
+ } catch {
106
+ return "***";
107
+ }
108
+ }
109
+ function buildDirectConnectionUri(connectionString, host) {
110
+ const parsed = parseMongoUri(connectionString);
111
+ const params = new URLSearchParams(parsed.search);
112
+ params.set("directConnection", "true");
113
+ if (parsed.protocol === "mongodb+srv:" || params.has("tls") || params.has("ssl")) {
114
+ params.set("tls", "true");
115
+ }
116
+ const auth = parsed.username || parsed.password ? `${encodeURIComponent(parsed.username)}${parsed.password ? `:${encodeURIComponent(parsed.password)}` : ""}@` : "";
117
+ const pathname = parsed.pathname || "/";
118
+ return `mongodb://${auth}${host}${pathname}?${params.toString()}`;
119
+ }
10
120
  const DEFAULT_HOSTS = private_env.MONGOKU_DEFAULT_HOST ? private_env.MONGOKU_DEFAULT_HOST.split(";") : ["localhost:27017"];
11
121
  const DATABASE_FILE = private_env.MONGOKU_DATABASE_FILE || path.join(os.homedir(), ".mongoku.db");
12
122
  class HostsManager {
@@ -141,20 +251,22 @@ async function getCollectionJson(collection, type) {
141
251
  };
142
252
  }
143
253
  async function extractNodesFromConnectionString(connectionString) {
144
- const url = new URL(connectionString);
145
- if (url.protocol === "mongodb+srv:") {
146
- const hostname = url.hostname;
254
+ const parsed = parseMongoUri(connectionString);
255
+ if (parsed.protocol === "mongodb+srv:") {
256
+ const hostname = parsed.hosts[0]?.split(":")[0];
257
+ if (!hostname) {
258
+ throw new Error("No hostname found in SRV connection string");
259
+ }
147
260
  const srvRecords = await resolveSrv(`_mongodb._tcp.${hostname}`);
148
261
  return srvRecords.sort((a, b) => a.priority - b.priority || b.weight - a.weight).map((record) => `${record.name}:${record.port}`).sort();
149
262
  }
150
- if (url.protocol === "mongodb:") {
151
- const hostsString = url.host;
152
- if (!hostsString) {
263
+ if (parsed.protocol === "mongodb:") {
264
+ if (parsed.hosts.length === 0) {
153
265
  throw new Error("No hosts found in connection string");
154
266
  }
155
- return hostsString.split(",").map((host) => host.trim()).filter((host) => host.length > 0).sort();
267
+ return [...parsed.hosts].sort();
156
268
  }
157
- throw new TypeError(`Unsupported protocol: ${url.protocol}`);
269
+ throw new TypeError(`Unsupported protocol: ${parsed.protocol}`);
158
270
  }
159
271
  class MongoClientWithMappings extends MongoClient {
160
272
  url;
@@ -248,8 +360,7 @@ class MongoConnections {
248
360
  for (const host of hosts) {
249
361
  const urlStr = host.path.startsWith("mongodb") ? host.path : `mongodb://${host.path}`;
250
362
  try {
251
- const url = new URL(urlStr);
252
- const hostname = url.host || host.path;
363
+ const hostname = mongoHostKey(urlStr) || host.path;
253
364
  if (!this.clients.has(hostname)) {
254
365
  const client = new MongoClientWithMappings(urlStr, host._id, hostname, this.readPreference);
255
366
  this.clients.set(host._id, client);
@@ -294,8 +405,7 @@ class MongoConnections {
294
405
  const id = await this.hostsManager.add(hostPath);
295
406
  const urlStr = hostPath.startsWith("mongodb") ? hostPath : `mongodb://${hostPath}`;
296
407
  try {
297
- const url = new URL(urlStr);
298
- const hostname = url.host || hostPath;
408
+ const hostname = mongoHostKey(urlStr) || hostPath;
299
409
  if (!this.clients.has(hostname)) {
300
410
  const client = new MongoClientWithMappings(urlStr, id, hostname, this.readPreference);
301
411
  this.clients.set(id, client);
@@ -339,17 +449,10 @@ class MongoConnections {
339
449
  */
340
450
  async getIndexStatsFromNode(serverId, node, database, collection) {
341
451
  const client = this.getClient(serverId);
342
- const url = new URL(client.url);
343
- const directUrl = new URL(url.toString());
344
- directUrl.protocol = "mongodb:";
345
- directUrl.host = node;
346
- directUrl.searchParams.set("directConnection", "true");
347
- if (url.searchParams.has("tls") || url.searchParams.has("ssl") || url.protocol === "mongodb+srv:") {
348
- directUrl.searchParams.set("tls", "true");
349
- }
452
+ const directUri = buildDirectConnectionUri(client.url, node);
350
453
  let nodeClient = null;
351
454
  try {
352
- nodeClient = new MongoClient(directUrl.toString());
455
+ nodeClient = new MongoClient(directUri);
353
456
  await nodeClient.connect();
354
457
  const coll = nodeClient.db(database).collection(collection);
355
458
  const statsResult = await coll.aggregate([{ $indexStats: {} }]).toArray();
@@ -370,6 +473,136 @@ class MongoConnections {
370
473
  }
371
474
  }
372
475
  }
476
+ /**
477
+ * Return the shard key for every sharded collection in a database, in a single
478
+ * query against `config.collections`. Read-only.
479
+ *
480
+ * Returns a map of collectionName -> shard key. Collections that are not
481
+ * sharded (or on non-sharded clusters) are simply absent from the map.
482
+ * Designed to be cheap enough to call once for a whole collection list.
483
+ */
484
+ async getDatabaseShardKeys(serverId, database) {
485
+ const client = this.getClient(serverId);
486
+ const configDb = client.db("config");
487
+ const result = {};
488
+ try {
489
+ const prefix = `${database}.`;
490
+ const docs = await configDb.collection("collections").find({
491
+ _id: { $regex: `^${prefix.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}` }
492
+ }).project({ _id: 1, key: 1, dropped: 1 }).toArray();
493
+ for (const doc of docs) {
494
+ if (doc.dropped || !doc.key) {
495
+ continue;
496
+ }
497
+ const name = doc._id.slice(prefix.length);
498
+ result[name] = doc.key;
499
+ }
500
+ } catch (err) {
501
+ logger.error("Error reading config.collections for shard keys:", err);
502
+ }
503
+ return result;
504
+ }
505
+ /**
506
+ * Gather sharding information for a collection.
507
+ *
508
+ * Everything here is read-only: it reads the `config` database
509
+ * (config.collections / config.chunks / config.shards) and runs `$collStats`.
510
+ * On a non-sharded (standalone / replica set) deployment, the `config`
511
+ * collections won't exist and we return `shardingEnabled: false`.
512
+ */
513
+ async getShardingInfo(serverId, database, collection) {
514
+ const client = this.getClient(serverId);
515
+ const ns = `${database}.${collection}`;
516
+ const info = {
517
+ shardingEnabled: false,
518
+ sharded: false,
519
+ shardKey: null,
520
+ hashed: false,
521
+ unique: false,
522
+ totalChunks: 0,
523
+ shards: [],
524
+ balancerEnabled: true,
525
+ warning: null
526
+ };
527
+ const configDb = client.db("config");
528
+ let shardDocs = [];
529
+ try {
530
+ shardDocs = await configDb.collection("shards").find({}).toArray();
531
+ } catch (err) {
532
+ logger.error("Error reading config.shards (not a sharded cluster?):", err);
533
+ return info;
534
+ }
535
+ if (shardDocs.length === 0) {
536
+ return info;
537
+ }
538
+ info.shardingEnabled = true;
539
+ let collConfig = null;
540
+ try {
541
+ collConfig = await configDb.collection("collections").findOne({ _id: ns });
542
+ } catch (err) {
543
+ logger.error("Error reading config.collections:", err);
544
+ info.warning = "Could not read config.collections";
545
+ }
546
+ const perShard = /* @__PURE__ */ new Map();
547
+ try {
548
+ const statsResults = await client.db(database).collection(collection).aggregate([{ $collStats: { storageStats: {} } }]).toArray();
549
+ for (const stat of statsResults) {
550
+ const shardId = stat.shard || shardDocs[0]?._id || "unknown";
551
+ perShard.set(shardId, {
552
+ documents: stat.storageStats?.count ?? null,
553
+ size: stat.storageStats?.size ?? null
554
+ });
555
+ }
556
+ } catch (err) {
557
+ logger.error("Error reading $collStats for sharding info:", err);
558
+ }
559
+ if (collConfig && !collConfig.dropped && collConfig.key) {
560
+ info.sharded = true;
561
+ info.shardKey = collConfig.key;
562
+ info.hashed = Object.values(collConfig.key).some((v) => v === "hashed");
563
+ info.unique = !!collConfig.unique;
564
+ info.balancerEnabled = !collConfig.noBalance;
565
+ try {
566
+ let chunkFilter = { ns };
567
+ if (collConfig.uuid !== void 0) {
568
+ chunkFilter = { uuid: collConfig.uuid };
569
+ }
570
+ const chunkCounts = await configDb.collection("chunks").aggregate([{ $match: chunkFilter }, { $group: { _id: "$shard", count: { $sum: 1 } } }]).toArray();
571
+ const chunkMap = new Map(chunkCounts.map((c) => [c._id, c.count]));
572
+ info.totalChunks = chunkCounts.reduce((acc, c) => acc + c.count, 0);
573
+ info.shards = shardDocs.map((shard) => ({
574
+ shardId: shard._id,
575
+ host: shard.host,
576
+ chunks: chunkMap.get(shard._id) ?? 0,
577
+ documents: perShard.get(shard._id)?.documents ?? null,
578
+ size: perShard.get(shard._id)?.size ?? null
579
+ }));
580
+ } catch (err) {
581
+ logger.error("Error reading config.chunks:", err);
582
+ info.warning = "Could not read chunk distribution";
583
+ info.shards = shardDocs.map((shard) => ({
584
+ shardId: shard._id,
585
+ host: shard.host,
586
+ chunks: 0,
587
+ documents: perShard.get(shard._id)?.documents ?? null,
588
+ size: perShard.get(shard._id)?.size ?? null
589
+ }));
590
+ }
591
+ } else {
592
+ info.sharded = false;
593
+ info.shards = [...perShard.entries()].map(([shardId, stats]) => {
594
+ const shard = shardDocs.find((s) => s._id === shardId);
595
+ return {
596
+ shardId,
597
+ host: shard?.host ?? shardId,
598
+ chunks: 0,
599
+ documents: stats.documents,
600
+ size: stats.size
601
+ };
602
+ });
603
+ }
604
+ return info;
605
+ }
373
606
  }
374
607
  let mongoConnections = null;
375
608
  let initPromise = null;
@@ -387,5 +620,5 @@ async function getMongo() {
387
620
  return mongoConnections;
388
621
  }
389
622
 
390
- export { getCollectionJson as a, getMongo as g };
391
- //# sourceMappingURL=mongo-B92d7zNj.js.map
623
+ export { getCollectionJson as a, getMongo as g, mongoDisplayName as m, sanitizeMongoUri as s };
624
+ //# sourceMappingURL=mongo-Du0OjH5b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-Du0OjH5b.js","sources":["../../../.svelte-kit/adapter-node/chunks/mongoUri.js","../../../.svelte-kit/adapter-node/chunks/mongo.js"],"sourcesContent":["function parseMongoUri(connectionString) {\n const schemeMatch = connectionString.match(/^(mongodb(?:\\+srv)?):\\/\\//);\n if (!schemeMatch) {\n throw new TypeError(`Unsupported MongoDB connection string: ${connectionString}`);\n }\n const protocol = `${schemeMatch[1]}:`;\n const rest = connectionString.slice(schemeMatch[0].length);\n const afterAuthDelimiter = rest.indexOf(\"/\");\n const authorityEnd = afterAuthDelimiter === -1 ? rest.length : afterAuthDelimiter;\n const authority = rest.slice(0, authorityEnd);\n const tail = rest.slice(authorityEnd);\n let credentials = \"\";\n let hostsRaw = authority;\n const atIndex = authority.lastIndexOf(\"@\");\n if (atIndex !== -1) {\n credentials = authority.slice(0, atIndex);\n hostsRaw = authority.slice(atIndex + 1);\n }\n let username = \"\";\n let password = \"\";\n if (credentials) {\n const colon = credentials.indexOf(\":\");\n if (colon === -1) {\n username = credentials;\n } else {\n username = credentials.slice(0, colon);\n password = credentials.slice(colon + 1);\n }\n }\n const queryIndex = tail.indexOf(\"?\");\n const pathname = queryIndex === -1 ? tail : tail.slice(0, queryIndex);\n const search = queryIndex === -1 ? \"\" : tail.slice(queryIndex + 1);\n const hosts = hostsRaw.split(\",\").map((h) => h.trim()).filter((h) => h.length > 0);\n return { protocol, username, password, hostsRaw, hosts, pathname, search };\n}\nfunction mongoHostKey(connectionString) {\n return parseMongoUri(connectionString).hostsRaw;\n}\nfunction mongoDisplayName(connectionString) {\n let parsed;\n try {\n parsed = parseMongoUri(connectionString);\n } catch {\n return connectionString;\n }\n const hostnames = parsed.hosts.map((h) => stripPort(h)).filter((h) => h.length > 0);\n if (hostnames.length === 0) {\n return connectionString;\n }\n if (hostnames.length === 1) {\n return hostnames[0];\n }\n const suffix = commonDomainSuffix(hostnames);\n if (suffix) {\n return `${suffix} (${hostnames.length} hosts)`;\n }\n return `${hostnames[0]} (+${hostnames.length - 1})`;\n}\nfunction stripPort(host) {\n const lastColon = host.lastIndexOf(\":\");\n if (lastColon === -1) {\n return host;\n }\n const maybePort = host.slice(lastColon + 1);\n if (/^\\d+$/.test(maybePort) && !host.slice(0, lastColon).includes(\":\")) {\n return host.slice(0, lastColon);\n }\n return host;\n}\nfunction commonDomainSuffix(hostnames) {\n const split = hostnames.map((h) => h.split(\".\"));\n const minLen = Math.min(...split.map((s) => s.length));\n let shared = 0;\n for (let i = 1; i <= minLen; i++) {\n const labels2 = split.map((s) => s[s.length - i]);\n if (labels2.every((l) => l === labels2[0])) {\n shared = i;\n } else {\n break;\n }\n }\n if (shared < 2 || shared === minLen) {\n return shared === minLen ? hostnames[0] : \"\";\n }\n const labels = split[0];\n return labels.slice(labels.length - shared).join(\".\");\n}\nexport {\n mongoHostKey as a,\n mongoDisplayName as m,\n parseMongoUri as p\n};\n","import { b as private_env } from \"./shared-server.js\";\nimport { l as logger } from \"./logger.js\";\nimport { resolveSrv } from \"dns/promises\";\nimport { ReadPreference, MongoClient } from \"mongodb\";\nimport { p as parseMongoUri, a as mongoHostKey } from \"./mongoUri.js\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nfunction sanitizeMongoUri(connectionString) {\n try {\n const parsed = parseMongoUri(connectionString);\n if (!parsed.username && !parsed.password) {\n return connectionString;\n }\n const tail = `${parsed.pathname}${parsed.search ? `?${parsed.search}` : \"\"}`;\n return `${parsed.protocol}//***:***@${parsed.hostsRaw}${tail}`;\n } catch {\n return \"***\";\n }\n}\nfunction buildDirectConnectionUri(connectionString, host) {\n const parsed = parseMongoUri(connectionString);\n const params = new URLSearchParams(parsed.search);\n params.set(\"directConnection\", \"true\");\n if (parsed.protocol === \"mongodb+srv:\" || params.has(\"tls\") || params.has(\"ssl\")) {\n params.set(\"tls\", \"true\");\n }\n const auth = parsed.username || parsed.password ? `${encodeURIComponent(parsed.username)}${parsed.password ? `:${encodeURIComponent(parsed.password)}` : \"\"}@` : \"\";\n const pathname = parsed.pathname || \"/\";\n return `mongodb://${auth}${host}${pathname}?${params.toString()}`;\n}\nconst DEFAULT_HOSTS = private_env.MONGOKU_DEFAULT_HOST ? private_env.MONGOKU_DEFAULT_HOST.split(\";\") : [\"localhost:27017\"];\nconst DATABASE_FILE = private_env.MONGOKU_DATABASE_FILE || path.join(os.homedir(), \".mongoku.db\");\nclass HostsManager {\n _hosts = /* @__PURE__ */ new Map();\n // path -> _id\n async load() {\n let first = false;\n try {\n await fs.promises.stat(DATABASE_FILE);\n } catch {\n first = true;\n }\n if (!first) {\n await this._loadFromFile();\n }\n if (first || this._hosts.size === 0) {\n for (const hostname of DEFAULT_HOSTS) {\n this._hosts.set(hostname, this._generateId());\n }\n await this._saveToFile();\n }\n }\n async _loadFromFile() {\n const content = await fs.promises.readFile(DATABASE_FILE, \"utf8\");\n const lines = content.trim().split(\"\\n\").filter((line) => line.trim());\n const newHosts = /* @__PURE__ */ new Map();\n for (const line of lines) {\n const host = JSON.parse(line);\n if (host && typeof host.path === \"string\") {\n const id = host._id || this._generateId();\n newHosts.set(host.path, id);\n }\n }\n this._hosts = newHosts;\n }\n async _saveToFile() {\n const lines = Array.from(this._hosts).map(([hostPath, id]) => JSON.stringify({ path: hostPath, _id: id }));\n await fs.promises.writeFile(DATABASE_FILE, lines.join(\"\\n\") + \"\\n\", \"utf8\");\n }\n _generateId() {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n for (let i = 0; i < 16; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n }\n async getHosts() {\n return Array.from(this._hosts).map(([hostPath, id]) => ({ path: hostPath, _id: id }));\n }\n getHost(name) {\n return this._hosts.get(name);\n }\n async add(hostPath) {\n let id = this._hosts.get(hostPath);\n if (!id) {\n id = this._generateId();\n this._hosts.set(hostPath, id);\n }\n await this._saveToFile();\n return id;\n }\n async removeById(id) {\n for (const [hostPath, hostId] of this._hosts) {\n if (hostId === id) {\n this._hosts.delete(hostPath);\n break;\n }\n }\n await this._saveToFile();\n }\n}\nasync function getCollectionJson(collection, type) {\n const stats = {\n size: 0,\n count: 0,\n avgObjSize: 0,\n storageSize: 0,\n capped: false,\n nindexes: 0,\n totalIndexSize: 0,\n indexSizes: {}\n };\n if (type !== \"view\") {\n const agg = await collection.aggregate([\n {\n $collStats: {\n storageStats: {},\n count: {}\n }\n }\n ]).next().catch(() => null);\n if (agg) {\n stats.size = agg.storageStats.size;\n stats.count = agg.storageStats.count;\n stats.avgObjSize = Math.round(agg.storageStats.size / agg.storageStats.count);\n stats.storageSize = agg.storageStats.storageSize;\n stats.capped = agg.storageStats.capped;\n stats.nindexes = agg.storageStats.nindexes;\n stats.totalIndexSize = agg.storageStats.totalIndexSize;\n stats.indexSizes = agg.storageStats.indexSizes;\n }\n }\n let indexes = [];\n if (type !== \"view\") {\n try {\n const indexList = await collection.listIndexes().toArray();\n indexes = indexList.map((index) => ({\n name: index.name,\n key: index.key,\n size: stats.indexSizes[index.name] || 0\n }));\n } catch {\n indexes = Object.entries(stats.indexSizes).map(([name, size]) => ({\n name,\n size\n }));\n }\n }\n return {\n name: collection.collectionName,\n size: (stats.storageSize ?? 0) + (stats.totalIndexSize ?? 0),\n dataSize: stats.size,\n count: stats.count,\n avgObjSize: stats.avgObjSize ?? 0,\n storageSize: stats.storageSize ?? 0,\n capped: stats.capped,\n nIndexes: stats.nindexes,\n totalIndexSize: stats.totalIndexSize ?? 0,\n indexSizes: stats.indexSizes,\n indexes\n };\n}\nasync function extractNodesFromConnectionString(connectionString) {\n const parsed = parseMongoUri(connectionString);\n if (parsed.protocol === \"mongodb+srv:\") {\n const hostname = parsed.hosts[0]?.split(\":\")[0];\n if (!hostname) {\n throw new Error(\"No hostname found in SRV connection string\");\n }\n const srvRecords = await resolveSrv(`_mongodb._tcp.${hostname}`);\n return srvRecords.sort((a, b) => a.priority - b.priority || b.weight - a.weight).map((record) => `${record.name}:${record.port}`).sort();\n }\n if (parsed.protocol === \"mongodb:\") {\n if (parsed.hosts.length === 0) {\n throw new Error(\"No hosts found in connection string\");\n }\n return [...parsed.hosts].sort();\n }\n throw new TypeError(`Unsupported protocol: ${parsed.protocol}`);\n}\nclass MongoClientWithMappings extends MongoClient {\n url;\n mappings = {};\n indexes = {};\n _id;\n name;\n constructor(url, _id, name, readPreference) {\n super(url, readPreference ? { readPreference } : {});\n this.url = url;\n this._id = _id;\n this.name = name;\n }\n async getMappings(dbName, collectionName, opts) {\n if (opts?.forceRefresh || !this.mappings[dbName]?.[collectionName]) {\n const mappings = await this.db(dbName).collection(\"mongoku.mappings\").findOne({ _id: collectionName });\n this.mappings[dbName] ??= {};\n this.mappings[dbName][collectionName] = mappings?.mappings ?? {};\n }\n return this.mappings[dbName][collectionName];\n }\n clearMappingsCache(dbName, collectionName) {\n delete this.mappings[dbName][collectionName];\n }\n async getIndexes(dbName, collectionName, opts) {\n if (opts?.forceRefresh || !this.indexes[dbName]?.[collectionName]) {\n const indexList = await this.db(dbName).collection(collectionName).listIndexes().toArray();\n this.indexes[dbName] ??= {};\n this.indexes[dbName][collectionName] = indexList.map((index) => ({\n name: index.name,\n key: index.key\n }));\n }\n return this.indexes[dbName][collectionName];\n }\n setIndexes(dbName, collectionName, indexes) {\n this.indexes[dbName] ??= {};\n this.indexes[dbName][collectionName] = indexes;\n }\n clearIndexesCache(dbName, collectionName) {\n delete this.indexes[dbName]?.[collectionName];\n }\n /**\n * Check if a field has an index (as the first key in the index)\n */\n async hasIndexOnField(dbName, collectionName, field) {\n const indexes = await this.getIndexes(dbName, collectionName);\n return indexes.some((index) => {\n const keys = Object.keys(index.key);\n return keys[0] === field;\n });\n }\n}\nclass MongoConnections {\n /**\n * Todo: better system where we can have mutiple servers with same hostname, and labels for each server that\n * would be displayed in the UI instead of the hostname.\n */\n clients = /* @__PURE__ */ new Map();\n // _id -> MongoClientWithMappings\n clientIds = /* @__PURE__ */ new Map();\n // hostname -> _id\n hostsManager;\n countTimeout = parseInt(private_env.MONGOKU_COUNT_TIMEOUT, 10) || 3e4;\n queryTimeout = private_env.MONGOKU_QUERY_TIMEOUT ? parseInt(private_env.MONGOKU_QUERY_TIMEOUT, 10) : void 0;\n excludedDatabases;\n readPreference;\n constructor() {\n this.hostsManager = new HostsManager();\n const excludeEnv = private_env.MONGOKU_EXCLUDE_DATABASES || \"\";\n this.excludedDatabases = new Set(\n excludeEnv.split(\",\").map((db) => db.trim()).filter((db) => db.length > 0)\n );\n const readPrefMode = private_env.MONGOKU_READ_PREFERENCE;\n if (readPrefMode) {\n let tags;\n if (private_env.MONGOKU_READ_PREFERENCE_TAGS) {\n try {\n tags = JSON.parse(private_env.MONGOKU_READ_PREFERENCE_TAGS);\n } catch (err) {\n logger.error(\"Failed to parse MONGOKU_READ_PREFERENCE_TAGS:\", err);\n }\n }\n this.readPreference = tags ? new ReadPreference(readPrefMode, tags) : new ReadPreference(readPrefMode);\n logger.log(`Read preference configured: ${readPrefMode}${tags ? ` with tags ${JSON.stringify(tags)}` : \"\"}`);\n }\n }\n async initialize() {\n await this.hostsManager.load();\n const hosts = await this.hostsManager.getHosts();\n for (const host of hosts) {\n const urlStr = host.path.startsWith(\"mongodb\") ? host.path : `mongodb://${host.path}`;\n try {\n const hostname = mongoHostKey(urlStr) || host.path;\n if (!this.clients.has(hostname)) {\n const client = new MongoClientWithMappings(urlStr, host._id, hostname, this.readPreference);\n this.clients.set(host._id, client);\n this.clientIds.set(hostname, host._id);\n }\n } catch (err) {\n logger.error(`Failed to parse URL for host ${host.path}:`, err);\n }\n }\n }\n getClient(name) {\n const clientId = this.clientIds.get(name) || this.clientIds.get(`${name}:27017`);\n if (!clientId) {\n throw new Error(`Client not found: ${name}`);\n }\n const client = this.clients.get(clientId);\n if (!client) {\n throw new Error(`Client not found: ${name}`);\n }\n return client;\n }\n listClients() {\n return Array.from(this.clients.values()).map((client) => ({\n name: client.name,\n _id: client._id,\n client\n }));\n }\n getCountTimeout() {\n return this.countTimeout;\n }\n getQueryTimeout() {\n return this.queryTimeout;\n }\n filterDatabases(databases) {\n if (this.excludedDatabases.size === 0) {\n return databases;\n }\n return databases.filter((db) => !this.excludedDatabases.has(db.name));\n }\n async addServer(hostPath) {\n const id = await this.hostsManager.add(hostPath);\n const urlStr = hostPath.startsWith(\"mongodb\") ? hostPath : `mongodb://${hostPath}`;\n try {\n const hostname = mongoHostKey(urlStr) || hostPath;\n if (!this.clients.has(hostname)) {\n const client = new MongoClientWithMappings(urlStr, id, hostname, this.readPreference);\n this.clients.set(id, client);\n this.clientIds.set(hostname, id);\n }\n } catch (err) {\n logger.error(`Failed to parse URL for host ${hostPath}:`, err);\n throw err;\n }\n }\n async removeServer(name) {\n const clientKey = this.clientIds.has(name) ? name : `${name}:27017`;\n const clientId = this.clientIds.get(clientKey);\n if (!clientId) {\n throw new Error(`Server not found: ${name}`);\n }\n await this.hostsManager.removeById(clientId);\n this.clients.get(clientId)?.close().catch((err) => logger.error(`Error closing client ${name}:`, err));\n this.clients.delete(clientId);\n this.clientIds.delete(clientKey);\n }\n async reconnectClient(id) {\n const oldClient = this.clients.get(id);\n if (!oldClient) {\n throw new Error(`Client not found: ${id}`);\n }\n oldClient.close().catch((err) => logger.error(`Error closing old client ${id}:`, err));\n const newClient = new MongoClientWithMappings(oldClient.url, id, oldClient.name, this.readPreference);\n this.clients.set(id, newClient);\n await newClient.connect();\n }\n /**\n * Get the list of nodes from a server's connection string\n */\n async getServerNodes(serverId) {\n const client = this.getClient(serverId);\n return extractNodesFromConnectionString(client.url);\n }\n /**\n * Fetch index stats from a specific node using directConnection\n */\n async getIndexStatsFromNode(serverId, node, database, collection) {\n const client = this.getClient(serverId);\n const directUri = buildDirectConnectionUri(client.url, node);\n let nodeClient = null;\n try {\n nodeClient = new MongoClient(directUri);\n await nodeClient.connect();\n const coll = nodeClient.db(database).collection(collection);\n const statsResult = await coll.aggregate([{ $indexStats: {} }]).toArray();\n const indexStats = Object.fromEntries(\n statsResult.map((stat) => [\n stat.name,\n {\n ops: stat.accesses?.ops || 0,\n since: stat.accesses?.since || /* @__PURE__ */ new Date(),\n host: stat.host || node\n }\n ])\n );\n return indexStats;\n } finally {\n if (nodeClient) {\n await nodeClient.close();\n }\n }\n }\n /**\n * Return the shard key for every sharded collection in a database, in a single\n * query against `config.collections`. Read-only.\n *\n * Returns a map of collectionName -> shard key. Collections that are not\n * sharded (or on non-sharded clusters) are simply absent from the map.\n * Designed to be cheap enough to call once for a whole collection list.\n */\n async getDatabaseShardKeys(serverId, database) {\n const client = this.getClient(serverId);\n const configDb = client.db(\"config\");\n const result = {};\n try {\n const prefix = `${database}.`;\n const docs = await configDb.collection(\"collections\").find({\n _id: { $regex: `^${prefix.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}` }\n }).project({ _id: 1, key: 1, dropped: 1 }).toArray();\n for (const doc of docs) {\n if (doc.dropped || !doc.key) {\n continue;\n }\n const name = doc._id.slice(prefix.length);\n result[name] = doc.key;\n }\n } catch (err) {\n logger.error(\"Error reading config.collections for shard keys:\", err);\n }\n return result;\n }\n /**\n * Gather sharding information for a collection.\n *\n * Everything here is read-only: it reads the `config` database\n * (config.collections / config.chunks / config.shards) and runs `$collStats`.\n * On a non-sharded (standalone / replica set) deployment, the `config`\n * collections won't exist and we return `shardingEnabled: false`.\n */\n async getShardingInfo(serverId, database, collection) {\n const client = this.getClient(serverId);\n const ns = `${database}.${collection}`;\n const info = {\n shardingEnabled: false,\n sharded: false,\n shardKey: null,\n hashed: false,\n unique: false,\n totalChunks: 0,\n shards: [],\n balancerEnabled: true,\n warning: null\n };\n const configDb = client.db(\"config\");\n let shardDocs = [];\n try {\n shardDocs = await configDb.collection(\"shards\").find({}).toArray();\n } catch (err) {\n logger.error(\"Error reading config.shards (not a sharded cluster?):\", err);\n return info;\n }\n if (shardDocs.length === 0) {\n return info;\n }\n info.shardingEnabled = true;\n let collConfig = null;\n try {\n collConfig = await configDb.collection(\"collections\").findOne({ _id: ns });\n } catch (err) {\n logger.error(\"Error reading config.collections:\", err);\n info.warning = \"Could not read config.collections\";\n }\n const perShard = /* @__PURE__ */ new Map();\n try {\n const statsResults = await client.db(database).collection(collection).aggregate([{ $collStats: { storageStats: {} } }]).toArray();\n for (const stat of statsResults) {\n const shardId = stat.shard || shardDocs[0]?._id || \"unknown\";\n perShard.set(shardId, {\n documents: stat.storageStats?.count ?? null,\n size: stat.storageStats?.size ?? null\n });\n }\n } catch (err) {\n logger.error(\"Error reading $collStats for sharding info:\", err);\n }\n if (collConfig && !collConfig.dropped && collConfig.key) {\n info.sharded = true;\n info.shardKey = collConfig.key;\n info.hashed = Object.values(collConfig.key).some((v) => v === \"hashed\");\n info.unique = !!collConfig.unique;\n info.balancerEnabled = !collConfig.noBalance;\n try {\n let chunkFilter = { ns };\n if (collConfig.uuid !== void 0) {\n chunkFilter = { uuid: collConfig.uuid };\n }\n const chunkCounts = await configDb.collection(\"chunks\").aggregate([{ $match: chunkFilter }, { $group: { _id: \"$shard\", count: { $sum: 1 } } }]).toArray();\n const chunkMap = new Map(chunkCounts.map((c) => [c._id, c.count]));\n info.totalChunks = chunkCounts.reduce((acc, c) => acc + c.count, 0);\n info.shards = shardDocs.map((shard) => ({\n shardId: shard._id,\n host: shard.host,\n chunks: chunkMap.get(shard._id) ?? 0,\n documents: perShard.get(shard._id)?.documents ?? null,\n size: perShard.get(shard._id)?.size ?? null\n }));\n } catch (err) {\n logger.error(\"Error reading config.chunks:\", err);\n info.warning = \"Could not read chunk distribution\";\n info.shards = shardDocs.map((shard) => ({\n shardId: shard._id,\n host: shard.host,\n chunks: 0,\n documents: perShard.get(shard._id)?.documents ?? null,\n size: perShard.get(shard._id)?.size ?? null\n }));\n }\n } else {\n info.sharded = false;\n info.shards = [...perShard.entries()].map(([shardId, stats]) => {\n const shard = shardDocs.find((s) => s._id === shardId);\n return {\n shardId,\n host: shard?.host ?? shardId,\n chunks: 0,\n documents: stats.documents,\n size: stats.size\n };\n });\n }\n return info;\n }\n}\nlet mongoConnections = null;\nlet initPromise = null;\nasync function getMongo() {\n if (!mongoConnections) {\n if (!initPromise) {\n initPromise = (async () => {\n mongoConnections = new MongoConnections();\n await mongoConnections.initialize();\n return mongoConnections;\n })();\n }\n return initPromise;\n }\n return mongoConnections;\n}\nexport {\n getCollectionJson as a,\n getMongo as g,\n sanitizeMongoUri as s\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { b as base } from './server-Crjo4w1q.js';
2
- import './root-otUAnOAR.js';
2
+ import './root-Bs42DBih.js';
3
3
  import { p as private_env } from './shared-server-BmU87nph.js';
4
4
  import { createHmac, timingSafeEqual, randomBytes, createHash } from 'node:crypto';
5
5
 
@@ -245,4 +245,4 @@ function cookieOptions(url, maxAge) {
245
245
  }
246
246
 
247
247
  export { OAUTH_CIMD_CLIENT_ID as O, getCallbackUrl as a, extractUserFromIdToken as b, cookieOptions as c, checkRequiredClaim as d, exchangeCode as e, createSessionCookie as f, getOAuthConfig as g, OAUTH_RETURN_COOKIE as h, generateCodeVerifier as i, generateCodeChallenge as j, generateState as k, buildAuthorizationUrl as l, sanitizeOAuthReturnPath as s, verifySession as v };
248
- //# sourceMappingURL=oauth-D6jTWKFd.js.map
248
+ //# sourceMappingURL=oauth-CyIuK65I.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-D6jTWKFd.js","sources":["../../../.svelte-kit/adapter-node/chunks/oauth.js"],"sourcesContent":["import { b as base } from \"./server.js\";\nimport \"./url.js\";\nimport \"@sveltejs/kit/internal/server\";\nimport \"./root.js\";\nimport { b as private_env } from \"./shared-server.js\";\nimport { createHmac, randomBytes, createHash, timingSafeEqual } from \"node:crypto\";\nconst DEFAULT_SESSION_DURATION = 86400;\nconst OAUTH_CIMD_CLIENT_ID = \"__CIMD__\";\nlet cachedConfig;\nfunction parseSessionDuration(rawDuration) {\n if (!rawDuration) {\n return DEFAULT_SESSION_DURATION;\n }\n const parsed = Number(rawDuration);\n if (!Number.isInteger(parsed) || parsed <= 0) {\n return DEFAULT_SESSION_DURATION;\n }\n return parsed;\n}\nasync function fetchOpenIDConfiguration(issuerUrl) {\n const wellKnown = issuerUrl.replace(/\\/+$/, \"\") + \"/.well-known/openid-configuration\";\n const response = await fetch(wellKnown);\n if (!response.ok) {\n throw new Error(`Failed to fetch OpenID configuration from ${wellKnown} (${response.status})`);\n }\n const config = await response.json();\n if (!config.authorization_endpoint || !config.token_endpoint) {\n throw new Error(`OpenID configuration at ${wellKnown} is missing required endpoints`);\n }\n return config;\n}\nasync function getOAuthConfig() {\n if (cachedConfig !== void 0) {\n return cachedConfig;\n }\n const clientId = private_env.MONGOKU_OAUTH_CLIENT_ID;\n if (!clientId) {\n cachedConfig = null;\n return null;\n }\n const issuerUrl = private_env.MONGOKU_OAUTH_ISSUER_URL;\n const sessionSecret = private_env.MONGOKU_OAUTH_SESSION_SECRET;\n if (!issuerUrl || !sessionSecret) {\n throw new Error(\n \"OAuth is partially configured. When MONGOKU_OAUTH_CLIENT_ID is set, MONGOKU_OAUTH_ISSUER_URL and MONGOKU_OAUTH_SESSION_SECRET are also required.\"\n );\n }\n const oidc = await fetchOpenIDConfiguration(issuerUrl);\n const allowedSubsRaw = private_env.MONGOKU_OAUTH_ALLOWED_SUBS;\n const allowedSubs = allowedSubsRaw ? new Set(\n allowedSubsRaw.split(\",\").map((s) => s.trim()).filter(Boolean)\n ) : void 0;\n const requiredClaimRaw = private_env.MONGOKU_OAUTH_REQUIRED_CLAIM;\n let requiredClaim;\n if (requiredClaimRaw) {\n const eqIndex = requiredClaimRaw.indexOf(\"=\");\n if (eqIndex <= 0) {\n throw new Error('MONGOKU_OAUTH_REQUIRED_CLAIM must be in the format \"field=value\" (e.g. \"authority=admin\")');\n }\n requiredClaim = {\n field: requiredClaimRaw.slice(0, eqIndex),\n value: requiredClaimRaw.slice(eqIndex + 1)\n };\n }\n cachedConfig = {\n clientId,\n issuerUrl,\n authorizationUrl: oidc.authorization_endpoint,\n tokenUrl: oidc.token_endpoint,\n scopes: private_env.MONGOKU_OAUTH_SCOPES ?? \"openid profile email\",\n sessionSecret,\n sessionDuration: parseSessionDuration(private_env.MONGOKU_OAUTH_SESSION_DURATION),\n allowedSubs,\n requiredClaim\n };\n return cachedConfig;\n}\nfunction resolveOAuthClientId(config, origin) {\n if (config.clientId !== OAUTH_CIMD_CLIENT_ID) {\n return config.clientId;\n }\n return new URL(`${base}/.well-known/cimd.json`, origin).toString();\n}\nfunction base64url(buffer) {\n return buffer.toString(\"base64url\");\n}\nfunction generateCodeVerifier() {\n return base64url(randomBytes(64));\n}\nfunction generateCodeChallenge(verifier) {\n return base64url(createHash(\"sha256\").update(verifier).digest());\n}\nfunction generateState() {\n return base64url(randomBytes(32));\n}\nfunction buildAuthorizationUrl(config, origin, callbackUrl, codeChallenge, state) {\n const url = new URL(config.authorizationUrl);\n url.searchParams.set(\"client_id\", resolveOAuthClientId(config, origin));\n url.searchParams.set(\"response_type\", \"code\");\n url.searchParams.set(\"redirect_uri\", callbackUrl);\n url.searchParams.set(\"scope\", config.scopes);\n url.searchParams.set(\"state\", state);\n url.searchParams.set(\"code_challenge\", codeChallenge);\n url.searchParams.set(\"code_challenge_method\", \"S256\");\n return url.toString();\n}\nasync function exchangeCode(config, origin, code, codeVerifier, callbackUrl) {\n const body = new URLSearchParams({\n grant_type: \"authorization_code\",\n code,\n redirect_uri: callbackUrl,\n client_id: resolveOAuthClientId(config, origin),\n code_verifier: codeVerifier\n });\n const response = await fetch(config.tokenUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: body.toString()\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Token exchange failed (${response.status}): ${text}`);\n }\n return response.json();\n}\nfunction extractUserFromIdToken(idToken) {\n try {\n const parts = idToken.split(\".\");\n if (parts.length !== 3) {\n return { user: {}, claims: {} };\n }\n const claims = JSON.parse(Buffer.from(parts[1], \"base64url\").toString());\n return {\n user: {\n sub: claims.sub,\n name: claims.name || claims.preferred_username,\n email: claims.email\n },\n claims\n };\n } catch {\n return { user: {}, claims: {} };\n }\n}\nfunction checkRequiredClaim(claims, required) {\n const actual = claims[required.field];\n if (Array.isArray(actual)) {\n return actual.includes(required.value);\n }\n return String(actual) === required.value;\n}\nfunction createSessionCookie(config, user) {\n const sessionDuration = Number.isInteger(config.sessionDuration) && config.sessionDuration > 0 ? config.sessionDuration : DEFAULT_SESSION_DURATION;\n const payload = {\n ...user,\n exp: Math.floor(Date.now() / 1e3) + sessionDuration\n };\n const payloadStr = Buffer.from(JSON.stringify(payload)).toString(\"base64url\");\n const signature = createHmac(\"sha256\", config.sessionSecret).update(payloadStr).digest(\"base64url\");\n return `${payloadStr}.${signature}`;\n}\nfunction verifySession(config, cookie) {\n const dotIndex = cookie.lastIndexOf(\".\");\n if (dotIndex === -1) {\n return null;\n }\n const payloadStr = cookie.slice(0, dotIndex);\n const signature = cookie.slice(dotIndex + 1);\n const expectedSignature = createHmac(\"sha256\", config.sessionSecret).update(payloadStr).digest(\"base64url\");\n const a = Buffer.from(signature);\n const b = Buffer.from(expectedSignature);\n if (a.length !== b.length || !timingSafeEqual(a, b)) {\n return null;\n }\n try {\n const payload = JSON.parse(Buffer.from(payloadStr, \"base64url\").toString());\n if (!Number.isFinite(payload.exp)) {\n return null;\n }\n if (payload.exp < Math.floor(Date.now() / 1e3)) {\n return null;\n }\n return payload;\n } catch {\n return null;\n }\n}\nfunction getCallbackUrl(origin) {\n return `${origin}${base}/auth/callback`;\n}\nconst OAUTH_AUTH_PREFIX = `${base}/auth`;\nfunction sanitizeOAuthReturnPath(requestUrl, raw) {\n if (raw == null || raw === \"\") {\n return null;\n }\n const trimmed = raw.trim();\n if (trimmed.startsWith(\"//\")) {\n return null;\n }\n let pathWithSearch;\n if (/^https?:\\/\\//i.test(trimmed)) {\n let parsed;\n try {\n parsed = new URL(trimmed);\n } catch {\n return null;\n }\n if (parsed.origin !== requestUrl.origin) {\n return null;\n }\n pathWithSearch = parsed.pathname + parsed.search;\n } else if (trimmed.startsWith(\"/\")) {\n try {\n const parsed = new URL(trimmed, requestUrl.origin);\n if (parsed.origin !== requestUrl.origin) {\n return null;\n }\n pathWithSearch = parsed.pathname + parsed.search;\n } catch {\n return null;\n }\n } else {\n return null;\n }\n if (base !== \"\") {\n if (pathWithSearch !== base && !pathWithSearch.startsWith(`${base}/`)) {\n return null;\n }\n } else if (!pathWithSearch.startsWith(\"/\")) {\n return null;\n }\n if (pathWithSearch === OAUTH_AUTH_PREFIX || pathWithSearch.startsWith(`${OAUTH_AUTH_PREFIX}/`)) {\n return null;\n }\n return pathWithSearch;\n}\nconst OAUTH_RETURN_COOKIE = \"mongoku_oauth_return\";\nfunction cookieOptions(url, maxAge) {\n return {\n httpOnly: true,\n secure: url.protocol === \"https:\",\n sameSite: \"lax\",\n path: base || \"/\",\n ...maxAge !== void 0 && { maxAge }\n };\n}\nexport {\n OAUTH_CIMD_CLIENT_ID as O,\n getCallbackUrl as a,\n extractUserFromIdToken as b,\n cookieOptions as c,\n checkRequiredClaim as d,\n exchangeCode as e,\n createSessionCookie as f,\n getOAuthConfig as g,\n OAUTH_RETURN_COOKIE as h,\n generateCodeVerifier as i,\n generateCodeChallenge as j,\n generateState as k,\n buildAuthorizationUrl as l,\n sanitizeOAuthReturnPath as s,\n verifySession as v\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-CyIuK65I.js","sources":["../../../.svelte-kit/adapter-node/chunks/oauth.js"],"sourcesContent":["import { b as base } from \"./server.js\";\nimport \"./url.js\";\nimport \"@sveltejs/kit/internal/server\";\nimport \"./root.js\";\nimport { b as private_env } from \"./shared-server.js\";\nimport { createHmac, randomBytes, createHash, timingSafeEqual } from \"node:crypto\";\nconst DEFAULT_SESSION_DURATION = 86400;\nconst OAUTH_CIMD_CLIENT_ID = \"__CIMD__\";\nlet cachedConfig;\nfunction parseSessionDuration(rawDuration) {\n if (!rawDuration) {\n return DEFAULT_SESSION_DURATION;\n }\n const parsed = Number(rawDuration);\n if (!Number.isInteger(parsed) || parsed <= 0) {\n return DEFAULT_SESSION_DURATION;\n }\n return parsed;\n}\nasync function fetchOpenIDConfiguration(issuerUrl) {\n const wellKnown = issuerUrl.replace(/\\/+$/, \"\") + \"/.well-known/openid-configuration\";\n const response = await fetch(wellKnown);\n if (!response.ok) {\n throw new Error(`Failed to fetch OpenID configuration from ${wellKnown} (${response.status})`);\n }\n const config = await response.json();\n if (!config.authorization_endpoint || !config.token_endpoint) {\n throw new Error(`OpenID configuration at ${wellKnown} is missing required endpoints`);\n }\n return config;\n}\nasync function getOAuthConfig() {\n if (cachedConfig !== void 0) {\n return cachedConfig;\n }\n const clientId = private_env.MONGOKU_OAUTH_CLIENT_ID;\n if (!clientId) {\n cachedConfig = null;\n return null;\n }\n const issuerUrl = private_env.MONGOKU_OAUTH_ISSUER_URL;\n const sessionSecret = private_env.MONGOKU_OAUTH_SESSION_SECRET;\n if (!issuerUrl || !sessionSecret) {\n throw new Error(\n \"OAuth is partially configured. When MONGOKU_OAUTH_CLIENT_ID is set, MONGOKU_OAUTH_ISSUER_URL and MONGOKU_OAUTH_SESSION_SECRET are also required.\"\n );\n }\n const oidc = await fetchOpenIDConfiguration(issuerUrl);\n const allowedSubsRaw = private_env.MONGOKU_OAUTH_ALLOWED_SUBS;\n const allowedSubs = allowedSubsRaw ? new Set(\n allowedSubsRaw.split(\",\").map((s) => s.trim()).filter(Boolean)\n ) : void 0;\n const requiredClaimRaw = private_env.MONGOKU_OAUTH_REQUIRED_CLAIM;\n let requiredClaim;\n if (requiredClaimRaw) {\n const eqIndex = requiredClaimRaw.indexOf(\"=\");\n if (eqIndex <= 0) {\n throw new Error('MONGOKU_OAUTH_REQUIRED_CLAIM must be in the format \"field=value\" (e.g. \"authority=admin\")');\n }\n requiredClaim = {\n field: requiredClaimRaw.slice(0, eqIndex),\n value: requiredClaimRaw.slice(eqIndex + 1)\n };\n }\n cachedConfig = {\n clientId,\n issuerUrl,\n authorizationUrl: oidc.authorization_endpoint,\n tokenUrl: oidc.token_endpoint,\n scopes: private_env.MONGOKU_OAUTH_SCOPES ?? \"openid profile email\",\n sessionSecret,\n sessionDuration: parseSessionDuration(private_env.MONGOKU_OAUTH_SESSION_DURATION),\n allowedSubs,\n requiredClaim\n };\n return cachedConfig;\n}\nfunction resolveOAuthClientId(config, origin) {\n if (config.clientId !== OAUTH_CIMD_CLIENT_ID) {\n return config.clientId;\n }\n return new URL(`${base}/.well-known/cimd.json`, origin).toString();\n}\nfunction base64url(buffer) {\n return buffer.toString(\"base64url\");\n}\nfunction generateCodeVerifier() {\n return base64url(randomBytes(64));\n}\nfunction generateCodeChallenge(verifier) {\n return base64url(createHash(\"sha256\").update(verifier).digest());\n}\nfunction generateState() {\n return base64url(randomBytes(32));\n}\nfunction buildAuthorizationUrl(config, origin, callbackUrl, codeChallenge, state) {\n const url = new URL(config.authorizationUrl);\n url.searchParams.set(\"client_id\", resolveOAuthClientId(config, origin));\n url.searchParams.set(\"response_type\", \"code\");\n url.searchParams.set(\"redirect_uri\", callbackUrl);\n url.searchParams.set(\"scope\", config.scopes);\n url.searchParams.set(\"state\", state);\n url.searchParams.set(\"code_challenge\", codeChallenge);\n url.searchParams.set(\"code_challenge_method\", \"S256\");\n return url.toString();\n}\nasync function exchangeCode(config, origin, code, codeVerifier, callbackUrl) {\n const body = new URLSearchParams({\n grant_type: \"authorization_code\",\n code,\n redirect_uri: callbackUrl,\n client_id: resolveOAuthClientId(config, origin),\n code_verifier: codeVerifier\n });\n const response = await fetch(config.tokenUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: body.toString()\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Token exchange failed (${response.status}): ${text}`);\n }\n return response.json();\n}\nfunction extractUserFromIdToken(idToken) {\n try {\n const parts = idToken.split(\".\");\n if (parts.length !== 3) {\n return { user: {}, claims: {} };\n }\n const claims = JSON.parse(Buffer.from(parts[1], \"base64url\").toString());\n return {\n user: {\n sub: claims.sub,\n name: claims.name || claims.preferred_username,\n email: claims.email\n },\n claims\n };\n } catch {\n return { user: {}, claims: {} };\n }\n}\nfunction checkRequiredClaim(claims, required) {\n const actual = claims[required.field];\n if (Array.isArray(actual)) {\n return actual.includes(required.value);\n }\n return String(actual) === required.value;\n}\nfunction createSessionCookie(config, user) {\n const sessionDuration = Number.isInteger(config.sessionDuration) && config.sessionDuration > 0 ? config.sessionDuration : DEFAULT_SESSION_DURATION;\n const payload = {\n ...user,\n exp: Math.floor(Date.now() / 1e3) + sessionDuration\n };\n const payloadStr = Buffer.from(JSON.stringify(payload)).toString(\"base64url\");\n const signature = createHmac(\"sha256\", config.sessionSecret).update(payloadStr).digest(\"base64url\");\n return `${payloadStr}.${signature}`;\n}\nfunction verifySession(config, cookie) {\n const dotIndex = cookie.lastIndexOf(\".\");\n if (dotIndex === -1) {\n return null;\n }\n const payloadStr = cookie.slice(0, dotIndex);\n const signature = cookie.slice(dotIndex + 1);\n const expectedSignature = createHmac(\"sha256\", config.sessionSecret).update(payloadStr).digest(\"base64url\");\n const a = Buffer.from(signature);\n const b = Buffer.from(expectedSignature);\n if (a.length !== b.length || !timingSafeEqual(a, b)) {\n return null;\n }\n try {\n const payload = JSON.parse(Buffer.from(payloadStr, \"base64url\").toString());\n if (!Number.isFinite(payload.exp)) {\n return null;\n }\n if (payload.exp < Math.floor(Date.now() / 1e3)) {\n return null;\n }\n return payload;\n } catch {\n return null;\n }\n}\nfunction getCallbackUrl(origin) {\n return `${origin}${base}/auth/callback`;\n}\nconst OAUTH_AUTH_PREFIX = `${base}/auth`;\nfunction sanitizeOAuthReturnPath(requestUrl, raw) {\n if (raw == null || raw === \"\") {\n return null;\n }\n const trimmed = raw.trim();\n if (trimmed.startsWith(\"//\")) {\n return null;\n }\n let pathWithSearch;\n if (/^https?:\\/\\//i.test(trimmed)) {\n let parsed;\n try {\n parsed = new URL(trimmed);\n } catch {\n return null;\n }\n if (parsed.origin !== requestUrl.origin) {\n return null;\n }\n pathWithSearch = parsed.pathname + parsed.search;\n } else if (trimmed.startsWith(\"/\")) {\n try {\n const parsed = new URL(trimmed, requestUrl.origin);\n if (parsed.origin !== requestUrl.origin) {\n return null;\n }\n pathWithSearch = parsed.pathname + parsed.search;\n } catch {\n return null;\n }\n } else {\n return null;\n }\n if (base !== \"\") {\n if (pathWithSearch !== base && !pathWithSearch.startsWith(`${base}/`)) {\n return null;\n }\n } else if (!pathWithSearch.startsWith(\"/\")) {\n return null;\n }\n if (pathWithSearch === OAUTH_AUTH_PREFIX || pathWithSearch.startsWith(`${OAUTH_AUTH_PREFIX}/`)) {\n return null;\n }\n return pathWithSearch;\n}\nconst OAUTH_RETURN_COOKIE = \"mongoku_oauth_return\";\nfunction cookieOptions(url, maxAge) {\n return {\n httpOnly: true,\n secure: url.protocol === \"https:\",\n sameSite: \"lax\",\n path: base || \"/\",\n ...maxAge !== void 0 && { maxAge }\n };\n}\nexport {\n OAUTH_CIMD_CLIENT_ID as O,\n getCallbackUrl as a,\n extractUserFromIdToken as b,\n cookieOptions as c,\n checkRequiredClaim as d,\n exchangeCode as e,\n createSessionCookie as f,\n getOAuthConfig as g,\n OAUTH_RETURN_COOKIE as h,\n generateCodeVerifier as i,\n generateCodeChallenge as j,\n generateState as k,\n buildAuthorizationUrl as l,\n sanitizeOAuthReturnPath as s,\n verifySession as v\n};\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- export { m as default } from './servers.remote-CGenkEHX.js';
2
- import './root-otUAnOAR.js';
1
+ export { m as default } from './servers.remote-Bise-7j4.js';
2
+ import './root-Bs42DBih.js';
3
+ import './renderer-wJWkLEmh.js';
3
4
  import './async-DUoD1OpG.js';
4
5
  import './shared-server-BmU87nph.js';
5
6
  import './utils-BQzn9ikS.js';
6
- import './shared-DlqhoNLb.js';
7
+ import './shared-BJTImRjE.js';
7
8
  import './index-NcxaM188.js';
8
9
  import './jsonParser-C3QUcODD.js';
9
10
  import 'esprima';
@@ -12,12 +13,11 @@ import 'mongodb';
12
13
  import './logger-PfH_grbh.js';
13
14
  import 'async_hooks';
14
15
  import 'node:util';
15
- import './mongo-B92d7zNj.js';
16
+ import './mongo-Du0OjH5b.js';
16
17
  import 'dns/promises';
17
- import 'url';
18
18
  import 'node:fs';
19
19
  import 'node:os';
20
20
  import 'node:path';
21
21
  import './schema-BZonjzNJ.js';
22
22
  import 'zod';
23
- //# sourceMappingURL=remote-xxtqbu-CDChJkWc.js.map
23
+ //# sourceMappingURL=remote-xxtqbu-BCjbN3T4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-xxtqbu-BCjbN3T4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}