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,86 @@
1
+ import OmeggaPlugin from "../plugin";
2
+ import Datastore from 'nedb-promises';
3
+ import type Player from './player';
4
+ import type Omegga from './server';
5
+ import { IPluginDocumentation, IPluginCommand } from "../plugin";
6
+ export interface IPluginJSON {
7
+ formatVersion: number;
8
+ omeggaVersion: string;
9
+ emitConfig?: string;
10
+ }
11
+ export interface IStoreItem<T = unknown> {
12
+ type: 'store';
13
+ key: string;
14
+ plugin: string;
15
+ value: T;
16
+ }
17
+ export interface IStoreConfig {
18
+ type: 'config';
19
+ plugin: string;
20
+ value: Record<string, unknown>;
21
+ }
22
+ export declare class Plugin {
23
+ static canLoad(_pluginPath: string): boolean;
24
+ static getFormat(): void;
25
+ static readJSON(file: string): any;
26
+ path: string;
27
+ omegga: Omegga;
28
+ shortPath: string;
29
+ storage: PluginStorage;
30
+ documentation: IPluginDocumentation;
31
+ pluginConfig: IPluginJSON;
32
+ pluginFile: string;
33
+ commands: string[];
34
+ loadedPlugin: OmeggaPlugin;
35
+ constructor(pluginPath: string, omegga: Omegga);
36
+ setStorage(storage: PluginStorage): void;
37
+ isEnabled(): boolean;
38
+ setEnabled(enabled: boolean): void;
39
+ emitStatus(): void;
40
+ emitPlugin(_ev: string, _from: string, _args: any[]): Promise<any>;
41
+ getName(): string;
42
+ getDocumentation(): IPluginDocumentation;
43
+ isLoaded(): boolean;
44
+ isCommand(_cmd: string): boolean;
45
+ load(): Promise<boolean>;
46
+ unload(): Promise<boolean>;
47
+ getInfo(): {};
48
+ }
49
+ export declare class PluginStorage {
50
+ store: Datastore;
51
+ plugin: Plugin;
52
+ name: string;
53
+ constructor(store: Datastore, plugin: Plugin);
54
+ getDefaultConfig(): Record<string, unknown>;
55
+ setConfig(value: unknown): Promise<void>;
56
+ getConfig(): Promise<Record<string, unknown>>;
57
+ init(): Promise<void>;
58
+ get<T>(key: string): Promise<T>;
59
+ delete(key: string): Promise<void>;
60
+ wipe(): Promise<void>;
61
+ count(): Promise<number>;
62
+ keys(): Promise<string[]>;
63
+ set<T = unknown>(key: string, value: T): Promise<void>;
64
+ }
65
+ export declare class PluginLoader {
66
+ path: string;
67
+ omegga: Omegga;
68
+ store: Datastore;
69
+ formats: typeof Plugin[];
70
+ plugins: Plugin[];
71
+ commands: Record<string, IPluginCommand & {
72
+ _plugin: Plugin;
73
+ }>;
74
+ documentation: Record<string, IPluginDocumentation & {
75
+ _plugin: Plugin;
76
+ }>;
77
+ constructor(pluginsPath: string, omegga: Omegga);
78
+ addFormat(format: typeof Plugin): void;
79
+ isCommand(cmd: string): boolean;
80
+ loadFormats(dir: string): void;
81
+ reload(): Promise<boolean>;
82
+ unload(): Promise<boolean>;
83
+ scan(): Promise<boolean>;
84
+ showHelp(player: string | Player, ...args: string[]): void;
85
+ buildDocumentation(): void;
86
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/omegga/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,458 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PluginLoader = exports.PluginStorage = exports.Plugin = void 0;
7
+ const logger_1 = __importDefault(require("../logger"));
8
+ const plugin_1 = __importDefault(require("../plugin"));
9
+ const softconfig_1 = __importDefault(require("../softconfig"));
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const nedb_promises_1 = __importDefault(require("nedb-promises"));
12
+ const path_1 = __importDefault(require("path"));
13
+ // Check if this plugin is disabled
14
+ const DISABLED_FILE = 'disabled.omegga';
15
+ /*
16
+ Plugin interface
17
+ Allows omegga to interface with plugins of a format
18
+ */
19
+ class Plugin {
20
+ // initialize a plugin at this path
21
+ constructor(pluginPath, omegga) {
22
+ this.path = pluginPath;
23
+ this.omegga = omegga;
24
+ this.shortPath = pluginPath.replace(path_1.default.join(omegga.path, softconfig_1.default.PLUGIN_PATH) + '/', '');
25
+ }
26
+ // returns true if a plugin at this path can be loaded
27
+ // only one kind of plugin should match this type
28
+ static canLoad(_pluginPath) {
29
+ return false;
30
+ }
31
+ // returns the kind of plugin this is
32
+ static getFormat() {
33
+ throw 'undefined plugin format';
34
+ }
35
+ // read a file as json or return null
36
+ static readJSON(file) {
37
+ try {
38
+ return JSON.parse(fs_1.default.readFileSync(file, 'utf8'));
39
+ }
40
+ catch (e) {
41
+ return null;
42
+ }
43
+ }
44
+ // assign plugin storage
45
+ setStorage(storage) {
46
+ this.storage = storage;
47
+ }
48
+ // check if the plugin is enabled
49
+ isEnabled() {
50
+ return !fs_1.default.existsSync(path_1.default.join(this.path, DISABLED_FILE));
51
+ }
52
+ // set the plugin enabled/disabled
53
+ setEnabled(enabled) {
54
+ const disabledPath = path_1.default.join(this.path, DISABLED_FILE);
55
+ if (enabled === this.isEnabled()) {
56
+ return;
57
+ }
58
+ if (enabled) {
59
+ fs_1.default.unlinkSync(disabledPath);
60
+ }
61
+ else {
62
+ fs_1.default.closeSync(fs_1.default.openSync(disabledPath, 'w'));
63
+ }
64
+ this.emitStatus();
65
+ }
66
+ // emit a plugin status change
67
+ emitStatus() {
68
+ this.omegga.emit('plugin:status', this.shortPath, {
69
+ name: this.getName(),
70
+ isLoaded: this.isLoaded(),
71
+ isEnabled: this.isEnabled(),
72
+ });
73
+ }
74
+ // emit a custom event from another plugin
75
+ async emitPlugin(_ev, _from, _args) { }
76
+ // get the plugin name, usually based on documentation data
77
+ getName() {
78
+ const doc = this.getDocumentation();
79
+ return (doc ? doc.name : path_1.default.basename(this.path)) || 'unnamed plugin';
80
+ }
81
+ // get the documentation object for this plugin
82
+ getDocumentation() {
83
+ return null;
84
+ }
85
+ // return true if this plugin is loaded
86
+ isLoaded() {
87
+ return false;
88
+ }
89
+ // return true if the command exists
90
+ isCommand(_cmd) {
91
+ return false;
92
+ }
93
+ // start the plugin, returns true if plugin successfully loaded
94
+ async load() {
95
+ return false;
96
+ }
97
+ // stop + kill the plugin, returns true if plugin successfully unloaded
98
+ async unload() {
99
+ return false;
100
+ }
101
+ // extra info for this kind of plugin
102
+ getInfo() {
103
+ return {};
104
+ }
105
+ }
106
+ exports.Plugin = Plugin;
107
+ // key-value storage for a plugin
108
+ class PluginStorage {
109
+ constructor(store, plugin) {
110
+ this.store = store;
111
+ this.plugin = plugin;
112
+ this.name = plugin.getName();
113
+ }
114
+ // get the initial config values
115
+ getDefaultConfig() {
116
+ const doc = this.plugin.getDocumentation();
117
+ // check if the documentation object exists and whether it has a config field
118
+ if (!doc)
119
+ return {};
120
+ if (!doc.config)
121
+ return {};
122
+ // insert values from default config values
123
+ const config = {};
124
+ for (const k in doc.config) {
125
+ config[k] = doc.config[k].default;
126
+ }
127
+ return config;
128
+ }
129
+ // set the config field for this plugin
130
+ async setConfig(value) {
131
+ await this.store.update({ type: 'config', plugin: this.name }, {
132
+ $set: { value },
133
+ }, { upsert: true });
134
+ }
135
+ // get the config for this plugin
136
+ async getConfig() {
137
+ const config = await this.store.findOne({
138
+ type: 'config',
139
+ plugin: this.name,
140
+ });
141
+ if (!config)
142
+ return null;
143
+ return config.value;
144
+ }
145
+ // initialize the plugin store
146
+ async init() {
147
+ // get default and configured values
148
+ const defaultConf = this.getDefaultConfig();
149
+ const config = await this.getConfig();
150
+ await this.setConfig(Object.assign(Object.assign({}, defaultConf), (config ? config : {})));
151
+ }
152
+ // get a stored object
153
+ async get(key) {
154
+ if (typeof key !== 'string' || key.length === 0)
155
+ return;
156
+ const obj = await this.store.findOne({
157
+ type: 'store',
158
+ plugin: this.name,
159
+ key,
160
+ });
161
+ if (!obj)
162
+ return null;
163
+ return obj.value;
164
+ }
165
+ // delete a stored object
166
+ async delete(key) {
167
+ if (typeof key !== 'string' || key.length === 0)
168
+ return;
169
+ await this.store.remove({ type: 'store', plugin: this.name, key }, {});
170
+ }
171
+ // clear all stored values
172
+ async wipe() {
173
+ await this.store.remove({ type: 'store', plugin: this.name }, { multi: true });
174
+ }
175
+ // count number of objects in store
176
+ async count() {
177
+ return await this.store.count({ type: 'store', plugin: this.name });
178
+ }
179
+ // get keys of all objects in store
180
+ async keys() {
181
+ const objects = await this.store.find({
182
+ type: 'store',
183
+ plugin: this.name,
184
+ });
185
+ return objects.map(o => o.key);
186
+ }
187
+ // set a stored value
188
+ async set(key, value) {
189
+ if (typeof key !== 'string' || key.length === 0)
190
+ return;
191
+ await this.store.update({ type: 'store', plugin: this.name, key }, { $set: { value } }, { upsert: true });
192
+ }
193
+ }
194
+ exports.PluginStorage = PluginStorage;
195
+ /*
196
+ Plugin Loader and Scanner
197
+ Allows omegga to scan in plugins and load them
198
+ */
199
+ class PluginLoader {
200
+ constructor(pluginsPath, omegga) {
201
+ this.path = pluginsPath;
202
+ this.omegga = omegga;
203
+ this.store = nedb_promises_1.default.create({
204
+ filename: path_1.default.join(omegga.dataPath, softconfig_1.default.PLUGIN_STORE),
205
+ autoload: true,
206
+ });
207
+ this.store.persistence.setAutocompactionInterval(1000 * 60 * 5);
208
+ this.formats = [];
209
+ this.plugins = [];
210
+ // soon to be deprecated !help
211
+ omegga.on('chatcmd:help', this.showHelp.bind(this));
212
+ // use /plugins to get help
213
+ omegga.on('cmd:plugins', this.showHelp.bind(this));
214
+ }
215
+ // let the plugin loader scan another kind of plugin in
216
+ addFormat(format) {
217
+ if (!(format instanceof Plugin))
218
+ throw 'provided plugin format is not a plugin';
219
+ this.formats.push(format);
220
+ }
221
+ // determine if this command is a command on the plugin
222
+ isCommand(cmd) {
223
+ return cmd === 'plugins' || this.plugins.some(p => p.isCommand(cmd));
224
+ }
225
+ // scan a folder and load in formats
226
+ loadFormats(dir) {
227
+ // add all the discovered formats into the formats list
228
+ this.formats.push(
229
+ // find all plugin_EXT.js files in the given dir
230
+ ...fs_1.default
231
+ .readdirSync(dir)
232
+ // all files match the plugin_nameType.js pattern
233
+ .filter(file => file.match(/plugin_[a-zA-Z_]+\.js$/))
234
+ // require all the formats
235
+ .map(file => require('./plugin/' + file).default));
236
+ logger_1.default.verbose('Found plugin formats:', this.formats);
237
+ }
238
+ // unload and load all installed plugins
239
+ async reload() {
240
+ let ok = true;
241
+ logger_1.default.verbose('Reloading plugins');
242
+ for (const p of this.plugins) {
243
+ try {
244
+ // unload the plugin if it's loaded
245
+ if (p.isLoaded())
246
+ await p.unload();
247
+ // load the plugin if it successfully unloaded
248
+ if (!p.isLoaded()) {
249
+ // only load it if it is enabled
250
+ if (p.isEnabled()) {
251
+ logger_1.default.verbose('Loading plugin', p.constructor.getFormat(), p.getName().underline);
252
+ ok = (await p.load()) || ok;
253
+ }
254
+ }
255
+ else {
256
+ logger_1.default.errorp('Did not successfully unload plugin', p.getName().brightRed.underline);
257
+ ok = false;
258
+ }
259
+ }
260
+ catch (err) {
261
+ logger_1.default.errorp('Error loading plugin', p.getName().brightRed.underline, err);
262
+ ok = false;
263
+ }
264
+ }
265
+ logger_1.default.verbose('Finished reloading plugins');
266
+ return ok;
267
+ }
268
+ // stop all plugins from running
269
+ async unload() {
270
+ logger_1.default.verbose('Unloading plugins');
271
+ let ok = true;
272
+ // potentually use Promise.all
273
+ for (const p of this.plugins) {
274
+ try {
275
+ // unload the plugin if it's loaded
276
+ if (p.isLoaded()) {
277
+ if (!(await p.unload())) {
278
+ logger_1.default.errorp('Could not unloading plugin', p.getName().brightRed.underline);
279
+ ok = false;
280
+ continue;
281
+ }
282
+ else {
283
+ logger_1.default.verbose('Unloaded', p.getName().underline);
284
+ }
285
+ }
286
+ }
287
+ catch (e) {
288
+ logger_1.default.errorp('Error unloading plugin', p.getName().brightRed.underline);
289
+ ok = false;
290
+ }
291
+ }
292
+ return ok;
293
+ }
294
+ // find every loadable plugin
295
+ async scan() {
296
+ logger_1.default.verbose('Scanning plugin directory');
297
+ // plugin directory doesn't exist
298
+ if (!fs_1.default.existsSync(this.path)) {
299
+ logger_1.default.verbose('Plugin directory is missing');
300
+ return false;
301
+ }
302
+ // make sure there are no plugins running
303
+ if (this.plugins.some(p => p.isLoaded())) {
304
+ logger_1.default.errorp('Cannot re-scan plugins while a plugin is loaded');
305
+ return false;
306
+ }
307
+ // find all directories in the plugin path
308
+ this.plugins = (await Promise.all(fs_1.default
309
+ .readdirSync(this.path)
310
+ .map(dir => path_1.default.join(this.path, dir)) // convert from local paths
311
+ // every plugin must be in a directory
312
+ .filter(dir => fs_1.default.existsSync(dir) && fs_1.default.lstatSync(dir).isDirectory())
313
+ // every plugin must be loadable through some format
314
+ .map(async (dir) => {
315
+ // find a plugin format that can load in this plugin
316
+ const PluginFormat = this.formats.find(f => f.canLoad(dir));
317
+ // let users know if there's a missing plugin format
318
+ if (!PluginFormat) {
319
+ logger_1.default.errorp('Missing plugin format for', dir);
320
+ return;
321
+ }
322
+ try {
323
+ // create the plugin format
324
+ const plugin = PluginFormat && new PluginFormat(dir, this.omegga);
325
+ if (!plugin.getDocumentation()) {
326
+ logger_1.default.errorp('Missing/invalid plugin documentation for', dir);
327
+ return;
328
+ }
329
+ // create its storage
330
+ const storage = new PluginStorage(this.store, plugin);
331
+ await storage.init();
332
+ // load the storage in
333
+ plugin.setStorage(storage);
334
+ // if there is a plugin format, create the plugin instance (but don't load yet)
335
+ return plugin;
336
+ }
337
+ catch (e) {
338
+ // if a plugin format fails to load, prevent omegga from dying
339
+ logger_1.default.errorp('Error loading plugin', dir.brightRed.underline, PluginFormat, e);
340
+ }
341
+ })))
342
+ // remove plugins without formats
343
+ .filter(p => p);
344
+ this.buildDocumentation();
345
+ return true;
346
+ }
347
+ // show helptext
348
+ showHelp(player, ...args) {
349
+ // send the message to the player
350
+ const send = (msg) => this.omegga.whisper(player, msg);
351
+ // available commands and documentation from the plugin system
352
+ const commands = this.commands;
353
+ const docs = this.documentation;
354
+ const splitHelper = (objs) => {
355
+ const lines = [];
356
+ while (objs.length > 0) {
357
+ const [item] = objs.splice(0, 1);
358
+ if (!lines.length || lines[lines.length - 1].length + item.length > 150)
359
+ lines.push(item);
360
+ else
361
+ lines[lines.length - 1] += ', ' + item;
362
+ }
363
+ return lines;
364
+ };
365
+ // no arguments
366
+ if (!args.length) {
367
+ send('"Use <code>/plugins plugin</>, <code>/plugins !command</>, <code>/plugins /command</> for more information"');
368
+ const plugins = Object.keys(docs).map(d => `<color=\\"${docs[d]._plugin.isLoaded() ? 'aaffaa' : 'aaaaaa'}\\">${d}</>`);
369
+ if (!plugins.length) {
370
+ send('"<b>No Installed Plugins</>"');
371
+ }
372
+ else {
373
+ const lines = splitHelper(plugins);
374
+ send(`"<b>Installed Plugins</>: ${lines[0]}"`);
375
+ for (let i = 1; i < lines.length; i++)
376
+ send(`"${lines[i]}"`);
377
+ }
378
+ // plugin or command argument
379
+ }
380
+ else if (args.length > 0) {
381
+ const target = args.join(' ');
382
+ // argument is a plugin; render description, author, and commands
383
+ if (docs[target]) {
384
+ const doc = docs[target];
385
+ const desc = doc.description || 'no description';
386
+ const color = doc._plugin.isLoaded() ? 'aaffaa' : 'aaaaaa';
387
+ send(`"<b>Plugin</> <code><color=\\"${color}\\">${target}</></>: ${desc}"`);
388
+ if (doc.author)
389
+ send(`"<b>Author</>: <color=\\"c4d7f5\\"><b>${doc.author}</></>"`);
390
+ if (doc.commands && doc.commands.length > 0) {
391
+ const lines = splitHelper(doc.commands.map(c => `<code>${c.name}</>`));
392
+ send(`"<b>Commands</>: ${lines[0]}"`);
393
+ for (let i = 1; i < lines.length; i++)
394
+ send(`"${lines[i]}"`);
395
+ }
396
+ // argument is a command
397
+ }
398
+ else if (commands[target]) {
399
+ const doc = commands[target];
400
+ const desc = doc.description || 'no description';
401
+ const example = doc.example || 'no example';
402
+ const color = doc._plugin.isLoaded() ? 'aaffaa' : 'aaaaaa';
403
+ send(`"<b>Command</> <code><color=\\"${color}\\">${doc.name}</></>: ${desc}"`);
404
+ send(`"<b>Example</>: <code>${example}</>"`);
405
+ if (doc.args && doc.args.length > 0) {
406
+ send('"<b>Arguments</>:"');
407
+ for (const arg of doc.args) {
408
+ const desc = arg.description || 'no description';
409
+ send(`"- <code>${arg.name}</>${arg.required ? ' (required)' : ''}: ${desc}"`);
410
+ }
411
+ }
412
+ else {
413
+ send('"<b>Arguments</>: None"');
414
+ }
415
+ // user takes the helptext literally
416
+ }
417
+ else if (args[0] === '!command' ||
418
+ args[0] === '/command' ||
419
+ args[0] === 'plugin') {
420
+ send('"Use <code>/plugins [name of plugin]</> or <code>/plugins [name of !command or /command]</> for more help for the respective plugin or command"');
421
+ // argument is not found
422
+ }
423
+ else {
424
+ send('"Could not find that command or plugin"');
425
+ }
426
+ // too many arguments
427
+ }
428
+ else {
429
+ send('"Use <code>/plugins</> to list plugins and <code>/plugins plugin</> or <code>!help !command or /command</> for more information"');
430
+ }
431
+ }
432
+ // generate documentation from loaded plugins
433
+ buildDocumentation() {
434
+ this.documentation = {};
435
+ this.commands = {};
436
+ for (const plugin of this.plugins) {
437
+ // make sure this plugin has docs
438
+ const doc = JSON.parse(JSON.stringify(plugin.getDocumentation()));
439
+ if (!doc)
440
+ continue;
441
+ const name = plugin.getName();
442
+ if (!name)
443
+ continue;
444
+ doc._plugin = plugin;
445
+ // add the documentation into a dictionary
446
+ this.documentation[name] = doc;
447
+ // add all the commands into a dictionary
448
+ if (doc.commands) {
449
+ for (const cmd of doc.commands) {
450
+ this.commands[cmd.name] = cmd;
451
+ cmd._plugin = plugin;
452
+ }
453
+ }
454
+ }
455
+ }
456
+ }
457
+ exports.PluginLoader = PluginLoader;
458
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/omegga/plugin.ts"],"names":[],"mappings":"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"}