mongoku 2.0.2 → 2.0.4

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 (239) hide show
  1. package/Dockerfile +29 -0
  2. package/README.md +9 -7
  3. package/build/client/_app/immutable/assets/0.CEsPYTp2.css +1 -0
  4. package/build/client/_app/immutable/assets/0.CEsPYTp2.css.br +0 -0
  5. package/build/client/_app/immutable/assets/0.CEsPYTp2.css.gz +0 -0
  6. package/build/client/_app/immutable/chunks/B2-iEFN3.js +2 -0
  7. package/build/client/_app/immutable/chunks/B2-iEFN3.js.br +0 -0
  8. package/build/client/_app/immutable/chunks/B2-iEFN3.js.gz +0 -0
  9. package/build/client/_app/immutable/chunks/B5y2vsNr.js +1 -0
  10. package/build/client/_app/immutable/chunks/B5y2vsNr.js.br +0 -0
  11. package/build/client/_app/immutable/chunks/B5y2vsNr.js.gz +0 -0
  12. package/build/client/_app/immutable/chunks/C1z4TjN7.js +1 -0
  13. package/build/client/_app/immutable/chunks/C1z4TjN7.js.br +0 -0
  14. package/build/client/_app/immutable/chunks/C1z4TjN7.js.gz +0 -0
  15. package/build/client/_app/immutable/chunks/CQBaNlA9.js +1 -0
  16. package/build/client/_app/immutable/chunks/CQBaNlA9.js.br +0 -0
  17. package/build/client/_app/immutable/chunks/CQBaNlA9.js.gz +0 -0
  18. package/build/client/_app/immutable/chunks/CVoOGazw.js +4 -0
  19. package/build/client/_app/immutable/chunks/CVoOGazw.js.br +0 -0
  20. package/build/client/_app/immutable/chunks/CVoOGazw.js.gz +0 -0
  21. package/build/client/_app/immutable/chunks/CapOg2jD.js +1 -0
  22. package/build/client/_app/immutable/chunks/CapOg2jD.js.br +0 -0
  23. package/build/client/_app/immutable/chunks/CapOg2jD.js.gz +0 -0
  24. package/build/client/_app/immutable/chunks/{CGIdus8b.js → ChWB6xnu.js} +1 -1
  25. package/build/client/_app/immutable/chunks/ChWB6xnu.js.br +0 -0
  26. package/build/client/_app/immutable/chunks/ChWB6xnu.js.gz +0 -0
  27. package/build/client/_app/immutable/chunks/{MHUppGzk.js → CqnBT2zJ.js} +1 -1
  28. package/build/client/_app/immutable/chunks/CqnBT2zJ.js.br +0 -0
  29. package/build/client/_app/immutable/chunks/CqnBT2zJ.js.gz +0 -0
  30. package/build/client/_app/immutable/chunks/{BdWVCPGW.js → D069mncP.js} +1 -1
  31. package/build/client/_app/immutable/chunks/D069mncP.js.br +0 -0
  32. package/build/client/_app/immutable/chunks/D069mncP.js.gz +0 -0
  33. package/build/client/_app/immutable/chunks/{CN-ecO3-.js → DACrOfV_.js} +9 -9
  34. package/build/client/_app/immutable/chunks/DACrOfV_.js.br +0 -0
  35. package/build/client/_app/immutable/chunks/DACrOfV_.js.gz +0 -0
  36. package/build/client/_app/immutable/chunks/{BKCvWebR.js → DQkpHJGc.js} +1 -1
  37. package/build/client/_app/immutable/chunks/DQkpHJGc.js.br +0 -0
  38. package/build/client/_app/immutable/chunks/{BKCvWebR.js.gz → DQkpHJGc.js.gz} +0 -0
  39. package/build/client/_app/immutable/chunks/DSDD_hFT.js +1 -0
  40. package/build/client/_app/immutable/chunks/DSDD_hFT.js.br +0 -0
  41. package/build/client/_app/immutable/chunks/DSDD_hFT.js.gz +0 -0
  42. package/build/client/_app/immutable/chunks/D_aTX_ol.js +1 -0
  43. package/build/client/_app/immutable/chunks/D_aTX_ol.js.br +0 -0
  44. package/build/client/_app/immutable/chunks/D_aTX_ol.js.gz +0 -0
  45. package/build/client/_app/immutable/chunks/Dg3qHExF.js +1 -0
  46. package/build/client/_app/immutable/chunks/Dg3qHExF.js.br +0 -0
  47. package/build/client/_app/immutable/chunks/Dg3qHExF.js.gz +0 -0
  48. package/build/client/_app/immutable/chunks/{BaB-cr9N.js → Dt6-JRym.js} +1 -1
  49. package/build/client/_app/immutable/chunks/Dt6-JRym.js.br +0 -0
  50. package/build/client/_app/immutable/chunks/{BaB-cr9N.js.gz → Dt6-JRym.js.gz} +0 -0
  51. package/build/client/_app/immutable/chunks/QoKxaG0e.js +1 -0
  52. package/build/client/_app/immutable/chunks/QoKxaG0e.js.br +2 -0
  53. package/build/client/_app/immutable/chunks/QoKxaG0e.js.gz +0 -0
  54. package/build/client/_app/immutable/chunks/rtveiEyS.js +1 -0
  55. package/build/client/_app/immutable/chunks/rtveiEyS.js.br +0 -0
  56. package/build/client/_app/immutable/chunks/rtveiEyS.js.gz +0 -0
  57. package/build/client/_app/immutable/entry/app.Cc1FNLNH.js +2 -0
  58. package/build/client/_app/immutable/entry/app.Cc1FNLNH.js.br +0 -0
  59. package/build/client/_app/immutable/entry/app.Cc1FNLNH.js.gz +0 -0
  60. package/build/client/_app/immutable/entry/start.CwqlbFyy.js +1 -0
  61. package/build/client/_app/immutable/entry/start.CwqlbFyy.js.br +2 -0
  62. package/build/client/_app/immutable/entry/start.CwqlbFyy.js.gz +0 -0
  63. package/build/client/_app/immutable/nodes/0.wBQEpdjZ.js +1 -0
  64. package/build/client/_app/immutable/nodes/0.wBQEpdjZ.js.br +0 -0
  65. package/build/client/_app/immutable/nodes/0.wBQEpdjZ.js.gz +0 -0
  66. package/build/client/_app/immutable/nodes/1.K6-n7D0b.js +1 -0
  67. package/build/client/_app/immutable/nodes/1.K6-n7D0b.js.br +0 -0
  68. package/build/client/_app/immutable/nodes/1.K6-n7D0b.js.gz +0 -0
  69. package/build/client/_app/immutable/nodes/3.DkGcIF98.js +1 -0
  70. package/build/client/_app/immutable/nodes/3.DkGcIF98.js.br +0 -0
  71. package/build/client/_app/immutable/nodes/3.DkGcIF98.js.gz +0 -0
  72. package/build/client/_app/immutable/nodes/{4.DQfaAvJi.js → 4.C_NxbT98.js} +1 -1
  73. package/build/client/_app/immutable/nodes/4.C_NxbT98.js.br +0 -0
  74. package/build/client/_app/immutable/nodes/4.C_NxbT98.js.gz +0 -0
  75. package/build/client/_app/immutable/nodes/{5.B1E6iW2R.js → 5.CFvfYaLM.js} +1 -1
  76. package/build/client/_app/immutable/nodes/5.CFvfYaLM.js.br +0 -0
  77. package/build/client/_app/immutable/nodes/5.CFvfYaLM.js.gz +0 -0
  78. package/build/client/_app/immutable/nodes/6.h34Zyorq.js +1 -0
  79. package/build/client/_app/immutable/nodes/6.h34Zyorq.js.br +0 -0
  80. package/build/client/_app/immutable/nodes/6.h34Zyorq.js.gz +0 -0
  81. package/build/client/_app/immutable/nodes/{7.qpcLWZb7.js → 7.BVJmNbU5.js} +1 -1
  82. package/build/client/_app/immutable/nodes/7.BVJmNbU5.js.br +0 -0
  83. package/build/client/_app/immutable/nodes/7.BVJmNbU5.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-m42kIUxj.js → 0-Cb5ytlMI.js} +4 -4
  88. package/build/server/chunks/{0-m42kIUxj.js.map → 0-Cb5ytlMI.js.map} +1 -1
  89. package/build/server/chunks/1-Cpb7zRtJ.js +9 -0
  90. package/build/server/chunks/{1-uc74UVG3.js.map → 1-Cpb7zRtJ.js.map} +1 -1
  91. package/build/server/chunks/{3-Bi8teWON.js → 3-B_DkgZkc.js} +3 -3
  92. package/build/server/chunks/{3-Bi8teWON.js.map → 3-B_DkgZkc.js.map} +1 -1
  93. package/build/server/chunks/{4-u1WGAtFU.js → 4-DzHoLo__.js} +3 -3
  94. package/build/server/chunks/{4-u1WGAtFU.js.map → 4-DzHoLo__.js.map} +1 -1
  95. package/build/server/chunks/{5-BlGdcdjs.js → 5-CCWbCDpk.js} +3 -3
  96. package/build/server/chunks/{5-BlGdcdjs.js.map → 5-CCWbCDpk.js.map} +1 -1
  97. package/build/server/chunks/{6-YCp6xyCU.js → 6-Dok8svjB.js} +3 -3
  98. package/build/server/chunks/{6-YCp6xyCU.js.map → 6-Dok8svjB.js.map} +1 -1
  99. package/build/server/chunks/{7-ieA4k9K_.js → 7-CmgJSG2j.js} +3 -3
  100. package/build/server/chunks/{7-ieA4k9K_.js.map → 7-CmgJSG2j.js.map} +1 -1
  101. package/build/server/chunks/{Panel-Box8ld78.js → Panel-Bz0b85EW.js} +2 -2
  102. package/build/server/chunks/{Panel-Box8ld78.js.map → Panel-Bz0b85EW.js.map} +1 -1
  103. package/build/server/chunks/{PrettyJson-C2c9xGNo.js → PrettyJson-CX6-dNsW.js} +6 -5
  104. package/build/server/chunks/PrettyJson-CX6-dNsW.js.map +1 -0
  105. package/build/server/chunks/{_layout.svelte-CU7AVRSZ.js → _layout.svelte-UiDiCQEz.js} +3 -3
  106. package/build/server/chunks/{_layout.svelte-CU7AVRSZ.js.map → _layout.svelte-UiDiCQEz.js.map} +1 -1
  107. package/build/server/chunks/{_page.svelte-B_T8EFk3.js → _page.svelte-FIp-IsOo.js} +4 -4
  108. package/build/server/chunks/{_page.svelte-B_T8EFk3.js.map → _page.svelte-FIp-IsOo.js.map} +1 -1
  109. package/build/server/chunks/{_page.svelte-zlHeUnJK.js → _page.svelte-FLzHOuyK.js} +5 -5
  110. package/build/server/chunks/{_page.svelte-zlHeUnJK.js.map → _page.svelte-FLzHOuyK.js.map} +1 -1
  111. package/build/server/chunks/{_page.svelte-CflJkclc.js → _page.svelte-jxFKbZdN.js} +4 -4
  112. package/build/server/chunks/{_page.svelte-CflJkclc.js.map → _page.svelte-jxFKbZdN.js.map} +1 -1
  113. package/build/server/chunks/{_page.svelte-D1QIZqLv.js → _page.svelte-k8avSQW1.js} +5 -5
  114. package/build/server/chunks/{_page.svelte-D1QIZqLv.js.map → _page.svelte-k8avSQW1.js.map} +1 -1
  115. package/build/server/chunks/{_page.svelte-PuIVQ52p.js → _page.svelte-w9cxGvUf.js} +4 -4
  116. package/build/server/chunks/{_page.svelte-PuIVQ52p.js.map → _page.svelte-w9cxGvUf.js.map} +1 -1
  117. package/build/server/chunks/{routing-Ddj5b-2K.js → routing-DcR4fCSD.js} +6 -2
  118. package/build/server/chunks/routing-DcR4fCSD.js.map +1 -0
  119. package/build/server/chunks/{server2-BOoUfKd7.js → server2-BiqGvkCy.js} +2 -2
  120. package/build/server/chunks/{server2-BOoUfKd7.js.map → server2-BiqGvkCy.js.map} +1 -1
  121. package/build/server/index.js +2 -2
  122. package/build/server/index.js.map +1 -1
  123. package/build/server/manifest.js +8 -8
  124. package/build/server/manifest.js.map +1 -1
  125. package/cli.ts +154 -0
  126. package/dist/cli.js +8 -3
  127. package/ecosystem.config.js +6 -0
  128. package/package.json +10 -2
  129. package/src/api/servers.remote.ts +98 -0
  130. package/src/app.css +228 -0
  131. package/src/app.d.ts +16 -0
  132. package/src/app.html +11 -0
  133. package/src/hooks.server.ts +34 -0
  134. package/src/lib/components/Breadcrumbs.svelte +133 -0
  135. package/src/lib/components/JsonValue.svelte +248 -0
  136. package/src/lib/components/Notifications.svelte +81 -0
  137. package/src/lib/components/Panel.svelte +37 -0
  138. package/src/lib/components/PrettyJson.svelte +197 -0
  139. package/src/lib/components/SearchBox.svelte +160 -0
  140. package/src/lib/components/TooltipTable.svelte +137 -0
  141. package/src/lib/server/HostsManager.ts +105 -0
  142. package/src/lib/server/JsonEncoder.ts +62 -0
  143. package/src/lib/server/mongo.ts +199 -0
  144. package/src/lib/stores/notifications.svelte.ts +45 -0
  145. package/src/lib/types.ts +56 -0
  146. package/src/lib/utils/filters.ts +25 -0
  147. package/src/lib/utils/jsonParser.ts +125 -0
  148. package/src/routes/+layout.server.ts +7 -0
  149. package/src/routes/+layout.svelte +27 -0
  150. package/src/routes/+page.server.ts +6 -0
  151. package/src/routes/servers/+page.server.ts +53 -0
  152. package/src/routes/servers/+page.svelte +196 -0
  153. package/src/routes/servers/[server]/databases/+page.server.ts +47 -0
  154. package/src/routes/servers/[server]/databases/+page.svelte +88 -0
  155. package/src/routes/servers/[server]/databases/[database]/collections/+page.server.ts +21 -0
  156. package/src/routes/servers/[server]/databases/[database]/collections/+page.svelte +110 -0
  157. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/+page.server.ts +106 -0
  158. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/+page.svelte +174 -0
  159. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/[document]/+page.server.ts +25 -0
  160. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/[document]/+page.svelte +90 -0
  161. package/src/tests/api/readonly.test.ts +89 -0
  162. package/src/tests/setup.ts +19 -0
  163. package/svelte.config.js +28 -0
  164. package/tsconfig.cli.json +15 -0
  165. package/tsconfig.json +19 -0
  166. package/vite.config.ts +7 -0
  167. package/build/client/_app/immutable/assets/0.BHsXFfsc.css +0 -1
  168. package/build/client/_app/immutable/assets/0.BHsXFfsc.css.br +0 -0
  169. package/build/client/_app/immutable/assets/0.BHsXFfsc.css.gz +0 -0
  170. package/build/client/_app/immutable/chunks/BFhvhM4X.js +0 -2
  171. package/build/client/_app/immutable/chunks/BFhvhM4X.js.br +0 -0
  172. package/build/client/_app/immutable/chunks/BFhvhM4X.js.gz +0 -0
  173. package/build/client/_app/immutable/chunks/BKCvWebR.js.br +0 -0
  174. package/build/client/_app/immutable/chunks/BY57TmdO.js +0 -1
  175. package/build/client/_app/immutable/chunks/BY57TmdO.js.br +0 -0
  176. package/build/client/_app/immutable/chunks/BY57TmdO.js.gz +0 -0
  177. package/build/client/_app/immutable/chunks/BaB-cr9N.js.br +0 -0
  178. package/build/client/_app/immutable/chunks/BdWVCPGW.js.br +0 -0
  179. package/build/client/_app/immutable/chunks/BdWVCPGW.js.gz +0 -0
  180. package/build/client/_app/immutable/chunks/ByjLCPv2.js +0 -1
  181. package/build/client/_app/immutable/chunks/ByjLCPv2.js.br +0 -0
  182. package/build/client/_app/immutable/chunks/ByjLCPv2.js.gz +0 -0
  183. package/build/client/_app/immutable/chunks/CGIdus8b.js.br +0 -0
  184. package/build/client/_app/immutable/chunks/CGIdus8b.js.gz +0 -0
  185. package/build/client/_app/immutable/chunks/CN-ecO3-.js.br +0 -0
  186. package/build/client/_app/immutable/chunks/CN-ecO3-.js.gz +0 -0
  187. package/build/client/_app/immutable/chunks/D17Lj1H7.js +0 -1
  188. package/build/client/_app/immutable/chunks/D17Lj1H7.js.br +0 -0
  189. package/build/client/_app/immutable/chunks/D17Lj1H7.js.gz +0 -0
  190. package/build/client/_app/immutable/chunks/D72Du7TF.js +0 -1
  191. package/build/client/_app/immutable/chunks/D72Du7TF.js.br +0 -2
  192. package/build/client/_app/immutable/chunks/D72Du7TF.js.gz +0 -0
  193. package/build/client/_app/immutable/chunks/DB3PPjLu.js +0 -4
  194. package/build/client/_app/immutable/chunks/DB3PPjLu.js.br +0 -0
  195. package/build/client/_app/immutable/chunks/DB3PPjLu.js.gz +0 -0
  196. package/build/client/_app/immutable/chunks/MHUppGzk.js.br +0 -0
  197. package/build/client/_app/immutable/chunks/MHUppGzk.js.gz +0 -0
  198. package/build/client/_app/immutable/chunks/_2kcttvK.js +0 -1
  199. package/build/client/_app/immutable/chunks/_2kcttvK.js.br +0 -0
  200. package/build/client/_app/immutable/chunks/_2kcttvK.js.gz +0 -0
  201. package/build/client/_app/immutable/chunks/iHsChU5o.js +0 -1
  202. package/build/client/_app/immutable/chunks/iHsChU5o.js.br +0 -0
  203. package/build/client/_app/immutable/chunks/iHsChU5o.js.gz +0 -0
  204. package/build/client/_app/immutable/chunks/p23QjN60.js +0 -1
  205. package/build/client/_app/immutable/chunks/p23QjN60.js.br +0 -2
  206. package/build/client/_app/immutable/chunks/p23QjN60.js.gz +0 -0
  207. package/build/client/_app/immutable/chunks/sBKW2MYH.js +0 -1
  208. package/build/client/_app/immutable/chunks/sBKW2MYH.js.br +0 -0
  209. package/build/client/_app/immutable/chunks/sBKW2MYH.js.gz +0 -0
  210. package/build/client/_app/immutable/chunks/zXvB9_Mi.js +0 -1
  211. package/build/client/_app/immutable/chunks/zXvB9_Mi.js.br +0 -0
  212. package/build/client/_app/immutable/chunks/zXvB9_Mi.js.gz +0 -0
  213. package/build/client/_app/immutable/entry/app.hGE78f-O.js +0 -2
  214. package/build/client/_app/immutable/entry/app.hGE78f-O.js.br +0 -0
  215. package/build/client/_app/immutable/entry/app.hGE78f-O.js.gz +0 -0
  216. package/build/client/_app/immutable/entry/start._GE1Zd3d.js +0 -1
  217. package/build/client/_app/immutable/entry/start._GE1Zd3d.js.br +0 -2
  218. package/build/client/_app/immutable/entry/start._GE1Zd3d.js.gz +0 -0
  219. package/build/client/_app/immutable/nodes/0.DyBXVtnT.js +0 -1
  220. package/build/client/_app/immutable/nodes/0.DyBXVtnT.js.br +0 -0
  221. package/build/client/_app/immutable/nodes/0.DyBXVtnT.js.gz +0 -0
  222. package/build/client/_app/immutable/nodes/1.FqB0jq88.js +0 -1
  223. package/build/client/_app/immutable/nodes/1.FqB0jq88.js.br +0 -2
  224. package/build/client/_app/immutable/nodes/1.FqB0jq88.js.gz +0 -0
  225. package/build/client/_app/immutable/nodes/3.Bekn_8hM.js +0 -1
  226. package/build/client/_app/immutable/nodes/3.Bekn_8hM.js.br +0 -0
  227. package/build/client/_app/immutable/nodes/3.Bekn_8hM.js.gz +0 -0
  228. package/build/client/_app/immutable/nodes/4.DQfaAvJi.js.br +0 -0
  229. package/build/client/_app/immutable/nodes/4.DQfaAvJi.js.gz +0 -0
  230. package/build/client/_app/immutable/nodes/5.B1E6iW2R.js.br +0 -0
  231. package/build/client/_app/immutable/nodes/5.B1E6iW2R.js.gz +0 -0
  232. package/build/client/_app/immutable/nodes/6.28eZQkvz.js +0 -1
  233. package/build/client/_app/immutable/nodes/6.28eZQkvz.js.br +0 -0
  234. package/build/client/_app/immutable/nodes/6.28eZQkvz.js.gz +0 -0
  235. package/build/client/_app/immutable/nodes/7.qpcLWZb7.js.br +0 -0
  236. package/build/client/_app/immutable/nodes/7.qpcLWZb7.js.gz +0 -0
  237. package/build/server/chunks/1-uc74UVG3.js +0 -9
  238. package/build/server/chunks/PrettyJson-C2c9xGNo.js.map +0 -1
  239. package/build/server/chunks/routing-Ddj5b-2K.js.map +0 -1
@@ -10,16 +10,16 @@ return {
10
10
  assets: new Set(["robots.txt"]),
11
11
  mimeTypes: {".txt":"text/plain"},
12
12
  _: {
13
- client: {start:"_app/immutable/entry/start._GE1Zd3d.js",app:"_app/immutable/entry/app.hGE78f-O.js",imports:["_app/immutable/entry/start._GE1Zd3d.js","_app/immutable/chunks/DB3PPjLu.js","_app/immutable/chunks/sBKW2MYH.js","_app/immutable/chunks/BaB-cr9N.js","_app/immutable/chunks/CGIdus8b.js","_app/immutable/entry/app.hGE78f-O.js","_app/immutable/chunks/BaB-cr9N.js","_app/immutable/chunks/BY57TmdO.js","_app/immutable/chunks/sBKW2MYH.js","_app/immutable/chunks/D17Lj1H7.js","_app/immutable/chunks/D72Du7TF.js","_app/immutable/chunks/iHsChU5o.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
13
+ client: {start:"_app/immutable/entry/start.CwqlbFyy.js",app:"_app/immutable/entry/app.Cc1FNLNH.js",imports:["_app/immutable/entry/start.CwqlbFyy.js","_app/immutable/chunks/CVoOGazw.js","_app/immutable/chunks/D_aTX_ol.js","_app/immutable/chunks/Dt6-JRym.js","_app/immutable/chunks/ChWB6xnu.js","_app/immutable/entry/app.Cc1FNLNH.js","_app/immutable/chunks/Dt6-JRym.js","_app/immutable/chunks/C1z4TjN7.js","_app/immutable/chunks/D_aTX_ol.js","_app/immutable/chunks/rtveiEyS.js","_app/immutable/chunks/QoKxaG0e.js","_app/immutable/chunks/CQBaNlA9.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
14
14
  nodes: [
15
- __memo(() => import('./chunks/0-m42kIUxj.js')),
16
- __memo(() => import('./chunks/1-uc74UVG3.js')),
15
+ __memo(() => import('./chunks/0-Cb5ytlMI.js')),
16
+ __memo(() => import('./chunks/1-Cpb7zRtJ.js')),
17
17
  __memo(() => import('./chunks/2-B39zPvzn.js')),
18
- __memo(() => import('./chunks/3-Bi8teWON.js')),
19
- __memo(() => import('./chunks/4-u1WGAtFU.js')),
20
- __memo(() => import('./chunks/5-BlGdcdjs.js')),
21
- __memo(() => import('./chunks/6-YCp6xyCU.js')),
22
- __memo(() => import('./chunks/7-ieA4k9K_.js'))
18
+ __memo(() => import('./chunks/3-B_DkgZkc.js')),
19
+ __memo(() => import('./chunks/4-DzHoLo__.js')),
20
+ __memo(() => import('./chunks/5-CCWbCDpk.js')),
21
+ __memo(() => import('./chunks/6-Dok8svjB.js')),
22
+ __memo(() => import('./chunks/7-CmgJSG2j.js'))
23
23
  ],
24
24
  remotes: {
25
25
  'xxtqbu': __memo(() => import('./chunks/remote-xxtqbu-BFzaWXy0.js'))
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"robots.txt\"]),\n\tmimeTypes: {\".txt\":\"text/plain\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start._GE1Zd3d.js\",app:\"_app/immutable/entry/app.hGE78f-O.js\",imports:[\"_app/immutable/entry/start._GE1Zd3d.js\",\"_app/immutable/chunks/DB3PPjLu.js\",\"_app/immutable/chunks/sBKW2MYH.js\",\"_app/immutable/chunks/BaB-cr9N.js\",\"_app/immutable/chunks/CGIdus8b.js\",\"_app/immutable/entry/app.hGE78f-O.js\",\"_app/immutable/chunks/BaB-cr9N.js\",\"_app/immutable/chunks/BY57TmdO.js\",\"_app/immutable/chunks/sBKW2MYH.js\",\"_app/immutable/chunks/D17Lj1H7.js\",\"_app/immutable/chunks/D72Du7TF.js\",\"_app/immutable/chunks/iHsChU5o.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js')),\n\t\t\t__memo(() => import('./nodes/7.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t'xxtqbu': __memo(() => import('./chunks/remote-xxtqbu.js'))\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/servers\",\n\t\t\t\tpattern: /^\\/servers\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/servers/[server]/databases\",\n\t\t\t\tpattern: /^\\/servers\\/([^/]+?)\\/databases\\/?$/,\n\t\t\t\tparams: [{\"name\":\"server\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/servers/[server]/databases/[database]/collections\",\n\t\t\t\tpattern: /^\\/servers\\/([^/]+?)\\/databases\\/([^/]+?)\\/collections\\/?$/,\n\t\t\t\tparams: [{\"name\":\"server\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"database\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/servers/[server]/databases/[database]/collections/[collection]\",\n\t\t\t\tpattern: /^\\/servers\\/([^/]+?)\\/databases\\/([^/]+?)\\/collections\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"server\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"database\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"collection\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/servers/[server]/databases/[database]/collections/[collection]/documents/[document]\",\n\t\t\t\tpattern: /^\\/servers\\/([^/]+?)\\/databases\\/([^/]+?)\\/collections\\/([^/]+?)\\/documents\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"server\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"database\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"collection\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"document\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 7 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"robots.txt\"]),\n\tmimeTypes: {\".txt\":\"text/plain\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.CwqlbFyy.js\",app:\"_app/immutable/entry/app.Cc1FNLNH.js\",imports:[\"_app/immutable/entry/start.CwqlbFyy.js\",\"_app/immutable/chunks/CVoOGazw.js\",\"_app/immutable/chunks/D_aTX_ol.js\",\"_app/immutable/chunks/Dt6-JRym.js\",\"_app/immutable/chunks/ChWB6xnu.js\",\"_app/immutable/entry/app.Cc1FNLNH.js\",\"_app/immutable/chunks/Dt6-JRym.js\",\"_app/immutable/chunks/C1z4TjN7.js\",\"_app/immutable/chunks/D_aTX_ol.js\",\"_app/immutable/chunks/rtveiEyS.js\",\"_app/immutable/chunks/QoKxaG0e.js\",\"_app/immutable/chunks/CQBaNlA9.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js')),\n\t\t\t__memo(() => import('./nodes/7.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t'xxtqbu': __memo(() => import('./chunks/remote-xxtqbu.js'))\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/servers\",\n\t\t\t\tpattern: /^\\/servers\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/servers/[server]/databases\",\n\t\t\t\tpattern: /^\\/servers\\/([^/]+?)\\/databases\\/?$/,\n\t\t\t\tparams: [{\"name\":\"server\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/servers/[server]/databases/[database]/collections\",\n\t\t\t\tpattern: /^\\/servers\\/([^/]+?)\\/databases\\/([^/]+?)\\/collections\\/?$/,\n\t\t\t\tparams: [{\"name\":\"server\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"database\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/servers/[server]/databases/[database]/collections/[collection]\",\n\t\t\t\tpattern: /^\\/servers\\/([^/]+?)\\/databases\\/([^/]+?)\\/collections\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"server\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"database\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"collection\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/servers/[server]/databases/[database]/collections/[collection]/documents/[document]\",\n\t\t\t\tpattern: /^\\/servers\\/([^/]+?)\\/databases\\/([^/]+?)\\/collections\\/([^/]+?)\\/documents\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"server\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"database\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"collection\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"document\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 7 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"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"}
package/cli.ts ADDED
@@ -0,0 +1,154 @@
1
+ #!/usr/bin/env node
2
+
3
+ import chalk from "chalk";
4
+ import { spawn, SpawnOptions } from "child_process";
5
+ import { Command } from "commander";
6
+ import { readFileSync } from "fs";
7
+ import { dirname, join } from "path";
8
+ import { fileURLToPath } from "url";
9
+
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = dirname(__filename);
12
+
13
+ // Read version from package.json (go up one level if in dist directory)
14
+ const rootDir = __dirname.endsWith("dist") ? dirname(__dirname) : __dirname;
15
+ const packageJsonPath = join(rootDir, "package.json");
16
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
17
+ const version = packageJson.version;
18
+
19
+ const program = new Command();
20
+
21
+ // generated by figlet.textSync('Mongoku', { horizontalLayout: 'full' }))
22
+
23
+ // __ __ _
24
+ // | \/ | ___ _ __ __ _ ___ | | __ _ _
25
+ // | |\/| | / _ \ | '_ \ / _` | / _ \ | |/ / | | | |
26
+ // | | | | | (_) | | | | | | (_| | | (_) | | < | |_| |
27
+ // |_| |_| \___/ |_| |_| \__, | \___/ |_|\_\ \__,_|
28
+ // |___/
29
+
30
+ const asciiArt = [
31
+ "__ __ _ ",
32
+ "| \\/ | ___ _ __ __ _ ___ | | __ _ _ ",
33
+ "| |\\/| | / _ \\ | '_ \\ / _` | / _ \\ | |/ / | | | |",
34
+ "| | | | | (_) | | | | | | (_| | | (_) | | < | |_| |",
35
+ "|_| |_| \\___/ |_| |_| \\__, | \\___/ |_|\\_\\ \\__,_|",
36
+ " |___/ ",
37
+ ].join("\n");
38
+
39
+ program.name("mongoku").description("MongoDB client for the web").version(version);
40
+
41
+ // Custom error handler for better error messages
42
+ program.configureOutput({
43
+ outputError: (str, write) => {
44
+ // Check for common mistakes
45
+ if (str.includes("too many arguments")) {
46
+ const args = process.argv.slice(2);
47
+ if (args.includes("pm2")) {
48
+ write(chalk.red("❌ Error: Did you mean '--pm2' instead of 'pm2'?\n"));
49
+ return;
50
+ }
51
+ }
52
+ write(chalk.red(str));
53
+ },
54
+ });
55
+
56
+ // Start action handler (shared between default and explicit 'start' command)
57
+ async function startAction(options: { pm2?: boolean; port?: string; readonly?: boolean }) {
58
+ console.log(chalk.cyan(asciiArt));
59
+
60
+ const port = options.port || process.env.MONGOKU_SERVER_PORT || "3100";
61
+ process.env.MONGOKU_SERVER_PORT = port;
62
+ if (!process.env.MONGOKU_SERVER_ORIGIN) {
63
+ process.env.MONGOKU_SERVER_ORIGIN = `http://localhost:${port}`;
64
+ }
65
+
66
+ // Set read-only mode if specified
67
+ if (options.readonly) {
68
+ process.env.MONGOKU_READ_ONLY_MODE = "true";
69
+ console.log(chalk.yellow("🔒 Read-only mode enabled"));
70
+ }
71
+
72
+ if (options.pm2) {
73
+ console.log(chalk.green(`🚀 Starting Mongoku with PM2 on port ${port}...`));
74
+ runCommand("pm2", ["--name", "mongoku", "start", "ecosystem.config.js", "--update-env"], {
75
+ stdio: "inherit",
76
+ cwd: rootDir,
77
+ });
78
+ } else {
79
+ console.log(chalk.green(`🚀 Starting Mongoku on port ${port}...`));
80
+ console.log(chalk.cyan(`📊 Open http://localhost:${port} in your browser`));
81
+ runCommand("node", ["build"], { stdio: "inherit", cwd: rootDir });
82
+ }
83
+ }
84
+
85
+ program
86
+ .command("stop")
87
+ .description("Stop the Mongoku server running with PM2")
88
+ .action(() => {
89
+ runCommand("pm2", ["stop", "mongoku"], { stdio: "inherit" });
90
+ });
91
+
92
+ program
93
+ .command("start")
94
+ .description("Start the Mongoku server")
95
+ .option("--pm2", "Run with PM2")
96
+ .option("-p, --port <port>", "Port to run on", "3100")
97
+ .option("--readonly", "Enable read-only mode (prevents modifications)")
98
+ .allowExcessArguments(false)
99
+ .action(startAction);
100
+
101
+ program
102
+ .command("help")
103
+ .description("Show help")
104
+ .action(() => {
105
+ program.outputHelp();
106
+ });
107
+
108
+ // Default action (start the server)
109
+ program
110
+ .option("--pm2", "Run with PM2")
111
+ .option("-p, --port <port>", "Port to run on", "3100")
112
+ .option("--readonly", "Enable read-only mode (prevents modifications)")
113
+ .allowExcessArguments(false)
114
+ .action(startAction);
115
+
116
+ function runCommand(command: string, args: string[], options: SpawnOptions = {}): Promise<void> {
117
+ return new Promise((resolve, reject) => {
118
+ const childProcess = spawn(command, args, {
119
+ ...options,
120
+ shell: true,
121
+ env: { ...process.env },
122
+ });
123
+
124
+ if (!options.detached && options.stdio !== "inherit") {
125
+ childProcess.stdout?.on("data", (data) => {
126
+ console.log(data.toString());
127
+ });
128
+
129
+ childProcess.stderr?.on("data", (data) => {
130
+ console.error(data.toString());
131
+ });
132
+ }
133
+
134
+ childProcess.on("error", (error) => {
135
+ console.error(chalk.red(`Error: ${error.message}`));
136
+ reject(error);
137
+ });
138
+
139
+ childProcess.on("close", (code) => {
140
+ if (code !== 0 && !options.detached) {
141
+ reject(new Error(`Command failed with exit code ${code}`));
142
+ } else {
143
+ resolve();
144
+ }
145
+ });
146
+
147
+ if (options.detached) {
148
+ childProcess.unref();
149
+ resolve();
150
+ }
151
+ });
152
+ }
153
+
154
+ program.parse(process.argv);
package/dist/cli.js CHANGED
@@ -48,20 +48,25 @@ async function startAction(options) {
48
48
  console.log(chalk.cyan(asciiArt));
49
49
  const port = options.port || process.env.MONGOKU_SERVER_PORT || "3100";
50
50
  process.env.MONGOKU_SERVER_PORT = port;
51
+ if (!process.env.MONGOKU_SERVER_ORIGIN) {
52
+ process.env.MONGOKU_SERVER_ORIGIN = `http://localhost:${port}`;
53
+ }
51
54
  // Set read-only mode if specified
52
55
  if (options.readonly) {
53
56
  process.env.MONGOKU_READ_ONLY_MODE = "true";
54
57
  console.log(chalk.yellow("🔒 Read-only mode enabled"));
55
58
  }
56
- const buildPath = join(rootDir, "build");
57
59
  if (options.pm2) {
58
60
  console.log(chalk.green(`🚀 Starting Mongoku with PM2 on port ${port}...`));
59
- runCommand("pm2", ["--name", "mongoku", "start", join(rootDir, "ecosystem.config.js")], { stdio: "inherit" });
61
+ runCommand("pm2", ["--name", "mongoku", "start", "ecosystem.config.js", "--update-env"], {
62
+ stdio: "inherit",
63
+ cwd: rootDir,
64
+ });
60
65
  }
61
66
  else {
62
67
  console.log(chalk.green(`🚀 Starting Mongoku on port ${port}...`));
63
68
  console.log(chalk.cyan(`📊 Open http://localhost:${port} in your browser`));
64
- runCommand("node", [buildPath], { stdio: "inherit" });
69
+ runCommand("node", ["build"], { stdio: "inherit", cwd: rootDir });
65
70
  }
66
71
  }
67
72
  program
@@ -0,0 +1,6 @@
1
+ export const apps = [
2
+ {
3
+ name: "mongoku",
4
+ script: "./build/index.js",
5
+ },
6
+ ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mongoku",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "license": "MIT",
5
5
  "author": "Anthony Moi <m.anthony.moi@gmail.com>",
6
6
  "type": "module",
@@ -33,7 +33,15 @@
33
33
  },
34
34
  "files": [
35
35
  "/dist",
36
- "/build"
36
+ "/build",
37
+ "/ecosystem.config.js",
38
+ "/cli.ts",
39
+ "/src",
40
+ "/Dockerfile",
41
+ "/svelte.config.js",
42
+ "/tsconfig.json",
43
+ "/tsconfig.cli.json",
44
+ "/vite.config.ts"
37
45
  ],
38
46
  "devDependencies": {
39
47
  "@eslint/compat": "^1.4.0",
@@ -0,0 +1,98 @@
1
+ import { command } from "$app/server";
2
+ import JsonEncoder from "$lib/server/JsonEncoder";
3
+ import { getMongo } from "$lib/server/mongo";
4
+ import { error } from "@sveltejs/kit";
5
+ import { ObjectId } from "mongodb";
6
+ import { z } from "zod";
7
+
8
+ // Check if read-only mode is enabled
9
+ function checkReadOnly() {
10
+ if (process.env.MONGOKU_READ_ONLY_MODE === "true") {
11
+ error(403, "Read-only mode is enabled");
12
+ }
13
+ }
14
+
15
+ // Add a new server
16
+ export const addServer = command(
17
+ z.object({
18
+ url: z.string(),
19
+ }),
20
+ async ({ url }) => {
21
+ const mongo = await getMongo();
22
+ await mongo.addServer(url);
23
+ return { ok: true };
24
+ },
25
+ );
26
+
27
+ // Remove a server
28
+ export const removeServer = command(z.string(), async (serverName) => {
29
+ const mongo = await getMongo();
30
+ await mongo.removeServer(serverName);
31
+ return { ok: true };
32
+ });
33
+
34
+ // Update a document
35
+ export const updateDocument = command(
36
+ z.object({
37
+ server: z.string(),
38
+ database: z.string(),
39
+ collection: z.string(),
40
+ document: z.string(),
41
+ value: z.unknown(),
42
+ partial: z.boolean().optional().default(false),
43
+ }),
44
+ async ({ server, database, collection, document, value, partial }) => {
45
+ checkReadOnly();
46
+
47
+ const mongo = await getMongo();
48
+ const coll = mongo.getCollection(server, database, collection);
49
+
50
+ if (!coll) {
51
+ error(404, `Collection not found: ${server}.${database}.${collection}`);
52
+ }
53
+
54
+ const newValue = JsonEncoder.decode(value);
55
+
56
+ // TODO: For now it makes it impossible to remove fields from object with a projection
57
+ const update = partial ? { $set: newValue } : JsonEncoder.decode(newValue);
58
+ await coll.replaceOne(
59
+ {
60
+ _id: new ObjectId(document),
61
+ },
62
+ update,
63
+ );
64
+
65
+ return {
66
+ ok: true,
67
+ update: JsonEncoder.encode(newValue),
68
+ };
69
+ },
70
+ );
71
+
72
+ // Delete a document
73
+ export const deleteDocument = command(
74
+ z.object({
75
+ server: z.string(),
76
+ database: z.string(),
77
+ collection: z.string(),
78
+ document: z.string(),
79
+ }),
80
+ async ({ server, database, collection, document }) => {
81
+ checkReadOnly();
82
+
83
+ const mongo = await getMongo();
84
+ const coll = mongo.getCollection(server, database, collection);
85
+
86
+ if (!coll) {
87
+ error(404, `Collection not found: ${server}.${database}.${collection}`);
88
+ }
89
+
90
+ await coll.deleteOne({
91
+ _id: new ObjectId(document),
92
+ });
93
+
94
+ return {
95
+ ok: true,
96
+ };
97
+ },
98
+ );
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
+ };