omegga 0.1.85 → 1.0.2

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 (467) hide show
  1. package/README.md +142 -62
  2. package/bin/omegga +10 -4
  3. package/dist/brickadia/config.d.ts +3 -0
  4. package/dist/brickadia/config.d.ts.map +1 -0
  5. package/dist/brickadia/config.js +61 -0
  6. package/dist/brickadia/config.js.map +1 -0
  7. package/dist/brickadia/presets.d.ts +65 -0
  8. package/dist/brickadia/presets.js +3 -0
  9. package/dist/brickadia/presets.js.map +1 -0
  10. package/dist/brickadia/server.d.ts +20 -0
  11. package/dist/brickadia/server.d.ts.map +1 -0
  12. package/dist/brickadia/server.js +188 -0
  13. package/dist/brickadia/server.js.map +1 -0
  14. package/dist/brickadia/types.d.ts +45 -0
  15. package/dist/brickadia/types.d.ts.map +1 -0
  16. package/dist/brickadia/types.js +3 -0
  17. package/dist/brickadia/types.js.map +1 -0
  18. package/dist/cli/auth.d.ts +20 -0
  19. package/dist/cli/auth.d.ts.map +1 -0
  20. package/dist/cli/auth.js +115 -0
  21. package/dist/cli/auth.js.map +1 -0
  22. package/dist/cli/config.d.ts +10 -0
  23. package/dist/cli/config.d.ts.map +1 -0
  24. package/dist/cli/config.js +72 -0
  25. package/dist/cli/config.js.map +1 -0
  26. package/dist/cli/index.d.ts +20 -0
  27. package/dist/cli/index.d.ts.map +1 -0
  28. package/dist/cli/index.js +15 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/cli/installer.d.ts +1 -0
  31. package/dist/cli/installer.d.ts.map +1 -0
  32. package/dist/cli/installer.js +55 -0
  33. package/dist/cli/installer.js.map +1 -0
  34. package/dist/cli/plugin.d.ts +11 -0
  35. package/dist/cli/plugin.d.ts.map +1 -0
  36. package/dist/cli/plugin.js +598 -0
  37. package/dist/cli/plugin.js.map +1 -0
  38. package/dist/cli/terminal.d.ts +34 -0
  39. package/dist/cli/terminal.d.ts.map +1 -0
  40. package/dist/cli/terminal.js +395 -0
  41. package/dist/cli/terminal.js.map +1 -0
  42. package/dist/config/authorizer.d.ts +2 -0
  43. package/dist/config/authorizer.d.ts.map +1 -0
  44. package/dist/config/authorizer.js +38 -0
  45. package/dist/config/authorizer.js.map +1 -0
  46. package/dist/config/formats/format_js.d.ts +3 -0
  47. package/dist/config/formats/format_js.d.ts.map +1 -0
  48. package/dist/config/formats/format_js.js +10 -0
  49. package/dist/config/formats/format_js.js.map +1 -0
  50. package/dist/config/formats/format_yml.d.ts +3 -0
  51. package/dist/config/formats/format_yml.d.ts.map +1 -0
  52. package/dist/config/formats/format_yml.js +14 -0
  53. package/dist/config/formats/format_yml.js.map +1 -0
  54. package/dist/config/index.d.ts +18 -0
  55. package/dist/config/index.d.ts.map +1 -0
  56. package/dist/config/index.js +86 -0
  57. package/dist/config/index.js.map +1 -0
  58. package/dist/config/reader.d.ts +3 -0
  59. package/dist/config/reader.d.ts.map +1 -0
  60. package/dist/config/reader.js +30 -0
  61. package/dist/config/reader.js.map +1 -0
  62. package/dist/config/types.d.ts +37 -0
  63. package/dist/config/types.d.ts.map +1 -0
  64. package/dist/config/types.js +3 -0
  65. package/dist/config/types.js.map +1 -0
  66. package/dist/config/validator.d.ts +6 -0
  67. package/dist/config/validator.d.ts.map +1 -0
  68. package/dist/config/validator.js +26 -0
  69. package/dist/config/validator.js.map +1 -0
  70. package/dist/config/writer.d.ts +3 -0
  71. package/dist/config/writer.d.ts.map +1 -0
  72. package/dist/config/writer.js +25 -0
  73. package/dist/config/writer.js.map +1 -0
  74. package/dist/index.d.ts +22 -0
  75. package/dist/index.js +55 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/info/default_commands.json +28 -0
  78. package/dist/lib.d.ts +21 -0
  79. package/dist/lib.d.ts.map +1 -0
  80. package/dist/lib.js +54 -0
  81. package/dist/lib.js.map +1 -0
  82. package/dist/logger.d.ts +41 -0
  83. package/dist/logger.js +67 -0
  84. package/dist/logger.js.map +1 -0
  85. package/dist/main.d.ts +1 -0
  86. package/dist/main.d.ts.map +1 -0
  87. package/dist/main.js +284 -0
  88. package/dist/main.js.map +1 -0
  89. package/dist/omegga/auth.d.ts +6 -0
  90. package/dist/omegga/auth.d.ts.map +1 -0
  91. package/dist/omegga/auth.js +139 -0
  92. package/dist/omegga/auth.js.map +1 -0
  93. package/dist/omegga/commandInjector.d.ts +35 -0
  94. package/dist/omegga/commandInjector.d.ts.map +1 -0
  95. package/dist/omegga/commandInjector.js +234 -0
  96. package/dist/omegga/commandInjector.js.map +1 -0
  97. package/dist/omegga/index.d.ts +7 -0
  98. package/dist/omegga/index.d.ts.map +1 -0
  99. package/dist/omegga/index.js +43 -0
  100. package/dist/omegga/index.js.map +1 -0
  101. package/dist/omegga/logWrangler.d.ts +32 -0
  102. package/dist/omegga/logWrangler.d.ts.map +1 -0
  103. package/dist/omegga/logWrangler.js +279 -0
  104. package/dist/omegga/logWrangler.js.map +1 -0
  105. package/dist/omegga/matchers/auth.d.ts +9 -0
  106. package/dist/omegga/matchers/auth.d.ts.map +1 -0
  107. package/dist/omegga/matchers/auth.js +53 -0
  108. package/dist/omegga/matchers/auth.js.map +1 -0
  109. package/dist/omegga/matchers/chat.d.ts +9 -0
  110. package/dist/omegga/matchers/chat.d.ts.map +1 -0
  111. package/dist/omegga/matchers/chat.js +68 -0
  112. package/dist/omegga/matchers/chat.js.map +1 -0
  113. package/dist/omegga/matchers/command.d.ts +7 -0
  114. package/dist/omegga/matchers/command.d.ts.map +1 -0
  115. package/dist/omegga/matchers/command.js +39 -0
  116. package/dist/omegga/matchers/command.js.map +1 -0
  117. package/dist/omegga/matchers/exit.d.ts +3 -0
  118. package/dist/omegga/matchers/exit.d.ts.map +1 -0
  119. package/dist/omegga/matchers/exit.js +21 -0
  120. package/dist/omegga/matchers/exit.js.map +1 -0
  121. package/dist/omegga/matchers/index.d.ts +3 -0
  122. package/dist/omegga/matchers/index.d.ts.map +1 -0
  123. package/dist/omegga/matchers/index.js +39 -0
  124. package/dist/omegga/matchers/index.js.map +1 -0
  125. package/dist/omegga/matchers/init.d.ts +3 -0
  126. package/dist/omegga/matchers/init.d.ts.map +1 -0
  127. package/dist/omegga/matchers/init.js +26 -0
  128. package/dist/omegga/matchers/init.js.map +1 -0
  129. package/dist/omegga/matchers/interact.d.ts +4 -0
  130. package/dist/omegga/matchers/interact.js +39 -0
  131. package/dist/omegga/matchers/interact.js.map +1 -0
  132. package/dist/omegga/matchers/join.d.ts +4 -0
  133. package/dist/omegga/matchers/join.d.ts.map +1 -0
  134. package/dist/omegga/matchers/join.js +95 -0
  135. package/dist/omegga/matchers/join.js.map +1 -0
  136. package/dist/omegga/matchers/leave.d.ts +4 -0
  137. package/dist/omegga/matchers/leave.d.ts.map +1 -0
  138. package/dist/omegga/matchers/leave.js +59 -0
  139. package/dist/omegga/matchers/leave.js.map +1 -0
  140. package/dist/omegga/matchers/mapChange.d.ts +3 -0
  141. package/dist/omegga/matchers/mapChange.d.ts.map +1 -0
  142. package/dist/omegga/matchers/mapChange.js +38 -0
  143. package/dist/omegga/matchers/mapChange.js.map +1 -0
  144. package/dist/omegga/matchers/types.d.ts +5 -0
  145. package/dist/omegga/matchers/types.d.ts.map +1 -0
  146. package/dist/omegga/matchers/types.js +7 -0
  147. package/dist/omegga/matchers/types.js.map +1 -0
  148. package/dist/omegga/matchers/version.d.ts +3 -0
  149. package/dist/omegga/matchers/version.d.ts.map +1 -0
  150. package/dist/omegga/matchers/version.js +45 -0
  151. package/dist/omegga/matchers/version.js.map +1 -0
  152. package/dist/omegga/player.d.ts +71 -0
  153. package/dist/omegga/player.d.ts.map +1 -0
  154. package/dist/omegga/player.js +442 -0
  155. package/dist/omegga/player.js.map +1 -0
  156. package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts +23 -0
  157. package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts.map +1 -0
  158. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js +441 -0
  159. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -0
  160. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +129 -0
  161. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts.map +1 -0
  162. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js +260 -0
  163. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js.map +1 -0
  164. package/dist/omegga/plugin/plugin_node_safe/worker.d.ts +1 -0
  165. package/dist/omegga/plugin/plugin_node_safe/worker.d.ts.map +1 -0
  166. package/dist/omegga/plugin/plugin_node_safe/worker.js +289 -0
  167. package/dist/omegga/plugin/plugin_node_safe/worker.js.map +1 -0
  168. package/dist/omegga/plugin/plugin_node_safe.d.ts +24 -0
  169. package/dist/omegga/plugin/plugin_node_safe.d.ts.map +1 -0
  170. package/dist/omegga/plugin/plugin_node_safe.js +397 -0
  171. package/dist/omegga/plugin/plugin_node_safe.js.map +1 -0
  172. package/dist/omegga/plugin/plugin_node_unsafe.d.ts +13 -0
  173. package/dist/omegga/plugin/plugin_node_unsafe.d.ts.map +1 -0
  174. package/dist/omegga/plugin/plugin_node_unsafe.js +178 -0
  175. package/dist/omegga/plugin/plugin_node_unsafe.js.map +1 -0
  176. package/dist/omegga/plugin.d.ts +86 -0
  177. package/dist/omegga/plugin.d.ts.map +1 -0
  178. package/dist/omegga/plugin.js +458 -0
  179. package/dist/omegga/plugin.js.map +1 -0
  180. package/dist/omegga/server.d.ts +149 -0
  181. package/dist/omegga/server.d.ts.map +1 -0
  182. package/dist/omegga/server.js +601 -0
  183. package/dist/omegga/server.js.map +1 -0
  184. package/dist/omegga/types.d.ts +48 -0
  185. package/dist/omegga/types.d.ts.map +1 -0
  186. package/dist/omegga/types.js +3 -0
  187. package/dist/omegga/types.js.map +1 -0
  188. package/dist/omegga/wrapper.d.ts +22 -0
  189. package/dist/omegga/wrapper.d.ts.map +1 -0
  190. package/dist/omegga/wrapper.js +75 -0
  191. package/dist/omegga/wrapper.js.map +1 -0
  192. package/dist/omeggaplugin.d.ts +1 -0
  193. package/dist/omeggaplugin.js +4 -0
  194. package/dist/omeggaplugin.js.map +1 -0
  195. package/dist/plugin.d.ts +781 -0
  196. package/dist/plugin.js +41 -0
  197. package/dist/plugin.js.map +1 -0
  198. package/dist/softconfig.d.ts +51 -0
  199. package/dist/softconfig.d.ts.map +1 -0
  200. package/dist/softconfig.js +82 -0
  201. package/dist/softconfig.js.map +1 -0
  202. package/dist/util/brick/checkBounds.d.ts +8 -0
  203. package/dist/util/brick/checkBounds.d.ts.map +1 -0
  204. package/dist/util/brick/checkBounds.js +22 -0
  205. package/dist/util/brick/checkBounds.js.map +1 -0
  206. package/dist/util/brick/constants.d.ts +18 -0
  207. package/dist/util/brick/constants.d.ts.map +1 -0
  208. package/dist/util/brick/constants.js +184 -0
  209. package/dist/util/brick/constants.js.map +1 -0
  210. package/dist/util/brick/getBounds.d.ts +4 -0
  211. package/dist/util/brick/getBounds.d.ts.map +1 -0
  212. package/dist/util/brick/getBounds.js +39 -0
  213. package/dist/util/brick/getBounds.js.map +1 -0
  214. package/dist/util/brick/getBrickSize.d.ts +3 -0
  215. package/dist/util/brick/getBrickSize.d.ts.map +1 -0
  216. package/dist/util/brick/getBrickSize.js +12 -0
  217. package/dist/util/brick/getBrickSize.js.map +1 -0
  218. package/dist/util/brick/getScaleAxis.d.ts +3 -0
  219. package/dist/util/brick/getScaleAxis.d.ts.map +1 -0
  220. package/dist/util/brick/getScaleAxis.js +38 -0
  221. package/dist/util/brick/getScaleAxis.js.map +1 -0
  222. package/dist/util/brick/index.d.ts +13 -0
  223. package/dist/util/brick/index.d.ts.map +1 -0
  224. package/dist/util/brick/index.js +29 -0
  225. package/dist/util/brick/index.js.map +1 -0
  226. package/dist/util/brick/rotate.d.ts +17 -0
  227. package/dist/util/brick/rotate.d.ts.map +1 -0
  228. package/dist/util/brick/rotate.js +38 -0
  229. package/dist/util/brick/rotate.js.map +1 -0
  230. package/dist/util/brick/setOwnership.d.ts +12 -0
  231. package/dist/util/brick/setOwnership.d.ts.map +1 -0
  232. package/dist/util/brick/setOwnership.js +21 -0
  233. package/dist/util/brick/setOwnership.js.map +1 -0
  234. package/dist/util/chat.d.ts +23 -0
  235. package/dist/util/chat.d.ts.map +1 -0
  236. package/dist/util/chat.js +50 -0
  237. package/dist/util/chat.js.map +1 -0
  238. package/dist/util/color.d.ts +13 -0
  239. package/dist/util/color.d.ts.map +1 -0
  240. package/dist/util/color.js +130 -0
  241. package/dist/util/color.js.map +1 -0
  242. package/dist/util/file.d.ts +5 -0
  243. package/dist/util/file.d.ts.map +1 -0
  244. package/dist/util/file.js +114 -0
  245. package/dist/util/file.js.map +1 -0
  246. package/dist/util/index.d.ts +162 -0
  247. package/dist/util/index.d.ts.map +1 -0
  248. package/dist/util/index.js +92 -0
  249. package/dist/util/index.js.map +1 -0
  250. package/dist/util/map.d.ts +6 -0
  251. package/dist/util/map.d.ts.map +1 -0
  252. package/dist/util/map.js +26 -0
  253. package/dist/util/map.js.map +1 -0
  254. package/dist/util/pattern.d.ts +1 -0
  255. package/dist/util/pattern.d.ts.map +1 -0
  256. package/dist/util/pattern.js +11 -0
  257. package/dist/util/pattern.js.map +1 -0
  258. package/dist/util/time.d.ts +4 -0
  259. package/dist/util/time.d.ts.map +1 -0
  260. package/dist/util/time.js +41 -0
  261. package/dist/util/time.js.map +1 -0
  262. package/dist/util/uuid.d.ts +2 -0
  263. package/dist/util/uuid.d.ts.map +1 -0
  264. package/dist/util/uuid.js +8 -0
  265. package/dist/util/uuid.js.map +1 -0
  266. package/dist/util/wsl.d.ts +1 -0
  267. package/dist/util/wsl.d.ts.map +1 -0
  268. package/dist/util/wsl.js +14 -0
  269. package/dist/util/wsl.js.map +1 -0
  270. package/dist/webserver/backend/api.d.ts +3 -0
  271. package/dist/webserver/backend/api.d.ts.map +1 -0
  272. package/dist/webserver/backend/api.js +685 -0
  273. package/dist/webserver/backend/api.js.map +1 -0
  274. package/dist/webserver/backend/calendar.d.ts +5 -0
  275. package/dist/webserver/backend/calendar.d.ts.map +1 -0
  276. package/dist/webserver/backend/calendar.js +21 -0
  277. package/dist/webserver/backend/calendar.js.map +1 -0
  278. package/dist/webserver/backend/database.d.ts +149 -0
  279. package/dist/webserver/backend/database.d.ts.map +1 -0
  280. package/dist/webserver/backend/database.js +575 -0
  281. package/dist/webserver/backend/database.js.map +1 -0
  282. package/dist/webserver/backend/index.d.ts +31 -0
  283. package/dist/webserver/backend/index.d.ts.map +1 -0
  284. package/dist/webserver/backend/index.js +189 -0
  285. package/dist/webserver/backend/index.js.map +1 -0
  286. package/dist/webserver/backend/metrics.d.ts +3 -0
  287. package/dist/webserver/backend/metrics.d.ts.map +1 -0
  288. package/dist/webserver/backend/metrics.js +203 -0
  289. package/dist/webserver/backend/metrics.js.map +1 -0
  290. package/dist/webserver/backend/types.d.ts +115 -0
  291. package/dist/webserver/backend/types.d.ts.map +1 -0
  292. package/dist/webserver/backend/types.js +3 -0
  293. package/dist/webserver/backend/types.js.map +1 -0
  294. package/dist/webserver/backend/util.d.ts +2 -0
  295. package/dist/webserver/backend/util.d.ts.map +1 -0
  296. package/dist/webserver/backend/util.js +78 -0
  297. package/dist/webserver/backend/util.js.map +1 -0
  298. package/dist/webserver/index.d.ts +2 -0
  299. package/dist/webserver/index.d.ts.map +1 -0
  300. package/dist/webserver/index.js +9 -0
  301. package/dist/webserver/index.js.map +1 -0
  302. package/{src/webserver/frontend → frontend}/app.html +0 -0
  303. package/{src/webserver/frontend → frontend}/assets/fonts/GlacialIndifferenceBold.ttf +0 -0
  304. package/{src/webserver/frontend → frontend}/assets/fonts/GlacialIndifferenceItalic.otf +0 -0
  305. package/{src/webserver/frontend → frontend}/assets/fonts/GlacialIndifferenceMedium.otf +0 -0
  306. package/{src/webserver/frontend → frontend}/assets/fonts/GlacialIndifferenceRegular.ttf +0 -0
  307. package/{src/webserver/frontend → frontend}/assets/fonts/RobotoBold.ttf +0 -0
  308. package/{src/webserver/frontend → frontend}/assets/fonts/RobotoItalic.ttf +0 -0
  309. package/{src/webserver/frontend → frontend}/assets/fonts/RobotoRegular.ttf +0 -0
  310. package/{src/webserver/frontend → frontend}/assets/img/auth_bg.webp +0 -0
  311. package/{src/webserver/frontend → frontend}/assets/img/dark_bg.webp +0 -0
  312. package/{src/webserver/frontend → frontend}/assets/img/turkey.webp +0 -0
  313. package/{src/webserver/frontend → frontend}/auth.html +0 -0
  314. package/index.js +10 -2
  315. package/package.json +44 -16
  316. package/public/app.bundle.js +537 -73
  317. package/public/app.bundle.js.map +1 -1
  318. package/public/app.css +727 -2
  319. package/public/app.css.map +1 -1
  320. package/public/auth.bundle.js +18 -18
  321. package/public/auth.bundle.js.map +1 -1
  322. package/public/auth.css +364 -2
  323. package/public/auth.css.map +1 -1
  324. package/templates/rpc/README.md +29 -0
  325. package/templates/rpc/doc.json +7 -0
  326. package/templates/rpc/omegga_plugin +0 -0
  327. package/templates/rpc/plugin.json +4 -0
  328. package/templates/rpc/setup.sh +3 -0
  329. package/templates/safe/README.md +29 -0
  330. package/templates/safe/access.json +1 -0
  331. package/templates/safe/doc.json +7 -0
  332. package/templates/safe/omegga.plugin.js +20 -0
  333. package/templates/safe/plugin.json +4 -0
  334. package/templates/safe/setup.sh +4 -0
  335. package/templates/safe-ts/.gitignore.rename +3 -0
  336. package/templates/safe-ts/README.md +29 -0
  337. package/templates/safe-ts/access.json +1 -0
  338. package/templates/safe-ts/doc.json +7 -0
  339. package/templates/safe-ts/omegga.d.ts +1311 -0
  340. package/templates/safe-ts/omegga.plugin.ts +29 -0
  341. package/templates/safe-ts/plugin.json +4 -0
  342. package/templates/safe-ts/setup.sh +4 -0
  343. package/templates/safe-ts/tsconfig.json +10 -0
  344. package/templates/unsafe/README.md +29 -0
  345. package/templates/unsafe/doc.json +7 -0
  346. package/templates/unsafe/omegga.main.js +15 -0
  347. package/templates/unsafe/plugin.json +4 -0
  348. package/templates/unsafe/setup.sh +4 -0
  349. package/.babelrc.json +0 -5
  350. package/.github/workflows/lint.yml +0 -26
  351. package/.prettierrc +0 -7
  352. package/.vscode/extensions.json +0 -5
  353. package/src/OMEGGA_LEGACY_INSTALL +0 -44
  354. package/src/brickadia/config.js +0 -42
  355. package/src/brickadia/server.js +0 -227
  356. package/src/cli/auth.js +0 -104
  357. package/src/cli/config.js +0 -77
  358. package/src/cli/index.js +0 -6
  359. package/src/cli/installer.js +0 -65
  360. package/src/cli/plugin.js +0 -575
  361. package/src/cli/terminal.js +0 -466
  362. package/src/config/authorizer.js +0 -37
  363. package/src/config/formats/format_js.js +0 -6
  364. package/src/config/formats/format_yml.js +0 -8
  365. package/src/config/index.js +0 -81
  366. package/src/config/reader.js +0 -27
  367. package/src/config/validator.js +0 -32
  368. package/src/config/writer.js +0 -20
  369. package/src/info/default_commands.json +0 -26
  370. package/src/lib.js +0 -23
  371. package/src/main.js +0 -332
  372. package/src/omegga/auth.js +0 -138
  373. package/src/omegga/commandInjector.js +0 -228
  374. package/src/omegga/index.js +0 -22
  375. package/src/omegga/logWrangler.js +0 -323
  376. package/src/omegga/matchers/auth.js +0 -49
  377. package/src/omegga/matchers/chat.js +0 -73
  378. package/src/omegga/matchers/command.js +0 -39
  379. package/src/omegga/matchers/exit.js +0 -19
  380. package/src/omegga/matchers/init.js +0 -23
  381. package/src/omegga/matchers/join.js +0 -115
  382. package/src/omegga/matchers/leave.js +0 -58
  383. package/src/omegga/matchers/mapChange.js +0 -37
  384. package/src/omegga/matchers/version.js +0 -45
  385. package/src/omegga/player.js +0 -585
  386. package/src/omegga/plugin/plugin_jsonrpc_stdio.js +0 -526
  387. package/src/omegga/plugin/plugin_node_safe/proxyOmegga.js +0 -117
  388. package/src/omegga/plugin/plugin_node_safe/worker.js +0 -238
  389. package/src/omegga/plugin/plugin_node_safe.js +0 -473
  390. package/src/omegga/plugin/plugin_node_unsafe.js +0 -177
  391. package/src/omegga/plugin.js +0 -565
  392. package/src/omegga/server.js +0 -658
  393. package/src/omegga/wrapper.js +0 -62
  394. package/src/softconfig.js +0 -64
  395. package/src/util/brick/checkBounds.js +0 -22
  396. package/src/util/brick/constants.js +0 -185
  397. package/src/util/brick/getBounds.js +0 -36
  398. package/src/util/brick/getBrickSize.js +0 -9
  399. package/src/util/brick/getScaleAxis.js +0 -31
  400. package/src/util/brick/index.js +0 -9
  401. package/src/util/brick/rotate.js +0 -43
  402. package/src/util/brick/setOwnership.js +0 -20
  403. package/src/util/chat.js +0 -28
  404. package/src/util/color.js +0 -143
  405. package/src/util/file.js +0 -119
  406. package/src/util/index.js +0 -28
  407. package/src/util/map.js +0 -28
  408. package/src/util/pattern.js +0 -14
  409. package/src/util/time.js +0 -46
  410. package/src/util/uuid.js +0 -8
  411. package/src/util/wsl.js +0 -9
  412. package/src/webserver/backend/api.js +0 -795
  413. package/src/webserver/backend/calendar.js +0 -15
  414. package/src/webserver/backend/database.js +0 -725
  415. package/src/webserver/backend/index.js +0 -206
  416. package/src/webserver/backend/metrics.js +0 -148
  417. package/src/webserver/backend/util.js +0 -75
  418. package/src/webserver/frontend/.eslintrc.yml +0 -26
  419. package/src/webserver/frontend/app.js +0 -78
  420. package/src/webserver/frontend/auth.js +0 -16
  421. package/src/webserver/frontend/components/Background.vue +0 -83
  422. package/src/webserver/frontend/components/Button.vue +0 -105
  423. package/src/webserver/frontend/components/ChatEntry.vue +0 -107
  424. package/src/webserver/frontend/components/ChatTime.vue +0 -40
  425. package/src/webserver/frontend/components/Dimmer.vue +0 -43
  426. package/src/webserver/frontend/components/Dropdown.vue +0 -145
  427. package/src/webserver/frontend/components/Footer.vue +0 -29
  428. package/src/webserver/frontend/components/Header.vue +0 -27
  429. package/src/webserver/frontend/components/InfiniteScroll.vue +0 -51
  430. package/src/webserver/frontend/components/Input.vue +0 -93
  431. package/src/webserver/frontend/components/ListInput.vue +0 -105
  432. package/src/webserver/frontend/components/Loader.vue +0 -98
  433. package/src/webserver/frontend/components/MainMenuButton.vue +0 -83
  434. package/src/webserver/frontend/components/Modal.vue +0 -44
  435. package/src/webserver/frontend/components/NavBar.vue +0 -24
  436. package/src/webserver/frontend/components/PlayerDropdown.vue +0 -210
  437. package/src/webserver/frontend/components/PopoutContent.vue +0 -32
  438. package/src/webserver/frontend/components/RoleDropdown.vue +0 -157
  439. package/src/webserver/frontend/components/Scroll.vue +0 -33
  440. package/src/webserver/frontend/components/Toggle.vue +0 -91
  441. package/src/webserver/frontend/components/index.js +0 -33
  442. package/src/webserver/frontend/css/font.scss +0 -53
  443. package/src/webserver/frontend/css/mixins.scss +0 -49
  444. package/src/webserver/frontend/css/style.scss +0 -166
  445. package/src/webserver/frontend/css/theme.scss +0 -64
  446. package/src/webserver/frontend/partials/NavHeader.vue +0 -55
  447. package/src/webserver/frontend/partials/Page.vue +0 -40
  448. package/src/webserver/frontend/partials/PageContent.vue +0 -31
  449. package/src/webserver/frontend/partials/SideNav.vue +0 -115
  450. package/src/webserver/frontend/partials/index.js +0 -4
  451. package/src/webserver/frontend/router.js +0 -83
  452. package/src/webserver/frontend/views/Auth.vue +0 -190
  453. package/src/webserver/frontend/views/History.vue +0 -462
  454. package/src/webserver/frontend/views/Home.vue +0 -251
  455. package/src/webserver/frontend/views/Main.vue +0 -69
  456. package/src/webserver/frontend/views/NotFound.vue +0 -10
  457. package/src/webserver/frontend/views/Players.vue +0 -425
  458. package/src/webserver/frontend/views/PlayersInspector.vue +0 -538
  459. package/src/webserver/frontend/views/Plugins.vue +0 -217
  460. package/src/webserver/frontend/views/PluginsInspector.vue +0 -418
  461. package/src/webserver/frontend/views/Server.vue +0 -167
  462. package/src/webserver/frontend/views/Users.vue +0 -538
  463. package/src/webserver/frontend/widgets/Chat.vue +0 -124
  464. package/src/webserver/frontend/widgets/Status.vue +0 -91
  465. package/src/webserver/frontend/widgets/index.js +0 -2
  466. package/src/webserver/frontend/widgets/tooltip.js +0 -108
  467. package/src/webserver/index.js +0 -4
@@ -0,0 +1,575 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const softconfig_1 = __importDefault(require("../../softconfig"));
7
+ const server_1 = __importDefault(require("../../omegga/server"));
8
+ const pattern_1 = require("../../util/pattern");
9
+ const time_1 = require("../../util/time");
10
+ const bcrypt_1 = __importDefault(require("bcrypt"));
11
+ const chokidar_1 = __importDefault(require("chokidar"));
12
+ const events_1 = __importDefault(require("events"));
13
+ const nedb_promises_1 = __importDefault(require("nedb-promises"));
14
+ const path_1 = __importDefault(require("path"));
15
+ const calendar_1 = __importDefault(require("./calendar"));
16
+ // TODO: online users graph
17
+ // TODO: player online times
18
+ // TODO: bricks over time graph
19
+ // TODO: minute server status for metrics
20
+ // TODO: chat messages per min/hour/day check
21
+ let serverInstance;
22
+ // generate a punchcard (days x week)
23
+ const createPunchcard = () => Array.from({ length: 7 }).map(() => Array.from({ length: 24 }).fill(0));
24
+ // the database keeps track of metrics for omegga
25
+ class Database extends events_1.default {
26
+ constructor(options, omegga) {
27
+ super();
28
+ this.options = options;
29
+ this.omegga = omegga;
30
+ this.calendar = new calendar_1.default();
31
+ // database
32
+ const dbOpts = {
33
+ autoload: true,
34
+ // case insensitive string comparison
35
+ compareStrings: (a, b) => a.localeCompare(b, 'en', { ignorePunctuation: true }),
36
+ };
37
+ // create all the stores
38
+ this.stores = {
39
+ users: nedb_promises_1.default.create(Object.assign({ filename: path_1.default.join(omegga.dataPath, softconfig_1.default.USER_STORE) }, dbOpts)),
40
+ chat: nedb_promises_1.default.create(Object.assign({ filename: path_1.default.join(omegga.dataPath, softconfig_1.default.CHAT_STORE) }, dbOpts)),
41
+ players: nedb_promises_1.default.create(Object.assign({ filename: path_1.default.join(omegga.dataPath, softconfig_1.default.PLAYER_STORE) }, dbOpts)),
42
+ status: nedb_promises_1.default.create(Object.assign({ filename: path_1.default.join(omegga.dataPath, softconfig_1.default.STATUS_STORE) }, dbOpts)),
43
+ server: nedb_promises_1.default.create(Object.assign({ filename: path_1.default.join(omegga.dataPath, softconfig_1.default.SERVER_STORE) }, dbOpts)),
44
+ };
45
+ }
46
+ // make sure all the databases have valid store versions
47
+ async doMigrations() {
48
+ // current store versions
49
+ const storeVersions = {
50
+ users: 1,
51
+ chat: 1,
52
+ players: 1,
53
+ status: 1,
54
+ server: 1,
55
+ // example version
56
+ dummy: 10,
57
+ };
58
+ // migrations to/from certain store versions
59
+ const migrations = {
60
+ users: [],
61
+ chat: [],
62
+ players: [],
63
+ status: [],
64
+ server: [],
65
+ // example migration list (all version upgrades go up by 1)
66
+ dummy: [
67
+ {
68
+ version: 1,
69
+ upgrade: async (_store) => { }, // upgrade function (does not include updating version)
70
+ },
71
+ ],
72
+ };
73
+ // loop through all stores to find if any need version upgrades
74
+ await Promise.all(Object.entries(this.stores).map(async ([name, store]) => {
75
+ const versionEntry = await store.findOne({
76
+ type: 'storeVersion',
77
+ });
78
+ const expected = storeVersions[name];
79
+ // if the version was not found, insert it
80
+ if (!versionEntry) {
81
+ store.insert({ type: 'storeVersion', version: expected });
82
+ // if the version was not what was expected
83
+ }
84
+ else if (expected !== versionEntry.version) {
85
+ // while the version is below the expected version
86
+ let { version } = versionEntry;
87
+ for (; version < expected; version++) {
88
+ // find an available migration
89
+ const migration = migrations[name].find(v => v.version === version);
90
+ // no migration found, ignore
91
+ if (!migration)
92
+ break;
93
+ // run the upgrade
94
+ migration.upgrade(store);
95
+ }
96
+ // update the stored version
97
+ await store.update({ _id: versionEntry._id }, { version });
98
+ }
99
+ }));
100
+ }
101
+ // get the running instance id of this omegga
102
+ async getInstanceId() {
103
+ if (serverInstance)
104
+ return serverInstance._id;
105
+ const doc = await this.stores.server.insert({
106
+ type: 'app:start',
107
+ date: Date.now(),
108
+ });
109
+ serverInstance = doc;
110
+ // create a calendar of all previous chat messages
111
+ const dates = (await this.stores.chat.find({ type: 'chat' })).map(c => c.created);
112
+ for (const d of dates) {
113
+ this.calendar.addDate(d);
114
+ }
115
+ const watcher = chokidar_1.default.watch(path_1.default.join(this.omegga.configPath, 'BanList.json'), { persistent: false });
116
+ watcher
117
+ .on('add', () => setTimeout(this.syncBanList.bind(this), 500))
118
+ .on('change', () => setTimeout(() => {
119
+ this.syncBanList();
120
+ this.emit('update.bans');
121
+ }, 500));
122
+ setTimeout(this.syncBanList.bind(this), 500);
123
+ const handleKick = (kicked, kicker, reason) => {
124
+ // time the event listener should expire
125
+ const eventExpire = Date.now() + 100;
126
+ // detect a single leave
127
+ this.omegga.once('leave', async (leavingPlayer) => {
128
+ const now = Date.now();
129
+ // if a player leaves more than 100ms from the kick command, it's bugged
130
+ if (now > eventExpire)
131
+ return;
132
+ if (leavingPlayer.id === kicked.id) {
133
+ const entry = {
134
+ type: 'kickHistory',
135
+ kicked: kicked.id,
136
+ kickerId: kicker.id,
137
+ created: now,
138
+ reason,
139
+ };
140
+ // depending on implementation, this could potentially be a kick event
141
+ await this.stores.players.update(entry, { $set: entry }, { upsert: true });
142
+ }
143
+ });
144
+ };
145
+ // for a5 is based on the chat event
146
+ this.omegga.on('kick', (kicked, kicker, reason) => {
147
+ const kickedPlayer = this.omegga.findPlayerByName(kicked);
148
+ const kickerPlayer = this.omegga.findPlayerByName(kicker);
149
+ // couldn't find kicked or kicker player
150
+ if (!kickedPlayer || !kickerPlayer)
151
+ return;
152
+ handleKick(kickedPlayer, kickerPlayer, reason);
153
+ });
154
+ return doc._id;
155
+ }
156
+ // synchronize the ban list with the one in the database
157
+ syncBanList() {
158
+ var _a;
159
+ const banList = (_a = this.omegga.getBanList()) === null || _a === void 0 ? void 0 : _a.banList;
160
+ if (!banList)
161
+ return;
162
+ // upsert all bans
163
+ for (const banned in banList) {
164
+ const entry = {
165
+ type: 'banHistory',
166
+ banned,
167
+ bannerId: banList[banned].bannerId,
168
+ created: (0, time_1.parseBrickadiaTime)(banList[banned].created),
169
+ expires: (0, time_1.parseBrickadiaTime)(banList[banned].expires),
170
+ reason: banList[banned].reason,
171
+ };
172
+ this.stores.players.update(entry, { $set: entry }, { upsert: true });
173
+ }
174
+ }
175
+ // determine if this user would be the first user (admin user)
176
+ async isFirstUser() {
177
+ return (await this.stores.users.count({ type: 'user' })) === 0;
178
+ }
179
+ // hash a password
180
+ async hash(password) {
181
+ return await bcrypt_1.default.hash(password, 10);
182
+ }
183
+ // create an admin user account, username can be blank (no password)
184
+ async createAdminUser(username, password) {
185
+ const hash = await this.hash(password);
186
+ // create an owner user
187
+ const user = this.stores.users.insert({
188
+ // this is a user
189
+ type: 'user',
190
+ created: Date.now(),
191
+ lastOnline: Date.now(),
192
+ // credentials
193
+ username,
194
+ hash,
195
+ // permissions
196
+ isOwner: true,
197
+ roles: [],
198
+ // brickadia player uuid
199
+ playerId: '',
200
+ });
201
+ return user;
202
+ }
203
+ // determine if a user with this name exists
204
+ async userExists(username) {
205
+ return (await this.stores.users.count({ type: 'user', username })) > 0;
206
+ }
207
+ // create a regular user account
208
+ async createUser(username, password) {
209
+ if (await this.userExists(username))
210
+ throw new Error('user already exists');
211
+ const hash = await this.hash(password);
212
+ // create an owner user
213
+ const user = this.stores.users.insert({
214
+ // this is a user
215
+ type: 'user',
216
+ created: Date.now(),
217
+ lastOnline: 0,
218
+ // credentials
219
+ username,
220
+ hash,
221
+ // permissions
222
+ isOwner: false,
223
+ roles: [],
224
+ // brickadia player uuid
225
+ playerId: '',
226
+ });
227
+ return user;
228
+ }
229
+ // set a user's password
230
+ async userPasswd(username, password) {
231
+ const hash = await this.hash(password);
232
+ if (!this.userExists(username))
233
+ throw new Error('user does not exist');
234
+ await this.stores.users.update({ type: 'user', username }, { $set: { hash } });
235
+ }
236
+ // get a user from credentials
237
+ async authUser(username, password) {
238
+ const user = await this.stores.users.findOne({ username });
239
+ // user not found
240
+ if (!user || user.isBanned)
241
+ return null;
242
+ // make sure the user's password hash is valid
243
+ if (await bcrypt_1.default.compare(password, user.hash)) {
244
+ // update last online status
245
+ await this.stores.users.update({ _id: user._id }, { $set: { lastOnline: Date.now() } });
246
+ return user;
247
+ }
248
+ // wrong password
249
+ return null;
250
+ }
251
+ // find a user by object id
252
+ async findUserById(id) {
253
+ return await this.stores.users.findOne({
254
+ $or: [
255
+ // the owner has no username, so everyone is the owner
256
+ { type: 'user', username: '', isOwner: true },
257
+ // the user exists and has an id
258
+ { type: 'user', _id: id },
259
+ ],
260
+ });
261
+ }
262
+ // get a list of roles
263
+ // TODO: actually implement roles
264
+ getRoles() {
265
+ return this.stores.server.find({ type: 'role' });
266
+ }
267
+ // add a chat message to the chat log store
268
+ async addChatLog(action, user, message) {
269
+ this.calendar.addDate(Date.now());
270
+ return await this.stores.chat.insert(Object.assign({ type: 'chat', created: Date.now(), instanceId: await this.getInstanceId(), action,
271
+ user }, (message ? { message } : {})));
272
+ }
273
+ // get recent chat activity
274
+ async getChats({ count = 50, sameServer, before, after, } = {}) {
275
+ return await this.stores.chat
276
+ .find(Object.assign(Object.assign({ type: 'chat' }, (sameServer ? { instanceId: await this.getInstanceId() } : {})), { created: before
277
+ ? { $lt: before }
278
+ : after
279
+ ? { $gt: after }
280
+ : { $lt: Date.now() } }))
281
+ .sort({ created: !before && after ? 1 : -1 })
282
+ .limit(count)
283
+ .exec();
284
+ }
285
+ // get paginated players
286
+ async getPlayers({ count = 50, search = '', page = 0, sort = 'name', direction = '1', limitId = undefined, } = {}) {
287
+ const pattern = (0, pattern_1.explode)(search);
288
+ // the query used for finding which players are available
289
+ const query = {
290
+ type: 'userHistory',
291
+ // only filter if there's a query
292
+ $and: [
293
+ // if a limitId is passed in, the id must be in it
294
+ ...(limitId ? [{ id: { $in: limitId } }] : []),
295
+ // if there's a search, the search matches...
296
+ ...(search.length > 0
297
+ ? [
298
+ {
299
+ $or: [
300
+ // id was pasted in
301
+ { id: search },
302
+ // user's current name
303
+ { name: { $regex: pattern } },
304
+ // user's past name
305
+ {
306
+ nameHistory: { $elemMatch: { name: { $regex: pattern } } },
307
+ },
308
+ ],
309
+ },
310
+ ]
311
+ : []),
312
+ ],
313
+ };
314
+ // the query used for finding a specific player
315
+ const exactQuery = {
316
+ type: 'userHistory',
317
+ // only filter if there's a query
318
+ $or: [
319
+ // id was pasted in
320
+ { id: search },
321
+ // user's current name
322
+ { name: search },
323
+ ],
324
+ };
325
+ // count players and query players
326
+ const [total, players, exactResult] = await Promise.all([
327
+ this.stores.players.count(query),
328
+ this.stores.players
329
+ .find(query)
330
+ // TODO: add other sorts and sort directions
331
+ .sort({ [sort]: direction })
332
+ .skip(count * page)
333
+ .limit(count)
334
+ .exec(),
335
+ // exact match detection
336
+ search.length > 0 && page === 0
337
+ ? this.stores.players.find(exactQuery)
338
+ : [],
339
+ ]);
340
+ // add exact matches to the beginning
341
+ if (exactResult.length > 0) {
342
+ // remove duplicates
343
+ for (const res of exactResult) {
344
+ const index = players.findIndex(p => p._id === res._id);
345
+ players.splice(index, 1);
346
+ }
347
+ // add results to the beginning
348
+ players.splice(0, 0, ...exactResult);
349
+ }
350
+ return {
351
+ pages: Math.ceil(total / count),
352
+ total,
353
+ players,
354
+ };
355
+ }
356
+ // get paginated users
357
+ async getUsers({ count = 50, search = '', page = 0, sort = 'name', direction = '1', } = {}) {
358
+ const pattern = (0, pattern_1.explode)(search);
359
+ // the query used for finding which players are available
360
+ const query = Object.assign({ type: 'user' }, (search.length > 0
361
+ ? {
362
+ $or: [
363
+ // id was pasted in
364
+ { playerId: search },
365
+ // user's current name
366
+ { name: { $regex: pattern } },
367
+ ],
368
+ }
369
+ : {}));
370
+ // count players and query players
371
+ const [total, users] = await Promise.all([
372
+ this.stores.users.count(query),
373
+ this.stores.users
374
+ .find(query)
375
+ // TODO: add other sorts and sort directions
376
+ .sort({ [sort]: direction })
377
+ .skip(count * page)
378
+ .limit(count)
379
+ .exec(),
380
+ ]);
381
+ return {
382
+ pages: Math.ceil(total / count),
383
+ total,
384
+ users,
385
+ };
386
+ }
387
+ // get an individual player, ban and kick history, and notes
388
+ async getPlayer(id) {
389
+ const [player, banHistory, kickHistory, notes] = await Promise.all([
390
+ this.stores.players.findOne({ type: 'userHistory', id }),
391
+ this.stores.players
392
+ .find({ type: 'banHistory', banned: id })
393
+ .sort({ created: -1 })
394
+ .limit(25)
395
+ .exec(),
396
+ this.stores.players
397
+ .find({ type: 'kickHistory', kicked: id })
398
+ .sort({ created: -1 })
399
+ .limit(25)
400
+ .exec(),
401
+ this.stores.players
402
+ .find({ type: 'note', id })
403
+ .sort({ created: -1 })
404
+ .limit(25)
405
+ .exec(),
406
+ ]);
407
+ if (!player)
408
+ return null;
409
+ return Object.assign(Object.assign({}, player), { banHistory, kickHistory, notes });
410
+ }
411
+ // add a user to the visit history, returns true if this is a first visit
412
+ async addVisit(user) {
413
+ const existing = await this.stores.players.findOne({
414
+ type: 'userHistory',
415
+ id: user.id,
416
+ });
417
+ const now = Date.now();
418
+ const instanceId = await this.getInstanceId();
419
+ if (!existing) {
420
+ // create the player
421
+ // TODO: add some form of admin note tool for moderators to leave notes
422
+ // on troublesome players + warnings
423
+ await this.stores.players.insert({
424
+ type: 'userHistory',
425
+ // base brickadia user info
426
+ id: user.id,
427
+ name: user.name,
428
+ // list of names and when they were first used
429
+ nameHistory: [{ name: user.name, date: now }],
430
+ // list of ips this player has been on
431
+ ips: [],
432
+ // first time player was seen
433
+ created: now,
434
+ // last time player was seen
435
+ lastSeen: now,
436
+ // last server this player has been on
437
+ lastInstanceId: instanceId,
438
+ // number of status checks this player has observed
439
+ heartbeats: 0,
440
+ // number of sessions (at least an hour apart) this player has had
441
+ sessions: 1,
442
+ // number of instances (times omegga was started) this player has joined
443
+ instances: 1,
444
+ });
445
+ return true;
446
+ }
447
+ else {
448
+ await this.stores.players.update({ _id: existing._id }, Object.assign({ $inc: {
449
+ // increment number of sessions if the player hasn't been seen for an hour
450
+ sessions: existing.lastSeen < now - 60 * 60 * 1000 ? 1 : 0,
451
+ // increment the number of instances this player has joined
452
+ instances: existing.lastInstanceId === instanceId ? 1 : 0,
453
+ }, $set: {
454
+ // update last seen time and user name
455
+ lastSeen: now,
456
+ name: user.name,
457
+ // set the last joined instance
458
+ lastInstanceId: instanceId,
459
+ } }, (existing.nameHistory.some(h => h.name === user.name)
460
+ ? {}
461
+ : {
462
+ $addToSet: { nameHistory: { name: user.name, date: now } },
463
+ })));
464
+ return false;
465
+ }
466
+ }
467
+ // use data from minutely heartbeats to fuel metrics
468
+ async addHeartbeat(data) {
469
+ const now = Date.now();
470
+ // add the heartbeat to the server status store
471
+ await this.stores.status.insert({
472
+ type: 'heartbeat',
473
+ created: now,
474
+ bricks: data.bricks,
475
+ players: data.players,
476
+ });
477
+ // update player heartbeats and last seens
478
+ await this.stores.players.update({
479
+ // all players in the status update
480
+ id: { $in: data.players },
481
+ }, {
482
+ // update last seen
483
+ $set: { lastSeen: now },
484
+ // increment heartbeats
485
+ $inc: { heartbeats: 1 },
486
+ }, { multi: true });
487
+ // get all players in the status update
488
+ const players = await this.stores.players.find({
489
+ id: { $in: data.players },
490
+ });
491
+ await Promise.all(players
492
+ // find players without the discovered ip
493
+ .filter(p => !(p.ips || []).includes(data.ips[p.id]))
494
+ // insert the IP into the player's ip list
495
+ .map(p => this.stores.players.update({ _id: p._id }, {
496
+ $addToSet: { ips: data.ips[p.id] },
497
+ })));
498
+ }
499
+ async getAutoRestartConfig() {
500
+ let config = await this.stores.server.findOne({
501
+ type: 'autoRestartConfig',
502
+ });
503
+ if (!config) {
504
+ config = await this.stores.server.insert({
505
+ type: 'autoRestartConfig',
506
+ maxUptime: 48,
507
+ maxUptimeEnabled: true,
508
+ emptyUptime: 24,
509
+ emptyUptimeEnabled: true,
510
+ dailyHour: 2,
511
+ dailyHourEnabled: false,
512
+ announcementEnabled: true,
513
+ bricksEnabled: true,
514
+ minigamesEnabled: true,
515
+ environmentEnabled: true,
516
+ playersEnabled: true,
517
+ });
518
+ }
519
+ return config;
520
+ }
521
+ async setAutoRestartConfig(config) {
522
+ config.maxUptime = Math.round(Math.max(1, Math.min(config.maxUptime, 168)));
523
+ config.emptyUptime = Math.round(Math.max(1, Math.min(config.emptyUptime, 168)));
524
+ config.dailyHour = Math.round(Math.max(0, Math.min(config.dailyHour, 23)));
525
+ await this.stores.server.update({ type: 'autoRestartConfig' }, {
526
+ $set: Object.assign({}, config),
527
+ }, { upsert: false });
528
+ }
529
+ // update player online-time punchcard
530
+ async updatePlayerPunchcard(numNewPlayers) {
531
+ // get date, utc hour, and utc day
532
+ const now = new Date();
533
+ const time = now.getTime();
534
+ const hour = now.getUTCHours();
535
+ const day = now.getUTCDay();
536
+ const month = now.getUTCMonth();
537
+ const year = now.getUTCFullYear();
538
+ // find the punchcard
539
+ const card = await this.stores.status.findOne({
540
+ type: 'punchcard',
541
+ kind: 'playerCount',
542
+ month,
543
+ year,
544
+ });
545
+ // create a new punchcard if one does not exist for this month
546
+ if (!card) {
547
+ const punchcard = createPunchcard();
548
+ punchcard[day][hour] = numNewPlayers;
549
+ // insert it
550
+ await this.stores.status.insert({
551
+ type: 'punchcard',
552
+ kind: 'playerCount',
553
+ created: time,
554
+ updated: time,
555
+ month,
556
+ year,
557
+ punchcard,
558
+ });
559
+ // if the card exists, check if it was already updated this hour
560
+ }
561
+ else {
562
+ // add the players to this slot
563
+ card.punchcard[day][hour] += numNewPlayers;
564
+ // update the punchcard
565
+ await this.stores.status.update({ _id: card._id }, {
566
+ $set: {
567
+ punchcard: card.punchcard,
568
+ updated: time,
569
+ },
570
+ });
571
+ }
572
+ }
573
+ }
574
+ exports.default = Database;
575
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/webserver/backend/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /// <reference types="node" />
2
+ import { IServerConfig } from "../../config/types";
3
+ import type Omegga from "../../omegga/server";
4
+ import { IServerStatus } from "../../omegga/types";
5
+ import express from 'express';
6
+ import expressSession from 'express-session';
7
+ import http from 'http';
8
+ import https from 'https';
9
+ import Database from './database';
10
+ import { OmeggaSocketIo } from './types';
11
+ export default class Webserver {
12
+ database: Database;
13
+ port: number;
14
+ omegga: Omegga;
15
+ app: express.Express;
16
+ server: http.Server | https.Server;
17
+ io: OmeggaSocketIo;
18
+ options: IServerConfig;
19
+ https: boolean;
20
+ started: boolean;
21
+ created: Promise<boolean>;
22
+ serverStatusInterval: ReturnType<typeof setInterval>;
23
+ lastReportedStatus: IServerStatus;
24
+ rooms: string[];
25
+ dataPath: string;
26
+ constructor(options: IServerConfig, omegga: Omegga);
27
+ createServer(): Promise<boolean>;
28
+ initWebUI(session: ReturnType<typeof expressSession>): Promise<void>;
29
+ start(): Promise<void>;
30
+ stop(): void;
31
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/webserver/backend/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,2BAAsB;AAC9C,OAAO,KAAK,MAAM,4BAAuB;AACzC,OAAO,EAAE,aAAa,EAAE,2BAAsB;AAE9C,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,OAAO,EAAc,cAAc,EAAE,MAAM,SAAS,CAAC;AAgBrD,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IAEf,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IACrB,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACnC,EAAE,EAAE,cAAc,CAAC;IAEnB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1B,oBAAoB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IACrD,kBAAkB,EAAE,aAAa,CAAC;IAElC,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC;gBAGL,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;IAkB5C,YAAY;IA0EZ,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC;IAuDpD,KAAK;IAiBX,IAAI;CAML"}