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
@@ -1,206 +0,0 @@
1
- const path = require('path');
2
- const http = require('http');
3
- const https = require('https');
4
-
5
- const express = require('express');
6
- const expressSession = require('express-session');
7
- const NedbStore = require('nedb-promises-session-store').default;
8
- const SocketIo = require('socket.io');
9
- const bodyParser = require('body-parser');
10
-
11
- const util = require('./util.js');
12
- const setupApi = require('./api.js');
13
- const setupMetrics = require('./metrics.js');
14
- const Database = require('./database.js');
15
-
16
- const soft = require('../../softconfig.js');
17
-
18
- // path to assets folder
19
- const ASSET_PATH = path.join(__dirname, '../frontend/assets');
20
-
21
- // path to frontend directory
22
- const FRONTEND_PATH = path.join(__dirname, '../frontend');
23
-
24
- // path to webpacked data
25
- const PUBLIC_PATH = path.join(__dirname, '../../../public');
26
-
27
- const log = (...args) => global.Omegga.log(...args);
28
- const error = (...args) => global.Omegga.error(...args);
29
-
30
- // the webserver servers an authenticated
31
- class Webserver {
32
- #database = undefined;
33
-
34
- // create a webserver
35
- constructor(options, omegga) {
36
- this.port = options.port || process.env.PORT || soft.DEFAULT_PORT;
37
- this.options = options;
38
- this.omegga = omegga;
39
- this.dataPath = path.join(omegga.path, soft.DATA_PATH);
40
-
41
- // the database provides omegga with metrics, chat logs, and more
42
- // to help administrators keep track of their users and server
43
- this.database = new Database(options, omegga);
44
-
45
- // https status of the server
46
- this.https = false;
47
- // started status of the server
48
- this.started = false;
49
- this.created = this.createServer();
50
- }
51
-
52
- // create the webserver
53
- async createServer() {
54
- const hasOpenSSL = require('hasbin').sync('openssl');
55
-
56
- // let the database do migrations
57
- await this.database.doMigrations();
58
-
59
- // create express app
60
- this.app = express();
61
-
62
- // create a server with https if applicable
63
- const pickProtocol = async () => {
64
- if (this.options.https) {
65
- if (hasOpenSSL) {
66
- const certFile = await util.getSSLKeys(this.dataPath);
67
- if (certFile) {
68
- // handy notification of generated ssl certs
69
- if (certFile.new) log('>>'.green, 'Generated new SSL certificate');
70
-
71
- this.https = true;
72
- return https.createServer(
73
- {
74
- key: certFile.keys.serviceKey,
75
- cert: certFile.keys.certificate,
76
- },
77
- this.app
78
- );
79
- } else {
80
- error(
81
- '!>'.red,
82
- 'Error generating SSL certificate - falling back to http'
83
- );
84
- }
85
- }
86
-
87
- // warn the user
88
- log(
89
- ':>'.yellow,
90
- 'Running web server with http - install ',
91
- 'openssl'.yellow.underline,
92
- ' for https (more secure)'
93
- );
94
- }
95
-
96
- // fallback to http
97
- return http.Server(this.app);
98
- };
99
-
100
- // create http(s) server based on openssl availability
101
- this.server = await pickProtocol();
102
-
103
- this.app.set('trust proxy', 1);
104
- const session = expressSession({
105
- secret: util.getSessionSecret(this.dataPath),
106
- resave: false,
107
- saveUninitialized: false,
108
- cookie: {
109
- path: '/',
110
- secure: this.https,
111
- maxAge: 365 * 24 * 60 * 60 * 1000, // 1 year
112
- },
113
- // use a nedb database for session store
114
- store: NedbStore({
115
- filename: path.join(this.dataPath, soft.SESSION_STORE),
116
- connect: expressSession,
117
- }),
118
- });
119
- this.app.use(session);
120
-
121
- // setup routes and webserver
122
- await this.initWebUI(session);
123
- return true;
124
- }
125
-
126
- // setup the web ui routes
127
- async initWebUI(session) {
128
- const io = SocketIo(this.server);
129
- this.io = io;
130
-
131
- await this.database.getInstanceId();
132
-
133
- // use the session middleware
134
- io.use((socket, next) => {
135
- session(socket.request, socket.request.res || {}, async () => {
136
- // check if user is authenticated
137
- const user = await this.database.findUserById(
138
- socket.request.session.userId
139
- );
140
- if (user && !user.isBanned) {
141
- // TODO: check if user is banned while connected to disconnect websocket
142
- socket.user = user;
143
- await this.database.stores.users.update(
144
- { _id: user._id },
145
- { $set: { lastOnline: Date.now() } }
146
- );
147
- next();
148
- } else {
149
- next(new Error('unauthorized'));
150
- }
151
- });
152
- });
153
-
154
- // provide assets in the /public path
155
- this.app.use('/public', express.static(PUBLIC_PATH));
156
- this.app.use('/public', express.static(ASSET_PATH));
157
- this.app.use(bodyParser.json());
158
-
159
- this.rooms = ['chat', 'status', 'plugins', 'server'];
160
-
161
- // setup the api
162
- setupApi(this, io);
163
-
164
- // setup metrics and tracking
165
- setupMetrics(this, io);
166
-
167
- // every request goes through the index file (frontend handles 404s)
168
- this.app.use(async (req, res) => {
169
- const user = await this.database.findUserById(req.session.userId);
170
- const isAuth = user && !user.isBanned;
171
-
172
- if (isAuth) {
173
- res.sendFile(path.join(FRONTEND_PATH, 'app.html'));
174
- } else {
175
- res.sendFile(path.join(FRONTEND_PATH, 'auth.html'));
176
- }
177
- });
178
- }
179
-
180
- // start the webserver
181
- async start() {
182
- if (this.started) return;
183
- await this.created;
184
- return await new Promise(resolve => {
185
- this.server.listen(this.port, () => {
186
- log(
187
- `${'>>'.green} Web UI available at`,
188
- `http${this.https ? 's' : ''}://127.0.0.1:${this.port}`.green
189
- );
190
- this.started = true;
191
- this.database.addChatLog('server', {}, 'Server started');
192
- resolve();
193
- });
194
- });
195
- }
196
-
197
- // stop the webserver
198
- stop() {
199
- this.database.addChatLog('server', {}, 'Server stopped');
200
- this.server.close();
201
- this.started = false;
202
- clearInterval(this.serverStatusInterval);
203
- }
204
- }
205
-
206
- module.exports = Webserver;
@@ -1,148 +0,0 @@
1
- const soft = require('../../softconfig.js');
2
-
3
- const error = (...args) => global.Omegga.error(...args);
4
-
5
- module.exports = (server, io) => {
6
- const { database, omegga } = server;
7
-
8
- // server status is checked every minute
9
- clearInterval(server.serverStatusInterval);
10
- // heartbeat happens every 60 seconds
11
- let empties = 0;
12
-
13
- // last heartbeat hour
14
- let lastHour = -1;
15
- // players that have joined in the last hour
16
- let hourlyPlayers = [];
17
-
18
- server.lastReportedStatus = null;
19
- server.serverStatusInterval = setInterval(async () => {
20
- if (!omegga.started) return;
21
- try {
22
- // get the server status
23
- const status = await omegga.getServerStatus();
24
- if (!status) return;
25
-
26
- // get players by id
27
- const players = status.players.map(p => p.id);
28
-
29
- // send the unaltered status to the frontend
30
- server.lastReportedStatus = status;
31
- io.to('status').emit('server.status', status);
32
- try {
33
- omegga.emit('metrics:heartbeat', status);
34
- } catch (e) {
35
- // prevent the omegga callback handlers from crashing this
36
- error('Error in heartbeat emit', e);
37
- }
38
-
39
- // stop recording metrics after 3 empty server statuses
40
- if (
41
- players.length === 0 &&
42
- ++empties > soft.METRIC_EMPTIES_BEFORE_PAUSE
43
- ) {
44
- return;
45
- }
46
-
47
- const now = new Date();
48
- const hour = now.getUTCHours();
49
- // check if it's a new hour (for punchcard unique player tracking)
50
- if (hour !== lastHour) {
51
- lastHour = hour;
52
- hourlyPlayers = [];
53
- }
54
-
55
- // find all the players unique to this hour
56
- const newPlayers = players.filter(p => !hourlyPlayers.includes(p));
57
- if (newPlayers.length > 0) {
58
- // update the punchcard
59
- await database.updatePlayerPunchcard(newPlayers.length);
60
- // mark those players as previously joined players
61
- hourlyPlayers.push(...newPlayers);
62
- }
63
-
64
- // server is not empty, reset the counter
65
- empties = 0;
66
-
67
- const data = {
68
- // number of bricks
69
- bricks: status.bricks,
70
- // unique players by id
71
- players: players.filter((p, i) => players.indexOf(p) === i),
72
- // addresses by player id
73
- ips: Object.fromEntries(status.players.map(p => [p.id, p.address])),
74
- };
75
-
76
- // hand the server status off to the database
77
- await database.addHeartbeat(data);
78
- } catch (e) {
79
- // probably an issue getting server status
80
- error('Server Not Responding...');
81
- }
82
- }, soft.METRIC_HEARTBEAT_INTERVAL);
83
-
84
- // chat events
85
- omegga.on('chat', async (name, message) => {
86
- const p = omegga.getPlayer(name);
87
- const user = {
88
- id: p.id,
89
- name,
90
- color: p.getNameColor(),
91
- };
92
-
93
- // tell web users about a chat message
94
- io.to('chat').emit('chat', await database.addChatLog('msg', user, message));
95
- });
96
-
97
- // player leave events
98
- omegga.on('leave', async ({ id, name }) => {
99
- // tell web users a player left
100
- io.to('chat').emit(
101
- 'chat',
102
- await database.addChatLog('leave', { id, name })
103
- );
104
- });
105
-
106
- // player join events
107
- omegga.on('join', async ({ id, name }) => {
108
- // add the visit to the database
109
- const isFirst = await database.addVisit({ id, name });
110
-
111
- // tell web users a player joined (and if it's their first time joining)
112
- io.to('chat').emit(
113
- 'chat',
114
- await database.addChatLog('join', {
115
- id,
116
- name,
117
- ...(isFirst ? { isFirst } : {}),
118
- })
119
- );
120
- });
121
-
122
- // tell web users plugin status
123
- omegga.on('plugin:status', (shortPath, info) => {
124
- io.to('plugins').emit('plugin', shortPath, info);
125
- });
126
-
127
- // server status events
128
- omegga.on('start', () =>
129
- io
130
- .to('server')
131
- .emit('status', { started: true, starting: false, stopping: false })
132
- );
133
- omegga.on('server:starting', () =>
134
- io
135
- .to('server')
136
- .emit('status', { started: false, starting: true, stopping: false })
137
- );
138
- omegga.on('server:stopped', () =>
139
- io
140
- .to('server')
141
- .emit('status', { started: false, starting: false, stopping: false })
142
- );
143
- omegga.on('server:stopping', () =>
144
- io
145
- .to('server')
146
- .emit('status', { started: true, starting: false, stopping: true })
147
- );
148
- };
@@ -1,75 +0,0 @@
1
- const path = require('path');
2
- const fs = require('fs');
3
-
4
- const crypto = require('crypto');
5
- const pem = require('pem').promisified;
6
-
7
- const soft = require('../../softconfig.js');
8
-
9
- module.exports = {
10
- // generate SSL certs for the https server
11
- async getSSLKeys(dataPath) {
12
- const certsPath = path.join(dataPath, soft.WEB_CERTS_DATA);
13
- let certData;
14
- const now = Date.now();
15
-
16
- // read cert data from json file
17
- if (fs.existsSync(certsPath)) {
18
- try {
19
- certData = JSON.parse(fs.readFileSync(certsPath, 'utf8'));
20
-
21
- // make sure the cert is not expired
22
- if (certData.expires < now) certData = undefined;
23
- } catch (e) {
24
- // nothing to do here - probably bad json
25
- }
26
- }
27
-
28
- // otherwise generate it
29
- if (!certData) {
30
- // expires in half the real duration time
31
- const days = 360;
32
- const expires = now + (days / 2) * 24 * 60 * 60 * 1000;
33
- try {
34
- const keys = await pem.createCertificate({ days, selfSigned: true });
35
- certData = { keys, expires };
36
-
37
- fs.writeFileSync(certsPath, JSON.stringify(certData));
38
- certData.new = true;
39
- } catch (e) {
40
- // probably missing openssl or something
41
- }
42
- }
43
-
44
- return certData;
45
- },
46
-
47
- // generate a session secret for the cookies
48
- getSessionSecret(dataPath) {
49
- const tokenPath = path.join(dataPath, soft.WEB_SESSION_TOKEN);
50
- const secretSize = 64;
51
- let secret;
52
- // read secret from file
53
- if (fs.existsSync(tokenPath)) {
54
- try {
55
- secret = fs.readFileSync(tokenPath, 'utf8');
56
- } catch (e) {
57
- // nothing to do here - probably file is a folder or something
58
- }
59
- }
60
-
61
- if (!secret) {
62
- // generate a new secret
63
- const buf = Buffer.alloc(secretSize);
64
- secret = crypto.randomFillSync(buf).toString('hex');
65
- try {
66
- // write secret to file
67
- fs.writeFileSync(tokenPath, secret);
68
- } catch (e) {
69
- // nothing to do here - maybe missing perms?
70
- }
71
- }
72
-
73
- return secret;
74
- },
75
- };
@@ -1,26 +0,0 @@
1
- env:
2
- browser: true
3
- es2021: true
4
- globals:
5
- io: readonly
6
- extends:
7
- - 'eslint:recommended'
8
- - 'plugin:vue/essential'
9
- parserOptions:
10
- ecmaVersion: 12
11
- sourceType: module
12
- plugins:
13
- - vue
14
- rules:
15
- indent:
16
- - error
17
- - 2
18
- linebreak-style:
19
- - error
20
- - unix
21
- quotes:
22
- - error
23
- - single
24
- semi:
25
- - error
26
- - always
@@ -1,78 +0,0 @@
1
- import Vue from 'vue';
2
-
3
- import './components/index.js';
4
- import './widgets/tooltip.js';
5
- import './widgets/index.js';
6
- import './partials/index.js';
7
-
8
- import Main from './views/Main.vue';
9
-
10
- Vue.prototype.logout = () =>
11
- fetch('/api/v1/logout').then(() => location.reload());
12
-
13
- Vue.prototype.user = {};
14
- Vue.prototype.roles = [];
15
- Vue.prototype.userLookup = [];
16
- Vue.prototype.showLogout = false;
17
- Vue.prototype.omeggaData = {};
18
-
19
- Vue.prototype.xss = str =>
20
- str
21
- .replace(/&/g, '&amp;')
22
- .replace(/</g, '&lt;')
23
- .replace(/>/g, '&gt;')
24
- .replace(/"/g, '&quot;')
25
- .replace(/'/g, '&apos;');
26
-
27
- // convert minutes into min/hour/day
28
- Vue.prototype.heartbeatAgo = mins => {
29
- if (mins < 60) return mins + ' mins';
30
- mins /= 60;
31
- if (mins < 24) return Math.round(mins) + ' hours';
32
- mins /= 24;
33
- return Math.round(mins) + ' days';
34
- };
35
-
36
- // convert ms into sec/min/hour
37
- Vue.prototype.duration = ago => {
38
- if (ago < 0) return 'not yet';
39
- ago /= 1000;
40
-
41
- if (ago < 5) return 'a moment';
42
- if (ago < 60) return Math.round(ago) + ' secs';
43
- ago /= 60;
44
- if (ago < 60) return Math.round(ago) + ' mins';
45
- ago /= 60;
46
- if (ago < 24) return Math.round(ago) + ' hours';
47
- ago /= 24;
48
- return Math.round(ago) + ' days';
49
- };
50
-
51
- // only date
52
- Vue.prototype.isoDate = time => {
53
- return Vue.prototype.isoTime(time).split(' ')[0];
54
- };
55
-
56
- // date time in semi-iso format
57
- Vue.prototype.isoTime = time => {
58
- const date = new Date(time);
59
- const pad = s => (s + '').padStart(2, '0');
60
- return (
61
- date.getFullYear() +
62
- '-' +
63
- pad(date.getMonth() + 1) +
64
- '-' +
65
- pad(date.getDate()) +
66
- ' ' +
67
- pad(date.getHours()) +
68
- ':' +
69
- pad(date.getMinutes()) +
70
- ':' +
71
- pad(date.getSeconds())
72
- );
73
- };
74
-
75
- new Vue({
76
- el: '#app',
77
- ...Main,
78
- });
@@ -1,16 +0,0 @@
1
- import Vue from 'vue';
2
-
3
- import './components';
4
- import Auth from './views/Auth.vue';
5
-
6
- Vue.prototype.omeggaData = {};
7
-
8
- new Vue({
9
- el: '#app',
10
- data() {
11
- return {};
12
- },
13
- render(h) {
14
- return h(Auth);
15
- },
16
- });
@@ -1,83 +0,0 @@
1
- <style scoped lang="scss">
2
- @import '../css/theme';
3
-
4
- .background {
5
- position: fixed;
6
- left: 0;
7
- top: 0;
8
- width: 100%;
9
- height: 100%;
10
- overflow: visible;
11
-
12
- background-image: url('/public/img/auth_bg.webp');
13
- background-repeat: no-repeat;
14
- background-attachment: fixed;
15
- background-size: cover;
16
- background-position: 50% 50%;
17
- }
18
-
19
- .bg-img {
20
- position: absolute;
21
- filter: blur(20px);
22
- left: -40px;
23
- top: -40px;
24
- width: calc(100% + 80px);
25
- height: calc(100% + 80px);
26
- object-fit: cover;
27
- }
28
-
29
- .version {
30
- position: absolute;
31
- top: 5px;
32
- right: 5px;
33
- font-weight: 200;
34
- font-size: 12px;
35
- color: rgba(255, 255, 255, 0.5);
36
- text-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
37
- }
38
-
39
-
40
- @media (prefers-color-scheme: dark) {
41
- .background {
42
- background-image: url('/public/img/dark_bg.webp');
43
-
44
- .light {
45
- display: none;
46
- }
47
- }
48
- }
49
-
50
- @media (prefers-color-scheme: light) {
51
- .dark {
52
- display: none;
53
- }
54
- }
55
-
56
- </style>
57
-
58
- <template>
59
- <div class="background">
60
- <img class="bg-img dark" src="/public/img/dark_bg.webp">
61
- <img class="bg-img light" src="/public/img/auth_bg.webp">
62
- <div class="version" v-if="version">Omegga v{{version}}</div>
63
- <slot />
64
- </div>
65
- </template>
66
- <script>
67
-
68
- import Vue from 'vue';
69
-
70
- export default Vue.component('br-background', {
71
- sockets: {
72
- data(data) {
73
- this.version = data.version;
74
- }
75
- },
76
- data() {
77
- return {
78
- version: this.omeggaData && this.omeggaData.version,
79
- };
80
- }
81
- });
82
-
83
- </script>