mongoku 2.9.2 → 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.
- package/build/client/_app/immutable/assets/0.D8aXA7G5.css +1 -0
- package/build/client/_app/immutable/assets/0.D8aXA7G5.css.br +0 -0
- package/build/client/_app/immutable/assets/0.D8aXA7G5.css.gz +0 -0
- package/build/client/_app/immutable/assets/10.-WSj0hXT.css +1 -0
- package/build/client/_app/immutable/assets/10.-WSj0hXT.css.br +1 -0
- package/build/client/_app/immutable/assets/10.-WSj0hXT.css.gz +0 -0
- package/build/client/_app/immutable/assets/16.BpmHh9U0.css +1 -0
- package/build/client/_app/immutable/assets/16.BpmHh9U0.css.br +0 -0
- package/build/client/_app/immutable/assets/16.BpmHh9U0.css.gz +0 -0
- package/build/client/_app/immutable/chunks/-8z-rXzu.js +1 -0
- package/build/client/_app/immutable/chunks/-8z-rXzu.js.br +0 -0
- package/build/client/_app/immutable/chunks/-8z-rXzu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ADrS3reX.js +1 -0
- package/build/client/_app/immutable/chunks/ADrS3reX.js.br +0 -0
- package/build/client/_app/immutable/chunks/ADrS3reX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B3A9hx44.js +1 -0
- package/build/client/_app/immutable/chunks/B3A9hx44.js.br +0 -0
- package/build/client/_app/immutable/chunks/B3A9hx44.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B48saTbS.js +1 -0
- package/build/client/_app/immutable/chunks/B48saTbS.js.br +0 -0
- package/build/client/_app/immutable/chunks/B48saTbS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{IixngxlS.js → BoF-bMzh.js} +2 -2
- package/build/client/_app/immutable/chunks/BoF-bMzh.js.br +0 -0
- package/build/client/_app/immutable/chunks/BoF-bMzh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C5BvtFsa.js +1 -0
- package/build/client/_app/immutable/chunks/C5BvtFsa.js.br +0 -0
- package/build/client/_app/immutable/chunks/C5BvtFsa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C5dXZyme.js +1 -0
- package/build/client/_app/immutable/chunks/C5dXZyme.js.br +0 -0
- package/build/client/_app/immutable/chunks/C5dXZyme.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CUBPtF8t.js +65 -0
- package/build/client/_app/immutable/chunks/CUBPtF8t.js.br +0 -0
- package/build/client/_app/immutable/chunks/CUBPtF8t.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{9xpgPu5N.js → Cf6RCjfg.js} +1 -1
- package/build/client/_app/immutable/chunks/Cf6RCjfg.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cf6RCjfg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CrLGr586.js +2 -0
- package/build/client/_app/immutable/chunks/CrLGr586.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrLGr586.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CsbWzWJI.js +1 -0
- package/build/client/_app/immutable/chunks/CsbWzWJI.js.br +0 -0
- package/build/client/_app/immutable/chunks/CsbWzWJI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CyTV7fHl.js +1 -0
- package/build/client/_app/immutable/chunks/CyTV7fHl.js.br +0 -0
- package/build/client/_app/immutable/chunks/CyTV7fHl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DCAtHodH.js → D3UCTJm-.js} +2 -2
- package/build/client/_app/immutable/chunks/D3UCTJm-.js.br +0 -0
- package/build/client/_app/immutable/chunks/D3UCTJm-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Dzt_TFtX.js → DH7nqg5-.js} +1 -1
- package/build/client/_app/immutable/chunks/DH7nqg5-.js.br +0 -0
- package/build/client/_app/immutable/chunks/DH7nqg5-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DKMyRjux.js +1 -0
- package/build/client/_app/immutable/chunks/DKMyRjux.js.br +0 -0
- package/build/client/_app/immutable/chunks/DKMyRjux.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DO0gnjpd.js +1 -0
- package/build/client/_app/immutable/chunks/DO0gnjpd.js.br +0 -0
- package/build/client/_app/immutable/chunks/DO0gnjpd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DVIi8uNn.js +1 -0
- package/build/client/_app/immutable/chunks/DVIi8uNn.js.br +0 -0
- package/build/client/_app/immutable/chunks/DVIi8uNn.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dc47-4iR.js +1 -0
- package/build/client/_app/immutable/chunks/Dc47-4iR.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dc47-4iR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CTk2PBcX.js → Dcgd1m6P.js} +1 -1
- package/build/client/_app/immutable/chunks/Dcgd1m6P.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dcgd1m6P.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ddz9xOa-.js +1 -0
- package/build/client/_app/immutable/chunks/Ddz9xOa-.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ddz9xOa-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{IwGwbOe7.js → DfW1b8bA.js} +1 -1
- package/build/client/_app/immutable/chunks/DfW1b8bA.js.br +0 -0
- package/build/client/_app/immutable/chunks/{IwGwbOe7.js.gz → DfW1b8bA.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/Dfjkeakv.js +1 -0
- package/build/client/_app/immutable/chunks/Dfjkeakv.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dfjkeakv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{ChWGK2Ce.js → DgwByHCB.js} +1 -1
- package/build/client/_app/immutable/chunks/DgwByHCB.js.br +0 -0
- package/build/client/_app/immutable/chunks/DgwByHCB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{v8XDA7ui.js → DlVaABeK.js} +3 -3
- package/build/client/_app/immutable/chunks/DlVaABeK.js.br +0 -0
- package/build/client/_app/immutable/chunks/DlVaABeK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DupjJGFi.js +1 -0
- package/build/client/_app/immutable/chunks/DupjJGFi.js.br +0 -0
- package/build/client/_app/immutable/chunks/DupjJGFi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DymqlScG.js +1 -0
- package/build/client/_app/immutable/chunks/DymqlScG.js.br +0 -0
- package/build/client/_app/immutable/chunks/DymqlScG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Z7BFksgg.js → J9ZSs_8c.js} +1 -1
- package/build/client/_app/immutable/chunks/J9ZSs_8c.js.br +0 -0
- package/build/client/_app/immutable/chunks/J9ZSs_8c.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CKvueigk.js → OvZJ6gNJ.js} +1 -1
- package/build/client/_app/immutable/chunks/OvZJ6gNJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/OvZJ6gNJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/URA3nPWG.js +1 -0
- package/build/client/_app/immutable/chunks/URA3nPWG.js.br +0 -0
- package/build/client/_app/immutable/chunks/URA3nPWG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/bZzTqofF.js +1 -0
- package/build/client/_app/immutable/chunks/bZzTqofF.js.br +0 -0
- package/build/client/_app/immutable/chunks/bZzTqofF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/oSuzXE6i.js +1 -0
- package/build/client/_app/immutable/chunks/oSuzXE6i.js.br +0 -0
- package/build/client/_app/immutable/chunks/oSuzXE6i.js.gz +0 -0
- package/build/client/_app/immutable/chunks/wZh6TcLb.js +2 -0
- package/build/client/_app/immutable/chunks/wZh6TcLb.js.br +0 -0
- package/build/client/_app/immutable/chunks/wZh6TcLb.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.G0Hwsu0f.js +2 -0
- package/build/client/_app/immutable/entry/app.G0Hwsu0f.js.br +0 -0
- package/build/client/_app/immutable/entry/app.G0Hwsu0f.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.pOs5gHaO.js +1 -0
- package/build/client/_app/immutable/entry/start.pOs5gHaO.js.br +0 -0
- package/build/client/_app/immutable/entry/start.pOs5gHaO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.BPw_KPrY.js +1 -0
- package/build/client/_app/immutable/nodes/0.BPw_KPrY.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.BPw_KPrY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.eWL7yJRK.js +1 -0
- package/build/client/_app/immutable/nodes/1.eWL7yJRK.js.br +4 -0
- package/build/client/_app/immutable/nodes/1.eWL7yJRK.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.AwBSgK4-.js +2 -0
- package/build/client/_app/immutable/nodes/10.AwBSgK4-.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.AwBSgK4-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.DS8hIvI2.js +6 -0
- package/build/client/_app/immutable/nodes/11.DS8hIvI2.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.DS8hIvI2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{12.CuCxLKQr.js → 12.DP-oGzlU.js} +1 -1
- package/build/client/_app/immutable/nodes/12.DP-oGzlU.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.DP-oGzlU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.DCNBPtGq.js +1 -0
- package/build/client/_app/immutable/nodes/13.DCNBPtGq.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.DCNBPtGq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.B3qXj1Pz.js +65 -0
- package/build/client/_app/immutable/nodes/14.B3qXj1Pz.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.B3qXj1Pz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.DFTrPy3K.js +1 -0
- package/build/client/_app/immutable/nodes/15.DFTrPy3K.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.DFTrPy3K.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.wrfG8awE.js +1 -0
- package/build/client/_app/immutable/nodes/16.wrfG8awE.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.wrfG8awE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.Bai-TIgH.js → 2.6jE8uEJq.js} +1 -1
- package/build/client/_app/immutable/nodes/2.6jE8uEJq.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.6jE8uEJq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.ev9oAmrG.js → 3.C59rlT3p.js} +1 -1
- package/build/client/_app/immutable/nodes/3.C59rlT3p.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.C59rlT3p.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DbZo8waJ.js +1 -0
- package/build/client/_app/immutable/nodes/4.DbZo8waJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DbZo8waJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.CyK0fI1l.js → 5.Cu8LcB5H.js} +1 -1
- package/build/client/_app/immutable/nodes/5.Cu8LcB5H.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Cu8LcB5H.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.BSMf3Keu.js +1 -0
- package/build/client/_app/immutable/nodes/7.BSMf3Keu.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BSMf3Keu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.CmQOYs57.js +2 -0
- package/build/client/_app/immutable/nodes/8.CmQOYs57.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.CmQOYs57.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.6ZB3-a4j.js +1 -0
- package/build/client/_app/immutable/nodes/9.6ZB3-a4j.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.6ZB3-a4j.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/0-2tDL-Z_M.js +32 -0
- package/build/server/chunks/0-2tDL-Z_M.js.map +1 -0
- package/build/server/chunks/1-L1YRtIEr.js +9 -0
- package/build/server/chunks/{1-lx7f4PWt.js.map → 1-L1YRtIEr.js.map} +1 -1
- package/build/server/chunks/10-kSTe-NQK.js +43 -0
- package/build/server/chunks/10-kSTe-NQK.js.map +1 -0
- package/build/server/chunks/{11-BEDQUU1_.js → 11-BSFyIooa.js} +5 -24
- package/build/server/chunks/11-BSFyIooa.js.map +1 -0
- package/build/server/chunks/{12-CzhXMlU9.js → 12-DhN9fz9p.js} +4 -5
- package/build/server/chunks/12-DhN9fz9p.js.map +1 -0
- package/build/server/chunks/{13-D1eLiA_r.js → 13-B1mdDktE.js} +5 -24
- package/build/server/chunks/13-B1mdDktE.js.map +1 -0
- package/build/server/chunks/14-G2fvhIG4.js +38 -0
- package/build/server/chunks/14-G2fvhIG4.js.map +1 -0
- package/build/server/chunks/15-BxHbA5Ao.js +48 -0
- package/build/server/chunks/15-BxHbA5Ao.js.map +1 -0
- package/build/server/chunks/16-D0Gv3LNT.js +46 -0
- package/build/server/chunks/16-D0Gv3LNT.js.map +1 -0
- package/build/server/chunks/{2-ckJpvP-Z.js → 2-DGpX4fMQ.js} +2 -2
- package/build/server/chunks/{2-ckJpvP-Z.js.map → 2-DGpX4fMQ.js.map} +1 -1
- package/build/server/chunks/{3-TPjZ0P0_.js → 3-CwHfLh5P.js} +2 -2
- package/build/server/chunks/{3-TPjZ0P0_.js.map → 3-CwHfLh5P.js.map} +1 -1
- package/build/server/chunks/{4-DoW1zEiI.js → 4-B5F5-cxe.js} +10 -2
- package/build/server/chunks/4-B5F5-cxe.js.map +1 -0
- package/build/server/chunks/{5-cZ6VD-C-.js → 5-CxqBB_6c.js} +2 -2
- package/build/server/chunks/{5-cZ6VD-C-.js.map → 5-CxqBB_6c.js.map} +1 -1
- package/build/server/chunks/{6-eXO6RVDu.js → 6-Qus887OP.js} +3 -2
- package/build/server/chunks/{6-eXO6RVDu.js.map → 6-Qus887OP.js.map} +1 -1
- package/build/server/chunks/{7-BmJzLrSm.js → 7-BNgFbh-a.js} +6 -5
- package/build/server/chunks/{7-BmJzLrSm.js.map → 7-BNgFbh-a.js.map} +1 -1
- package/build/server/chunks/{8-Ba9OHB5H.js → 8-DOgOgmwJ.js} +4 -5
- package/build/server/chunks/8-DOgOgmwJ.js.map +1 -0
- package/build/server/chunks/{9-DSgRe_DY.js → 9-D-PO69az.js} +4 -5
- package/build/server/chunks/9-D-PO69az.js.map +1 -0
- package/build/server/chunks/IconChevronDown-D8V4kB6o.js +10 -0
- package/build/server/chunks/IconChevronDown-D8V4kB6o.js.map +1 -0
- package/build/server/chunks/{JsonValue-CGVfzyTL.js → JsonValue-B-iqFShN.js} +4 -3
- package/build/server/chunks/JsonValue-B-iqFShN.js.map +1 -0
- package/build/server/chunks/{Modal-D2E5OLRi.js → Modal-D10te4nR.js} +2 -2
- package/build/server/chunks/Modal-D10te4nR.js.map +1 -0
- package/build/server/chunks/{Panel-C6VWd6JD.js → Panel-CBztHh2Y.js} +2 -2
- package/build/server/chunks/Panel-CBztHh2Y.js.map +1 -0
- package/build/server/chunks/{PrettyJson-Bo4UtQ1o.js → PrettyJson-Dz5fCjPq.js} +6 -6
- package/build/server/chunks/PrettyJson-Dz5fCjPq.js.map +1 -0
- package/build/server/chunks/{Tooltip-OVylvwfb.js → Tooltip-BHX9gIpe.js} +2 -2
- package/build/server/chunks/Tooltip-BHX9gIpe.js.map +1 -0
- package/build/server/chunks/{TooltipTable-CLglfpck.js → TooltipTable-BIwNd3UB.js} +3 -3
- package/build/server/chunks/TooltipTable-BIwNd3UB.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-CLPxHDiP.js → _layout.svelte-BX5H_goi.js} +38 -15
- package/build/server/chunks/_layout.svelte-BX5H_goi.js.map +1 -0
- package/build/server/chunks/{_page.svelte-zD7qndty.js → _page.svelte-Bh6uDLz6.js} +15 -15
- package/build/server/chunks/_page.svelte-Bh6uDLz6.js.map +1 -0
- package/build/server/chunks/_page.svelte-CHqJAnyH.js +258 -0
- package/build/server/chunks/_page.svelte-CHqJAnyH.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CPcgVZQj.js → _page.svelte-CsCyoCpn.js} +15 -15
- package/build/server/chunks/_page.svelte-CsCyoCpn.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CAAPpbun.js → _page.svelte-Cwyc6wIg.js} +14 -14
- package/build/server/chunks/_page.svelte-Cwyc6wIg.js.map +1 -0
- package/build/server/chunks/{_page.svelte-e5wWk327.js → _page.svelte-DE0XWW__.js} +12 -12
- package/build/server/chunks/_page.svelte-DE0XWW__.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DVjTn-ck.js → _page.svelte-DIe5tQ3z.js} +14 -14
- package/build/server/chunks/_page.svelte-DIe5tQ3z.js.map +1 -0
- package/build/server/chunks/{_page.svelte-C3QVwl-z.js → _page.svelte-DT0U0FvS.js} +5 -4
- package/build/server/chunks/_page.svelte-DT0U0FvS.js.map +1 -0
- package/build/server/chunks/{_page.svelte-C_GX0K8M.js → _page.svelte-YOsljIow.js} +19 -22
- package/build/server/chunks/_page.svelte-YOsljIow.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BeiSosXN.js → _page.svelte-aEFurJZ0.js} +55 -15
- package/build/server/chunks/_page.svelte-aEFurJZ0.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CkZUu9Wh.js → _page.svelte-vWYc1vOs.js} +9 -9
- package/build/server/chunks/_page.svelte-vWYc1vOs.js.map +1 -0
- package/build/server/chunks/{_server.ts-i-glbZtX.js → _server.ts-BTmpua-U.js} +4 -3
- package/build/server/chunks/{_server.ts-i-glbZtX.js.map → _server.ts-BTmpua-U.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CEBmCzTO.js → _server.ts-BhWrvCAV.js} +4 -3
- package/build/server/chunks/{_server.ts-CEBmCzTO.js.map → _server.ts-BhWrvCAV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CoUHVeKI.js → _server.ts-CUj-HfCf.js} +4 -3
- package/build/server/chunks/{_server.ts-CoUHVeKI.js.map → _server.ts-CUj-HfCf.js.map} +1 -1
- package/build/server/chunks/client-DrDUOhf5.js +7 -0
- package/build/server/chunks/{client-COtw9Xqw.js.map → client-DrDUOhf5.js.map} +1 -1
- package/build/server/chunks/{client2-BIa3wTXU.js → client2-Birk_77A.js} +4 -4
- package/build/server/chunks/{client2-BIa3wTXU.js.map → client2-Birk_77A.js.map} +1 -1
- package/build/server/chunks/error.svelte-DisWvlhZ.js +19 -0
- package/build/server/chunks/error.svelte-DisWvlhZ.js.map +1 -0
- package/build/server/chunks/{filters-B3U8Nh9P.js → filters-BTgp9cdC.js} +4 -7
- package/build/server/chunks/filters-BTgp9cdC.js.map +1 -0
- package/build/server/chunks/{hooks.server-BiUSRqj1.js → hooks.server-Cc7EKf-Z.js} +4 -3
- package/build/server/chunks/{hooks.server-BiUSRqj1.js.map → hooks.server-Cc7EKf-Z.js.map} +1 -1
- package/build/server/chunks/{index-CtYzvcG6.js → index-CDf-jMhD.js} +3 -2
- package/build/server/chunks/index-CDf-jMhD.js.map +1 -0
- package/build/server/chunks/{index2-B0RgZaJY.js → index2-DNcGQp0K.js} +3 -3
- package/build/server/chunks/index2-DNcGQp0K.js.map +1 -0
- package/build/server/chunks/{mongo-B92d7zNj.js → mongo-Du0OjH5b.js} +257 -24
- package/build/server/chunks/mongo-Du0OjH5b.js.map +1 -0
- package/build/server/chunks/{oauth-D6jTWKFd.js → oauth-CyIuK65I.js} +2 -2
- package/build/server/chunks/{oauth-D6jTWKFd.js.map → oauth-CyIuK65I.js.map} +1 -1
- package/build/server/chunks/{remote-xxtqbu-CDChJkWc.js → remote-xxtqbu-BCjbN3T4.js} +6 -6
- package/build/server/chunks/remote-xxtqbu-BCjbN3T4.js.map +1 -0
- package/build/server/chunks/renderer-wJWkLEmh.js +1844 -0
- package/build/server/chunks/renderer-wJWkLEmh.js.map +1 -0
- package/build/server/chunks/{root-otUAnOAR.js → root-Bs42DBih.js} +12 -1849
- package/build/server/chunks/root-Bs42DBih.js.map +1 -0
- package/build/server/chunks/{routing-EDfUNu8L.js → routing-CJRzZHIr.js} +2 -2
- package/build/server/chunks/{routing-EDfUNu8L.js.map → routing-CJRzZHIr.js.map} +1 -1
- package/build/server/chunks/{server2-D_y4YbpC.js → server2-B0ZXRoOj.js} +3 -3
- package/build/server/chunks/{server2-D_y4YbpC.js.map → server2-B0ZXRoOj.js.map} +1 -1
- package/build/server/chunks/{servers.remote-CGenkEHX.js → servers.remote-Bise-7j4.js} +5 -14
- package/build/server/chunks/servers.remote-Bise-7j4.js.map +1 -0
- package/build/server/chunks/shardKey-BnXqfB_r.js +11 -0
- package/build/server/chunks/shardKey-BnXqfB_r.js.map +1 -0
- package/build/server/chunks/{shared-DlqhoNLb.js → shared-BJTImRjE.js} +3 -2
- package/build/server/chunks/{shared-DlqhoNLb.js.map → shared-BJTImRjE.js.map} +1 -1
- package/build/server/chunks/{state.svelte-Bj5yxNNk.js → state.svelte-YUn1p3EK.js} +3 -2
- package/build/server/chunks/{state.svelte-Bj5yxNNk.js.map → state.svelte-YUn1p3EK.js.map} +1 -1
- package/build/server/index.js +7 -6
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +29 -21
- package/build/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/src/api/servers.remote.ts +3 -12
- package/src/lib/collectionCategories.ts +25 -0
- package/src/lib/components/PageSwitcher.svelte +74 -6
- package/src/lib/components/ShardBadge.svelte +65 -0
- package/src/lib/server/connectionString.ts +50 -0
- package/src/lib/server/mongo.ts +208 -37
- package/src/lib/types.ts +34 -0
- package/src/lib/utils/filters.ts +5 -7
- package/src/lib/utils/mongoUri.ts +164 -0
- package/src/lib/utils/shardKey.ts +16 -0
- package/src/routes/servers/+page.svelte +1 -1
- package/src/routes/servers/[server]/databases/[database]/collections/+page.server.ts +5 -0
- package/src/routes/servers/[server]/databases/[database]/collections/+page.svelte +47 -9
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/+layout.ts +3 -0
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/sharding/+page.server.ts +26 -0
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/sharding/+page.svelte +319 -0
- package/src/tests/server/connectionString.test.ts +108 -0
- package/build/client/_app/immutable/assets/0.DTh4C4pw.css +0 -1
- package/build/client/_app/immutable/assets/0.DTh4C4pw.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DTh4C4pw.css.gz +0 -0
- package/build/client/_app/immutable/chunks/8tf5Lvl3.js +0 -1
- package/build/client/_app/immutable/chunks/8tf5Lvl3.js.br +0 -0
- package/build/client/_app/immutable/chunks/8tf5Lvl3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/951V-MIZ.js +0 -1
- package/build/client/_app/immutable/chunks/951V-MIZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/951V-MIZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/9xpgPu5N.js.br +0 -0
- package/build/client/_app/immutable/chunks/9xpgPu5N.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BDGd1aqF.js +0 -2
- package/build/client/_app/immutable/chunks/BDGd1aqF.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDGd1aqF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BN_N9-2s.js +0 -1
- package/build/client/_app/immutable/chunks/BN_N9-2s.js.br +0 -0
- package/build/client/_app/immutable/chunks/BN_N9-2s.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BUO1EOQu.js +0 -1
- package/build/client/_app/immutable/chunks/BUO1EOQu.js.br +0 -0
- package/build/client/_app/immutable/chunks/BUO1EOQu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BiVfO0yo.js +0 -1
- package/build/client/_app/immutable/chunks/BiVfO0yo.js.br +0 -0
- package/build/client/_app/immutable/chunks/BiVfO0yo.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C6P2UOyZ.js +0 -1
- package/build/client/_app/immutable/chunks/C6P2UOyZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/C6P2UOyZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CCOVnadf.js +0 -1
- package/build/client/_app/immutable/chunks/CCOVnadf.js.br +0 -0
- package/build/client/_app/immutable/chunks/CCOVnadf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CKvueigk.js.br +0 -0
- package/build/client/_app/immutable/chunks/CKvueigk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CQE8d3kg.js +0 -1
- package/build/client/_app/immutable/chunks/CQE8d3kg.js.br +0 -0
- package/build/client/_app/immutable/chunks/CQE8d3kg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CTk2PBcX.js.br +0 -0
- package/build/client/_app/immutable/chunks/CTk2PBcX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ChWGK2Ce.js.br +0 -0
- package/build/client/_app/immutable/chunks/ChWGK2Ce.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CkMoyTwc.js +0 -1
- package/build/client/_app/immutable/chunks/CkMoyTwc.js.br +0 -0
- package/build/client/_app/immutable/chunks/CkMoyTwc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CmI1igJD.js +0 -1
- package/build/client/_app/immutable/chunks/CmI1igJD.js.br +0 -0
- package/build/client/_app/immutable/chunks/CmI1igJD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DCAtHodH.js.br +0 -0
- package/build/client/_app/immutable/chunks/DCAtHodH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DFXj4NOH.js +0 -1
- package/build/client/_app/immutable/chunks/DFXj4NOH.js.br +0 -0
- package/build/client/_app/immutable/chunks/DFXj4NOH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DaMh_eeB.js +0 -1
- package/build/client/_app/immutable/chunks/DaMh_eeB.js.br +0 -0
- package/build/client/_app/immutable/chunks/DaMh_eeB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DqxUmOYD.js +0 -66
- package/build/client/_app/immutable/chunks/DqxUmOYD.js.br +0 -0
- package/build/client/_app/immutable/chunks/DqxUmOYD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dzt_TFtX.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dzt_TFtX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/IixngxlS.js.br +0 -0
- package/build/client/_app/immutable/chunks/IixngxlS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/IwGwbOe7.js.br +0 -0
- package/build/client/_app/immutable/chunks/YMZQSnF3.js +0 -1
- package/build/client/_app/immutable/chunks/YMZQSnF3.js.br +0 -0
- package/build/client/_app/immutable/chunks/YMZQSnF3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Z7BFksgg.js.br +0 -0
- package/build/client/_app/immutable/chunks/Z7BFksgg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/dlHwFtkV.js +0 -1
- package/build/client/_app/immutable/chunks/dlHwFtkV.js.br +0 -0
- package/build/client/_app/immutable/chunks/dlHwFtkV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/v8XDA7ui.js.br +0 -0
- package/build/client/_app/immutable/chunks/v8XDA7ui.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.B1EvSYDg.js +0 -2
- package/build/client/_app/immutable/entry/app.B1EvSYDg.js.br +0 -0
- package/build/client/_app/immutable/entry/app.B1EvSYDg.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BFVM56Yz.js +0 -1
- package/build/client/_app/immutable/entry/start.BFVM56Yz.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BFVM56Yz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.1R1dLPSd.js +0 -1
- package/build/client/_app/immutable/nodes/0.1R1dLPSd.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.1R1dLPSd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.LhEdwE1H.js +0 -1
- package/build/client/_app/immutable/nodes/1.LhEdwE1H.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.LhEdwE1H.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.eB7zuikE.js +0 -2
- package/build/client/_app/immutable/nodes/10.eB7zuikE.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.eB7zuikE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.fvrVbout.js +0 -6
- package/build/client/_app/immutable/nodes/11.fvrVbout.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.fvrVbout.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.CuCxLKQr.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.CuCxLKQr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.DPotp8O6.js +0 -1
- package/build/client/_app/immutable/nodes/13.DPotp8O6.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.DPotp8O6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.D5zVPym5.js +0 -65
- package/build/client/_app/immutable/nodes/14.D5zVPym5.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.D5zVPym5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.Cucd16Gx.js +0 -1
- package/build/client/_app/immutable/nodes/15.Cucd16Gx.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.Cucd16Gx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Bai-TIgH.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Bai-TIgH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.ev9oAmrG.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.ev9oAmrG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DS2d90xq.js +0 -1
- package/build/client/_app/immutable/nodes/4.DS2d90xq.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DS2d90xq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CyK0fI1l.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CyK0fI1l.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.D-uzybGz.js +0 -1
- package/build/client/_app/immutable/nodes/7.D-uzybGz.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.D-uzybGz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.CYKKqJhA.js +0 -2
- package/build/client/_app/immutable/nodes/8.CYKKqJhA.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.CYKKqJhA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.CQcxG5IS.js +0 -1
- package/build/client/_app/immutable/nodes/9.CQcxG5IS.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CQcxG5IS.js.gz +0 -0
- package/build/server/chunks/0-BRQgSkWt.js +0 -31
- package/build/server/chunks/0-BRQgSkWt.js.map +0 -1
- package/build/server/chunks/1-lx7f4PWt.js +0 -9
- package/build/server/chunks/10-Censc2uj.js +0 -42
- package/build/server/chunks/10-Censc2uj.js.map +0 -1
- package/build/server/chunks/11-BEDQUU1_.js.map +0 -1
- package/build/server/chunks/12-CzhXMlU9.js.map +0 -1
- package/build/server/chunks/13-D1eLiA_r.js.map +0 -1
- package/build/server/chunks/14-BVNQ2wyL.js +0 -57
- package/build/server/chunks/14-BVNQ2wyL.js.map +0 -1
- package/build/server/chunks/15-Ch9c9iYB.js +0 -67
- package/build/server/chunks/15-Ch9c9iYB.js.map +0 -1
- package/build/server/chunks/4-DoW1zEiI.js.map +0 -1
- package/build/server/chunks/8-Ba9OHB5H.js.map +0 -1
- package/build/server/chunks/9-DSgRe_DY.js.map +0 -1
- package/build/server/chunks/JsonValue-CGVfzyTL.js.map +0 -1
- package/build/server/chunks/Modal-D2E5OLRi.js.map +0 -1
- package/build/server/chunks/Panel-C6VWd6JD.js.map +0 -1
- package/build/server/chunks/PrettyJson-Bo4UtQ1o.js.map +0 -1
- package/build/server/chunks/Tooltip-OVylvwfb.js.map +0 -1
- package/build/server/chunks/TooltipTable-CLglfpck.js.map +0 -1
- package/build/server/chunks/_layout.svelte-CLPxHDiP.js.map +0 -1
- package/build/server/chunks/_page.svelte-BeiSosXN.js.map +0 -1
- package/build/server/chunks/_page.svelte-C3QVwl-z.js.map +0 -1
- package/build/server/chunks/_page.svelte-CAAPpbun.js.map +0 -1
- package/build/server/chunks/_page.svelte-CPcgVZQj.js.map +0 -1
- package/build/server/chunks/_page.svelte-C_GX0K8M.js.map +0 -1
- package/build/server/chunks/_page.svelte-CkZUu9Wh.js.map +0 -1
- package/build/server/chunks/_page.svelte-DVjTn-ck.js.map +0 -1
- package/build/server/chunks/_page.svelte-e5wWk327.js.map +0 -1
- package/build/server/chunks/_page.svelte-zD7qndty.js.map +0 -1
- package/build/server/chunks/client-COtw9Xqw.js +0 -7
- package/build/server/chunks/error.svelte-DUZ2SYyF.js +0 -18
- package/build/server/chunks/error.svelte-DUZ2SYyF.js.map +0 -1
- package/build/server/chunks/filters-B3U8Nh9P.js.map +0 -1
- package/build/server/chunks/index-CtYzvcG6.js.map +0 -1
- package/build/server/chunks/index2-B0RgZaJY.js.map +0 -1
- package/build/server/chunks/mongo-B92d7zNj.js.map +0 -1
- package/build/server/chunks/remote-xxtqbu-CDChJkWc.js.map +0 -1
- package/build/server/chunks/root-otUAnOAR.js.map +0 -1
- package/build/server/chunks/servers.remote-CGenkEHX.js.map +0 -1
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/+page.ts +0 -11
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/indexes/+page.ts +0 -11
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/mappings/+page.ts +0 -11
- 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
|
|
145
|
-
if (
|
|
146
|
-
const 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 (
|
|
151
|
-
|
|
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
|
|
267
|
+
return [...parsed.hosts].sort();
|
|
156
268
|
}
|
|
157
|
-
throw new TypeError(`Unsupported 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
|
|
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
|
|
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
|
|
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(
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
2
|
-
import './root-
|
|
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-
|
|
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-
|
|
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-
|
|
23
|
+
//# sourceMappingURL=remote-xxtqbu-BCjbN3T4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-xxtqbu-BCjbN3T4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
|