omegga 1.2.9 → 1.3.0

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 (255) hide show
  1. package/README.md +20 -1
  2. package/dist/brickadia/config.js +26 -90
  3. package/dist/brickadia/config.js.map +1 -1
  4. package/dist/brickadia/server.js +294 -293
  5. package/dist/brickadia/server.js.map +1 -1
  6. package/dist/cli/auth.js +149 -177
  7. package/dist/cli/auth.js.map +1 -1
  8. package/dist/cli/config.js +64 -66
  9. package/dist/cli/config.js.map +1 -1
  10. package/dist/cli/index.js +14 -14
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/installer.js +37 -43
  13. package/dist/cli/installer.js.map +1 -1
  14. package/dist/cli/plugin.js +651 -682
  15. package/dist/cli/plugin.js.map +1 -1
  16. package/dist/cli/terminal.js +811 -733
  17. package/dist/cli/terminal.js.map +1 -1
  18. package/dist/config/formats/format_js.js +6 -6
  19. package/dist/config/formats/format_js.js.map +1 -1
  20. package/dist/config/formats/format_yml.js +7 -10
  21. package/dist/config/formats/format_yml.js.map +1 -1
  22. package/dist/config/index.js +46 -68
  23. package/dist/config/index.js.map +1 -1
  24. package/dist/config/reader.js +16 -27
  25. package/dist/config/reader.js.map +1 -1
  26. package/dist/config/validator.js +23 -25
  27. package/dist/config/validator.js.map +1 -1
  28. package/dist/config/writer.js +11 -21
  29. package/dist/config/writer.js.map +1 -1
  30. package/dist/index.js +18 -64
  31. package/dist/index.js.map +1 -1
  32. package/dist/info/default_commands.json.js +39 -0
  33. package/dist/info/default_commands.json.js.map +1 -0
  34. package/dist/logger.js +61 -60
  35. package/dist/logger.js.map +1 -1
  36. package/dist/main.js +424 -471
  37. package/dist/main.js.map +1 -1
  38. package/dist/omegga/auth.js +101 -148
  39. package/dist/omegga/auth.js.map +1 -1
  40. package/dist/omegga/commandInjector.js +261 -251
  41. package/dist/omegga/commandInjector.js.map +1 -1
  42. package/dist/omegga/index.js +14 -52
  43. package/dist/omegga/index.js.map +1 -1
  44. package/dist/omegga/logWrangler.js +224 -275
  45. package/dist/omegga/logWrangler.js.map +1 -1
  46. package/dist/omegga/matchers/auth.js +36 -50
  47. package/dist/omegga/matchers/auth.js.map +1 -1
  48. package/dist/omegga/matchers/chat.js +49 -71
  49. package/dist/omegga/matchers/chat.js.map +1 -1
  50. package/dist/omegga/matchers/command.js +25 -36
  51. package/dist/omegga/matchers/command.js.map +1 -1
  52. package/dist/omegga/matchers/exit.js +15 -18
  53. package/dist/omegga/matchers/exit.js.map +1 -1
  54. package/dist/omegga/matchers/index.js +26 -40
  55. package/dist/omegga/matchers/index.js.map +1 -1
  56. package/dist/omegga/matchers/init.js +20 -23
  57. package/dist/omegga/matchers/init.js.map +1 -1
  58. package/dist/omegga/matchers/interact.js +58 -64
  59. package/dist/omegga/matchers/interact.js.map +1 -1
  60. package/dist/omegga/matchers/join.js +74 -95
  61. package/dist/omegga/matchers/join.js.map +1 -1
  62. package/dist/omegga/matchers/leave.js +43 -56
  63. package/dist/omegga/matchers/leave.js.map +1 -1
  64. package/dist/omegga/matchers/mapChange.js +26 -35
  65. package/dist/omegga/matchers/mapChange.js.map +1 -1
  66. package/dist/omegga/matchers/minigameJoin.js +24 -31
  67. package/dist/omegga/matchers/minigameJoin.js.map +1 -1
  68. package/dist/omegga/matchers/version.js +42 -49
  69. package/dist/omegga/matchers/version.js.map +1 -1
  70. package/dist/omegga/player.js +527 -527
  71. package/dist/omegga/player.js.map +1 -1
  72. package/dist/omegga/plugin/interface.js +91 -98
  73. package/dist/omegga/plugin/interface.js.map +1 -1
  74. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js +524 -429
  75. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -1
  76. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js +282 -294
  77. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js.map +1 -1
  78. package/dist/omegga/plugin/plugin_node_safe.js +365 -393
  79. package/dist/omegga/plugin/plugin_node_safe.js.map +1 -1
  80. package/dist/omegga/plugin/plugin_node_unsafe.js +119 -179
  81. package/dist/omegga/plugin/plugin_node_unsafe.js.map +1 -1
  82. package/dist/omegga/plugin.js +402 -347
  83. package/dist/omegga/plugin.js.map +1 -1
  84. package/dist/omegga/server.js +742 -774
  85. package/dist/omegga/server.js.map +1 -1
  86. package/dist/omegga/wrapper.js +64 -91
  87. package/dist/omegga/wrapper.js.map +1 -1
  88. package/dist/plugin.js +11 -31
  89. package/dist/plugin.js.map +1 -1
  90. package/dist/softconfig.js +121 -100
  91. package/dist/softconfig.js.map +1 -1
  92. package/dist/updater/steam.js +97 -112
  93. package/dist/updater/steam.js.map +1 -1
  94. package/dist/util/brdb.js +496 -528
  95. package/dist/util/brdb.js.map +1 -1
  96. package/dist/util/brick/checkBounds.js +11 -15
  97. package/dist/util/brick/checkBounds.js.map +1 -1
  98. package/dist/util/brick/constants.js +723 -174
  99. package/dist/util/brick/constants.js.map +1 -1
  100. package/dist/util/brick/displayName.js +204 -211
  101. package/dist/util/brick/displayName.js.map +1 -1
  102. package/dist/util/brick/getBounds.js +29 -41
  103. package/dist/util/brick/getBounds.js.map +1 -1
  104. package/dist/util/brick/getBrickSize.js +6 -7
  105. package/dist/util/brick/getBrickSize.js.map +1 -1
  106. package/dist/util/brick/getScaleAxis.js +24 -30
  107. package/dist/util/brick/getScaleAxis.js.map +1 -1
  108. package/dist/util/brick/index.js +8 -29
  109. package/dist/util/brick/index.js.map +1 -1
  110. package/dist/util/brick/rotate.js +29 -34
  111. package/dist/util/brick/rotate.js.map +1 -1
  112. package/dist/util/brick/setOwnership.js +13 -19
  113. package/dist/util/brick/setOwnership.js.map +1 -1
  114. package/dist/util/chat.js +53 -44
  115. package/dist/util/chat.js.map +1 -1
  116. package/dist/util/color.js +112 -124
  117. package/dist/util/color.js.map +1 -1
  118. package/dist/util/file.js +54 -98
  119. package/dist/util/file.js.map +1 -1
  120. package/dist/util/index.js +84 -106
  121. package/dist/util/index.js.map +1 -1
  122. package/dist/util/map.js +18 -20
  123. package/dist/util/map.js.map +1 -1
  124. package/dist/util/pattern.js +6 -9
  125. package/dist/util/pattern.js.map +1 -1
  126. package/dist/util/time.js +31 -34
  127. package/dist/util/time.js.map +1 -1
  128. package/dist/util/uuid.js +10 -8
  129. package/dist/util/uuid.js.map +1 -1
  130. package/dist/util/wsl.js +19 -25
  131. package/dist/util/wsl.js.map +1 -1
  132. package/dist/version.js +7 -9
  133. package/dist/version.js.map +1 -1
  134. package/dist/webserver/backend/api.js +784 -874
  135. package/dist/webserver/backend/api.js.map +1 -1
  136. package/dist/webserver/backend/calendar.js +14 -17
  137. package/dist/webserver/backend/calendar.js.map +1 -1
  138. package/dist/webserver/backend/database.js +563 -613
  139. package/dist/webserver/backend/database.js.map +1 -1
  140. package/dist/webserver/backend/index.js +153 -191
  141. package/dist/webserver/backend/index.js.map +1 -1
  142. package/dist/webserver/backend/metrics.js +219 -248
  143. package/dist/webserver/backend/metrics.js.map +1 -1
  144. package/dist/webserver/backend/util.js +47 -68
  145. package/dist/webserver/backend/util.js.map +1 -1
  146. package/dist/worker.js +322 -0
  147. package/dist/worker.js.map +1 -0
  148. package/package.json +14 -10
  149. package/templates/safe-ts/omegga.d.ts +1 -1
  150. package/vite.backend.config.mts +46 -0
  151. package/vite.frontend.config.mts +58 -0
  152. package/vitest.backend.config.mts +7 -0
  153. package/dist/brickadia/config.d.ts +0 -3
  154. package/dist/brickadia/presets.d.ts +0 -65
  155. package/dist/brickadia/presets.js +0 -3
  156. package/dist/brickadia/presets.js.map +0 -1
  157. package/dist/brickadia/server.d.ts +0 -36
  158. package/dist/brickadia/types.d.ts +0 -45
  159. package/dist/brickadia/types.js +0 -3
  160. package/dist/brickadia/types.js.map +0 -1
  161. package/dist/cli/auth.d.ts +0 -26
  162. package/dist/cli/config.d.ts +0 -10
  163. package/dist/cli/index.d.ts +0 -30
  164. package/dist/cli/installer.d.ts +0 -1
  165. package/dist/cli/plugin.d.ts +0 -22
  166. package/dist/cli/terminal.d.ts +0 -25
  167. package/dist/config/authorizer.d.ts +0 -2
  168. package/dist/config/authorizer.js +0 -38
  169. package/dist/config/authorizer.js.map +0 -1
  170. package/dist/config/formats/format_js.d.ts +0 -3
  171. package/dist/config/formats/format_yml.d.ts +0 -3
  172. package/dist/config/index.d.ts +0 -18
  173. package/dist/config/reader.d.ts +0 -3
  174. package/dist/config/types.d.ts +0 -50
  175. package/dist/config/types.js +0 -3
  176. package/dist/config/types.js.map +0 -1
  177. package/dist/config/validator.d.ts +0 -6
  178. package/dist/config/writer.d.ts +0 -3
  179. package/dist/index.d.ts +0 -22
  180. package/dist/info/default_commands.json +0 -29
  181. package/dist/logger.d.ts +0 -41
  182. package/dist/main.d.ts +0 -1
  183. package/dist/omegga/auth.d.ts +0 -9
  184. package/dist/omegga/commandInjector.d.ts +0 -35
  185. package/dist/omegga/index.d.ts +0 -7
  186. package/dist/omegga/logWrangler.d.ts +0 -32
  187. package/dist/omegga/matchers/auth.d.ts +0 -10
  188. package/dist/omegga/matchers/chat.d.ts +0 -10
  189. package/dist/omegga/matchers/command.d.ts +0 -7
  190. package/dist/omegga/matchers/exit.d.ts +0 -3
  191. package/dist/omegga/matchers/index.d.ts +0 -3
  192. package/dist/omegga/matchers/init.d.ts +0 -3
  193. package/dist/omegga/matchers/interact.d.ts +0 -4
  194. package/dist/omegga/matchers/join.d.ts +0 -4
  195. package/dist/omegga/matchers/leave.d.ts +0 -4
  196. package/dist/omegga/matchers/mapChange.d.ts +0 -3
  197. package/dist/omegga/matchers/minigameJoin.d.ts +0 -9
  198. package/dist/omegga/matchers/types.d.ts +0 -5
  199. package/dist/omegga/matchers/types.js +0 -3
  200. package/dist/omegga/matchers/types.js.map +0 -1
  201. package/dist/omegga/matchers/version.d.ts +0 -3
  202. package/dist/omegga/player.d.ts +0 -81
  203. package/dist/omegga/plugin/interface.d.ts +0 -30
  204. package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts +0 -23
  205. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +0 -145
  206. package/dist/omegga/plugin/plugin_node_safe/worker.d.ts +0 -1
  207. package/dist/omegga/plugin/plugin_node_safe/worker.js +0 -367
  208. package/dist/omegga/plugin/plugin_node_safe/worker.js.map +0 -1
  209. package/dist/omegga/plugin/plugin_node_safe.d.ts +0 -23
  210. package/dist/omegga/plugin/plugin_node_unsafe.d.ts +0 -13
  211. package/dist/omegga/plugin.d.ts +0 -63
  212. package/dist/omegga/server.d.ts +0 -166
  213. package/dist/omegga/types.d.ts +0 -49
  214. package/dist/omegga/types.js +0 -3
  215. package/dist/omegga/types.js.map +0 -1
  216. package/dist/omegga/wrapper.d.ts +0 -32
  217. package/dist/plugin.d.ts +0 -916
  218. package/dist/softconfig.d.ts +0 -67
  219. package/dist/tsconfig.tsbuildinfo +0 -1
  220. package/dist/updater/index.d.ts +0 -1
  221. package/dist/updater/index.js +0 -10
  222. package/dist/updater/index.js.map +0 -1
  223. package/dist/updater/steam.d.ts +0 -52
  224. package/dist/util/brdb.d.ts +0 -31
  225. package/dist/util/brick/checkBounds.d.ts +0 -8
  226. package/dist/util/brick/constants.d.ts +0 -18
  227. package/dist/util/brick/displayName.d.ts +0 -7
  228. package/dist/util/brick/getBounds.d.ts +0 -5
  229. package/dist/util/brick/getBrickSize.d.ts +0 -3
  230. package/dist/util/brick/getScaleAxis.d.ts +0 -3
  231. package/dist/util/brick/index.d.ts +0 -14
  232. package/dist/util/brick/rotate.d.ts +0 -16
  233. package/dist/util/brick/setOwnership.d.ts +0 -12
  234. package/dist/util/chat.d.ts +0 -23
  235. package/dist/util/color.d.ts +0 -13
  236. package/dist/util/file.d.ts +0 -5
  237. package/dist/util/index.d.ts +0 -183
  238. package/dist/util/map.d.ts +0 -6
  239. package/dist/util/pattern.d.ts +0 -1
  240. package/dist/util/time.d.ts +0 -39
  241. package/dist/util/uuid.d.ts +0 -3
  242. package/dist/util/wsl.d.ts +0 -2
  243. package/dist/version.d.ts +0 -2
  244. package/dist/webserver/backend/api.d.ts +0 -115
  245. package/dist/webserver/backend/calendar.d.ts +0 -5
  246. package/dist/webserver/backend/database.d.ts +0 -150
  247. package/dist/webserver/backend/index.d.ts +0 -30
  248. package/dist/webserver/backend/metrics.d.ts +0 -3
  249. package/dist/webserver/backend/types.d.ts +0 -114
  250. package/dist/webserver/backend/types.js +0 -3
  251. package/dist/webserver/backend/types.js.map +0 -1
  252. package/dist/webserver/backend/util.d.ts +0 -2
  253. package/dist/webserver/index.d.ts +0 -2
  254. package/dist/webserver/index.js +0 -9
  255. package/dist/webserver/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"plugin_jsonrpc_stdio.js","sourceRoot":"","sources":["../../../src/omegga/plugin/plugin_jsonrpc_stdio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin_jsonrpc_stdio.js","sources":["../../../src/omegga/plugin/plugin_jsonrpc_stdio.ts"],"sourcesContent":["import Logger from '@/logger';\nimport { EnvironmentPreset } from '@brickadia/presets';\nimport Omegga from '@omegga/server';\nimport { WriteSaveObject } from 'brs-js';\nimport {\n JSONRPCClient,\n JSONRPCServer,\n JSONRPCServerAndClient,\n} from 'json-rpc-2.0';\nimport { ChildProcessWithoutNullStreams, spawn } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport readline from 'readline';\nimport { Plugin } from './interface';\nimport { bootstrap } from './plugin_node_safe/proxyOmegga';\n\n// TODO: check if version is compatible (v1 -> v2) from file\n// TODO: write jsonrpc wrappers in a few languages, implement a few simple plugins\n// TODO: languages: [ python, go ]\n\nconst MAIN_FILE = 'omegga_plugin';\nconst DOC_FILE = 'doc.json';\nconst PLUGIN_FILE = 'plugin.json';\n\nexport default class RpcPlugin extends Plugin {\n #child: ChildProcessWithoutNullStreams;\n #rpc: JSONRPCServerAndClient;\n #errInterface: readline.Interface;\n #outInterface: readline.Interface;\n\n messageCounter: number;\n\n // all RPC plugins require a main (binary) file and a doc file\n static canLoad(pluginPath: string) {\n return (\n fs.existsSync(path.join(pluginPath, MAIN_FILE)) &&\n fs.existsSync(path.join(pluginPath, DOC_FILE))\n );\n }\n\n // websocket rpc plugin type\n static getFormat() {\n return 'jsonrpc_stdio';\n }\n\n // documentation is based on doc.json file\n getDocumentation() {\n return this.documentation;\n }\n constructor(pluginPath: string, omegga: Omegga) {\n super(pluginPath, omegga);\n\n this.messageCounter = 0;\n\n // TODO: validate documentation\n this.documentation = Plugin.readJSON(path.join(pluginPath, DOC_FILE));\n this.pluginConfig = Plugin.readJSON(path.join(pluginPath, PLUGIN_FILE));\n this.pluginFile = path.join(pluginPath, MAIN_FILE);\n\n this.eventPassthrough = this.eventPassthrough.bind(this);\n this.commands = [];\n\n this.initRPC();\n }\n\n isLoaded() {\n return !!this.#child && !this.#child.exitCode;\n }\n\n // determing if a command is registered\n isCommand(cmd: string) {\n return this.commands.includes(cmd);\n }\n\n // spawn the plugin as a child process\n async load() {\n const name = this.getName();\n const verbose = (...msg: any[]) => Logger.verbose(name.underline, ...msg);\n verbose('Load method invoked');\n let frozen = true,\n timed = false;\n this.commands = [];\n\n // can't load the plugin if the child is still running\n if (this.#child) {\n verbose('Plugin already has child process');\n return false;\n }\n\n let config;\n try {\n verbose('Getting plugin config');\n config = await this.storage.getConfig();\n } catch (e) {\n return false;\n }\n\n try {\n if (this.pluginConfig?.emitConfig) {\n verbose('Emitting plugin config');\n await fs.promises.writeFile(\n path.join(this.path, this.pluginConfig.emitConfig),\n JSON.stringify(config),\n );\n }\n verbose('Spawning child process');\n this.#child = spawn(this.pluginFile);\n this.#child.stdin.setDefaultEncoding('utf8');\n this.#outInterface = readline.createInterface({\n input: this.#child.stdout,\n terminal: false,\n });\n this.#errInterface = readline.createInterface({\n input: this.#child.stderr,\n terminal: false,\n });\n this.attachListeners();\n } catch (err) {\n Logger.errorp(\n 'error loading stdio rpc plugin',\n name.brightRed.underline,\n err,\n );\n await this.kill();\n this.emitStatus();\n return false;\n }\n\n return Promise.race([\n (async () => {\n try {\n // get some initial information to create an omegga proxy\n const initialData = bootstrap(this.omegga);\n\n verbose('Sending initial data');\n // send all of the mock events to the proxy omegga\n for (const ev in initialData) {\n // send some initial information\n this.notify(ev, initialData[ev]);\n }\n\n verbose('Initializing event passthrough');\n // pass events through\n this.omegga.on('*', this.eventPassthrough);\n\n try {\n // tell the plugin to start\n verbose('Waiting for plugin to start...');\n const result = await this.emit('init', config);\n\n verbose('Initialized with result:', result);\n // plugins can return a result object\n if (typeof result === 'object' && result) {\n // if registeredCommands is in the results, register the provided strings as commands\n const cmds = result.registeredCommands;\n if (\n cmds &&\n cmds instanceof Array &&\n cmds.every(i => typeof i === 'string')\n )\n this.commands = cmds;\n }\n } catch (e) {\n if (!e.message) return;\n Logger.errorp(name.brightRed.underline, 'error starting: ', e);\n }\n\n // plugin is not frozen, resolve that it has loaded\n frozen = false;\n if (timed) return;\n this.emitStatus();\n return true;\n } catch (e) {\n if (timed) return;\n Logger.errorp(\n 'error loading stdio rpc plugin',\n name.brightRed.underline,\n e,\n );\n await this.kill();\n frozen = false;\n this.emitStatus();\n return false;\n }\n })(),\n new Promise<boolean>(resolve => {\n // let user know if the child quit while launching\n this.#child.once('exit', () => {\n if (!frozen || timed) return;\n verbose('Plugin exited during init');\n frozen = false;\n this.emitStatus();\n resolve(false);\n });\n\n // check if the child is frozen (while true)\n setTimeout(() => {\n if (!frozen) return;\n Logger.errorp(\n 'I appear to be unresponsive when starting (maybe I forgot to respond to init)',\n name.brightRed.underline,\n );\n this.kill();\n timed = true;\n this.emitStatus();\n resolve(false);\n }, 5000);\n }),\n ]);\n }\n\n // kill the child process after requesting it to stop\n unload() {\n if (!this.#child || this.#child.exitCode) {\n this.detachListeners();\n this.emitStatus();\n return Promise.resolve(true);\n }\n let frozen = true,\n timed = false;\n const name = this.getName();\n\n return Promise.race([\n (async (): Promise<boolean> => {\n try {\n // let the plugin know it's time to stop, if this error it's probably because the method was not implemented\n try {\n await this.emit('stop');\n } catch (e) {\n // lazy developer - just implement stop please\n }\n\n await this.kill();\n\n frozen = false;\n if (timed) return;\n this.emitStatus();\n this.commands = [];\n return true;\n } catch (e) {\n if (timed) return;\n Logger.errorp(\n 'error unloading rpc plugin',\n name.brightRed.underline,\n e,\n );\n frozen = false;\n this.emitStatus();\n return false;\n }\n })(),\n // this is wrapped in a promise for the freeze check\n new Promise<boolean>(resolve => {\n // check if the child is frozen (while true)\n setTimeout(() => {\n if (!frozen) return;\n Logger.errorp(\n 'I appear to be unresponsive when stopping (maybe I forgot to respond to stop)',\n name.brightRed.underline,\n );\n this.kill();\n timed = true;\n this.emitStatus();\n resolve(true);\n }, 5000);\n }),\n ]);\n }\n\n // attaches event listeners\n attachListeners() {\n const name = this.getName();\n\n this.#outInterface.on('line', line => {\n try {\n const rpcData = JSON.parse(line);\n try {\n this.#rpc.receiveAndSend(rpcData);\n } catch (e) {\n Logger.error(\n this.getName().brightRed.underline,\n '!>'.red,\n 'error parsing rpc data',\n e,\n line,\n );\n }\n } catch {\n // fallback to logging\n Logger.log(name.underline, '>>'.green, line);\n }\n });\n\n // stderr - print out the errors\n this.#errInterface.on('line', err => {\n Logger.error(name.brightRed.underline, '!>'.red, err);\n });\n\n this.#child.on('error', () => this.kill());\n this.#child.on('close', () => this.kill());\n this.#child.on('exit', code => {\n Logger.errorp(\n '!>'.red,\n 'rpc plugin',\n name.brightRed.underline,\n 'exited with code',\n code,\n );\n this.kill();\n });\n }\n\n // removes previously attached event listeners\n detachListeners() {\n this.#outInterface.removeAllListeners('line');\n this.#errInterface.removeAllListeners('line');\n if (this.#child) {\n this.#child.removeAllListeners('exit');\n this.#child.removeAllListeners('close');\n this.#child.removeAllListeners('error');\n }\n }\n\n // write a string to the child process\n writeln(line: string) {\n try {\n if (this.#child && !this.#child.exitCode)\n this.#child.stdin.write(line + '\\n');\n } catch (e) {\n // the child probably died... oops!\n }\n }\n\n // forcibly kills the plugin\n async kill() {\n this.#rpc.rejectAllPendingRequests('Plugin Terminated');\n this.detachListeners();\n this.omegga.off('*', this.eventPassthrough);\n if (!this.#child) return;\n\n // create a promise for the exit of the process\n const promise = new Promise(resolve => this.#child.once('exit', resolve));\n\n // kill the process\n this.#child.kill('SIGINT');\n\n // ...kill it again just to make sure it's dead\n spawn('kill', ['-9', this.#child.pid + '']);\n\n // wait for the process to exit\n await promise;\n this.#child = undefined;\n this.emitStatus();\n }\n\n eventPassthrough(type: string, ...args: any[]) {\n if (!this.#child) return;\n this.notify(type, args);\n }\n\n // setup the JSONRPC communication\n initRPC() {\n const server = new JSONRPCServer();\n const client = new JSONRPCClient(req => {\n try {\n this.writeln(JSON.stringify(req));\n return Promise.resolve();\n } catch (error) {\n return Promise.reject(error);\n }\n });\n const rpc = (this.#rpc = new JSONRPCServerAndClient(server, client));\n\n // plugin log generator function\n const ezLog =\n (\n logFn: 'log' | 'error' | 'info' | 'debug' | 'warn' | 'trace',\n name: string,\n symbol: string,\n ) =>\n (line: any) =>\n console[logFn](name.underline, symbol, line);\n\n const name = this.getName();\n\n // server can output logs special formatting for stdout\n rpc.addMethod('log', ezLog('log', name, '>>'.green));\n rpc.addMethod('error', ezLog('error', name.brightRed, '!>'.red));\n rpc.addMethod('info', ezLog('info', name, '#>'.blue));\n rpc.addMethod('debug', ezLog('debug', name, '?>'.blue));\n rpc.addMethod('warn', ezLog('warn', name.brightYellow, ':>'.yellow));\n rpc.addMethod('trace', ezLog('trace', name, 'T>'.grey));\n\n // plugin store interactions\n rpc.addMethod('store.get', key =>\n this.storage.get(key as unknown as string),\n );\n rpc.addMethod('store.set', ([key, value]: [key: string, value: any]) =>\n this.storage.set(key, value),\n );\n rpc.addMethod('store.delete', key =>\n this.storage.delete(key as unknown as string),\n );\n rpc.addMethod('store.wipe', () => this.storage.wipe());\n rpc.addMethod('store.count', () => this.storage.count());\n rpc.addMethod('store.keys', () => this.storage.keys());\n\n // server can run console commands\n rpc.addMethod('exec', line =>\n this.omegga.writeln(line as unknown as string),\n );\n rpc.addMethod('writeln', line =>\n this.omegga.writeln(line as unknown as string),\n );\n rpc.addMethod('broadcast', line =>\n this.omegga.broadcast(line as unknown as string),\n );\n rpc.addMethod(\n 'whisper',\n ({ target, line }: { target: string; line: string }) =>\n this.omegga.whisper(target, line),\n );\n rpc.addMethod(\n 'middlePrint',\n ({ target, line }: { target: string; line: string }) =>\n this.omegga.middlePrint(target, line),\n );\n rpc.addMethod('getPlayers', () => this.omegga.getPlayers());\n rpc.addMethod('getPlayerPosition', name =>\n this.omegga.getPlayer(name as unknown as string)?.getPosition(),\n ); // included for compatibility\n rpc.addMethod('getAllPlayerPositions', () =>\n this.omegga.getAllPlayerPositions(),\n );\n rpc.addMethod('getEnvironmentPresets', () =>\n this.omegga.getEnvironmentPresets(),\n );\n rpc.addMethod('resetEnvironment', () => this.omegga.resetEnvironment());\n rpc.addMethod('saveEnvironment', name =>\n this.omegga.saveEnvironment(name as unknown as string),\n );\n rpc.addMethod('loadEnvironment', name =>\n this.omegga.loadEnvironment(name as unknown as string),\n );\n rpc.addMethod('loadEnvironmentData', data =>\n this.omegga.loadEnvironmentData(data as EnvironmentPreset),\n );\n rpc.addMethod('getServerStatus', () => this.omegga.getServerStatus());\n rpc.addMethod('getMinigames', () => this.omegga.getMinigames());\n rpc.addMethod('getMinigamePresets', () => this.omegga.getMinigamePresets());\n rpc.addMethod(\n 'saveMinigame',\n ({ index, name }: { index: number; name: string }) =>\n this.omegga.saveMinigame(index, name),\n );\n rpc.addMethod(\n 'loadMinigame',\n ({ name, owner }: { name: string; owner: string }) =>\n this.omegga.loadMinigame(name, owner),\n );\n rpc.addMethod('nextRoundMinigame', index =>\n this.omegga.nextRoundMinigame(index as unknown as number),\n );\n rpc.addMethod('resetMinigame', index =>\n this.omegga.resetMinigame(index as unknown as number),\n );\n rpc.addMethod('deleteMinigame', index =>\n this.omegga.deleteMinigame(index as unknown as number),\n );\n rpc.addMethod('listMinigames', () => this.omegga.listMinigames());\n rpc.addMethod('getHostId', () => this.omegga.getHostId());\n rpc.addMethod('getRoleSetup', () => this.omegga.getRoleSetup());\n rpc.addMethod('getBanList', () => this.omegga.getBanList());\n rpc.addMethod('getSaves', () => this.omegga.getSaves());\n rpc.addMethod('getSavePath', name =>\n this.omegga.getSavePath(name as unknown as string),\n );\n rpc.addMethod(\n 'clearBricks',\n ({ target, quiet = false }: { target: string; quiet?: boolean }) =>\n this.omegga.clearBricks(target, quiet),\n );\n rpc.addMethod('clearAllBricks', quiet =>\n this.omegga.clearAllBricks(quiet as unknown as boolean),\n );\n rpc.addMethod('saveBricks', name =>\n this.omegga.saveBricks(name as unknown as string),\n );\n rpc.addMethod(\n 'loadBricks',\n ({\n name,\n offX = 0,\n offY = 0,\n offZ = 0,\n quiet = false,\n }: {\n name: string;\n offX?: number;\n offY?: number;\n offZ?: number;\n quiet?: boolean;\n }) => this.omegga.loadBricks(name, { offX, offY, offZ, quiet }),\n );\n rpc.addMethod(\n 'loadBricksOnPlayer',\n ({\n name,\n player,\n offX = 0,\n offY = 0,\n offZ = 0,\n }: {\n name: string;\n player: string;\n offX?: number;\n offY?: number;\n offZ?: number;\n quiet?: boolean;\n }) => this.omegga.loadBricksOnPlayer(name, player, { offX, offY, offZ }),\n );\n rpc.addMethod('readSaveData', name =>\n this.omegga.readSaveData(name as unknown as string),\n );\n rpc.addMethod('getSaveData', () => this.omegga.getSaveData());\n rpc.addMethod(\n 'loadSaveData',\n ({\n data,\n offX = 0,\n offY = 0,\n offZ = 0,\n quiet = false,\n }: {\n data: WriteSaveObject;\n offX?: number;\n offY?: number;\n offZ?: number;\n quiet?: boolean;\n }) => this.omegga.loadSaveData(data, { offX, offY, offZ, quiet }),\n );\n rpc.addMethod(\n 'loadSaveDataOnPlayer',\n ({\n data,\n player,\n offX = 0,\n offY = 0,\n offZ = 0,\n }: {\n data: WriteSaveObject;\n player: string;\n offX?: number;\n offY?: number;\n offZ?: number;\n quiet?: boolean;\n }) =>\n this.omegga.loadSaveDataOnPlayer(data, player, { offX, offY, offZ }),\n );\n rpc.addMethod('changeMap', map =>\n this.omegga.changeMap(map as unknown as string),\n );\n rpc.addMethod('unload', () => this.unload());\n rpc.addMethod('reload', async () => {\n await this.unload();\n await this.load();\n });\n\n // player related operations\n const addPlayerMethod = (name: string) =>\n rpc.addMethod(`player.${name}`, player =>\n (this.omegga.getPlayer(player as unknown as string) as any)?.[name](),\n );\n rpc.addMethod('player.get', target => {\n let player = this.omegga.getPlayer(target as unknown as string);\n return player && { ...player, host: player.isHost() };\n });\n addPlayerMethod('getRoles');\n addPlayerMethod('getPermissions');\n addPlayerMethod('getNameColor');\n addPlayerMethod('getPosition');\n addPlayerMethod('getGhostBrick');\n addPlayerMethod('getPaint');\n addPlayerMethod('getTemplateBounds');\n addPlayerMethod('getTemplateBoundsData');\n rpc.addMethod(\n 'player.loadDataAtGhostBrick',\n ({\n target,\n data,\n rotate = true,\n offX = 0,\n offY = 0,\n offZ = 0,\n quiet = false,\n }: {\n target: string;\n data: WriteSaveObject;\n rotate?: boolean;\n offX?: number;\n offY?: number;\n offZ?: number;\n quiet?: boolean;\n }) =>\n this.omegga\n .getPlayer(target)\n ?.loadDataAtGhostBrick(data, { rotate, offX, offY, offZ, quiet }),\n );\n rpc.addMethod(\n 'player.loadSaveData',\n ({\n target,\n data,\n offX = 0,\n offY = 0,\n offZ = 0,\n }: {\n target: string;\n data: WriteSaveObject;\n offX?: number;\n offY?: number;\n offZ?: number;\n }) =>\n this.omegga.getPlayer(target)?.loadSaveData(data, { offX, offY, offZ }),\n );\n\n // plugin related operations\n rpc.addMethod('plugin.get', async name => {\n const plugin = this.omegga.pluginLoader.plugins.find(\n p => p.getName() === (name as unknown as string),\n );\n\n if (plugin) {\n return {\n name,\n documentation: plugin.getDocumentation(),\n loaded: plugin.isLoaded(),\n };\n } else {\n return null;\n }\n });\n\n rpc.addMethod(\n 'plugin.emit',\n async ([name, event, ...args]: [string, string, ...any[]]) => {\n const plugin = this.omegga.pluginLoader.plugins.find(\n p => p.getName() === name,\n );\n\n if (plugin) {\n return plugin.emitPlugin(event, this.getName(), args);\n } else {\n return null;\n }\n },\n );\n }\n\n // emit a custom plugin event\n async emitPlugin(event: string, from: string, args: any[]) {\n return await this.emit('plugin:emit', [event, from, ...args]);\n }\n\n // emit a message to the plugin via the jsonrpc client and expect a response\n emit(type: string, arg?: any) {\n return this.#rpc.request(type, arg);\n }\n\n // emit a message to the plugin via the jsonrpc client, don't expect a response\n notify(type: string, arg?: any) {\n try {\n this.#rpc.notify(type, arg);\n } catch (e) {\n // this only happens if the RPC library is hitting some issues - probably redundant\n }\n }\n}\n"],"names":["Plugin","Logger","spawn","bootstrap","JSONRPCServer","JSONRPCClient","JSONRPCServerAndClient","name"],"mappings":"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"}