mongoku 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/Dockerfile +27 -0
  2. package/README.md +8 -0
  3. package/build/client/_app/immutable/assets/0.BHsXFfsc.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/PrettyJson.CtngcfyW.css.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{W-qL5_8w.js → BAM9w9EL.js} +1 -1
  6. package/build/client/_app/immutable/chunks/BAM9w9EL.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/BAM9w9EL.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/BKCvWebR.js +23 -0
  9. package/build/client/_app/immutable/chunks/BKCvWebR.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/BKCvWebR.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{Dbyirw23.js → BMa204Dm.js} +3 -3
  12. package/build/client/_app/immutable/chunks/BMa204Dm.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/BMa204Dm.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/BN_N9-2s.js.gz +0 -0
  15. package/build/client/_app/immutable/chunks/BY57TmdO.js +1 -0
  16. package/build/client/_app/immutable/chunks/BY57TmdO.js.br +0 -0
  17. package/build/client/_app/immutable/chunks/BY57TmdO.js.gz +0 -0
  18. package/build/client/_app/immutable/chunks/BaB-cr9N.js +2 -0
  19. package/build/client/_app/immutable/chunks/BaB-cr9N.js.br +0 -0
  20. package/build/client/_app/immutable/chunks/BaB-cr9N.js.gz +0 -0
  21. package/build/client/_app/immutable/chunks/BdR-m9Ad.js +1 -0
  22. package/build/client/_app/immutable/chunks/BdR-m9Ad.js.br +0 -0
  23. package/build/client/_app/immutable/chunks/BdR-m9Ad.js.gz +0 -0
  24. package/build/client/_app/immutable/chunks/ByjLCPv2.js +1 -0
  25. package/build/client/_app/immutable/chunks/ByjLCPv2.js.br +0 -0
  26. package/build/client/_app/immutable/chunks/ByjLCPv2.js.gz +0 -0
  27. package/build/client/_app/immutable/chunks/BzAcxkRZ.js +4 -0
  28. package/build/client/_app/immutable/chunks/BzAcxkRZ.js.br +0 -0
  29. package/build/client/_app/immutable/chunks/BzAcxkRZ.js.gz +0 -0
  30. package/build/client/_app/immutable/chunks/CyQLXPZI.js +2 -0
  31. package/build/client/_app/immutable/chunks/CyQLXPZI.js.br +0 -0
  32. package/build/client/_app/immutable/chunks/CyQLXPZI.js.gz +0 -0
  33. package/build/client/_app/immutable/chunks/D17Lj1H7.js +1 -0
  34. package/build/client/_app/immutable/chunks/D17Lj1H7.js.br +0 -0
  35. package/build/client/_app/immutable/chunks/D17Lj1H7.js.gz +0 -0
  36. package/build/client/_app/immutable/chunks/D4VhtiDg.js +1 -0
  37. package/build/client/_app/immutable/chunks/D4VhtiDg.js.br +0 -0
  38. package/build/client/_app/immutable/chunks/D4VhtiDg.js.gz +0 -0
  39. package/build/client/_app/immutable/chunks/D72Du7TF.js +1 -0
  40. package/build/client/_app/immutable/chunks/D72Du7TF.js.br +2 -0
  41. package/build/client/_app/immutable/chunks/D72Du7TF.js.gz +0 -0
  42. package/build/client/_app/immutable/chunks/{DZSJW-Zm.js → XYFbSe2V.js} +1 -1
  43. package/build/client/_app/immutable/chunks/XYFbSe2V.js.br +0 -0
  44. package/build/client/_app/immutable/chunks/XYFbSe2V.js.gz +0 -0
  45. package/build/client/_app/immutable/chunks/iHsChU5o.js +1 -0
  46. package/build/client/_app/immutable/chunks/iHsChU5o.js.br +0 -0
  47. package/build/client/_app/immutable/chunks/iHsChU5o.js.gz +0 -0
  48. package/build/client/_app/immutable/chunks/{DzSHMQR7.js → p23QjN60.js} +1 -1
  49. package/build/client/_app/immutable/chunks/p23QjN60.js.br +2 -0
  50. package/build/client/_app/immutable/chunks/p23QjN60.js.gz +0 -0
  51. package/build/client/_app/immutable/chunks/sBKW2MYH.js +1 -0
  52. package/build/client/_app/immutable/chunks/sBKW2MYH.js.br +0 -0
  53. package/build/client/_app/immutable/chunks/sBKW2MYH.js.gz +0 -0
  54. package/build/client/_app/immutable/chunks/{BEuO9qGi.js → uMNMODvc.js} +1 -1
  55. package/build/client/_app/immutable/chunks/uMNMODvc.js.br +0 -0
  56. package/build/client/_app/immutable/chunks/uMNMODvc.js.gz +0 -0
  57. package/build/client/_app/immutable/entry/app.9nC_873E.js +2 -0
  58. package/build/client/_app/immutable/entry/app.9nC_873E.js.br +0 -0
  59. package/build/client/_app/immutable/entry/app.9nC_873E.js.gz +0 -0
  60. package/build/client/_app/immutable/entry/start.Bn88Alw2.js +1 -0
  61. package/build/client/_app/immutable/entry/start.Bn88Alw2.js.br +2 -0
  62. package/build/client/_app/immutable/entry/start.Bn88Alw2.js.gz +0 -0
  63. package/build/client/_app/immutable/nodes/{0.B2lBDs71.js → 0.COxTCtn2.js} +1 -1
  64. package/build/client/_app/immutable/nodes/0.COxTCtn2.js.br +0 -0
  65. package/build/client/_app/immutable/nodes/0.COxTCtn2.js.gz +0 -0
  66. package/build/client/_app/immutable/nodes/1.Bc8yPK_D.js +1 -0
  67. package/build/client/_app/immutable/nodes/1.Bc8yPK_D.js.br +0 -0
  68. package/build/client/_app/immutable/nodes/1.Bc8yPK_D.js.gz +0 -0
  69. package/build/client/_app/immutable/nodes/3.CI2GcqTf.js +1 -0
  70. package/build/client/_app/immutable/nodes/3.CI2GcqTf.js.br +0 -0
  71. package/build/client/_app/immutable/nodes/3.CI2GcqTf.js.gz +0 -0
  72. package/build/client/_app/immutable/nodes/{4.BqBphmVX.js → 4.ChSdW7ac.js} +1 -1
  73. package/build/client/_app/immutable/nodes/4.ChSdW7ac.js.br +0 -0
  74. package/build/client/_app/immutable/nodes/4.ChSdW7ac.js.gz +0 -0
  75. package/build/client/_app/immutable/nodes/{5.BkAWRgl4.js → 5.DaMML2go.js} +1 -1
  76. package/build/client/_app/immutable/nodes/5.DaMML2go.js.br +0 -0
  77. package/build/client/_app/immutable/nodes/5.DaMML2go.js.gz +0 -0
  78. package/build/client/_app/immutable/nodes/6.Dcq0qwvO.js +1 -0
  79. package/build/client/_app/immutable/nodes/6.Dcq0qwvO.js.br +0 -0
  80. package/build/client/_app/immutable/nodes/6.Dcq0qwvO.js.gz +0 -0
  81. package/build/client/_app/immutable/nodes/7.CU-ncPes.js +1 -0
  82. package/build/client/_app/immutable/nodes/7.CU-ncPes.js.br +0 -0
  83. package/build/client/_app/immutable/nodes/7.CU-ncPes.js.gz +0 -0
  84. package/build/client/_app/version.json +1 -1
  85. package/build/client/_app/version.json.br +0 -0
  86. package/build/client/_app/version.json.gz +0 -0
  87. package/build/server/chunks/{0-BGoFMRn2.js → 0-C1NyHW8A.js} +3 -3
  88. package/build/server/chunks/{0-BGoFMRn2.js.map → 0-C1NyHW8A.js.map} +1 -1
  89. package/build/server/chunks/1-CThf4W5r.js +9 -0
  90. package/build/server/chunks/{1-Ch0AY58K.js.map → 1-CThf4W5r.js.map} +1 -1
  91. package/build/server/chunks/{3-Bmk9Qof9.js → 3-CJf0NbiV.js} +3 -3
  92. package/build/server/chunks/{3-Bmk9Qof9.js.map → 3-CJf0NbiV.js.map} +1 -1
  93. package/build/server/chunks/{4-DnpScx2e.js → 4-Dfbpsagm.js} +3 -3
  94. package/build/server/chunks/{4-DnpScx2e.js.map → 4-Dfbpsagm.js.map} +1 -1
  95. package/build/server/chunks/{5-Bw8bTTBj.js → 5-DLB6GOjf.js} +3 -3
  96. package/build/server/chunks/{5-Bw8bTTBj.js.map → 5-DLB6GOjf.js.map} +1 -1
  97. package/build/server/chunks/{6-D8zNoyW_.js → 6-DfCARDKO.js} +10 -5
  98. package/build/server/chunks/6-DfCARDKO.js.map +1 -0
  99. package/build/server/chunks/{7-Cim4qVL3.js → 7-B5o4OymX.js} +3 -3
  100. package/build/server/chunks/{7-Cim4qVL3.js.map → 7-B5o4OymX.js.map} +1 -1
  101. package/build/server/chunks/{Panel-DTdYk-gk.js → Panel-Box8ld78.js} +3 -3
  102. package/build/server/chunks/Panel-Box8ld78.js.map +1 -0
  103. package/build/server/chunks/{PrettyJson-wIuHvehp.js → PrettyJson-C2c9xGNo.js} +5 -5
  104. package/build/server/chunks/PrettyJson-C2c9xGNo.js.map +1 -0
  105. package/build/server/chunks/{TooltipTable-J278e1CA.js → TooltipTable-0z4HkHlH.js} +3 -1
  106. package/build/server/chunks/TooltipTable-0z4HkHlH.js.map +1 -0
  107. package/build/server/chunks/{_layout.svelte-D7RD9tLN.js → _layout.svelte-CU7AVRSZ.js} +14 -11
  108. package/build/server/chunks/_layout.svelte-CU7AVRSZ.js.map +1 -0
  109. package/build/server/chunks/{_page.svelte-4PYYtPii.js → _page.svelte-B_T8EFk3.js} +7 -6
  110. package/build/server/chunks/_page.svelte-B_T8EFk3.js.map +1 -0
  111. package/build/server/chunks/{_page.svelte-Be5VTn1e.js → _page.svelte-CflJkclc.js} +7 -6
  112. package/build/server/chunks/_page.svelte-CflJkclc.js.map +1 -0
  113. package/build/server/chunks/{_page.svelte-DZ59Sr3N.js → _page.svelte-D1QIZqLv.js} +65 -42
  114. package/build/server/chunks/_page.svelte-D1QIZqLv.js.map +1 -0
  115. package/build/server/chunks/{_page.svelte-DIPUjSjm.js → _page.svelte-PuIVQ52p.js} +20 -8
  116. package/build/server/chunks/_page.svelte-PuIVQ52p.js.map +1 -0
  117. package/build/server/chunks/_page.svelte-zlHeUnJK.js +101 -0
  118. package/build/server/chunks/_page.svelte-zlHeUnJK.js.map +1 -0
  119. package/build/server/chunks/{context-BU6gUbSI.js → async-BfR0vYHo.js} +8 -46
  120. package/build/server/chunks/async-BfR0vYHo.js.map +1 -0
  121. package/build/server/chunks/client-bj7sePQc.js +7 -0
  122. package/build/server/chunks/{client-BZtxOgbR.js.map → client-bj7sePQc.js.map} +1 -1
  123. package/build/server/chunks/{client2-LilSGYJA.js → client2-BX4-xbM4.js} +6 -5
  124. package/build/server/chunks/{client2-LilSGYJA.js.map → client2-BX4-xbM4.js.map} +1 -1
  125. package/build/server/chunks/error.svelte-D5sIJv3P.js +18 -0
  126. package/build/server/chunks/error.svelte-D5sIJv3P.js.map +1 -0
  127. package/build/server/chunks/event-DVH-6ISX.js +64 -0
  128. package/build/server/chunks/event-DVH-6ISX.js.map +1 -0
  129. package/build/server/chunks/{exports-DiyTWREe.js → exports-Cv9LZeD1.js} +2 -39
  130. package/build/server/chunks/exports-Cv9LZeD1.js.map +1 -0
  131. package/build/server/chunks/hooks.server-_TKfdzGA.js +26 -0
  132. package/build/server/chunks/hooks.server-_TKfdzGA.js.map +1 -0
  133. package/build/server/chunks/{index-XFKuhGxM.js → index-EKt9-9bV.js} +2 -2
  134. package/build/server/chunks/{index-XFKuhGxM.js.map → index-EKt9-9bV.js.map} +1 -1
  135. package/build/server/chunks/{index3-CUhdJ7wv.js → index3-DquTjlmp.js} +3 -3
  136. package/build/server/chunks/index3-DquTjlmp.js.map +1 -0
  137. package/build/server/chunks/{notifications.svelte-CrTIrfvL.js → notifications.svelte-CIqkoPWX.js} +6 -12
  138. package/build/server/chunks/notifications.svelte-CIqkoPWX.js.map +1 -0
  139. package/build/server/chunks/remote-xxtqbu-BFzaWXy0.js +234 -0
  140. package/build/server/chunks/remote-xxtqbu-BFzaWXy0.js.map +1 -0
  141. package/build/server/chunks/{routing-zIlQn_LN.js → routing-Ddj5b-2K.js} +25 -4
  142. package/build/server/chunks/routing-Ddj5b-2K.js.map +1 -0
  143. package/build/server/chunks/{server2-DfQrrcsk.js → server2-BOoUfKd7.js} +3 -3
  144. package/build/server/chunks/{server2-DfQrrcsk.js.map → server2-BOoUfKd7.js.map} +1 -1
  145. package/build/server/chunks/{state.svelte-s-CFCWQX.js → state.svelte-CRHA9yov.js} +3 -2
  146. package/build/server/chunks/{state.svelte-s-CFCWQX.js.map → state.svelte-CRHA9yov.js.map} +1 -1
  147. package/build/server/chunks/utils-DGYJFmnf.js +39 -0
  148. package/build/server/chunks/utils-DGYJFmnf.js.map +1 -0
  149. package/build/server/index.js +71 -24
  150. package/build/server/index.js.map +1 -1
  151. package/build/server/manifest.js +9 -30
  152. package/build/server/manifest.js.map +1 -1
  153. package/cli.ts +148 -0
  154. package/dist/cli.js +3 -4
  155. package/ecosystem.config.js +9 -0
  156. package/package.json +88 -81
  157. package/src/api/servers.remote.ts +98 -0
  158. package/src/app.css +228 -0
  159. package/src/app.d.ts +16 -0
  160. package/src/app.html +11 -0
  161. package/src/hooks.server.ts +34 -0
  162. package/src/lib/components/Breadcrumbs.svelte +133 -0
  163. package/src/lib/components/JsonValue.svelte +248 -0
  164. package/src/lib/components/Notifications.svelte +81 -0
  165. package/src/lib/components/Panel.svelte +37 -0
  166. package/src/lib/components/PrettyJson.svelte +187 -0
  167. package/src/lib/components/SearchBox.svelte +160 -0
  168. package/src/lib/components/TooltipTable.svelte +137 -0
  169. package/src/lib/server/HostsManager.ts +105 -0
  170. package/src/lib/server/JsonEncoder.ts +62 -0
  171. package/src/lib/server/mongo.ts +199 -0
  172. package/src/lib/stores/notifications.svelte.ts +45 -0
  173. package/src/lib/types.ts +56 -0
  174. package/src/lib/utils/filters.ts +25 -0
  175. package/src/lib/utils/jsonParser.ts +125 -0
  176. package/src/routes/+layout.server.ts +7 -0
  177. package/src/routes/+layout.svelte +27 -0
  178. package/src/routes/+page.server.ts +6 -0
  179. package/src/routes/servers/+page.server.ts +53 -0
  180. package/src/routes/servers/+page.svelte +196 -0
  181. package/src/routes/servers/[server]/databases/+page.server.ts +47 -0
  182. package/src/routes/servers/[server]/databases/+page.svelte +88 -0
  183. package/src/routes/servers/[server]/databases/[database]/collections/+page.server.ts +21 -0
  184. package/src/routes/servers/[server]/databases/[database]/collections/+page.svelte +110 -0
  185. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/+page.server.ts +106 -0
  186. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/+page.svelte +174 -0
  187. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/[document]/+page.server.ts +25 -0
  188. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/[document]/+page.svelte +90 -0
  189. package/src/tests/api/readonly.test.ts +89 -0
  190. package/src/tests/setup.ts +19 -0
  191. package/svelte.config.js +28 -0
  192. package/tsconfig.cli.json +15 -0
  193. package/tsconfig.json +19 -0
  194. package/vite.config.ts +7 -0
  195. package/build/client/_app/immutable/chunks/B-Z1NsR7.js +0 -1
  196. package/build/client/_app/immutable/chunks/B-Z1NsR7.js.br +0 -0
  197. package/build/client/_app/immutable/chunks/B-Z1NsR7.js.gz +0 -0
  198. package/build/client/_app/immutable/chunks/BEuO9qGi.js.br +0 -0
  199. package/build/client/_app/immutable/chunks/BEuO9qGi.js.gz +0 -0
  200. package/build/client/_app/immutable/chunks/BuIrCFA_.js +0 -1
  201. package/build/client/_app/immutable/chunks/BuIrCFA_.js.br +0 -0
  202. package/build/client/_app/immutable/chunks/BuIrCFA_.js.gz +0 -0
  203. package/build/client/_app/immutable/chunks/C9b4uNov.js +0 -1
  204. package/build/client/_app/immutable/chunks/C9b4uNov.js.br +0 -0
  205. package/build/client/_app/immutable/chunks/C9b4uNov.js.gz +0 -0
  206. package/build/client/_app/immutable/chunks/CIYBIyvN.js +0 -1
  207. package/build/client/_app/immutable/chunks/CIYBIyvN.js.br +0 -0
  208. package/build/client/_app/immutable/chunks/CIYBIyvN.js.gz +0 -0
  209. package/build/client/_app/immutable/chunks/CWUhQKKC.js +0 -1
  210. package/build/client/_app/immutable/chunks/CWUhQKKC.js.br +0 -0
  211. package/build/client/_app/immutable/chunks/CWUhQKKC.js.gz +0 -0
  212. package/build/client/_app/immutable/chunks/CrJSDly5.js +0 -2
  213. package/build/client/_app/immutable/chunks/CrJSDly5.js.br +0 -0
  214. package/build/client/_app/immutable/chunks/CrJSDly5.js.gz +0 -0
  215. package/build/client/_app/immutable/chunks/DRy_44ib.js +0 -1
  216. package/build/client/_app/immutable/chunks/DRy_44ib.js.br +0 -0
  217. package/build/client/_app/immutable/chunks/DRy_44ib.js.gz +0 -0
  218. package/build/client/_app/immutable/chunks/DS5yzhLt.js +0 -1
  219. package/build/client/_app/immutable/chunks/DS5yzhLt.js.br +0 -0
  220. package/build/client/_app/immutable/chunks/DS5yzhLt.js.gz +0 -0
  221. package/build/client/_app/immutable/chunks/DZSJW-Zm.js.br +0 -0
  222. package/build/client/_app/immutable/chunks/DZSJW-Zm.js.gz +0 -0
  223. package/build/client/_app/immutable/chunks/Dbyirw23.js.br +0 -0
  224. package/build/client/_app/immutable/chunks/Dbyirw23.js.gz +0 -0
  225. package/build/client/_app/immutable/chunks/DsnmJJEf.js +0 -1
  226. package/build/client/_app/immutable/chunks/DsnmJJEf.js.br +0 -2
  227. package/build/client/_app/immutable/chunks/DsnmJJEf.js.gz +0 -0
  228. package/build/client/_app/immutable/chunks/DzSHMQR7.js.br +0 -0
  229. package/build/client/_app/immutable/chunks/DzSHMQR7.js.gz +0 -0
  230. package/build/client/_app/immutable/chunks/W-qL5_8w.js.br +0 -0
  231. package/build/client/_app/immutable/chunks/W-qL5_8w.js.gz +0 -0
  232. package/build/client/_app/immutable/chunks/aB6hH3ax.js +0 -3
  233. package/build/client/_app/immutable/chunks/aB6hH3ax.js.br +0 -0
  234. package/build/client/_app/immutable/chunks/aB6hH3ax.js.gz +0 -0
  235. package/build/client/_app/immutable/chunks/nJ6DKbk8.js +0 -1
  236. package/build/client/_app/immutable/chunks/nJ6DKbk8.js.br +0 -0
  237. package/build/client/_app/immutable/chunks/nJ6DKbk8.js.gz +0 -0
  238. package/build/client/_app/immutable/chunks/zeTqHWB5.js +0 -2
  239. package/build/client/_app/immutable/chunks/zeTqHWB5.js.br +0 -0
  240. package/build/client/_app/immutable/chunks/zeTqHWB5.js.gz +0 -0
  241. package/build/client/_app/immutable/entry/app.CW91YXu8.js +0 -2
  242. package/build/client/_app/immutable/entry/app.CW91YXu8.js.br +0 -0
  243. package/build/client/_app/immutable/entry/app.CW91YXu8.js.gz +0 -0
  244. package/build/client/_app/immutable/entry/start.CidwPVgO.js +0 -1
  245. package/build/client/_app/immutable/entry/start.CidwPVgO.js.br +0 -2
  246. package/build/client/_app/immutable/entry/start.CidwPVgO.js.gz +0 -0
  247. package/build/client/_app/immutable/nodes/0.B2lBDs71.js.br +0 -0
  248. package/build/client/_app/immutable/nodes/0.B2lBDs71.js.gz +0 -0
  249. package/build/client/_app/immutable/nodes/1.CueZCvtl.js +0 -1
  250. package/build/client/_app/immutable/nodes/1.CueZCvtl.js.br +0 -0
  251. package/build/client/_app/immutable/nodes/1.CueZCvtl.js.gz +0 -0
  252. package/build/client/_app/immutable/nodes/3.alYAlI3j.js +0 -1
  253. package/build/client/_app/immutable/nodes/3.alYAlI3j.js.br +0 -0
  254. package/build/client/_app/immutable/nodes/3.alYAlI3j.js.gz +0 -0
  255. package/build/client/_app/immutable/nodes/4.BqBphmVX.js.br +0 -0
  256. package/build/client/_app/immutable/nodes/4.BqBphmVX.js.gz +0 -0
  257. package/build/client/_app/immutable/nodes/5.BkAWRgl4.js.br +0 -0
  258. package/build/client/_app/immutable/nodes/5.BkAWRgl4.js.gz +0 -0
  259. package/build/client/_app/immutable/nodes/6.KI4mq5ln.js +0 -1
  260. package/build/client/_app/immutable/nodes/6.KI4mq5ln.js.br +0 -0
  261. package/build/client/_app/immutable/nodes/6.KI4mq5ln.js.gz +0 -0
  262. package/build/client/_app/immutable/nodes/7.Brjrw0K8.js +0 -1
  263. package/build/client/_app/immutable/nodes/7.Brjrw0K8.js.br +0 -0
  264. package/build/client/_app/immutable/nodes/7.Brjrw0K8.js.gz +0 -0
  265. package/build/server/chunks/1-Ch0AY58K.js +0 -9
  266. package/build/server/chunks/6-D8zNoyW_.js.map +0 -1
  267. package/build/server/chunks/Panel-DTdYk-gk.js.map +0 -1
  268. package/build/server/chunks/PrettyJson-wIuHvehp.js.map +0 -1
  269. package/build/server/chunks/TooltipTable-J278e1CA.js.map +0 -1
  270. package/build/server/chunks/_layout.svelte-D7RD9tLN.js.map +0 -1
  271. package/build/server/chunks/_page.svelte-4PYYtPii.js.map +0 -1
  272. package/build/server/chunks/_page.svelte-Be5VTn1e.js.map +0 -1
  273. package/build/server/chunks/_page.svelte-DIPUjSjm.js.map +0 -1
  274. package/build/server/chunks/_page.svelte-DZ59Sr3N.js.map +0 -1
  275. package/build/server/chunks/_page.svelte-sdKGQrEF.js +0 -91
  276. package/build/server/chunks/_page.svelte-sdKGQrEF.js.map +0 -1
  277. package/build/server/chunks/_server.ts-BIRebnb3.js +0 -20
  278. package/build/server/chunks/_server.ts-BIRebnb3.js.map +0 -1
  279. package/build/server/chunks/_server.ts-MnKJDybo.js +0 -19
  280. package/build/server/chunks/_server.ts-MnKJDybo.js.map +0 -1
  281. package/build/server/chunks/_server.ts-Tog8k3Mh.js +0 -52
  282. package/build/server/chunks/_server.ts-Tog8k3Mh.js.map +0 -1
  283. package/build/server/chunks/client-BZtxOgbR.js +0 -7
  284. package/build/server/chunks/context-BU6gUbSI.js.map +0 -1
  285. package/build/server/chunks/error.svelte-BfneeC-d.js +0 -16
  286. package/build/server/chunks/error.svelte-BfneeC-d.js.map +0 -1
  287. package/build/server/chunks/exports-DiyTWREe.js.map +0 -1
  288. package/build/server/chunks/hooks.server-DNhdbQNi.js +0 -7
  289. package/build/server/chunks/hooks.server-DNhdbQNi.js.map +0 -1
  290. package/build/server/chunks/index3-CUhdJ7wv.js.map +0 -1
  291. package/build/server/chunks/notifications.svelte-CrTIrfvL.js.map +0 -1
  292. package/build/server/chunks/routing-zIlQn_LN.js.map +0 -1
package/src/app.css ADDED
@@ -0,0 +1,228 @@
1
+ @import "tailwindcss";
2
+ @import "@fontsource/cuprum";
3
+ @import "@fontsource/rajdhani";
4
+
5
+ @tailwind base;
6
+ @tailwind components;
7
+ @tailwind utilities;
8
+
9
+ :root {
10
+ --color-1: hsl(216, 26%, 15%);
11
+ --color-1-5: hsl(218, 25%, 18%);
12
+ --color-2: hsl(220, 23%, 21%);
13
+ --color-3: hsl(217, 20%, 25%);
14
+ --color-4: hsl(220, 20%, 30%);
15
+
16
+ --background-color: var(--color-1);
17
+ --border-color: var(--color-3);
18
+
19
+ --text: hsl(0, 0%, 88%);
20
+ --text-inverse: hsl(0, 0%, 12%);
21
+ --text-darker: hsl(0, 0%, 57%);
22
+ --text-lighter: hsl(0, 0%, 100%);
23
+ --link: hsl(211, 100%, 89%);
24
+
25
+ --error: hsl(0, 78%, 28%);
26
+
27
+ --button-danger: #a31515;
28
+ --button-danger-l: #a54c4c;
29
+ --button-success: #008000;
30
+ --button-success-l: #4e994e;
31
+ --button-light: hsl(0, 0%, 88%);
32
+
33
+ --code-namespace: #9cdcfe;
34
+ --code-boolean: #569cd6;
35
+ --code-null: #569cd6;
36
+ --code-numbers: #b5cea8;
37
+ --code-string: #ce9178;
38
+ --code-links: #4e94ce;
39
+ --code-summary: #6a9955;
40
+ --code-regexp: #ce696b;
41
+ --code-function: #dcdcaa;
42
+
43
+ --border: 1px solid var(--color-3);
44
+ }
45
+
46
+ @layer base {
47
+ body {
48
+ background-color: var(--background-color);
49
+ font-family: "Rajdhani", sans-serif;
50
+ color: var(--text);
51
+ min-height: 100vh;
52
+ }
53
+
54
+ a:hover {
55
+ text-decoration: underline;
56
+ }
57
+
58
+ input[type="text"],
59
+ input[type="number"],
60
+ textarea {
61
+ @apply rounded-md px-2 py-1.5 text-sm;
62
+ background-color: var(--color-1);
63
+ color: var(--text);
64
+ border: 1px solid var(--color-4);
65
+ }
66
+
67
+ input[type="text"]:focus,
68
+ input[type="number"]:focus,
69
+ textarea:focus {
70
+ outline: none;
71
+ border-color: var(--link);
72
+ }
73
+ }
74
+
75
+ @layer utilities {
76
+ .dotted {
77
+ border-bottom: 1px dotted var(--text);
78
+ cursor: help;
79
+ }
80
+
81
+ .error {
82
+ color: var(--error);
83
+ }
84
+ }
85
+
86
+ @layer components {
87
+ .btn {
88
+ @apply px-4 py-2 rounded-md cursor-pointer font-medium transition-all duration-200 border;
89
+ }
90
+
91
+ .btn-sm {
92
+ @apply px-2 py-1.5 text-sm;
93
+ }
94
+
95
+ .btn-default {
96
+ background-color: var(--color-1);
97
+ color: var(--text);
98
+ border-color: var(--color-4);
99
+ }
100
+
101
+ .btn-default:hover {
102
+ background-color: var(--color-3);
103
+ }
104
+
105
+ .btn-danger {
106
+ background-color: var(--button-danger-l);
107
+ color: var(--text-lighter);
108
+ border-color: var(--button-danger);
109
+ }
110
+
111
+ .btn-danger:hover {
112
+ background-color: var(--button-danger);
113
+ }
114
+
115
+ .btn-success {
116
+ background-color: var(--button-success-l);
117
+ color: var(--text-lighter);
118
+ border-color: var(--button-success);
119
+ }
120
+
121
+ .btn-success:hover {
122
+ background-color: var(--button-success);
123
+ }
124
+
125
+ .btn-outline-danger {
126
+ background: transparent;
127
+ color: var(--button-danger);
128
+ border-color: var(--button-danger);
129
+ }
130
+
131
+ .btn-outline-danger:hover {
132
+ background-color: var(--button-danger-l);
133
+ color: var(--text-lighter);
134
+ }
135
+
136
+ .btn-outline-success {
137
+ background: transparent;
138
+ color: var(--button-success);
139
+ border-color: var(--button-success);
140
+ }
141
+
142
+ .btn-outline-success:hover {
143
+ background-color: var(--button-success-l);
144
+ color: var(--text-lighter);
145
+ }
146
+
147
+ .btn:disabled {
148
+ opacity: 0.5;
149
+ cursor: not-allowed;
150
+ }
151
+
152
+ .table {
153
+ width: 100%;
154
+ border-collapse: collapse;
155
+ }
156
+
157
+ .table thead tr {
158
+ background-color: var(--color-3);
159
+ }
160
+
161
+ .table th,
162
+ .table td {
163
+ padding: 12px;
164
+ text-align: left;
165
+ border-bottom: 1px solid var(--border-color);
166
+ }
167
+
168
+ .table th {
169
+ font-weight: 500;
170
+ color: var(--text-lighter);
171
+ }
172
+
173
+ .table tbody tr:hover {
174
+ background-color: var(--color-1-5);
175
+ }
176
+
177
+ .badge {
178
+ display: inline-block;
179
+ padding: 4px 8px;
180
+ border-radius: 3px;
181
+ font-size: 12px;
182
+ margin-right: 8px;
183
+ }
184
+
185
+ .badge-danger {
186
+ background-color: var(--button-danger);
187
+ color: var(--text-lighter);
188
+ }
189
+
190
+ .modal-overlay {
191
+ position: fixed;
192
+ top: 0;
193
+ left: 0;
194
+ right: 0;
195
+ bottom: 0;
196
+ background-color: rgba(0, 0, 0, 0.5);
197
+ display: flex;
198
+ align-items: center;
199
+ justify-content: center;
200
+ z-index: 1000;
201
+ }
202
+
203
+ .modal {
204
+ background-color: var(--color-2);
205
+ border: 1px solid var(--color-3);
206
+ border-radius: 4px;
207
+ max-width: 500px;
208
+ width: 90%;
209
+ }
210
+
211
+ .modal-body {
212
+ padding: 20px;
213
+ }
214
+
215
+ .modal-footer {
216
+ border-top: 1px solid var(--color-3);
217
+ padding: 15px 20px;
218
+ display: flex;
219
+ justify-content: flex-end;
220
+ gap: 10px;
221
+ }
222
+
223
+ .loading {
224
+ text-align: center;
225
+ padding: 40px;
226
+ color: var(--text-darker);
227
+ }
228
+ }
package/src/app.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ // See https://svelte.dev/docs/kit/types#app.d.ts
2
+ // for information about these interfaces
3
+ declare global {
4
+ namespace App {
5
+ interface Error {
6
+ message: string;
7
+ code?: number | string;
8
+ }
9
+ // interface Locals {}
10
+ // interface PageData {}
11
+ // interface PageState {}
12
+ // interface Platform {}
13
+ }
14
+ }
15
+
16
+ export {};
package/src/app.html ADDED
@@ -0,0 +1,11 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ %sveltekit.head%
7
+ </head>
8
+ <body data-sveltekit-preload-data="hover">
9
+ <div style="display: contents">%sveltekit.body%</div>
10
+ </body>
11
+ </html>
@@ -0,0 +1,34 @@
1
+ import type { Handle, HandleServerError } from "@sveltejs/kit";
2
+ import { MongoError } from "mongodb";
3
+
4
+ // Bigger than the default 10, helpful with MongoDB errors
5
+ Error.stackTraceLimit = 100;
6
+
7
+ export const handle: Handle = async ({ event, resolve }) => {
8
+ return resolve(event);
9
+ };
10
+
11
+ export const handleError: HandleServerError = ({ error }) => {
12
+ // Log the error server-side
13
+ console.error(error);
14
+
15
+ // Handle MongoDB errors specifically
16
+ if (error instanceof MongoError) {
17
+ return {
18
+ message: error.message,
19
+ code: error.code,
20
+ };
21
+ }
22
+
23
+ // Handle standard errors
24
+ if (error instanceof Error) {
25
+ return {
26
+ message: error.message,
27
+ };
28
+ }
29
+
30
+ // Fallback for unknown error types
31
+ return {
32
+ message: "An unexpected error occurred",
33
+ };
34
+ };
@@ -0,0 +1,133 @@
1
+ <script lang="ts">
2
+ import { resolve } from "$app/paths";
3
+ import { page } from "$app/state";
4
+ import { serverName } from "$lib/utils/filters";
5
+
6
+ interface BreadcrumbItem {
7
+ label: string;
8
+ href?: string;
9
+ }
10
+
11
+ function getBreadcrumbs(pathname: string, params: Record<string, string>): BreadcrumbItem[] {
12
+ const breadcrumbs: BreadcrumbItem[] = [];
13
+
14
+ // Parse the path segments
15
+ const segments = pathname.split("/").filter(Boolean);
16
+
17
+ if (segments.length === 0) {
18
+ // We're at home, no breadcrumbs needed
19
+ return [];
20
+ }
21
+
22
+ if (segments[0] === "servers" && segments.length >= 3) {
23
+ const server = decodeURIComponent(params.server || "");
24
+ const serverDisplayName = serverName(server);
25
+
26
+ if (segments[2] === "databases") {
27
+ // /servers/{server}/databases
28
+ breadcrumbs.push({
29
+ label: serverDisplayName,
30
+ href: `/servers/${encodeURIComponent(server)}/databases`,
31
+ });
32
+
33
+ if (segments.length >= 5 && segments[3] && segments[4] === "collections") {
34
+ const database = decodeURIComponent(params.database || "");
35
+ // /servers/{server}/databases/{database}/collections
36
+ breadcrumbs.push({
37
+ label: database,
38
+ href: `/servers/${encodeURIComponent(server)}/databases/${encodeURIComponent(database)}/collections`,
39
+ });
40
+
41
+ if (segments.length >= 6 && segments[5]) {
42
+ const collection = decodeURIComponent(params.collection || "");
43
+
44
+ if (segments.length === 6) {
45
+ // /servers/{server}/databases/{database}/collections/{collection}
46
+ breadcrumbs.push({
47
+ label: collection,
48
+ });
49
+ } else if (segments.length >= 7 && segments[6] === "documents" && segments[7]) {
50
+ // /servers/{server}/databases/{database}/collections/{collection}/documents/{document}
51
+ breadcrumbs.push({
52
+ label: collection,
53
+ href: `/servers/${encodeURIComponent(server)}/databases/${encodeURIComponent(database)}/collections/${encodeURIComponent(collection)}`,
54
+ });
55
+
56
+ breadcrumbs.push({
57
+ label: decodeURIComponent(params.document || "[Document]"),
58
+ });
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+
65
+ return breadcrumbs;
66
+ }
67
+
68
+ const breadcrumbs = $derived(getBreadcrumbs(page.url.pathname, page.params));
69
+ </script>
70
+
71
+ {#if breadcrumbs.length > 0}
72
+ <nav class="breadcrumbs" aria-label="Breadcrumb">
73
+ <ol class="breadcrumb-list">
74
+ {#each breadcrumbs as crumb, index (index)}
75
+ <li class="breadcrumb-item">
76
+ {#if crumb.href && index < breadcrumbs.length - 1}
77
+ <!-- eslint-disable-next-line @typescript-eslint/no-explicit-any -->
78
+ <a href={resolve(crumb.href as any)} class="breadcrumb-link">{crumb.label}</a>
79
+ {:else}
80
+ <span class="breadcrumb-current">{crumb.label}</span>
81
+ {/if}
82
+ {#if index < breadcrumbs.length - 1}
83
+ <span class="breadcrumb-separator">/</span>
84
+ {/if}
85
+ </li>
86
+ {/each}
87
+ </ol>
88
+ </nav>
89
+ {/if}
90
+
91
+ <style lang="postcss">
92
+ .breadcrumbs {
93
+ margin-left: 20px;
94
+ font-size: 16px;
95
+ }
96
+
97
+ .breadcrumb-list {
98
+ display: flex;
99
+ align-items: center;
100
+ list-style: none;
101
+ margin: 0;
102
+ padding: 0;
103
+ gap: 8px;
104
+ }
105
+
106
+ .breadcrumb-item {
107
+ display: flex;
108
+ align-items: center;
109
+ gap: 8px;
110
+ }
111
+
112
+ .breadcrumb-link {
113
+ color: var(--text);
114
+ text-decoration: none;
115
+ transition: color 0.2s;
116
+
117
+ &:hover {
118
+ color: var(--text);
119
+ text-decoration: underline;
120
+ }
121
+ }
122
+
123
+ .breadcrumb-current {
124
+ color: var(--text-darker);
125
+ font-weight: 500;
126
+ }
127
+
128
+ .breadcrumb-separator {
129
+ color: var(--text-darker);
130
+ font-weight: 300;
131
+ user-select: none;
132
+ }
133
+ </style>
@@ -0,0 +1,248 @@
1
+ <script lang="ts">
2
+ import JsonValue from "./JsonValue.svelte";
3
+
4
+ const INDENT = " ";
5
+
6
+ interface Props {
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ value: any;
9
+ key?: string;
10
+ /** are sub items collapsed by default*/
11
+ autoCollapse?: boolean;
12
+ /** is it collapsed at top level */
13
+ collapsed?: boolean;
14
+ depth?: number;
15
+ localTopLevel?: boolean;
16
+ }
17
+
18
+ let { value, key, autoCollapse = false, collapsed = false, localTopLevel = true, depth = 0 }: Props = $props();
19
+
20
+ function toggleCollapse() {
21
+ collapsed = !collapsed;
22
+ }
23
+
24
+ function getIndent(level: number): string {
25
+ return INDENT.repeat(level);
26
+ }
27
+
28
+ function isUrl(str: string): boolean {
29
+ return /^https?:\/\/[^\s]+$/.test(str);
30
+ }
31
+
32
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
+ function getValueType(val: any): string {
34
+ if (val === null) return "null";
35
+ if (Array.isArray(val)) return "array";
36
+
37
+ switch (typeof val) {
38
+ case "boolean":
39
+ return "boolean";
40
+ case "number":
41
+ return "number";
42
+ case "string":
43
+ return "string";
44
+ case "object":
45
+ switch (val.$type) {
46
+ case "ObjectId":
47
+ return "objectid";
48
+ case "Date":
49
+ return "date";
50
+ case "RegExp":
51
+ return "regexp";
52
+ default:
53
+ return "object";
54
+ }
55
+ default:
56
+ return "unknown";
57
+ }
58
+ }
59
+
60
+ let valueType = $derived(getValueType(value));
61
+ let isCollapsible = $derived(valueType === "array" || valueType === "object");
62
+ let isEmpty = $derived(
63
+ (valueType === "array" && value.length === 0) || (valueType === "object" && Object.keys(value).length === 0),
64
+ );
65
+ </script>
66
+
67
+ {#if key !== undefined}
68
+ <span class="prop" class:collapsible={isCollapsible && !isEmpty} class:collapsed>
69
+ {getIndent(depth + 1)}<var>{key}</var>: <JsonValue
70
+ {value}
71
+ {autoCollapse}
72
+ collapsed={autoCollapse}
73
+ depth={depth + 1}
74
+ localTopLevel={false}
75
+ />
76
+ </span>
77
+ {:else}
78
+ <!-- Root value rendering -->
79
+ {#if valueType === "string"}
80
+ <span class="value quoted">
81
+ "<span class="string" class:url={isUrl(value)}>
82
+ {#if isUrl(value)}
83
+ <!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
84
+ <a href={value} target="_blank">{value}</a>
85
+ {:else}
86
+ {value}
87
+ {/if}
88
+ </span>"
89
+ </span>
90
+ {:else if valueType === "number"}
91
+ <span class="value number">{value}</span>
92
+ {:else if valueType === "boolean"}
93
+ <span class="value boolean">{value}</span>
94
+ {:else if valueType === "null"}
95
+ <span class="value null">null</span>
96
+ {:else if valueType === "objectid"}
97
+ <span class="call function">ObjectId("<span class="string">{value.$value}</span>")</span>
98
+ {:else if valueType === "date"}
99
+ <span class="call function">Date("<span class="string">{value.$value}</span>")</span>
100
+ {:else if valueType === "regexp"}
101
+ <span class="value regexp">/{value.$value.$pattern}/{value.$value.$flags}</span>
102
+ {:else if valueType === "array"}
103
+ {#if isEmpty}
104
+ <span class="value array">[]</span>
105
+ {:else}
106
+ <span class="collapsible-wrapper" class:collapsed class:expanded={!collapsed}>
107
+ <button class="collapse-toggle" onclick={toggleCollapse}>
108
+ {collapsed ? "▶" : "▼"}
109
+ </button><span class="value array">
110
+ [<span class="collapsible-content" class:hidden={collapsed}>
111
+ {#each value as item, i (i)}
112
+ <br />{getIndent(depth + 1)}<JsonValue
113
+ value={item}
114
+ {autoCollapse}
115
+ collapsed={false}
116
+ depth={depth + 1}
117
+ />{/each}
118
+ <br />{getIndent(depth)}
119
+ </span>{#if collapsed}
120
+ <span class="collapsed-summary">... {value.length} item{value.length !== 1 ? "s" : ""}</span>
121
+ {/if}]
122
+ </span>
123
+ </span>
124
+ {/if}
125
+ {:else if valueType === "object"}
126
+ {#if isEmpty}
127
+ <span class="value object">{"{}"}</span>
128
+ {:else}
129
+ <span class="collapsible-wrapper" class:collapsed class:expanded={!collapsed}>
130
+ {#if depth !== 0}<button class="collapse-toggle" class:local-top-level={localTopLevel} onclick={toggleCollapse}>
131
+ {collapsed ? "▶" : "▼"}
132
+ </button>{/if}<span class="value object">
133
+ {"{"}<span class="collapsible-content" class:hidden={collapsed}
134
+ >{#each Object.keys(value) as objKey (objKey)}
135
+ <JsonValue value={value[objKey]} key={objKey} {autoCollapse} collapsed={autoCollapse} {depth} />{/each}
136
+ </span>{#if collapsed}
137
+ <span class="collapsed-summary"
138
+ >... {Object.keys(value).length} key{Object.keys(value).length !== 1 ? "s" : ""}</span
139
+ >
140
+ {:else}
141
+ {getIndent(depth)}
142
+ {/if}}
143
+ </span>
144
+ </span>
145
+ {/if}
146
+ {:else}
147
+ <span>{String(value)}</span>
148
+ {/if}{#if depth !== 0},{/if}
149
+ {/if}
150
+
151
+ <style lang="postcss">
152
+ .prop {
153
+ position: relative;
154
+ display: block;
155
+ }
156
+
157
+ .collapsible-wrapper {
158
+ display: inline;
159
+ position: relative;
160
+
161
+ .collapse-toggle {
162
+ display: inline-block;
163
+ width: 16px;
164
+ cursor: pointer;
165
+ user-select: none;
166
+ color: var(--text-secondary, #888);
167
+ font-size: 12px;
168
+ margin-right: 4px;
169
+ transition: color 0.2s;
170
+ background: none;
171
+ border: none;
172
+ padding: 0;
173
+ font-family: inherit;
174
+
175
+ &.local-top-level {
176
+ position: absolute;
177
+ left: -18px;
178
+ margin-top: 4px;
179
+ }
180
+
181
+ &:hover {
182
+ color: var(--text, #fff);
183
+ }
184
+ }
185
+
186
+ &.collapsed .collapsible-content {
187
+ display: none;
188
+ }
189
+ }
190
+
191
+ .collapsible-content {
192
+ white-space: pre;
193
+
194
+ &.hidden {
195
+ display: none;
196
+ }
197
+ }
198
+
199
+ .collapsed-summary {
200
+ color: var(--text-secondary, #888);
201
+ font-style: italic;
202
+ margin: 0 4px;
203
+ }
204
+
205
+ .value {
206
+ &.number {
207
+ color: var(--code-numbers);
208
+ }
209
+
210
+ &.boolean {
211
+ color: var(--code-boolean);
212
+ }
213
+
214
+ &.null {
215
+ color: var(--code-null);
216
+ }
217
+
218
+ &.quoted {
219
+ .string {
220
+ color: var(--code-string);
221
+
222
+ &.url a {
223
+ color: var(--code-string);
224
+ text-decoration: underline;
225
+
226
+ &:hover {
227
+ color: var(--code-links);
228
+ }
229
+ }
230
+ }
231
+ }
232
+
233
+ &.regexp {
234
+ color: var(--code-regexp);
235
+ }
236
+ }
237
+
238
+ .call {
239
+ &.function {
240
+ color: var(--code-function);
241
+ }
242
+ }
243
+
244
+ var {
245
+ color: var(--code-namespace);
246
+ font-style: normal;
247
+ }
248
+ </style>