mongoku 2.6.0 → 2.7.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/Dockerfile +1 -0
- package/README.md +25 -0
- package/build/client/_app/immutable/assets/0.CdYhspVa.css +1 -0
- package/build/client/_app/immutable/assets/0.CdYhspVa.css.br +0 -0
- package/build/client/_app/immutable/assets/0.CdYhspVa.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{DdLT9cdj.js → B59nRjE7.js} +1 -1
- package/build/client/_app/immutable/chunks/B59nRjE7.js.br +2 -0
- package/build/client/_app/immutable/chunks/B59nRjE7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BBqIHhSl.js +1 -0
- package/build/client/_app/immutable/chunks/BBqIHhSl.js.br +0 -0
- package/build/client/_app/immutable/chunks/BBqIHhSl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BEi7QatZ.js → BIUJX0Ps.js} +6 -6
- package/build/client/_app/immutable/chunks/BIUJX0Ps.js.br +0 -0
- package/build/client/_app/immutable/chunks/BIUJX0Ps.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C6nv_pni.js +1 -0
- package/build/client/_app/immutable/chunks/C6nv_pni.js.br +0 -0
- package/build/client/_app/immutable/chunks/C6nv_pni.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Bh2n5Bfy.js → CETiZ6GF.js} +1 -1
- package/build/client/_app/immutable/chunks/CETiZ6GF.js.br +0 -0
- package/build/client/_app/immutable/chunks/CETiZ6GF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CX0xC2bt.js +1 -0
- package/build/client/_app/immutable/chunks/CX0xC2bt.js.br +0 -0
- package/build/client/_app/immutable/chunks/CX0xC2bt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CeXlKXQN.js +1 -0
- package/build/client/_app/immutable/chunks/CeXlKXQN.js.br +0 -0
- package/build/client/_app/immutable/chunks/CeXlKXQN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ChTiw7nk.js +4 -0
- package/build/client/_app/immutable/chunks/ChTiw7nk.js.br +0 -0
- package/build/client/_app/immutable/chunks/ChTiw7nk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Czyt1_Wc.js +1 -0
- package/build/client/_app/immutable/chunks/Czyt1_Wc.js.br +0 -0
- package/build/client/_app/immutable/chunks/Czyt1_Wc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{B5NTIIm5.js → DJHYr09v.js} +1 -1
- package/build/client/_app/immutable/chunks/DJHYr09v.js.br +0 -0
- package/build/client/_app/immutable/chunks/DJHYr09v.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{C2amz0TU.js → DZxZehvI.js} +1 -1
- package/build/client/_app/immutable/chunks/DZxZehvI.js.br +0 -0
- package/build/client/_app/immutable/chunks/DZxZehvI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DaNl6Y92.js +2 -0
- package/build/client/_app/immutable/chunks/DaNl6Y92.js.br +0 -0
- package/build/client/_app/immutable/chunks/DaNl6Y92.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dbu5gl04.js +1 -0
- package/build/client/_app/immutable/chunks/Dbu5gl04.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dbu5gl04.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DczwA5Ds.js +1 -0
- package/build/client/_app/immutable/chunks/DczwA5Ds.js.br +0 -0
- package/build/client/_app/immutable/chunks/DczwA5Ds.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DjlV9yev.js +1 -0
- package/build/client/_app/immutable/chunks/DjlV9yev.js.br +0 -0
- package/build/client/_app/immutable/chunks/DjlV9yev.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DkIdyQoH.js +1 -0
- package/build/client/_app/immutable/chunks/DkIdyQoH.js.br +0 -0
- package/build/client/_app/immutable/chunks/DkIdyQoH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DskkUG-R.js +41 -0
- package/build/client/_app/immutable/chunks/DskkUG-R.js.br +0 -0
- package/build/client/_app/immutable/chunks/DskkUG-R.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DtqR9xj2.js +16 -0
- package/build/client/_app/immutable/chunks/DtqR9xj2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DtqR9xj2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{c-rWvg5T.js → Dv9wDVNU.js} +1 -1
- package/build/client/_app/immutable/chunks/Dv9wDVNU.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dv9wDVNU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Bl8s7Z6r.js → DwvJoC1a.js} +1 -1
- package/build/client/_app/immutable/chunks/DwvJoC1a.js.br +0 -0
- package/build/client/_app/immutable/chunks/DwvJoC1a.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ULh2o3ji.js +1 -0
- package/build/client/_app/immutable/chunks/ULh2o3ji.js.br +0 -0
- package/build/client/_app/immutable/chunks/ULh2o3ji.js.gz +0 -0
- package/build/client/_app/immutable/chunks/V1mdyEl2.js +1 -0
- package/build/client/_app/immutable/chunks/V1mdyEl2.js.br +0 -0
- package/build/client/_app/immutable/chunks/V1mdyEl2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DUw-I2kh.js → gjWX2x82.js} +1 -1
- package/build/client/_app/immutable/chunks/gjWX2x82.js.br +0 -0
- package/build/client/_app/immutable/chunks/gjWX2x82.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CxcplU4Q.js → y5L2Na-S.js} +1 -1
- package/build/client/_app/immutable/chunks/y5L2Na-S.js.br +0 -0
- package/build/client/_app/immutable/chunks/y5L2Na-S.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DSC3O-oq.js +2 -0
- package/build/client/_app/immutable/entry/app.DSC3O-oq.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DSC3O-oq.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DXWFdQeQ.js +1 -0
- package/build/client/_app/immutable/entry/start.DXWFdQeQ.js.br +0 -0
- package/build/client/_app/immutable/entry/start.DXWFdQeQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CMAlzqMw.js +1 -0
- package/build/client/_app/immutable/nodes/0.CMAlzqMw.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CMAlzqMw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.B6Npt7WS.js +1 -0
- package/build/client/_app/immutable/nodes/1.B6Npt7WS.js.br +4 -0
- package/build/client/_app/immutable/nodes/1.B6Npt7WS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.UKtNnnWx.js +2 -0
- package/build/client/_app/immutable/nodes/10.UKtNnnWx.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.UKtNnnWx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.DZQrIhD6.js +6 -0
- package/build/client/_app/immutable/nodes/11.DZQrIhD6.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.DZQrIhD6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.Bb2XzJJ4.js +1 -0
- package/build/client/_app/immutable/nodes/12.Bb2XzJJ4.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.Bb2XzJJ4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.B_EllgAJ.js +1 -0
- package/build/client/_app/immutable/nodes/13.B_EllgAJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.B_EllgAJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.Ds1Cbw86.js +65 -0
- package/build/client/_app/immutable/nodes/14.Ds1Cbw86.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.Ds1Cbw86.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.AM8fesja.js → 2.C6NzDBVE.js} +1 -1
- package/build/client/_app/immutable/nodes/2.C6NzDBVE.js.br +2 -0
- package/build/client/_app/immutable/nodes/2.C6NzDBVE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.BShuoOz5.js → 3.CZJqJ4La.js} +1 -1
- package/build/client/_app/immutable/nodes/3.CZJqJ4La.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CZJqJ4La.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.BD6QbApY.js → 4.CNe3XPNo.js} +1 -1
- package/build/client/_app/immutable/nodes/4.CNe3XPNo.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.CNe3XPNo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.JM_dwz0R.js → 5.BWhhv567.js} +1 -1
- package/build/client/_app/immutable/nodes/5.BWhhv567.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BWhhv567.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DrDdJlUZ.js +1 -0
- package/build/client/_app/immutable/nodes/7.DrDdJlUZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DrDdJlUZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.DY5fyf2p.js +2 -0
- package/build/client/_app/immutable/nodes/8.DY5fyf2p.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DY5fyf2p.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.DSZg3ucy.js +1 -0
- package/build/client/_app/immutable/nodes/9.DSZg3ucy.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DSZg3ucy.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/client/robots.txt.br +0 -0
- package/build/client/robots.txt.gz +0 -0
- package/build/handler.js +290 -228
- package/build/server/chunks/0-94hvO2vX.js +31 -0
- package/build/server/chunks/0-94hvO2vX.js.map +1 -0
- package/build/server/chunks/1-DU2n-wa5.js +9 -0
- package/build/server/chunks/1-DU2n-wa5.js.map +1 -0
- package/build/server/chunks/{9-DrDIAOIh.js → 10-CA3VfgE7.js} +7 -6
- package/build/server/chunks/10-CA3VfgE7.js.map +1 -0
- package/build/server/chunks/{10-WRjYTwFT.js → 11-xh-tBR25.js} +8 -7
- package/build/server/chunks/11-xh-tBR25.js.map +1 -0
- package/build/server/chunks/{11-Cq79IAWK.js → 12-CHoThn5d.js} +8 -7
- package/build/server/chunks/12-CHoThn5d.js.map +1 -0
- package/build/server/chunks/{12-DnRkeAVv.js → 13-s3o-iKja.js} +8 -7
- package/build/server/chunks/13-s3o-iKja.js.map +1 -0
- package/build/server/chunks/{13-DKqDuEdB.js → 14-Ch_I9f3x.js} +7 -6
- package/build/server/chunks/14-Ch_I9f3x.js.map +1 -0
- package/build/server/chunks/{2-DaZMexAs.js → 2-BNTmkYSf.js} +2 -2
- package/build/server/chunks/{2-DaZMexAs.js.map → 2-BNTmkYSf.js.map} +1 -1
- package/build/server/chunks/{3-Dr4vFhF1.js → 3-ClKd4dXQ.js} +2 -2
- package/build/server/chunks/{3-Dr4vFhF1.js.map → 3-ClKd4dXQ.js.map} +1 -1
- package/build/server/chunks/{4-K2WnEwm7.js → 4-BSPVNKkN.js} +2 -2
- package/build/server/chunks/{4-K2WnEwm7.js.map → 4-BSPVNKkN.js.map} +1 -1
- package/build/server/chunks/{5-Be-Du8oZ.js → 5-BzxZlQk0.js} +2 -2
- package/build/server/chunks/{5-Be-Du8oZ.js.map → 5-BzxZlQk0.js.map} +1 -1
- package/build/server/chunks/{6-DsYzHmsZ.js → 6-Bw8JUxiD.js} +3 -2
- package/build/server/chunks/6-Bw8JUxiD.js.map +1 -0
- package/build/server/chunks/7-B_ur3ckj.js +9 -0
- package/build/server/chunks/7-B_ur3ckj.js.map +1 -0
- package/build/server/chunks/{7-eAzN1saI.js → 8-BEcdRamT.js} +8 -7
- package/build/server/chunks/8-BEcdRamT.js.map +1 -0
- package/build/server/chunks/{8-Dtaxi2J_.js → 9-CeMYWy9o.js} +7 -6
- package/build/server/chunks/9-CeMYWy9o.js.map +1 -0
- package/build/server/chunks/JsonValue-CTg4aH_w.js +320 -0
- package/build/server/chunks/JsonValue-CTg4aH_w.js.map +1 -0
- package/build/server/chunks/{Modal-fWUUqg69.js → Modal-yO0qzufQ.js} +2 -3
- package/build/server/chunks/Modal-yO0qzufQ.js.map +1 -0
- package/build/server/chunks/{Panel-BXokpC3w.js → Panel-D9GzVDDt.js} +7 -12
- package/build/server/chunks/Panel-D9GzVDDt.js.map +1 -0
- package/build/server/chunks/{PrettyJson-CV4qF02W.js → PrettyJson-CzzntSVh.js} +15 -10
- package/build/server/chunks/PrettyJson-CzzntSVh.js.map +1 -0
- package/build/server/chunks/{Tooltip-1tZ4BUxU.js → Tooltip-D2BX7dwq.js} +2 -2
- package/build/server/chunks/Tooltip-D2BX7dwq.js.map +1 -0
- package/build/server/chunks/{TooltipTable-B2QGp4YW.js → TooltipTable-91W9LxGR.js} +3 -4
- package/build/server/chunks/TooltipTable-91W9LxGR.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-DAGMbkJX.js → _layout.svelte-BFxKanne.js} +28 -24
- package/build/server/chunks/_layout.svelte-BFxKanne.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DgQxD9T8.js → _page.svelte-CQzzieEo.js} +16 -18
- package/build/server/chunks/_page.svelte-CQzzieEo.js.map +1 -0
- package/build/server/chunks/_page.svelte-CSuE9bVi.js +14 -0
- package/build/server/chunks/_page.svelte-CSuE9bVi.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DfZ2COw_.js → _page.svelte-CnboYQ1K.js} +11 -73
- package/build/server/chunks/_page.svelte-CnboYQ1K.js.map +1 -0
- package/build/server/chunks/{_page.svelte-ClakOyno.js → _page.svelte-D41VQj4U.js} +17 -19
- package/build/server/chunks/_page.svelte-D41VQj4U.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CB9ZXhBt.js → _page.svelte-Dg71nX8A.js} +117 -97
- package/build/server/chunks/_page.svelte-Dg71nX8A.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BUqI0nM9.js → _page.svelte-DxlZXLVf.js} +17 -19
- package/build/server/chunks/_page.svelte-DxlZXLVf.js.map +1 -0
- package/build/server/chunks/{_page.svelte-Ccc0KJ66.js → _page.svelte-SZxwc25D.js} +45 -39
- package/build/server/chunks/_page.svelte-SZxwc25D.js.map +1 -0
- package/build/server/chunks/{_page.svelte-wmgrrvR7.js → _page.svelte-THKAhY4k.js} +48 -51
- package/build/server/chunks/_page.svelte-THKAhY4k.js.map +1 -0
- package/build/server/chunks/_server.ts-B3lXxheE.js +15 -0
- package/build/server/chunks/_server.ts-B3lXxheE.js.map +1 -0
- package/build/server/chunks/_server.ts-Bs5HC7Wf.js +46 -0
- package/build/server/chunks/_server.ts-Bs5HC7Wf.js.map +1 -0
- package/build/server/chunks/_server.ts-DRL9sDg4.js +34 -0
- package/build/server/chunks/_server.ts-DRL9sDg4.js.map +1 -0
- package/build/server/chunks/_server.ts-DqL5edUL.js +24 -0
- package/build/server/chunks/_server.ts-DqL5edUL.js.map +1 -0
- package/build/server/chunks/client-C7bEwskR.js +7 -0
- package/build/server/chunks/{client-BCfAqu0g.js.map → client-C7bEwskR.js.map} +1 -1
- package/build/server/chunks/{client2-B-hc4vU8.js → client2-DcCKOWWC.js} +6 -6
- package/build/server/chunks/client2-DcCKOWWC.js.map +1 -0
- package/build/server/chunks/error.svelte-Bk-0XnBt.js +18 -0
- package/build/server/chunks/error.svelte-Bk-0XnBt.js.map +1 -0
- package/build/server/chunks/exports-B5ORJhfK.js +65 -0
- package/build/server/chunks/exports-B5ORJhfK.js.map +1 -0
- package/build/server/chunks/{filters-CbFjTNFI.js → filters-B3U8Nh9P.js} +16 -6
- package/build/server/chunks/filters-B3U8Nh9P.js.map +1 -0
- package/build/server/chunks/hooks.server-Cq7ufuFU.js +79 -0
- package/build/server/chunks/hooks.server-Cq7ufuFU.js.map +1 -0
- package/build/server/chunks/{index2-CJE0QJlP.js → index-CC9WtE-y.js} +3 -13
- package/build/server/chunks/index-CC9WtE-y.js.map +1 -0
- package/build/server/chunks/index-wpIsICWW.js.map +1 -1
- package/build/server/chunks/{index3-CQyDuV4f.js → index2-DMabdSHV.js} +3 -3
- package/build/server/chunks/index2-DMabdSHV.js.map +1 -0
- package/build/server/chunks/{logger-KF6KpVP6.js → logger-PfH_grbh.js} +4 -3
- package/build/server/chunks/logger-PfH_grbh.js.map +1 -0
- package/build/server/chunks/{mongo-CpQtfvt6.js → mongo-B92d7zNj.js} +25 -24
- package/build/server/chunks/mongo-B92d7zNj.js.map +1 -0
- package/build/server/chunks/oauth-BfIECOev.js +178 -0
- package/build/server/chunks/oauth-BfIECOev.js.map +1 -0
- package/build/server/chunks/remote-xxtqbu-D0yn6nhQ.js +22 -0
- package/build/server/chunks/remote-xxtqbu-D0yn6nhQ.js.map +1 -0
- package/build/server/chunks/{routing-BdGCua8Q.js → routing-CYknP78v.js} +23 -4
- package/build/server/chunks/routing-CYknP78v.js.map +1 -0
- package/build/server/chunks/{server2-CkPmd3Rb.js → server2-uigtM6st.js} +3 -3
- package/build/server/chunks/server2-uigtM6st.js.map +1 -0
- package/build/server/chunks/{servers.remote-OwAA4KJJ.js → servers.remote-BhpVo4Zs.js} +67 -42
- package/build/server/chunks/servers.remote-BhpVo4Zs.js.map +1 -0
- package/build/server/chunks/shared-BqTYMAzZ.js +1027 -0
- package/build/server/chunks/shared-BqTYMAzZ.js.map +1 -0
- package/build/server/chunks/shared-server-BmU87nph.js +11 -0
- package/build/server/chunks/shared-server-BmU87nph.js.map +1 -0
- package/build/server/chunks/{state.svelte-BfzDwKMC.js → state.svelte-Dzb7Lf2r.js} +2 -3
- package/build/server/chunks/state.svelte-Dzb7Lf2r.js.map +1 -0
- package/build/server/chunks/url-hmE1zcJ6.js +4721 -0
- package/build/server/chunks/url-hmE1zcJ6.js.map +1 -0
- package/build/server/chunks/{utils-kjxf7BZO.js → utils2-kjxf7BZO.js} +1 -1
- package/build/server/chunks/utils2-kjxf7BZO.js.map +1 -0
- package/build/server/index.js +381 -3466
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +52 -23
- package/build/server/manifest.js.map +1 -1
- package/cli.ts +4 -0
- package/dist/cli.js +3 -0
- package/ecosystem.config.js +3 -0
- package/package.json +2 -2
- package/src/api/servers.remote.ts +20 -8
- package/src/app.d.ts +5 -0
- package/src/hooks.server.ts +38 -17
- package/src/lib/actions/jsonTextarea.ts +24 -8
- package/src/lib/actions/portal.ts +12 -5
- package/src/lib/components/ExplainPanel.svelte +42 -14
- package/src/lib/components/JsonValue.svelte +12 -4
- package/src/lib/components/PrettyJson.svelte +12 -4
- package/src/lib/components/ReplicaSetSelector.svelte +3 -1
- package/src/lib/components/SearchBox.svelte +12 -4
- package/src/lib/components/Tooltip.svelte +1 -1
- package/src/lib/server/HostsManager.ts +8 -17
- package/src/lib/server/logger.ts +4 -4
- package/src/lib/server/mongo.ts +17 -12
- package/src/lib/server/oauth.ts +276 -0
- package/src/lib/utils/filters.ts +15 -5
- package/src/lib/utils/formatSignificantDigits.ts +3 -1
- package/src/lib/utils/formatTimeAgo.ts +3 -1
- package/src/lib/utils/hostnames.ts +15 -5
- package/src/lib/utils/jsonParser.ts +21 -7
- package/src/lib/utils/longestCommonSuffix.ts +3 -1
- package/src/routes/+layout.server.ts +5 -1
- package/src/routes/+layout.svelte +16 -1
- package/src/routes/.well-known/cimd.json/+server.ts +34 -0
- package/src/routes/auth/callback/+server.ts +57 -0
- package/src/routes/auth/login/+server.ts +29 -0
- package/src/routes/auth/logout/+page.svelte +9 -0
- package/src/routes/auth/logout/+server.ts +9 -0
- package/src/routes/servers/+page.svelte +9 -4
- package/src/routes/servers/[server]/databases/+page.svelte +3 -1
- package/src/routes/servers/[server]/databases/[database]/collections/+page.svelte +3 -1
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/+page.svelte +3 -1
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/[document]/+page.svelte +9 -6
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/indexes/+page.svelte +18 -6
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/mappings/+page.svelte +3 -1
- package/build/client/_app/immutable/assets/0.Bg-3Xsxo.css +0 -1
- package/build/client/_app/immutable/assets/0.Bg-3Xsxo.css.br +0 -0
- package/build/client/_app/immutable/assets/0.Bg-3Xsxo.css.gz +0 -0
- package/build/client/_app/immutable/chunks/2G5jukcB.js +0 -1
- package/build/client/_app/immutable/chunks/2G5jukcB.js.br +0 -0
- package/build/client/_app/immutable/chunks/2G5jukcB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B5NTIIm5.js.br +0 -0
- package/build/client/_app/immutable/chunks/B5NTIIm5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BEi7QatZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/BEi7QatZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOZBLPYr.js +0 -1
- package/build/client/_app/immutable/chunks/BOZBLPYr.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOZBLPYr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BUr91kOw.js +0 -1
- package/build/client/_app/immutable/chunks/BUr91kOw.js.br +0 -0
- package/build/client/_app/immutable/chunks/BUr91kOw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BYPjaq07.js +0 -1
- package/build/client/_app/immutable/chunks/BYPjaq07.js.br +0 -0
- package/build/client/_app/immutable/chunks/BYPjaq07.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BZagxdqB.js +0 -16
- package/build/client/_app/immutable/chunks/BZagxdqB.js.br +0 -0
- package/build/client/_app/immutable/chunks/BZagxdqB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bh2n5Bfy.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bh2n5Bfy.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bl8s7Z6r.js.br +0 -1
- package/build/client/_app/immutable/chunks/Bl8s7Z6r.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BnpHJF5-.js +0 -2
- package/build/client/_app/immutable/chunks/BnpHJF5-.js.br +0 -0
- package/build/client/_app/immutable/chunks/BnpHJF5-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C2amz0TU.js.br +0 -0
- package/build/client/_app/immutable/chunks/C2amz0TU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C93uPVVn.js +0 -1
- package/build/client/_app/immutable/chunks/C93uPVVn.js.br +0 -0
- package/build/client/_app/immutable/chunks/C93uPVVn.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CXNtxrhs.js +0 -1
- package/build/client/_app/immutable/chunks/CXNtxrhs.js.br +0 -0
- package/build/client/_app/immutable/chunks/CXNtxrhs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cc583CkD.js +0 -1
- package/build/client/_app/immutable/chunks/Cc583CkD.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cc583CkD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CxcplU4Q.js.br +0 -0
- package/build/client/_app/immutable/chunks/CxcplU4Q.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DDy-Kuac.js +0 -1
- package/build/client/_app/immutable/chunks/DDy-Kuac.js.br +0 -0
- package/build/client/_app/immutable/chunks/DDy-Kuac.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DIDOrPa8.js +0 -41
- package/build/client/_app/immutable/chunks/DIDOrPa8.js.br +0 -0
- package/build/client/_app/immutable/chunks/DIDOrPa8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DJ7MgPmk.js +0 -4
- package/build/client/_app/immutable/chunks/DJ7MgPmk.js.br +0 -0
- package/build/client/_app/immutable/chunks/DJ7MgPmk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DUw-I2kh.js.br +0 -0
- package/build/client/_app/immutable/chunks/DUw-I2kh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DdLT9cdj.js.br +0 -0
- package/build/client/_app/immutable/chunks/DdLT9cdj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/c-rWvg5T.js.br +0 -0
- package/build/client/_app/immutable/chunks/c-rWvg5T.js.gz +0 -0
- package/build/client/_app/immutable/chunks/hbftB6pI.js +0 -1
- package/build/client/_app/immutable/chunks/hbftB6pI.js.br +0 -0
- package/build/client/_app/immutable/chunks/hbftB6pI.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.BvdA5xZX.js +0 -2
- package/build/client/_app/immutable/entry/app.BvdA5xZX.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BvdA5xZX.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.B47HTlUj.js +0 -1
- package/build/client/_app/immutable/entry/start.B47HTlUj.js.br +0 -2
- package/build/client/_app/immutable/entry/start.B47HTlUj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.C-Qb2qV-.js +0 -1
- package/build/client/_app/immutable/nodes/0.C-Qb2qV-.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.C-Qb2qV-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CbwunOOA.js +0 -1
- package/build/client/_app/immutable/nodes/1.CbwunOOA.js.br +0 -4
- package/build/client/_app/immutable/nodes/1.CbwunOOA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.BONTXBU2.js +0 -6
- package/build/client/_app/immutable/nodes/10.BONTXBU2.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.BONTXBU2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.Bt-WKNEi.js +0 -1
- package/build/client/_app/immutable/nodes/11.Bt-WKNEi.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.Bt-WKNEi.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.DtpUwyyZ.js +0 -1
- package/build/client/_app/immutable/nodes/12.DtpUwyyZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.DtpUwyyZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.Ce307l0A.js +0 -65
- package/build/client/_app/immutable/nodes/13.Ce307l0A.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.Ce307l0A.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.AM8fesja.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.AM8fesja.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.BShuoOz5.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BShuoOz5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BD6QbApY.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BD6QbApY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.JM_dwz0R.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.JM_dwz0R.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.lTuFbCm_.js +0 -1
- package/build/client/_app/immutable/nodes/7.lTuFbCm_.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.lTuFbCm_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.DIWHKPrG.js +0 -1
- package/build/client/_app/immutable/nodes/8.DIWHKPrG.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DIWHKPrG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.D6Tw6uKW.js +0 -2
- package/build/client/_app/immutable/nodes/9.D6Tw6uKW.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.D6Tw6uKW.js.gz +0 -0
- package/build/server/chunks/0-BdG9Cl9W.js +0 -22
- package/build/server/chunks/0-BdG9Cl9W.js.map +0 -1
- package/build/server/chunks/1-BcZWKLgB.js +0 -9
- package/build/server/chunks/1-BcZWKLgB.js.map +0 -1
- package/build/server/chunks/10-WRjYTwFT.js.map +0 -1
- package/build/server/chunks/11-Cq79IAWK.js.map +0 -1
- package/build/server/chunks/12-DnRkeAVv.js.map +0 -1
- package/build/server/chunks/13-DKqDuEdB.js.map +0 -1
- package/build/server/chunks/6-DsYzHmsZ.js.map +0 -1
- package/build/server/chunks/7-eAzN1saI.js.map +0 -1
- package/build/server/chunks/8-Dtaxi2J_.js.map +0 -1
- package/build/server/chunks/9-DrDIAOIh.js.map +0 -1
- package/build/server/chunks/JsonValue-Dj3vYG5T.js +0 -366
- package/build/server/chunks/JsonValue-Dj3vYG5T.js.map +0 -1
- package/build/server/chunks/Modal-fWUUqg69.js.map +0 -1
- package/build/server/chunks/Panel-BXokpC3w.js.map +0 -1
- package/build/server/chunks/PrettyJson-CV4qF02W.js.map +0 -1
- package/build/server/chunks/Tooltip-1tZ4BUxU.js.map +0 -1
- package/build/server/chunks/TooltipTable-B2QGp4YW.js.map +0 -1
- package/build/server/chunks/_layout.svelte-DAGMbkJX.js.map +0 -1
- package/build/server/chunks/_page.svelte-BUqI0nM9.js.map +0 -1
- package/build/server/chunks/_page.svelte-CB9ZXhBt.js.map +0 -1
- package/build/server/chunks/_page.svelte-Ccc0KJ66.js.map +0 -1
- package/build/server/chunks/_page.svelte-ClakOyno.js.map +0 -1
- package/build/server/chunks/_page.svelte-DfZ2COw_.js.map +0 -1
- package/build/server/chunks/_page.svelte-DgQxD9T8.js.map +0 -1
- package/build/server/chunks/_page.svelte-wmgrrvR7.js.map +0 -1
- package/build/server/chunks/client-BCfAqu0g.js +0 -7
- package/build/server/chunks/client2-B-hc4vU8.js.map +0 -1
- package/build/server/chunks/context-8UI9xWgq.js +0 -92
- package/build/server/chunks/context-8UI9xWgq.js.map +0 -1
- package/build/server/chunks/error.svelte-hj6GNaOv.js +0 -19
- package/build/server/chunks/error.svelte-hj6GNaOv.js.map +0 -1
- package/build/server/chunks/event-DVH-6ISX.js +0 -64
- package/build/server/chunks/event-DVH-6ISX.js.map +0 -1
- package/build/server/chunks/exports-CtTNDGe5.js +0 -161
- package/build/server/chunks/exports-CtTNDGe5.js.map +0 -1
- package/build/server/chunks/filters-CbFjTNFI.js.map +0 -1
- package/build/server/chunks/hooks.server-DRPXFQlL.js +0 -53
- package/build/server/chunks/hooks.server-DRPXFQlL.js.map +0 -1
- package/build/server/chunks/index-DOCFW0vv.js +0 -1355
- package/build/server/chunks/index-DOCFW0vv.js.map +0 -1
- package/build/server/chunks/index2-CJE0QJlP.js.map +0 -1
- package/build/server/chunks/index3-CQyDuV4f.js.map +0 -1
- package/build/server/chunks/logger-KF6KpVP6.js.map +0 -1
- package/build/server/chunks/mongo-CpQtfvt6.js.map +0 -1
- package/build/server/chunks/remote-xxtqbu-CbTWQ3bq.js +0 -21
- package/build/server/chunks/remote-xxtqbu-CbTWQ3bq.js.map +0 -1
- package/build/server/chunks/routing-BdGCua8Q.js.map +0 -1
- package/build/server/chunks/server2-CkPmd3Rb.js.map +0 -1
- package/build/server/chunks/servers.remote-OwAA4KJJ.js.map +0 -1
- package/build/server/chunks/shared-w5gO1Cte.js +0 -446
- package/build/server/chunks/shared-w5gO1Cte.js.map +0 -1
- package/build/server/chunks/state.svelte-BfzDwKMC.js.map +0 -1
- package/build/server/chunks/utils-kjxf7BZO.js.map +0 -1
- package/build/server/chunks/utils2-DrnJY_bz.js +0 -91
- package/build/server/chunks/utils2-DrnJY_bz.js.map +0 -1
- /package/build/client/_app/immutable/assets/{10.Wc4MTSzM.css → 11.Wc4MTSzM.css} +0 -0
- /package/build/client/_app/immutable/assets/{10.Wc4MTSzM.css.br → 11.Wc4MTSzM.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{10.Wc4MTSzM.css.gz → 11.Wc4MTSzM.css.gz} +0 -0
- /package/build/client/_app/immutable/assets/{11.CEtFGlZU.css → 12.CEtFGlZU.css} +0 -0
- /package/build/client/_app/immutable/assets/{11.CEtFGlZU.css.br → 12.CEtFGlZU.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{11.CEtFGlZU.css.gz → 12.CEtFGlZU.css.gz} +0 -0
- /package/build/client/_app/immutable/assets/{12.I1sSDJ6i.css → 13.I1sSDJ6i.css} +0 -0
- /package/build/client/_app/immutable/assets/{12.I1sSDJ6i.css.br → 13.I1sSDJ6i.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{12.I1sSDJ6i.css.gz → 13.I1sSDJ6i.css.gz} +0 -0
- /package/build/client/_app/immutable/assets/{7.CRKE8WvY.css → 8.CRKE8WvY.css} +0 -0
- /package/build/client/_app/immutable/assets/{7.CRKE8WvY.css.br → 8.CRKE8WvY.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{7.CRKE8WvY.css.gz → 8.CRKE8WvY.css.gz} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { p as private_env } from './shared-server-BmU87nph.js';
|
|
2
|
+
import { l as logger } from './logger-PfH_grbh.js';
|
|
2
3
|
import { resolveSrv } from 'dns/promises';
|
|
3
4
|
import { ReadPreference, MongoClient } from 'mongodb';
|
|
4
5
|
import { URL } from 'url';
|
|
@@ -6,8 +7,8 @@ import * as fs from 'node:fs';
|
|
|
6
7
|
import * as os from 'node:os';
|
|
7
8
|
import * as path from 'node:path';
|
|
8
9
|
|
|
9
|
-
const DEFAULT_HOSTS =
|
|
10
|
-
const DATABASE_FILE =
|
|
10
|
+
const DEFAULT_HOSTS = private_env.MONGOKU_DEFAULT_HOST ? private_env.MONGOKU_DEFAULT_HOST.split(";") : ["localhost:27017"];
|
|
11
|
+
const DATABASE_FILE = private_env.MONGOKU_DATABASE_FILE || path.join(os.homedir(), ".mongoku.db");
|
|
11
12
|
class HostsManager {
|
|
12
13
|
_hosts = /* @__PURE__ */ new Map();
|
|
13
14
|
// path -> _id
|
|
@@ -68,17 +69,12 @@ class HostsManager {
|
|
|
68
69
|
await this._saveToFile();
|
|
69
70
|
return id;
|
|
70
71
|
}
|
|
71
|
-
async
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
} catch {
|
|
77
|
-
return existingPath === hostPath;
|
|
72
|
+
async removeById(id) {
|
|
73
|
+
for (const [hostPath, hostId] of this._hosts) {
|
|
74
|
+
if (hostId === id) {
|
|
75
|
+
this._hosts.delete(hostPath);
|
|
76
|
+
break;
|
|
78
77
|
}
|
|
79
|
-
});
|
|
80
|
-
for (const host of toRemove) {
|
|
81
|
-
this._hosts.delete(host);
|
|
82
78
|
}
|
|
83
79
|
await this._saveToFile();
|
|
84
80
|
}
|
|
@@ -222,22 +218,22 @@ class MongoConnections {
|
|
|
222
218
|
clientIds = /* @__PURE__ */ new Map();
|
|
223
219
|
// hostname -> _id
|
|
224
220
|
hostsManager;
|
|
225
|
-
countTimeout = parseInt(
|
|
226
|
-
queryTimeout =
|
|
221
|
+
countTimeout = parseInt(private_env.MONGOKU_COUNT_TIMEOUT, 10) || 3e4;
|
|
222
|
+
queryTimeout = private_env.MONGOKU_QUERY_TIMEOUT ? parseInt(private_env.MONGOKU_QUERY_TIMEOUT, 10) : void 0;
|
|
227
223
|
excludedDatabases;
|
|
228
224
|
readPreference;
|
|
229
225
|
constructor() {
|
|
230
226
|
this.hostsManager = new HostsManager();
|
|
231
|
-
const excludeEnv =
|
|
227
|
+
const excludeEnv = private_env.MONGOKU_EXCLUDE_DATABASES || "";
|
|
232
228
|
this.excludedDatabases = new Set(
|
|
233
229
|
excludeEnv.split(",").map((db) => db.trim()).filter((db) => db.length > 0)
|
|
234
230
|
);
|
|
235
|
-
const readPrefMode =
|
|
231
|
+
const readPrefMode = private_env.MONGOKU_READ_PREFERENCE;
|
|
236
232
|
if (readPrefMode) {
|
|
237
233
|
let tags;
|
|
238
|
-
if (
|
|
234
|
+
if (private_env.MONGOKU_READ_PREFERENCE_TAGS) {
|
|
239
235
|
try {
|
|
240
|
-
tags = JSON.parse(
|
|
236
|
+
tags = JSON.parse(private_env.MONGOKU_READ_PREFERENCE_TAGS);
|
|
241
237
|
} catch (err) {
|
|
242
238
|
logger.error("Failed to parse MONGOKU_READ_PREFERENCE_TAGS:", err);
|
|
243
239
|
}
|
|
@@ -311,10 +307,15 @@ class MongoConnections {
|
|
|
311
307
|
}
|
|
312
308
|
}
|
|
313
309
|
async removeServer(name) {
|
|
314
|
-
|
|
315
|
-
this.
|
|
316
|
-
|
|
317
|
-
|
|
310
|
+
const clientKey = this.clientIds.has(name) ? name : `${name}:27017`;
|
|
311
|
+
const clientId = this.clientIds.get(clientKey);
|
|
312
|
+
if (!clientId) {
|
|
313
|
+
throw new Error(`Server not found: ${name}`);
|
|
314
|
+
}
|
|
315
|
+
await this.hostsManager.removeById(clientId);
|
|
316
|
+
this.clients.get(clientId)?.close().catch((err) => logger.error(`Error closing client ${name}:`, err));
|
|
317
|
+
this.clients.delete(clientId);
|
|
318
|
+
this.clientIds.delete(clientKey);
|
|
318
319
|
}
|
|
319
320
|
async reconnectClient(id) {
|
|
320
321
|
const oldClient = this.clients.get(id);
|
|
@@ -387,4 +388,4 @@ async function getMongo() {
|
|
|
387
388
|
}
|
|
388
389
|
|
|
389
390
|
export { getCollectionJson as a, getMongo as g };
|
|
390
|
-
//# sourceMappingURL=mongo-
|
|
391
|
+
//# sourceMappingURL=mongo-B92d7zNj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo-B92d7zNj.js","sources":["../../../.svelte-kit/adapter-node/chunks/mongo.js"],"sourcesContent":["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 { URL } from \"url\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\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 url = new URL(connectionString);\n if (url.protocol === \"mongodb+srv:\") {\n const hostname = url.hostname;\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 (url.protocol === \"mongodb:\") {\n const hostsString = url.host;\n if (!hostsString) {\n throw new Error(\"No hosts found in connection string\");\n }\n return hostsString.split(\",\").map((host) => host.trim()).filter((host) => host.length > 0).sort();\n }\n throw new TypeError(`Unsupported protocol: ${url.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 url = new URL(urlStr);\n const hostname = url.host || 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 url = new URL(urlStr);\n const hostname = url.host || 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 url = new URL(client.url);\n const directUrl = new URL(url.toString());\n directUrl.protocol = \"mongodb:\";\n directUrl.host = node;\n directUrl.searchParams.set(\"directConnection\", \"true\");\n if (url.searchParams.has(\"tls\") || url.searchParams.has(\"ssl\") || url.protocol === \"mongodb+srv:\") {\n directUrl.searchParams.set(\"tls\", \"true\");\n }\n let nodeClient = null;\n try {\n nodeClient = new MongoClient(directUrl.toString());\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}\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};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { b as base } from './server-Crjo4w1q.js';
|
|
2
|
+
import './url-hmE1zcJ6.js';
|
|
3
|
+
import { p as private_env } from './shared-server-BmU87nph.js';
|
|
4
|
+
import { createHmac, timingSafeEqual, randomBytes, createHash } from 'node:crypto';
|
|
5
|
+
|
|
6
|
+
const DEFAULT_SESSION_DURATION = 86400;
|
|
7
|
+
const OAUTH_CIMD_CLIENT_ID = "__CIMD__";
|
|
8
|
+
let cachedConfig;
|
|
9
|
+
function parseSessionDuration(rawDuration) {
|
|
10
|
+
if (!rawDuration) {
|
|
11
|
+
return DEFAULT_SESSION_DURATION;
|
|
12
|
+
}
|
|
13
|
+
const parsed = Number(rawDuration);
|
|
14
|
+
if (!Number.isInteger(parsed) || parsed <= 0) {
|
|
15
|
+
return DEFAULT_SESSION_DURATION;
|
|
16
|
+
}
|
|
17
|
+
return parsed;
|
|
18
|
+
}
|
|
19
|
+
async function fetchOpenIDConfiguration(issuerUrl) {
|
|
20
|
+
const wellKnown = issuerUrl.replace(/\/+$/, "") + "/.well-known/openid-configuration";
|
|
21
|
+
const response = await fetch(wellKnown);
|
|
22
|
+
if (!response.ok) {
|
|
23
|
+
throw new Error(`Failed to fetch OpenID configuration from ${wellKnown} (${response.status})`);
|
|
24
|
+
}
|
|
25
|
+
const config = await response.json();
|
|
26
|
+
if (!config.authorization_endpoint || !config.token_endpoint) {
|
|
27
|
+
throw new Error(`OpenID configuration at ${wellKnown} is missing required endpoints`);
|
|
28
|
+
}
|
|
29
|
+
return config;
|
|
30
|
+
}
|
|
31
|
+
async function getOAuthConfig() {
|
|
32
|
+
if (cachedConfig !== void 0) {
|
|
33
|
+
return cachedConfig;
|
|
34
|
+
}
|
|
35
|
+
const clientId = private_env.MONGOKU_OAUTH_CLIENT_ID;
|
|
36
|
+
if (!clientId) {
|
|
37
|
+
cachedConfig = null;
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const issuerUrl = private_env.MONGOKU_OAUTH_ISSUER_URL;
|
|
41
|
+
const sessionSecret = private_env.MONGOKU_OAUTH_SESSION_SECRET;
|
|
42
|
+
if (!issuerUrl || !sessionSecret) {
|
|
43
|
+
throw new Error(
|
|
44
|
+
"OAuth is partially configured. When MONGOKU_OAUTH_CLIENT_ID is set, MONGOKU_OAUTH_ISSUER_URL and MONGOKU_OAUTH_SESSION_SECRET are also required."
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
const oidc = await fetchOpenIDConfiguration(issuerUrl);
|
|
48
|
+
const allowedSubsRaw = private_env.MONGOKU_OAUTH_ALLOWED_SUBS;
|
|
49
|
+
const allowedSubs = allowedSubsRaw ? new Set(
|
|
50
|
+
allowedSubsRaw.split(",").map((s) => s.trim()).filter(Boolean)
|
|
51
|
+
) : void 0;
|
|
52
|
+
cachedConfig = {
|
|
53
|
+
clientId,
|
|
54
|
+
issuerUrl,
|
|
55
|
+
authorizationUrl: oidc.authorization_endpoint,
|
|
56
|
+
tokenUrl: oidc.token_endpoint,
|
|
57
|
+
scopes: private_env.MONGOKU_OAUTH_SCOPES ?? "openid profile email",
|
|
58
|
+
sessionSecret,
|
|
59
|
+
sessionDuration: parseSessionDuration(private_env.MONGOKU_OAUTH_SESSION_DURATION),
|
|
60
|
+
allowedSubs
|
|
61
|
+
};
|
|
62
|
+
return cachedConfig;
|
|
63
|
+
}
|
|
64
|
+
function resolveOAuthClientId(config, origin) {
|
|
65
|
+
if (config.clientId !== OAUTH_CIMD_CLIENT_ID) {
|
|
66
|
+
return config.clientId;
|
|
67
|
+
}
|
|
68
|
+
return new URL(`${base}/.well-known/cimd.json`, origin).toString();
|
|
69
|
+
}
|
|
70
|
+
function base64url(buffer) {
|
|
71
|
+
return buffer.toString("base64url");
|
|
72
|
+
}
|
|
73
|
+
function generateCodeVerifier() {
|
|
74
|
+
return base64url(randomBytes(64));
|
|
75
|
+
}
|
|
76
|
+
function generateCodeChallenge(verifier) {
|
|
77
|
+
return base64url(createHash("sha256").update(verifier).digest());
|
|
78
|
+
}
|
|
79
|
+
function generateState() {
|
|
80
|
+
return base64url(randomBytes(32));
|
|
81
|
+
}
|
|
82
|
+
function buildAuthorizationUrl(config, origin, callbackUrl, codeChallenge, state) {
|
|
83
|
+
const url = new URL(config.authorizationUrl);
|
|
84
|
+
url.searchParams.set("client_id", resolveOAuthClientId(config, origin));
|
|
85
|
+
url.searchParams.set("response_type", "code");
|
|
86
|
+
url.searchParams.set("redirect_uri", callbackUrl);
|
|
87
|
+
url.searchParams.set("scope", config.scopes);
|
|
88
|
+
url.searchParams.set("state", state);
|
|
89
|
+
url.searchParams.set("code_challenge", codeChallenge);
|
|
90
|
+
url.searchParams.set("code_challenge_method", "S256");
|
|
91
|
+
return url.toString();
|
|
92
|
+
}
|
|
93
|
+
async function exchangeCode(config, origin, code, codeVerifier, callbackUrl) {
|
|
94
|
+
const body = new URLSearchParams({
|
|
95
|
+
grant_type: "authorization_code",
|
|
96
|
+
code,
|
|
97
|
+
redirect_uri: callbackUrl,
|
|
98
|
+
client_id: resolveOAuthClientId(config, origin),
|
|
99
|
+
code_verifier: codeVerifier
|
|
100
|
+
});
|
|
101
|
+
const response = await fetch(config.tokenUrl, {
|
|
102
|
+
method: "POST",
|
|
103
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
104
|
+
body: body.toString()
|
|
105
|
+
});
|
|
106
|
+
if (!response.ok) {
|
|
107
|
+
const text = await response.text();
|
|
108
|
+
throw new Error(`Token exchange failed (${response.status}): ${text}`);
|
|
109
|
+
}
|
|
110
|
+
return response.json();
|
|
111
|
+
}
|
|
112
|
+
function extractUserFromIdToken(idToken) {
|
|
113
|
+
try {
|
|
114
|
+
const parts = idToken.split(".");
|
|
115
|
+
if (parts.length !== 3) {
|
|
116
|
+
return {};
|
|
117
|
+
}
|
|
118
|
+
const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString());
|
|
119
|
+
return {
|
|
120
|
+
sub: payload.sub,
|
|
121
|
+
name: payload.name || payload.preferred_username,
|
|
122
|
+
email: payload.email
|
|
123
|
+
};
|
|
124
|
+
} catch {
|
|
125
|
+
return {};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function createSessionCookie(config, user) {
|
|
129
|
+
const sessionDuration = Number.isInteger(config.sessionDuration) && config.sessionDuration > 0 ? config.sessionDuration : DEFAULT_SESSION_DURATION;
|
|
130
|
+
const payload = {
|
|
131
|
+
...user,
|
|
132
|
+
exp: Math.floor(Date.now() / 1e3) + sessionDuration
|
|
133
|
+
};
|
|
134
|
+
const payloadStr = Buffer.from(JSON.stringify(payload)).toString("base64url");
|
|
135
|
+
const signature = createHmac("sha256", config.sessionSecret).update(payloadStr).digest("base64url");
|
|
136
|
+
return `${payloadStr}.${signature}`;
|
|
137
|
+
}
|
|
138
|
+
function verifySession(config, cookie) {
|
|
139
|
+
const dotIndex = cookie.lastIndexOf(".");
|
|
140
|
+
if (dotIndex === -1) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
const payloadStr = cookie.slice(0, dotIndex);
|
|
144
|
+
const signature = cookie.slice(dotIndex + 1);
|
|
145
|
+
const expectedSignature = createHmac("sha256", config.sessionSecret).update(payloadStr).digest("base64url");
|
|
146
|
+
const a = Buffer.from(signature);
|
|
147
|
+
const b = Buffer.from(expectedSignature);
|
|
148
|
+
if (a.length !== b.length || !timingSafeEqual(a, b)) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const payload = JSON.parse(Buffer.from(payloadStr, "base64url").toString());
|
|
153
|
+
if (!Number.isFinite(payload.exp)) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
if (payload.exp < Math.floor(Date.now() / 1e3)) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
return payload;
|
|
160
|
+
} catch {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function getCallbackUrl(origin) {
|
|
165
|
+
return `${origin}${base}/auth/callback`;
|
|
166
|
+
}
|
|
167
|
+
function cookieOptions(url, maxAge) {
|
|
168
|
+
return {
|
|
169
|
+
httpOnly: true,
|
|
170
|
+
secure: url.protocol === "https:",
|
|
171
|
+
sameSite: "lax",
|
|
172
|
+
path: base || "/",
|
|
173
|
+
...maxAge !== void 0 && { maxAge }
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export { OAUTH_CIMD_CLIENT_ID as O, getCallbackUrl as a, extractUserFromIdToken as b, cookieOptions as c, createSessionCookie as d, exchangeCode as e, generateCodeVerifier as f, getOAuthConfig as g, generateCodeChallenge as h, generateState as i, buildAuthorizationUrl as j, verifySession as v };
|
|
178
|
+
//# sourceMappingURL=oauth-BfIECOev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-BfIECOev.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 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 };\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 {};\n }\n const payload = JSON.parse(Buffer.from(parts[1], \"base64url\").toString());\n return {\n sub: payload.sub,\n name: payload.name || payload.preferred_username,\n email: payload.email\n };\n } catch {\n return {};\n }\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}\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 createSessionCookie as d,\n exchangeCode as e,\n generateCodeVerifier as f,\n getOAuthConfig as g,\n generateCodeChallenge as h,\n generateState as i,\n buildAuthorizationUrl as j,\n verifySession as v\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { m as default } from './servers.remote-BhpVo4Zs.js';
|
|
2
|
+
import './url-hmE1zcJ6.js';
|
|
3
|
+
import './async-lVJA8xJZ.js';
|
|
4
|
+
import './shared-server-BmU87nph.js';
|
|
5
|
+
import './utils2-kjxf7BZO.js';
|
|
6
|
+
import './shared-BqTYMAzZ.js';
|
|
7
|
+
import './index-wpIsICWW.js';
|
|
8
|
+
import './jsonParser-C3QUcODD.js';
|
|
9
|
+
import 'esprima';
|
|
10
|
+
import './JsonEncoder-B8eJRYZ4.js';
|
|
11
|
+
import 'mongodb';
|
|
12
|
+
import './logger-PfH_grbh.js';
|
|
13
|
+
import 'async_hooks';
|
|
14
|
+
import 'node:util';
|
|
15
|
+
import './mongo-B92d7zNj.js';
|
|
16
|
+
import 'dns/promises';
|
|
17
|
+
import 'url';
|
|
18
|
+
import 'node:fs';
|
|
19
|
+
import 'node:os';
|
|
20
|
+
import 'node:path';
|
|
21
|
+
import 'zod';
|
|
22
|
+
//# sourceMappingURL=remote-xxtqbu-D0yn6nhQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-xxtqbu-D0yn6nhQ.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { u as decode_params } from './url-hmE1zcJ6.js';
|
|
2
|
+
|
|
1
3
|
function affects_path(segment) {
|
|
2
4
|
return segment !== "" && !/^\([^)]+\)$/.test(segment);
|
|
3
5
|
}
|
|
@@ -17,8 +19,11 @@ function exec(match, params, matchers) {
|
|
|
17
19
|
buffered = 0;
|
|
18
20
|
}
|
|
19
21
|
if (value === void 0) {
|
|
20
|
-
if (param.rest)
|
|
21
|
-
|
|
22
|
+
if (param.rest) {
|
|
23
|
+
value = "";
|
|
24
|
+
} else {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
22
27
|
}
|
|
23
28
|
if (!param.matcher || matchers[param.matcher](value)) {
|
|
24
29
|
result[param.name] = value;
|
|
@@ -61,6 +66,20 @@ function resolve_route(id, params) {
|
|
|
61
66
|
})
|
|
62
67
|
).filter(Boolean).join("/") + (has_id_trailing_slash ? "/" : "");
|
|
63
68
|
}
|
|
69
|
+
function find_route(path, routes, matchers) {
|
|
70
|
+
for (const route of routes) {
|
|
71
|
+
const match = route.pattern.exec(path);
|
|
72
|
+
if (!match) continue;
|
|
73
|
+
const matched = exec(match, route.params, matchers);
|
|
74
|
+
if (matched) {
|
|
75
|
+
return {
|
|
76
|
+
route,
|
|
77
|
+
params: decode_params(matched)
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
64
83
|
|
|
65
|
-
export {
|
|
66
|
-
//# sourceMappingURL=routing-
|
|
84
|
+
export { find_route as f, resolve_route as r };
|
|
85
|
+
//# sourceMappingURL=routing-CYknP78v.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-CYknP78v.js","sources":["../../../.svelte-kit/adapter-node/chunks/routing.js"],"sourcesContent":["import { b as decode_params } from \"./url.js\";\nfunction affects_path(segment) {\n return segment !== \"\" && !/^\\([^)]+\\)$/.test(segment);\n}\nfunction get_route_segments(route) {\n return route.slice(1).split(\"/\").filter(affects_path);\n}\nfunction exec(match, params, matchers) {\n const result = {};\n const values = match.slice(1);\n const values_needing_match = values.filter((value) => value !== void 0);\n let buffered = 0;\n for (let i = 0; i < params.length; i += 1) {\n const param = params[i];\n let value = values[i - buffered];\n if (param.chained && param.rest && buffered) {\n value = values.slice(i - buffered, i + 1).filter((s) => s).join(\"/\");\n buffered = 0;\n }\n if (value === void 0) {\n if (param.rest) {\n value = \"\";\n } else {\n continue;\n }\n }\n if (!param.matcher || matchers[param.matcher](value)) {\n result[param.name] = value;\n const next_param = params[i + 1];\n const next_value = values[i + 1];\n if (next_param && !next_param.rest && next_param.optional && next_value && param.chained) {\n buffered = 0;\n }\n if (!next_param && !next_value && Object.keys(result).length === values_needing_match.length) {\n buffered = 0;\n }\n continue;\n }\n if (param.optional && param.chained) {\n buffered++;\n continue;\n }\n return;\n }\n if (buffered) return;\n return result;\n}\nconst basic_param_pattern = /\\[(\\[)?(\\.\\.\\.)?(\\w+?)(?:=(\\w+))?\\]\\]?/g;\nfunction resolve_route(id, params) {\n const segments = get_route_segments(id);\n const has_id_trailing_slash = id != \"/\" && id.endsWith(\"/\");\n return \"/\" + segments.map(\n (segment) => segment.replace(basic_param_pattern, (_, optional, rest, name) => {\n const param_value = params[name];\n if (!param_value) {\n if (optional) return \"\";\n if (rest && param_value !== void 0) return \"\";\n throw new Error(`Missing parameter '${name}' in route ${id}`);\n }\n if (param_value.startsWith(\"/\") || param_value.endsWith(\"/\"))\n throw new Error(\n `Parameter '${name}' in route ${id} cannot start or end with a slash -- this would cause an invalid route like foo//bar`\n );\n return param_value;\n })\n ).filter(Boolean).join(\"/\") + (has_id_trailing_slash ? \"/\" : \"\");\n}\nfunction find_route(path, routes, matchers) {\n for (const route of routes) {\n const match = route.pattern.exec(path);\n if (!match) continue;\n const matched = exec(match, route.params, matchers);\n if (matched) {\n return {\n route,\n params: decode_params(matched)\n };\n }\n }\n return null;\n}\nexport {\n find_route as f,\n resolve_route as r\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as initial_base, b as base } from './server-Crjo4w1q.js';
|
|
2
|
-
import { r as resolve_route } from './routing-
|
|
3
|
-
import {
|
|
2
|
+
import { r as resolve_route } from './routing-CYknP78v.js';
|
|
3
|
+
import { x as try_get_request_store } from './url-hmE1zcJ6.js';
|
|
4
4
|
|
|
5
5
|
function resolve(id, params) {
|
|
6
6
|
const resolved = resolve_route(
|
|
@@ -21,4 +21,4 @@ function resolve(id, params) {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export { resolve as r };
|
|
24
|
-
//# sourceMappingURL=server2-
|
|
24
|
+
//# sourceMappingURL=server2-uigtM6st.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server2-uigtM6st.js","sources":["../../../.svelte-kit/adapter-node/chunks/server2.js"],"sourcesContent":["import { i as initial_base, b as base } from \"./server.js\";\nimport { r as resolve_route } from \"./routing.js\";\nimport \"./url.js\";\nimport { try_get_request_store } from \"@sveltejs/kit/internal/server\";\nimport \"./root.js\";\nfunction resolve(id, params) {\n const resolved = resolve_route(\n id,\n /** @type {Record<string, string>} */\n params\n );\n {\n const store = try_get_request_store();\n if (store && !store.state.prerendering?.fallback) {\n const after_base = store.event.url.pathname.slice(initial_base.length);\n const segments = after_base.split(\"/\").slice(2);\n const prefix = segments.map(() => \"..\").join(\"/\") || \".\";\n return prefix + resolved;\n }\n }\n return base + resolved;\n}\nexport {\n resolve as r\n};\n"],"names":[],"mappings":";;;;AAKA,SAAS,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE;AAC7B,EAAE,MAAM,QAAQ,GAAG,aAAa;AAChC,IAAI,EAAE;AACN;AACA,IAAI;AACJ,GAAG;AACH,EAAE;AACF,IAAI,MAAM,KAAK,GAAG,qBAAqB,EAAE;AACzC,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE;AACtD,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;AAC5E,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;AAC9D,MAAM,OAAO,MAAM,GAAG,QAAQ;AAC9B,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI,GAAG,QAAQ;AACxB;;;;"}
|