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,466 +0,0 @@
1
- const readline = require('readline');
2
-
3
- const {
4
- chat: { sanitize },
5
- } = require('../util/index.js');
6
-
7
- let log, err, warn;
8
-
9
- // the terminal wraps omegga and displays console output and handles console input
10
- class Terminal {
11
- constructor(omegga, options = {}) {
12
- this.options = options;
13
- this.omegga = omegga;
14
-
15
- this.commands = {};
16
-
17
- // terminal interface
18
- this.rl = readline.createInterface({
19
- input: process.stdin,
20
- output: process.stdout,
21
- terminal: true,
22
- });
23
- this.rl.setPrompt('> '.brightGreen);
24
-
25
- // shortand fns
26
- log = (...args) => this.log('>>'.green, ...args);
27
- err = (...args) => this.error('!>'.red, ...args);
28
- warn = (...args) => this.warn('W>'.yellow, ...args);
29
-
30
- // print log line if debug is enabled
31
- let launcherDone = false;
32
- let lastDoneMessage = '';
33
- omegga.on('line', l => {
34
- if (options.debug) this.log('::'.blue, l);
35
- else if (!launcherDone) {
36
- if (l.startsWith('DOWNLOADING')) {
37
- // TOOD: if someone is proactive enough in the future, you could turn these steps into a legitimate progress bar
38
- /* Here's some launcher log lines that might be helpful
39
- Grabbing manifest and checking game files...
40
- DOWNLOADING MANIFEST | Hold on...
41
- DOWNLOADING MANIFEST (100%) | Hold on...
42
- DOWNLOADING MANIFEST (100%) | 0 B/s - 13 KiB / 13 KiB (Unknown time remaining...)
43
- DOWNLOADING MANIFEST (100%) | Done!
44
- Checking launcher and downloading version info...
45
- Installing patches and booting...
46
- DOWNLOADING BRICKADIA (0%) | Done!
47
- DOWNLOADING BRICKADIA (100%) | 110 MiB/s - 584 MiB / 584 MiB (1 second remaining...)
48
- DOWNLOADING BRICKADIA (100%) | Nearly done...
49
- DOWNLOADING BRICKADIA (100%), INSTALLING BRICKADIA (86%) | Nearly done...
50
- */
51
- process.stdout.clearLine();
52
- process.stdout.cursorTo(0);
53
- process.stdout.write(l);
54
- // add a newline on "Done!" but prevent newlines on repeat done messages
55
- if (l.match(/Done!/) && l !== lastDoneMessage) {
56
- lastDoneMessage = l;
57
- process.stdout.write('\n');
58
- }
59
- } else if (l.match(/Disabling core dumps./)) {
60
- launcherDone = true;
61
- }
62
- }
63
- });
64
-
65
- // print debug events regardless of debug status
66
- omegga.on('debug', l => this.log('?>'.magenta, l));
67
-
68
- // print chat events as players join/leave the server
69
- omegga.on('join', p => this.log(`${p.name.underline} joined.`.brightBlue));
70
- omegga.on('leave', p => this.log(`${p.name.underline} left.`.brightBlue));
71
- omegga.on('chat', (name, message) =>
72
- this.log(`${name.brightYellow.underline}: ${message}`)
73
- );
74
- omegga.on('start', () => {
75
- const wsl = require('../util/wsl');
76
- log(
77
- `Server has started${
78
- wsl === 1 ? ' in single thread mode due to WSL1' : ''
79
- }. Type ${'/help'.yellow} for more commands`
80
- );
81
-
82
- // check if this is WSL2 and wsl2binds is installed
83
- if (
84
- wsl === 2 &&
85
- this.omegga.pluginLoader &&
86
- !this.omegga.pluginLoader.plugins.some(p => p.getName() === 'wsl2binds')
87
- ) {
88
- warn(
89
- '####'.yellow,
90
- `You are running ${'WSL2'.yellow} and you don't have the ${
91
- 'wsl2binds'.yellow
92
- } plugin.`
93
- );
94
- warn(
95
- '####'.yellow,
96
- `The wsl2binds plugin works as a ${
97
- 'UDP proxy'.underline
98
- } between Windows and the WSL2 VM.`
99
- );
100
- warn('####'.yellow, 'Install it by:');
101
- warn('####'.yellow, ' 1. Closing omegga with', '/stop'.green);
102
- warn(
103
- '####'.yellow,
104
- ' 2. Installing wsl2binds with',
105
- 'omegga install gh:Meshiest/wsl2binds'.green
106
- );
107
- warn('####'.yellow, ' 3. Restarting', 'omegga'.green);
108
- }
109
- });
110
- omegga.on('mapchange', ({ map }) =>
111
- log('Map changed to', (map.charAt(0).toUpperCase() + map.slice(1)).green)
112
- );
113
- omegga.on('unauthorized', () => {
114
- err('Server failed authentication check');
115
- process.exit();
116
- });
117
- omegga.on('error', e => err('Server caught unhandled exception:\n' + e));
118
- omegga.on('server:stopped', () =>
119
- log('Server has closed. Type', '/stop'.yellow, 'to close omegga')
120
- );
121
-
122
- this.rl.on('line', this.handleLine.bind(this));
123
-
124
- // console commands
125
- Object.entries({
126
- debug: {
127
- desc: 'toggle visibility of brickadia console logs',
128
- fn() {
129
- options.debug = !options.debug;
130
- log(
131
- 'Brickadia logs now',
132
- options.debug ? 'visible'.green : 'hidden'.red
133
- );
134
- },
135
- },
136
-
137
- help: {
138
- desc: 'list supported commands and their descriptions',
139
- fn() {
140
- const maxCmdLen = Math.max(
141
- ...Object.keys(this.commands).map(s => s.length)
142
- );
143
- log('Omegga Help Text:\n');
144
- this.log(
145
- ' Console input not starting with / will be sent in chat from a "SERVER" user'
146
- );
147
- this.log(
148
- ' Console input starting with / will be treated as one of the following commands\n'
149
- );
150
- this.log(
151
- '-- Available Omegga commands (type',
152
- '/command'.yellow.underline,
153
- 'to run)'
154
- );
155
- Object.keys(this.commands)
156
- .sort()
157
- .forEach(k => {
158
- this.log(
159
- ' ',
160
- k.yellow.underline,
161
- '-'.padStart(maxCmdLen - k.length + 1),
162
- this.commands[k].desc
163
- );
164
- });
165
- this.log('');
166
- },
167
- },
168
-
169
- cmd: {
170
- desc: 'run a console command on the brickadia server. requires debug for log to show',
171
- fn(...args) {
172
- if (!this.omegga.started) {
173
- err('Omegga is not running');
174
- return;
175
- }
176
- this.omegga.writeln(args.join(' '));
177
- },
178
- },
179
-
180
- ban: {
181
- desc: 'ban a player',
182
- fn(...args) {
183
- if (!this.omegga.started) {
184
- err('Omegga is not running');
185
- return;
186
- }
187
- if (!args.length) {
188
- return err(
189
- 'usage:',
190
- '/ban <name|id> [duration in mins] [reason]'.yellow
191
- );
192
- }
193
- this.omegga.writeln('Chat.Command /ban ' + args.join(' '));
194
- },
195
- },
196
- unban: {
197
- desc: 'unban a player',
198
- fn(...args) {
199
- if (!this.omegga.started) {
200
- err('Omegga is not running');
201
- return;
202
- }
203
- if (!args.length) {
204
- return err('usage:', '/unban <name|id>'.yellow);
205
- }
206
- this.omegga.writeln('Chat.Command /unban ' + args.join(' '));
207
- },
208
- },
209
- kick: {
210
- desc: 'kick a player',
211
- fn(...args) {
212
- if (!this.omegga.started) {
213
- err('Omegga is not running');
214
- return;
215
- }
216
- if (!args.length) {
217
- return err('usage:', '/kick <name|id> [reason]'.yellow);
218
- }
219
- this.omegga.writeln('Chat.Command /kick ' + args.join(' '));
220
- },
221
- },
222
- grantrole: {
223
- desc: 'grant a role to a player',
224
- fn(...args) {
225
- if (!this.omegga.started) {
226
- err('Omegga is not running');
227
- return;
228
- }
229
- if (!args.length) {
230
- return err('usage:', '/grantrole <role name> <name|id>'.yellow);
231
- }
232
- this.omegga.writeln('Chat.Command /grantrole ' + args.join(' '));
233
- },
234
- },
235
- revokerole: {
236
- desc: 'revoke a role from a player',
237
- fn(...args) {
238
- if (!this.omegga.started) {
239
- err('Omegga is not running');
240
- return;
241
- }
242
- if (!args.length) {
243
- return err('usage:', '/revokerole <role name> <name|id>'.yellow);
244
- }
245
- this.omegga.writeln('Chat.Command /revokerole ' + args.join(' '));
246
- },
247
- },
248
- clearbricks: {
249
- desc: "clear a player's bricks",
250
- fn(...args) {
251
- if (!this.omegga.started) {
252
- err('Omegga is not running');
253
- return;
254
- }
255
- if (!args.length) {
256
- return err('usage:', '/clearbricks <name>'.yellow);
257
- }
258
- this.omegga.writeln(`Bricks.Clear "${args.join(' ')}"`);
259
- },
260
- },
261
- clearallbricks: {
262
- desc: 'clear all bricks',
263
- fn() {
264
- if (!this.omegga.started) {
265
- err('Omegga is not running');
266
- return;
267
- }
268
- this.omegga.writeln('Bricks.ClearAll');
269
- },
270
- },
271
-
272
- status: {
273
- desc: 'display server status information. brick count, online players, etc',
274
- async fn() {
275
- if (!this.omegga.started) {
276
- err('Omegga is not running');
277
- return;
278
- }
279
- const msToTime = ms => new Date(ms).toISOString().substr(11, 8);
280
- try {
281
- const status = await this.omegga.getServerStatus();
282
-
283
- log('Server Status');
284
- this.log(`
285
- ${status.serverName.yellow}
286
- Bricks: ${(status.bricks + '').yellow}
287
- Components: ${(status.components + '').yellow}
288
- Uptime: ${msToTime(status.time).yellow}
289
- Players: ${status.players.length === 0 ? 'none'.grey : ''}
290
- ${status.players
291
- .map(p => `[${msToTime(p.time).grey}] ${p.name.brightYellow}`)
292
- .join('\n ')}
293
- `);
294
- } catch (e) {
295
- err('An error occurred while getting server status');
296
- }
297
- },
298
- },
299
-
300
- stop: {
301
- desc: 'stop the server and close Omegga',
302
- async fn() {
303
- log('Stopping server...');
304
- await this.omegga.stop();
305
- process.exit();
306
- },
307
- },
308
-
309
- kill: {
310
- desc: 'forcefully kill brickadia server process without closing omegga',
311
- async fn() {
312
- log('Stopping server...');
313
- await this.omegga.stop();
314
- },
315
- },
316
-
317
- save: {
318
- desc: 'Save bricks to a specified file',
319
- async fn(...args) {
320
- const name = args.join(' ');
321
- if (!name.length) return err('usage:', '/save <name>'.yellow);
322
- log('Saving bricks');
323
- this.omegga.saveBricks(name);
324
- },
325
- },
326
-
327
- load: {
328
- desc: 'Load bricks from a specified file',
329
- async fn(...args) {
330
- const name = args.join(' ');
331
- if (!name.length) return err('usage:', '/load <name>'.yellow);
332
- log('Loading bricks');
333
- this.omegga.loadBricks(name);
334
- },
335
- },
336
-
337
- start: {
338
- desc: 'start the server if it is stopped',
339
- fn() {
340
- if (
341
- !this.omegga ||
342
- (this.omegga && (this.omegga.starting || this.omegga.started))
343
- ) {
344
- err('Omegga is already running');
345
- return;
346
- }
347
- log('Starting server...');
348
- this.omegga.start();
349
- },
350
- },
351
-
352
- reload: {
353
- desc: 'reload available plugins',
354
- async fn() {
355
- if (!this.omegga.pluginLoader) {
356
- err('Omegga is not using plugins');
357
- return;
358
- }
359
-
360
- log('Unloading current plugins');
361
- let success = await this.omegga.pluginLoader.unload();
362
- if (!success) {
363
- err('Could not unload all plugins');
364
- return;
365
- }
366
-
367
- log('Scanning for new plugins');
368
- success = await this.omegga.pluginLoader.scan();
369
- if (!success) {
370
- err('Could not scan for plugins');
371
- return;
372
- }
373
-
374
- log('Starting plugins');
375
- success = await this.omegga.pluginLoader.reload();
376
- if (success) {
377
- const plugins = this.omegga.pluginLoader.plugins
378
- .filter(p => p.isLoaded())
379
- .map(p => p.getName());
380
- log('Loaded', (plugins.length + '').yellow, 'plugins:', plugins);
381
- } else {
382
- err('Could not load all plugins');
383
- }
384
- },
385
- },
386
- }).forEach(([cmd, { desc, fn }]) => this.addCommand(cmd, desc, fn));
387
- }
388
-
389
- // add a command
390
- addCommand(name, desc, fn) {
391
- this.commands[name] = { name, desc, fn: fn.bind(this) };
392
- }
393
-
394
- async handleLine(line) {
395
- if (line.startsWith('/')) {
396
- const [cmd, ...args] = line.slice(1).split(' ');
397
- if (!this.commands[cmd]) {
398
- err(
399
- `unrecognized command /${cmd.underline}. Type /help for more info`.red
400
- );
401
- } else {
402
- try {
403
- const res = this.commands[cmd].fn(...args);
404
- if (res instanceof Promise) {
405
- await res;
406
- }
407
- } catch (e) {
408
- err('unhandled terminal error', e);
409
- }
410
- }
411
- } else if (line.trim().length > 0) {
412
- if (this.omegga.started) {
413
- // broadcast when the chat does not start with a command
414
- this.omegga.broadcast(
415
- `"[<b><color=\\"ff00ff\\">SERVER</></>]: ${sanitize(line)}"`
416
- );
417
- process.stdout.clearLine();
418
- this.log(`[${'SERVER'.brightMagenta.underline}]: ${line}`);
419
-
420
- // if omegga is running a webserver - send this message in the chat log
421
- if (this.omegga.webserver) {
422
- const user = { name: 'SERVER', id: '', web: true, color: 'ff00ff' };
423
- // create database entry, send to web ui
424
- this.omegga.webserver.io
425
- .to('chat')
426
- .emit(
427
- 'chat',
428
- await this.omegga.webserver.database.addChatLog('msg', user, line)
429
- );
430
- }
431
- } else {
432
- err(
433
- 'Server is not started yet. type'.red,
434
- '/help'.yellow,
435
- 'for more info'.red
436
- );
437
- }
438
- }
439
- }
440
-
441
- // let readline render a log without interrupting user input
442
- log(...args) {
443
- process.stdout.clearLine();
444
- process.stdout.cursorTo(0);
445
- console.log(...args);
446
- this.rl.prompt(true);
447
- }
448
-
449
- // let readline render a warning log without interrupting user input
450
- warn(...args) {
451
- process.stdout.clearLine();
452
- process.stdout.cursorTo(0);
453
- console.warn(...args);
454
- this.rl.prompt(true);
455
- }
456
-
457
- // let readline render an error log without interrupting user input
458
- error(...args) {
459
- process.stdout.clearLine();
460
- process.stdout.cursorTo(0);
461
- console.error(...args);
462
- this.rl.prompt(true);
463
- }
464
- }
465
-
466
- module.exports = Terminal;
@@ -1,37 +0,0 @@
1
- /*
2
- Determine if email+password combo is valid
3
- */
4
-
5
- const BrickadiaServer = require('../brickadia/server.js');
6
- const config = require('../softconfig.js');
7
- const { store } = require('../config/index.js');
8
-
9
- const invalidRegExp =
10
- /^(Error: AuthState is Invalid on dedicated server - exiting\.|Changing AuthState from \w+ to Invalid\.)$/;
11
- const validRegExp = /^Changing AuthState from \w+ to ValidOnline\.$/;
12
-
13
- module.exports = (email, password) =>
14
- new Promise(resolve => {
15
- // create a server with these credentials
16
- const server = new BrickadiaServer(config.DATA_PATH, {
17
- credentials: { email, password },
18
- server: {
19
- port: 7775,
20
- __LEGACY: store.get('legacyBin'),
21
- },
22
- });
23
-
24
- // wait for the invalid auth line or valid auth line, then kill the server
25
- server.on('line', line => {
26
- if (line.match(invalidRegExp)) {
27
- server.stop();
28
- resolve(false);
29
- } else if (line.match(validRegExp)) {
30
- server.stop();
31
- resolve(true);
32
- }
33
- });
34
-
35
- // start the server
36
- server.start();
37
- });
@@ -1,6 +0,0 @@
1
- module.exports = {
2
- extension: 'js',
3
- encoding: 'string',
4
- reader: str => JSON.parse(str),
5
- writer: blob => JSON.stringify(blob, 0, 2),
6
- };
@@ -1,8 +0,0 @@
1
- const yaml = require('js-yaml');
2
-
3
- module.exports = {
4
- extension: 'yml',
5
- encoding: 'string',
6
- reader: str => yaml.safeLoad(str),
7
- writer: blob => yaml.safeDump(blob),
8
- };
@@ -1,81 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- const soft = require('../softconfig.js');
5
-
6
- const Configstore = require('configstore');
7
-
8
- const store = new Configstore(
9
- soft.PROJECT_NAME,
10
- {
11
- defaultOmegga: '.',
12
- legacyBin: '',
13
- },
14
- {
15
- globalConfigPath: true,
16
- }
17
- );
18
-
19
- // find all format_EXT.js files in the formats path
20
- const formats = fs
21
- .readdirSync(path.join(__dirname, 'formats'))
22
- // all formats match the format_EXT.js pattern
23
- .filter(file => file.match(/format_[a-z]+\.js/))
24
- // require all the formats
25
- .map(file => require('./formats/' + file))
26
- // format has a valid extension, reader, and writer
27
- .filter(
28
- format =>
29
- format.extension &&
30
- format.extension.match(/^[a-z]+$/) &&
31
- format.encoding &&
32
- format.encoding.match(/^(string|buffer)$/) &&
33
- format.reader &&
34
- typeof format.reader === 'function' &&
35
- format.writer &&
36
- typeof format.writer === 'function'
37
- );
38
-
39
- // create read/write funcs for the provided formats
40
- module.exports = {
41
- defaultConfig: {
42
- omegga: {
43
- webui: true,
44
- port: process.env.OMEGGA_PORT
45
- ? Number(process.env.OMEGGA_PORT)
46
- : soft.DEFAULT_PORT,
47
- https: true,
48
- },
49
- server: {
50
- port: process.env.BRICKADIA_PORT
51
- ? Number(process.env.BRICKADIA_PORT)
52
- : 7777,
53
- map: 'Plate',
54
- branch: 'main-server',
55
- },
56
- },
57
-
58
- // config store
59
- store,
60
-
61
- // Writes save data to a file
62
- // function(path, blob) -> void
63
- write: require('./writer.js')(formats),
64
-
65
- // reads save data from a file
66
- // function(path) -> config
67
- read: require('./reader.js')(formats),
68
-
69
- // open config at a specified path
70
- find(dir = '.') {
71
- // find the first config file matching these config file names
72
- for (const f of soft.CONFIG_FILENAMES) {
73
- for (const { extension } of formats) {
74
- const file = path.join(dir, f + '.' + extension);
75
- if (fs.existsSync(file)) return file;
76
- }
77
- }
78
-
79
- return undefined;
80
- },
81
- };
@@ -1,27 +0,0 @@
1
- const fs = require('fs');
2
- const validate = require('./validator.js');
3
-
4
- // given a list of formats, generate a function to write to any of those formats
5
- module.exports = formats => path => {
6
- // find the config format that matches this extension
7
- const ext = path.split('.').pop().toLowerCase();
8
- const format = formats.find(f => f.extension === ext);
9
- if (!format) throw 'missing format';
10
-
11
- if (!fs.existsSync(path)) throw 'missing file';
12
-
13
- // read the config file
14
- const data = fs.readFileSync(path);
15
-
16
- // parse the config file
17
- const blob = format.reader(
18
- format.encoding === 'string' ? data.toString() : data
19
- );
20
-
21
- // validate the config blob
22
- const result = validate(blob);
23
- if (!result.valid) throw result.errors;
24
-
25
- // return the parsed config
26
- return blob;
27
- };
@@ -1,32 +0,0 @@
1
- const allowedKeys = ['omegga', 'credentials', 'server'];
2
-
3
- // low effort js object validation
4
- module.exports = obj => {
5
- if (typeof obj !== 'object')
6
- return { valid: false, errors: ['not an object'] };
7
-
8
- if (Object.keys(obj).some(k => !allowedKeys.includes(k)))
9
- return { valid: false, errors: ['contains invalid keys'] };
10
-
11
- if (!obj.server || typeof obj.server !== 'object')
12
- return { valid: false, errors: ['missing/invalid server category'] };
13
-
14
- if (typeof obj.server.port !== 'number')
15
- return { valid: false, errors: ['server.port must be a number'] };
16
-
17
- if (obj.server.branch && typeof obj.server.branch !== 'string')
18
- return { valid: false, errors: ['server.branch must be a string'] };
19
-
20
- if (obj.omegga) {
21
- if (typeof obj.omegga !== 'object')
22
- return { valid: false, errors: ['invalid omegga category'] };
23
-
24
- if (
25
- typeof obj.omegga.port !== 'undefined' &&
26
- typeof obj.omegga.port !== 'number'
27
- )
28
- return { valid: false, errors: ['omegga.port must be a nubmer'] };
29
- }
30
-
31
- return { valid: true, errors: [] };
32
- };
@@ -1,20 +0,0 @@
1
- const fs = require('fs');
2
- const validate = require('./validator.js');
3
-
4
- // given a list of formats, generate a function for write to any of those formats
5
- module.exports = formats => (path, blob) => {
6
- // find the config format that matches this extension
7
- const ext = path.split('.').pop().toLowerCase();
8
- const format = formats.find(f => f.extension === ext);
9
- if (!format) throw 'missing format';
10
-
11
- // validate the config blob
12
- const result = validate(blob);
13
- if (!result.valid) throw result.errors;
14
-
15
- // encode the config data into the format
16
- const data = format.writer(blob);
17
-
18
- // write the encoded config to file
19
- fs.writeFileSync(path, data);
20
- };