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,397 @@
1
+ "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
+ if (kind === "m") throw new TypeError("Private method is not writable");
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ var _NodeVmPlugin_worker, _NodeVmPlugin_outInterface, _NodeVmPlugin_errInterface;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const logger_1 = __importDefault(require("../../logger"));
19
+ const events_1 = __importDefault(require("events"));
20
+ const fs_1 = __importDefault(require("fs"));
21
+ const path_1 = __importDefault(require("path"));
22
+ const readline_1 = __importDefault(require("readline"));
23
+ const worker_threads_1 = require("worker_threads");
24
+ const plugin_1 = require("../plugin");
25
+ const server_1 = __importDefault(require("../server"));
26
+ const proxyOmegga_1 = require("./plugin_node_safe/proxyOmegga");
27
+ // Main plugin file (like index.js)
28
+ // this isn't named 'index.js' or 'plugin.js' because those may be filenames
29
+ // used with other loaders (rpc loader) and are too generic
30
+ // omegga.main.js is rather unique and helps avoid collision
31
+ const MAIN_FILE = 'omegga.plugin.js';
32
+ const MAIN_FILE_TS = 'omegga.plugin.ts';
33
+ // Documentation file (contains name, description, author, command helptext)
34
+ const DOC_FILE = 'doc.json';
35
+ const ACCESS_FILE = 'access.json';
36
+ const PLUGIN_FILE = 'plugin.json';
37
+ class NodeVmPlugin extends plugin_1.Plugin {
38
+ constructor(pluginPath, omegga) {
39
+ super(pluginPath, omegga);
40
+ _NodeVmPlugin_worker.set(this, void 0);
41
+ _NodeVmPlugin_outInterface.set(this, void 0);
42
+ _NodeVmPlugin_errInterface.set(this, void 0);
43
+ // event emitter and message counter for keeping track of worker events
44
+ this.plugin = new events_1.default();
45
+ this.messageCounter = 0;
46
+ // TODO: validate documentation
47
+ this.documentation = plugin_1.Plugin.readJSON(path_1.default.join(pluginPath, DOC_FILE));
48
+ this.isTypeScript = fs_1.default.existsSync(path_1.default.join(pluginPath, MAIN_FILE_TS));
49
+ this.pluginConfig = plugin_1.Plugin.readJSON(path_1.default.join(pluginPath, PLUGIN_FILE));
50
+ // access list is a list of builtin requires
51
+ // can be ['*'] for everything
52
+ this.access = plugin_1.Plugin.readJSON(path_1.default.join(pluginPath, ACCESS_FILE)) || [];
53
+ // list of registered commands
54
+ this.commands = [];
55
+ // verify access is an array of strings
56
+ if (!(this.access instanceof Array) ||
57
+ !this.access.every(s => typeof s === 'string')) {
58
+ throw new Error('access list not a string array');
59
+ }
60
+ // plugin name
61
+ const name = this.getName();
62
+ // when the worker emits an error or a log, pass it up to omegga
63
+ this.plugin.on('error', (resp, ...args) => {
64
+ logger_1.default.error(name.brightRed.underline, '!>'.red, ...args);
65
+ this.notify(resp);
66
+ });
67
+ this.plugin.on('log', (resp, ...args) => {
68
+ logger_1.default.log(name.underline, '>>'.green, ...args);
69
+ this.notify(resp);
70
+ });
71
+ // let the worker write commands to brickadia
72
+ this.plugin.on('exec', (_, cmd) => omegga.writeln(cmd));
73
+ // storage interface
74
+ this.plugin.on('store.get', async (resp, key) => {
75
+ try {
76
+ this.notify(resp, await this.storage.get(key));
77
+ }
78
+ catch (e) {
79
+ logger_1.default.error(name.brightRed.underline, '!>'.red, 'error in store.get of', key, e);
80
+ }
81
+ });
82
+ this.plugin.on('store.set', async (resp, key, value) => {
83
+ try {
84
+ await this.storage.set(key, JSON.parse(value));
85
+ }
86
+ catch (e) {
87
+ logger_1.default.error(name.brightRed.underline, '!>'.red, 'error in store.set of', key, value, e);
88
+ }
89
+ this.notify(resp);
90
+ });
91
+ this.plugin.on('store.delete', async (resp, key) => {
92
+ try {
93
+ await this.storage.delete(key);
94
+ }
95
+ catch (e) {
96
+ logger_1.default.error(name.brightRed.underline, '!>'.red, 'error in store.delete of', key, e);
97
+ }
98
+ this.notify(resp);
99
+ });
100
+ this.plugin.on('store.wipe', async (resp) => {
101
+ try {
102
+ await this.storage.wipe();
103
+ }
104
+ catch (e) {
105
+ logger_1.default.error(name.brightRed.underline, '!>'.red, 'error in store.wipe', e);
106
+ }
107
+ this.notify(resp);
108
+ });
109
+ this.plugin.on('store.count', async (resp) => {
110
+ try {
111
+ this.notify(resp, await this.storage.count());
112
+ }
113
+ catch (e) {
114
+ logger_1.default.error(name.brightRed.underline, '!>'.red, 'error in store.count', e);
115
+ }
116
+ });
117
+ this.plugin.on('store.keys', async (resp) => {
118
+ try {
119
+ this.notify(resp, await this.storage.keys());
120
+ }
121
+ catch (e) {
122
+ logger_1.default.error(name.brightRed.underline, '!>'.red, 'error in store.keys', e);
123
+ }
124
+ });
125
+ // plugin fetching
126
+ this.plugin.on('getPlugin', async (resp, name) => {
127
+ const plugin = this.omegga.pluginLoader.plugins.find(p => p.getName() === name);
128
+ if (plugin) {
129
+ this.notify(resp, {
130
+ name,
131
+ documentation: plugin.getDocumentation(),
132
+ loaded: plugin.isLoaded(),
133
+ });
134
+ }
135
+ else {
136
+ this.notify(resp);
137
+ }
138
+ });
139
+ this.plugin.on('emitPlugin', async (resp, target, ev, args) => {
140
+ const plugin = this.omegga.pluginLoader.plugins.find(p => p.getName() === target);
141
+ if (plugin) {
142
+ let r = await plugin.emitPlugin(ev, name, args);
143
+ this.notify(resp, r);
144
+ }
145
+ else {
146
+ logger_1.default.error(name.brightRed.underline, '!>'.red, 'error in emitPlugin');
147
+ }
148
+ });
149
+ // command registration
150
+ this.plugin.on('command.registers', async (_, blob) => {
151
+ if (typeof blob !== 'string')
152
+ return;
153
+ const registers = JSON.parse(blob);
154
+ // ensure registers is an array of strings
155
+ if (!(registers instanceof Array) ||
156
+ registers.some(i => typeof i !== 'string'))
157
+ return;
158
+ this.commands = registers;
159
+ });
160
+ // listen on every message, post them to to the worker
161
+ this.eventPassthrough = this.eventPassthrough.bind(this);
162
+ }
163
+ // every node vm plugin requires a main file, a doc file, and an access file
164
+ // may evolve this so it checks the contents of the doc file later
165
+ static canLoad(pluginPath) {
166
+ return ((fs_1.default.existsSync(path_1.default.join(pluginPath, MAIN_FILE)) ||
167
+ fs_1.default.existsSync(path_1.default.join(pluginPath, MAIN_FILE_TS))) &&
168
+ fs_1.default.existsSync(path_1.default.join(pluginPath, DOC_FILE)) &&
169
+ fs_1.default.existsSync(path_1.default.join(pluginPath, ACCESS_FILE)));
170
+ }
171
+ // safe node plugins are limited
172
+ static getFormat() {
173
+ return 'node_safe';
174
+ }
175
+ // emit a custom plugin event
176
+ async emitPlugin(ev, from, args) {
177
+ var _a;
178
+ const [r] = (_a = (await this.emit('emitPlugin', ev, from, args))) !== null && _a !== void 0 ? _a : [];
179
+ return r;
180
+ }
181
+ // documentation is based on doc.json file
182
+ getDocumentation() {
183
+ return this.documentation;
184
+ }
185
+ // loaded state is based on if a worker exists
186
+ isLoaded() {
187
+ return !!__classPrivateFieldGet(this, _NodeVmPlugin_worker, "f");
188
+ }
189
+ // determing if a command is registered
190
+ isCommand(cmd) {
191
+ return this.commands.includes(cmd);
192
+ }
193
+ // require the plugin into the system, run the init func
194
+ async load() {
195
+ var _a;
196
+ // can't load the plugin if it's already loaded
197
+ if (typeof __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f") !== 'undefined')
198
+ return false;
199
+ // vm restriction settings, default is access to everything
200
+ const vmOptions = {
201
+ builtin: this.access,
202
+ external: true,
203
+ isTypeScript: this.isTypeScript,
204
+ };
205
+ this.commands = [];
206
+ try {
207
+ const config = await this.storage.getConfig();
208
+ if ((_a = this.pluginConfig) === null || _a === void 0 ? void 0 : _a.emitConfig) {
209
+ await fs_1.default.promises.writeFile(path_1.default.join(this.path, this.pluginConfig.emitConfig), JSON.stringify(config));
210
+ }
211
+ this.createWorker();
212
+ // tell the worker its name :)
213
+ await this.emit('name', this.getName());
214
+ // create the vm, export the plugin's class
215
+ if (!(await this.emit('load', this.path, vmOptions))[0])
216
+ throw '';
217
+ // get some initial information to create an omegga proxy
218
+ const initialData = (0, proxyOmegga_1.bootstrap)(this.omegga);
219
+ // send all of the mock events to the proxy omegga
220
+ for (const ev in initialData) {
221
+ try {
222
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").postMessage({
223
+ action: 'brickadiaEvent',
224
+ args: [ev, ...initialData[ev]],
225
+ });
226
+ }
227
+ catch (e) {
228
+ /* just writing 'safe' code :) */
229
+ }
230
+ }
231
+ // pass events through
232
+ this.omegga.on('*', this.eventPassthrough);
233
+ // actually start the plugin
234
+ if (!(await this.emit('start', config))[0])
235
+ throw 'plugin failed start';
236
+ this.emitStatus();
237
+ return true;
238
+ }
239
+ catch (e) {
240
+ // kill the worker
241
+ await this.emit('kill');
242
+ logger_1.default.error('!>'.red, 'error loading node vm plugin', this.getName().brightRed.underline, e);
243
+ this.emitStatus();
244
+ return false;
245
+ }
246
+ }
247
+ // disrequire the plugin into the system, run the stop func
248
+ unload() {
249
+ let frozen = true, timed = false;
250
+ return Promise.race([
251
+ (async () => {
252
+ // can't unload the plugin if it hasn't been loaded
253
+ if (typeof __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f") === 'undefined')
254
+ return false;
255
+ try {
256
+ // stop the plugin (cleanly)
257
+ await this.emit('stop');
258
+ // remove listeners
259
+ this.omegga.off('*', this.eventPassthrough);
260
+ // let the unload function wait for the worker to properly cleanup
261
+ const promise = new Promise(res => {
262
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").once('exit', res);
263
+ });
264
+ // kill the worker
265
+ await this.emit('kill');
266
+ // wait for the worker to exit
267
+ await promise;
268
+ frozen = false;
269
+ if (timed)
270
+ return;
271
+ this.emitStatus();
272
+ this.commands = [];
273
+ return true;
274
+ }
275
+ catch (e) {
276
+ frozen = false;
277
+ if (timed)
278
+ return;
279
+ logger_1.default.error('!>'.red, 'error unloading node plugin', this.getName().brightRed.underline, e);
280
+ this.emitStatus();
281
+ return false;
282
+ }
283
+ })(),
284
+ new Promise(resolve => {
285
+ // check if the worker is frozen (while true)
286
+ setTimeout(() => {
287
+ if (!frozen)
288
+ return;
289
+ this.plugin.emit('error', 0, 'I appear to be in an unresponsive state - terminating worker');
290
+ // remove listeners
291
+ this.omegga.off('*', this.eventPassthrough);
292
+ // tell the worker to exit
293
+ if (__classPrivateFieldGet(this, _NodeVmPlugin_worker, "f"))
294
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").emit('exit');
295
+ // terminate the worker if it still exists
296
+ if (__classPrivateFieldGet(this, _NodeVmPlugin_worker, "f"))
297
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").terminate();
298
+ timed = true;
299
+ resolve(true);
300
+ this.emitStatus();
301
+ }, 5000);
302
+ }),
303
+ ]);
304
+ }
305
+ // emit an action to the worker and return a promise with its response
306
+ emit(action, ...args) {
307
+ if (!__classPrivateFieldGet(this, _NodeVmPlugin_worker, "f"))
308
+ return;
309
+ const messageId = 'message:' + this.messageCounter++;
310
+ // promise waits for the message to resolve
311
+ const promise = new Promise(resolve => this.plugin.once(messageId, (_, ...x) => resolve(x)));
312
+ // post the message
313
+ try {
314
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").postMessage({
315
+ action,
316
+ args: [messageId, ...args],
317
+ });
318
+ }
319
+ catch (e) {
320
+ return Promise.reject(e);
321
+ }
322
+ // return the promise
323
+ return promise;
324
+ }
325
+ // notify a response to the worker
326
+ notify(action, ...args) {
327
+ if (!__classPrivateFieldGet(this, _NodeVmPlugin_worker, "f"))
328
+ return;
329
+ // post the message
330
+ try {
331
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").postMessage({
332
+ action,
333
+ args: [...args],
334
+ });
335
+ }
336
+ catch (e) {
337
+ // do nothing here
338
+ }
339
+ }
340
+ // create the worker for this plugin, attach emitter
341
+ createWorker() {
342
+ __classPrivateFieldSet(this, _NodeVmPlugin_worker, new worker_threads_1.Worker(path_1.default.join(__dirname, 'plugin_node_safe/worker.js'), {
343
+ stdout: true,
344
+ }), "f");
345
+ // pipe plugin output into omegga
346
+ __classPrivateFieldSet(this, _NodeVmPlugin_outInterface, readline_1.default.createInterface({
347
+ input: __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").stdout,
348
+ terminal: false,
349
+ }), "f");
350
+ __classPrivateFieldSet(this, _NodeVmPlugin_errInterface, readline_1.default.createInterface({
351
+ input: __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").stderr,
352
+ terminal: false,
353
+ }), "f");
354
+ __classPrivateFieldGet(this, _NodeVmPlugin_outInterface, "f").on('line', logger_1.default.log);
355
+ __classPrivateFieldGet(this, _NodeVmPlugin_errInterface, "f").on('line', logger_1.default.error);
356
+ // attach message emitter
357
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").on('message', ({ action, args }) => this.plugin.emit(action, ...args));
358
+ // broadcast an error if there is one
359
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").on('error', err => {
360
+ logger_1.default.error('!>'.red, 'error in plugin', this.getName().brightRed.underline, err);
361
+ });
362
+ // when the worker exits - set its variable to undefined this knows it's stopped
363
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").on('exit', () => {
364
+ this.omegga.off('*', this.eventPassthrough);
365
+ __classPrivateFieldGet(this, _NodeVmPlugin_outInterface, "f").removeAllListeners('line');
366
+ __classPrivateFieldGet(this, _NodeVmPlugin_errInterface, "f").removeAllListeners('line');
367
+ try {
368
+ if (__classPrivateFieldGet(this, _NodeVmPlugin_worker, "f"))
369
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").terminate();
370
+ }
371
+ catch (err) {
372
+ logger_1.default.error('!>'.red, 'Error terminating worker for', this.getName().brightRed.underline, err);
373
+ }
374
+ __classPrivateFieldSet(this, _NodeVmPlugin_worker, undefined, "f");
375
+ this.emitStatus();
376
+ });
377
+ }
378
+ eventPassthrough(...args) {
379
+ // worker does not exist
380
+ if (!__classPrivateFieldGet(this, _NodeVmPlugin_worker, "f"))
381
+ return;
382
+ try {
383
+ // post the message
384
+ __classPrivateFieldGet(this, _NodeVmPlugin_worker, "f").postMessage({
385
+ action: 'brickadiaEvent',
386
+ args,
387
+ });
388
+ }
389
+ catch (e) {
390
+ // make sure post message doesn't crash the entire app
391
+ logger_1.default.error('!>'.red, 'error sending to plugin', ...args, e);
392
+ }
393
+ }
394
+ }
395
+ exports.default = NodeVmPlugin;
396
+ _NodeVmPlugin_worker = new WeakMap(), _NodeVmPlugin_outInterface = new WeakMap(), _NodeVmPlugin_errInterface = new WeakMap();
397
+ //# sourceMappingURL=plugin_node_safe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin_node_safe.js","sourceRoot":"","sources":["../../../src/omegga/plugin/plugin_node_safe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Plugin } from "../plugin";
2
+ import type Omegga from "../server";
3
+ export default class NodePlugin extends Plugin {
4
+ static canLoad(pluginPath: string): boolean;
5
+ static getFormat(): string;
6
+ constructor(pluginPath: string, omegga: Omegga);
7
+ getDocumentation(): import("../../plugin").IPluginDocumentation;
8
+ isLoaded(): boolean;
9
+ isCommand(cmd: string): boolean;
10
+ load(): Promise<boolean>;
11
+ unload(): Promise<boolean>;
12
+ disrequireAll(): void;
13
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin_node_unsafe.d.ts","sourceRoot":"","sources":["../../../src/omegga/plugin/plugin_node_unsafe.ts"],"names":[],"mappings":""}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const plugin_1 = require("../plugin");
30
+ const server_1 = __importDefault(require("../server"));
31
+ const util = __importStar(require("../../util"));
32
+ const disrequire_1 = __importDefault(require("disrequire"));
33
+ const fs_1 = __importDefault(require("fs"));
34
+ const path_1 = __importDefault(require("path"));
35
+ const logger_1 = __importDefault(require("../../logger"));
36
+ global.OMEGGA_UTIL = util;
37
+ // Main plugin file (like index.js)
38
+ // this isn't named 'index.js' or 'plugin.js' because those may be filenames
39
+ // used with other loaders (rpc loader) and are too generic
40
+ // omegga.main.js is rather unique and helps avoid collision
41
+ const MAIN_FILE = 'omegga.main.js';
42
+ // Documentation file (contains name, description, author, command helptext)
43
+ const DOC_FILE = 'doc.json';
44
+ const PLUGIN_FILE = 'plugin.json';
45
+ class NodePlugin extends plugin_1.Plugin {
46
+ // every node plugin requires the main file and a doc file
47
+ // may evolve this so it checks the contents of the doc file later
48
+ static canLoad(pluginPath) {
49
+ return (fs_1.default.existsSync(path_1.default.join(pluginPath, MAIN_FILE)) &&
50
+ fs_1.default.existsSync(path_1.default.join(pluginPath, DOC_FILE)));
51
+ }
52
+ // unsafe node plugins (can potentially crash omegga) are powerful
53
+ static getFormat() {
54
+ return 'node_unsafe';
55
+ }
56
+ constructor(pluginPath, omegga) {
57
+ super(pluginPath, omegga);
58
+ // TODO: validate documentation
59
+ this.documentation = plugin_1.Plugin.readJSON(path_1.default.join(pluginPath, DOC_FILE));
60
+ this.pluginConfig = plugin_1.Plugin.readJSON(path_1.default.join(pluginPath, PLUGIN_FILE));
61
+ this.pluginFile = path_1.default.join(pluginPath, MAIN_FILE);
62
+ // list of registered comands
63
+ this.commands = [];
64
+ }
65
+ // documentation is based on doc.json file
66
+ getDocumentation() {
67
+ return this.documentation;
68
+ }
69
+ // loaded state is based on if the loadedPlugin object is created
70
+ isLoaded() {
71
+ return !!this.loadedPlugin;
72
+ }
73
+ // determing if a command is registered
74
+ isCommand(cmd) {
75
+ return this.commands.includes(cmd);
76
+ }
77
+ // require the plugin into the system, run the init func
78
+ async load() {
79
+ var _a;
80
+ const stopPlugin = (reason) => {
81
+ logger_1.default.errorp('error launching node plugin', this.getName(), ':', reason);
82
+ try {
83
+ this.disrequireAll();
84
+ }
85
+ catch (e) {
86
+ logger_1.default.errorp('error unloading node plugin (2)', this.getName(), e);
87
+ }
88
+ this.emitStatus();
89
+ return false;
90
+ };
91
+ this.commands = [];
92
+ try {
93
+ const config = await this.storage.getConfig();
94
+ if ((_a = this.pluginConfig) === null || _a === void 0 ? void 0 : _a.emitConfig) {
95
+ await fs_1.default.promises.writeFile(path_1.default.join(this.path, this.pluginConfig.emitConfig), JSON.stringify(config));
96
+ }
97
+ // require the plugin itself
98
+ const Plugin = require(this.pluginFile);
99
+ // node plugins must export a class with a constructor
100
+ if (typeof Plugin.prototype !== 'object' ||
101
+ typeof Plugin.prototype.constructor !== 'function')
102
+ return stopPlugin();
103
+ // interface with plugin store
104
+ const store = {
105
+ get: key => this.storage.get(key),
106
+ set: (key, value) => this.storage.set(key, value),
107
+ delete: key => this.storage.delete(key),
108
+ wipe: () => this.storage.wipe(),
109
+ count: () => this.storage.count(),
110
+ keys: () => this.storage.keys(),
111
+ };
112
+ // create the loaded plugin
113
+ this.loadedPlugin = new Plugin(this.omegga, config, store);
114
+ // start the loaded plugin
115
+ if (typeof this.loadedPlugin.init === 'function') {
116
+ const result = await this.loadedPlugin.init();
117
+ // plugins can return a result object
118
+ if (typeof result === 'object' && result) {
119
+ // if registeredCommands is in the results, register the provided strings as commands
120
+ const cmds = result.registeredCommands;
121
+ if (cmds &&
122
+ cmds instanceof Array &&
123
+ cmds.every(i => typeof i === 'string'))
124
+ this.commands = cmds;
125
+ }
126
+ }
127
+ this.emitStatus();
128
+ return true;
129
+ }
130
+ catch (e) {
131
+ logger_1.default.errorp('error loading node plugin', this.getName(), e);
132
+ this.emitStatus();
133
+ return false;
134
+ }
135
+ }
136
+ // disrequire the plugin into the system, run the stop func
137
+ async unload() {
138
+ // can't unload the plugin if it hasn't been loaded
139
+ if (typeof this.loadedPlugin === 'undefined') {
140
+ this.emitStatus();
141
+ return false;
142
+ }
143
+ try {
144
+ // run the stop func on the plugin if applicable
145
+ if (typeof this.loadedPlugin.stop === 'function')
146
+ await this.loadedPlugin.stop();
147
+ // unload the plugin
148
+ this.disrequireAll();
149
+ this.loadedPlugin = undefined;
150
+ this.emitStatus();
151
+ this.commands = [];
152
+ return true;
153
+ }
154
+ catch (e) {
155
+ logger_1.default.errorp('error unloading node plugin', this.getName(), e);
156
+ this.emitStatus();
157
+ return false;
158
+ }
159
+ }
160
+ // disrequire all that match plugin path in require.cache
161
+ disrequireAll() {
162
+ // get all files in plugin directory from require cache
163
+ const requiredFiles = Object.keys(require.cache).filter(requiredFile => requiredFile.includes(this.path));
164
+ // disrequire all the files
165
+ requiredFiles.forEach(file => {
166
+ try {
167
+ (0, disrequire_1.default)(file);
168
+ }
169
+ catch (e) {
170
+ if (e.code !== 'MODULE_NOT_FOUND')
171
+ // ignore error thrown if a module was deleted
172
+ throw e;
173
+ }
174
+ });
175
+ }
176
+ }
177
+ exports.default = NodePlugin;
178
+ //# sourceMappingURL=plugin_node_unsafe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin_node_unsafe.js","sourceRoot":"","sources":["../../../src/omegga/plugin/plugin_node_unsafe.ts"],"names":[],"mappings":"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"}