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_node_safe.js","sourceRoot":"","sources":["../../../src/omegga/plugin/plugin_node_safe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin_node_safe.js","sources":["../../../src/omegga/plugin/plugin_node_safe.ts"],"sourcesContent":["import Logger from '@/logger';\nimport Omegga from '@omegga/server';\nimport EventEmitter from 'node:events';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { Worker } from 'node:worker_threads';\nimport readline from 'readline';\nimport { Plugin } from './interface';\nimport { bootstrap } from './plugin_node_safe/proxyOmegga';\n\n// Main plugin file (like index.js)\n// this isn't named 'index.js' or 'plugin.js' because those may be filenames\n// used with other loaders (rpc loader) and are too generic\n// omegga.main.js is rather unique and helps avoid collision\nconst MAIN_FILE = 'omegga.plugin.js';\nconst MAIN_FILE_TS = 'omegga.plugin.ts';\n\n// Documentation file (contains name, description, author, command helptext)\nconst DOC_FILE = 'doc.json';\nconst ACCESS_FILE = 'access.json';\nconst PLUGIN_FILE = 'plugin.json';\n\nexport default class NodeVmPlugin extends Plugin {\n #worker: Worker;\n #outInterface: readline.Interface;\n #errInterface: readline.Interface;\n\n // every node vm plugin requires a main file, a doc file, and an access file\n // may evolve this so it checks the contents of the doc file later\n static canLoad(pluginPath: string) {\n return (\n (fs.existsSync(path.join(pluginPath, MAIN_FILE)) ||\n fs.existsSync(path.join(pluginPath, MAIN_FILE_TS))) &&\n fs.existsSync(path.join(pluginPath, DOC_FILE)) &&\n fs.existsSync(path.join(pluginPath, ACCESS_FILE))\n );\n }\n\n // safe node plugins are limited\n static getFormat() {\n return 'node_safe';\n }\n\n plugin: EventEmitter;\n messageCounter: number;\n access: string[];\n isTypeScript: boolean;\n\n constructor(pluginPath: string, omegga: Omegga) {\n super(pluginPath, omegga);\n\n // event emitter and message counter for keeping track of worker events\n this.plugin = new EventEmitter();\n this.messageCounter = 0;\n\n // TODO: validate documentation\n this.documentation = Plugin.readJSON(path.join(pluginPath, DOC_FILE));\n this.isTypeScript = fs.existsSync(path.join(pluginPath, MAIN_FILE_TS));\n this.pluginConfig = Plugin.readJSON(path.join(pluginPath, PLUGIN_FILE));\n\n // access list is a list of builtin requires\n // can be ['*'] for everything\n this.access = Plugin.readJSON(path.join(pluginPath, ACCESS_FILE)) || [];\n\n // list of registered commands\n this.commands = [];\n\n // verify access is an array of strings\n if (\n !(this.access instanceof Array) ||\n !this.access.every(s => typeof s === 'string')\n ) {\n throw new Error('access list not a string array');\n }\n\n // plugin name\n const name = this.getName();\n\n // when the worker emits an error or a log, pass it up to omegga\n this.plugin.on('error', (resp, ...args) => {\n Logger.error(name.brightRed.underline, '!>'.red, ...args);\n this.notify(resp);\n });\n this.plugin.on('log', (resp, ...args) => {\n Logger.log(name.underline, '>>'.green, ...args);\n this.notify(resp);\n });\n\n // let the worker write commands to brickadia\n this.plugin.on('exec', (_, cmd) => omegga.writeln(cmd));\n\n // storage interface\n this.plugin.on('store.get', async (resp, key) => {\n try {\n this.notify(resp, await this.storage.get(key));\n } catch (e) {\n Logger.error(\n name.brightRed.underline,\n '!>'.red,\n 'error in store.get of',\n key,\n e,\n );\n }\n });\n this.plugin.on('store.set', async (resp, key, value) => {\n try {\n await this.storage.set(key, JSON.parse(value));\n } catch (e) {\n Logger.error(\n name.brightRed.underline,\n '!>'.red,\n 'error in store.set of',\n key,\n value,\n e,\n );\n }\n this.notify(resp);\n });\n this.plugin.on('store.delete', async (resp, key) => {\n try {\n await this.storage.delete(key);\n } catch (e) {\n Logger.error(\n name.brightRed.underline,\n '!>'.red,\n 'error in store.delete of',\n key,\n e,\n );\n }\n this.notify(resp);\n });\n this.plugin.on('store.wipe', async resp => {\n try {\n await this.storage.wipe();\n } catch (e) {\n Logger.error(\n name.brightRed.underline,\n '!>'.red,\n 'error in store.wipe',\n e,\n );\n }\n this.notify(resp);\n });\n this.plugin.on('store.count', async resp => {\n try {\n this.notify(resp, await this.storage.count());\n } catch (e) {\n Logger.error(\n name.brightRed.underline,\n '!>'.red,\n 'error in store.count',\n e,\n );\n }\n });\n this.plugin.on('store.keys', async resp => {\n try {\n this.notify(resp, await this.storage.keys());\n } catch (e) {\n Logger.error(\n name.brightRed.underline,\n '!>'.red,\n 'error in store.keys',\n e,\n );\n }\n });\n\n // plugin fetching\n this.plugin.on('getPlugin', async (resp, name) => {\n const plugin = this.omegga.pluginLoader.plugins.find(\n p => p.getName() === name,\n );\n\n if (plugin) {\n this.notify(resp, {\n name,\n documentation: plugin.getDocumentation(),\n loaded: plugin.isLoaded(),\n });\n } else {\n this.notify(resp);\n }\n });\n\n this.plugin.on('emitPlugin', async (resp, target, ev, args) => {\n const plugin = this.omegga.pluginLoader.plugins.find(\n p => p.getName() === target,\n );\n\n if (plugin) {\n let r = await plugin.emitPlugin(ev, name, args);\n this.notify(resp, r);\n } else {\n Logger.error(name.brightRed.underline, '!>'.red, 'error in emitPlugin');\n }\n });\n\n // command registration\n this.plugin.on('command.registers', async (_, blob) => {\n if (typeof blob !== 'string') return;\n const registers = JSON.parse(blob);\n // ensure registers is an array of strings\n if (\n !(registers instanceof Array) ||\n registers.some(i => typeof i !== 'string')\n )\n return;\n\n this.commands = registers;\n });\n\n // listen on every message, post them to to the worker\n this.eventPassthrough = this.eventPassthrough.bind(this);\n }\n\n // emit a custom plugin event\n async emitPlugin(ev: string, from: string, args: any[]) {\n const [r]: any[] = (await this.emit('emitPlugin', ev, from, args)) ?? [];\n return r;\n }\n\n // documentation is based on doc.json file\n getDocumentation() {\n return this.documentation;\n }\n\n // loaded state is based on if a worker exists\n isLoaded() {\n return !!this.#worker;\n }\n\n // determing if a command is registered\n isCommand(cmd: string) {\n return this.commands.includes(cmd);\n }\n\n // require the plugin into the system, run the init func\n async load() {\n // can't load the plugin if it's already loaded\n if (typeof this.#worker !== 'undefined') return false;\n\n // vm restriction settings, default is access to everything\n const vmOptions = {\n builtin: this.access, // TODO: reference access file\n external: true, // TODO: reference access file\n isTypeScript: this.isTypeScript,\n };\n this.commands = [];\n\n try {\n const config = await this.storage.getConfig();\n if (this.pluginConfig?.emitConfig) {\n await fs.promises.writeFile(\n path.join(this.path, this.pluginConfig.emitConfig),\n JSON.stringify(config),\n );\n }\n this.createWorker();\n\n // tell the worker its name :)\n await this.emit('name', this.getName());\n\n // create the vm, export the plugin's class\n Logger.verbose('Loading safe plugin');\n if (!(await this.emit('load', this.path, vmOptions))[0]) throw '';\n\n // get some initial information to create an omegga proxy\n const initialData = bootstrap(this.omegga);\n // send all of the mock events to the proxy omegga\n Logger.verbose('Sending initial data to safe plugin');\n for (const ev in initialData) {\n try {\n (this.#worker as Worker).postMessage({\n action: 'brickadiaEvent',\n args: [ev, ...initialData[ev]],\n });\n } catch (e) {\n /* just writing 'safe' code :) */\n }\n }\n\n // pass events through\n this.omegga.on('*', this.eventPassthrough);\n Logger.verbose('Starting safe plugin');\n // actually start the plugin\n if (!(await this.emit('start', config))[0]) throw 'plugin failed start';\n\n this.emitStatus();\n return true;\n } catch (e) {\n // kill the worker\n await this.emit('kill');\n\n Logger.error(\n '!>'.red,\n 'error loading node vm plugin',\n this.getName().brightRed.underline,\n e,\n );\n this.emitStatus();\n return false;\n }\n }\n\n // disrequire the plugin into the system, run the stop func\n unload() {\n let frozen = true,\n timed = false;\n\n return Promise.race([\n (async () => {\n // can't unload the plugin if it hasn't been loaded\n if (typeof this.#worker === 'undefined') return false;\n\n try {\n // stop the plugin (cleanly)\n await this.emit('stop');\n\n // remove listeners\n this.omegga.off('*', this.eventPassthrough);\n\n // let the unload function wait for the worker to properly cleanup\n const promise = new Promise(res => {\n this.#worker.once('exit', res);\n });\n\n // kill the worker\n await this.emit('kill');\n\n // wait for the worker to exit\n await promise;\n\n frozen = false;\n if (timed) return;\n this.emitStatus();\n this.commands = [];\n return true;\n } catch (e) {\n frozen = false;\n if (timed) return;\n\n Logger.error(\n '!>'.red,\n 'error unloading node plugin',\n this.getName().brightRed.underline,\n e,\n );\n this.emitStatus();\n return false;\n }\n })(),\n new Promise<boolean>(resolve => {\n // check if the worker is frozen (while true)\n setTimeout(() => {\n if (!frozen) return;\n this.plugin.emit(\n 'error',\n 0,\n 'I appear to be in an unresponsive state - terminating worker',\n );\n\n // remove listeners\n this.omegga.off('*', this.eventPassthrough);\n\n // tell the worker to exit\n if (this.#worker) this.#worker.emit('exit');\n\n // terminate the worker if it still exists\n try {\n if (this.#worker) this.#worker.terminate();\n } catch (err) {\n console.error('error terminating worker:', err);\n }\n\n timed = true;\n resolve(true);\n this.emitStatus();\n }, 5000);\n }),\n ]);\n }\n\n // emit an action to the worker and return a promise with its response\n emit(action: string, ...args: any[]) {\n if (!this.#worker) return;\n\n const messageId = 'message:' + this.messageCounter++;\n\n // promise waits for the message to resolve\n const promise = new Promise<unknown[]>(resolve =>\n this.plugin.once(messageId, (_, ...x) => resolve(x)),\n );\n\n // post the message\n try {\n this.#worker.postMessage({\n action,\n args: [messageId, ...args],\n });\n } catch (e) {\n return Promise.reject(e);\n }\n\n // return the promise\n return promise;\n }\n\n // notify a response to the worker\n notify(action: string, ...args: any[]) {\n if (!this.#worker) return;\n\n // post the message\n try {\n this.#worker.postMessage({\n action,\n args: [...args],\n });\n } catch (e) {\n // do nothing here\n }\n }\n\n // create the worker for this plugin, attach emitter\n createWorker() {\n this.#worker = new Worker(\n // vite transpiles worker.ts to dist/worker.js\n path.join(__dirname, '../../worker.js'),\n {\n stdout: true,\n env: {\n VERBOSE: Logger.VERBOSE + '',\n },\n },\n );\n\n // pipe plugin output into omegga\n this.#outInterface = readline.createInterface({\n input: this.#worker.stdout,\n terminal: false,\n });\n this.#errInterface = readline.createInterface({\n input: this.#worker.stderr,\n terminal: false,\n });\n this.#outInterface.on('line', Logger.log);\n this.#errInterface.on('line', Logger.error);\n\n // attach message emitter\n this.#worker.on('message', ({ action, args }) =>\n this.plugin.emit(action, ...args),\n );\n\n // broadcast an error if there is one\n this.#worker.on('error', err => {\n Logger.error(\n '!>'.red,\n 'error in plugin',\n this.getName().brightRed.underline,\n err,\n );\n });\n\n // when the worker exits - set its variable to undefined this knows it's stopped\n this.#worker.on('exit', () => {\n this.omegga.off('*', this.eventPassthrough);\n this.#outInterface.removeAllListeners('line');\n this.#errInterface.removeAllListeners('line');\n try {\n if (this.#worker) this.#worker.terminate();\n } catch (err) {\n Logger.error(\n '!>'.red,\n 'Error terminating worker for',\n this.getName().brightRed.underline,\n err,\n );\n }\n this.#worker = undefined;\n this.emitStatus();\n });\n }\n\n eventPassthrough(...args: any[]) {\n // worker does not exist\n if (!this.#worker) return;\n\n try {\n // post the message\n this.#worker.postMessage({\n action: 'brickadiaEvent',\n args,\n });\n } catch (e) {\n // make sure post message doesn't crash the entire app\n Logger.error('!>'.red, 'error sending to plugin', ...args, e);\n }\n }\n}\n"],"names":["Plugin","Logger","name","bootstrap","Worker"],"mappings":"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"}
@@ -1,187 +1,127 @@
1
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const logger = require("../../logger.js");
4
+ const index = require("../../util/index.js");
5
+ const disrequire = require("disrequire");
6
+ const fs = require("node:fs");
7
+ const path = require("node:path");
8
+ const _interface = require("./interface.js");
9
+ global.OMEGGA_UTIL = index;
10
+ const MAIN_FILE = "omegga.main.js";
11
+ const DOC_FILE = "doc.json";
12
+ const PLUGIN_FILE = "plugin.json";
13
+ class NodePlugin extends _interface.Plugin {
14
+ // every node plugin requires the main file and a doc file
15
+ // may evolve this so it checks the contents of the doc file later
16
+ static canLoad(pluginPath) {
17
+ return fs.existsSync(path.join(pluginPath, MAIN_FILE)) && fs.existsSync(path.join(pluginPath, DOC_FILE));
18
+ }
19
+ // unsafe node plugins (can potentially crash omegga) are powerful
20
+ static getFormat() {
21
+ return "node_unsafe";
22
+ }
23
+ constructor(pluginPath, omegga) {
24
+ super(pluginPath, omegga);
25
+ this.documentation = _interface.Plugin.readJSON(path.join(pluginPath, DOC_FILE));
26
+ this.pluginConfig = _interface.Plugin.readJSON(path.join(pluginPath, PLUGIN_FILE));
27
+ this.pluginFile = path.join(pluginPath, MAIN_FILE);
28
+ this.commands = [];
29
+ }
30
+ // documentation is based on doc.json file
31
+ getDocumentation() {
32
+ return this.documentation;
33
+ }
34
+ // loaded state is based on if the loadedPlugin object is created
35
+ isLoaded() {
36
+ return !!this.loadedPlugin;
37
+ }
38
+ // determing if a command is registered
39
+ isCommand(cmd) {
40
+ return this.commands.includes(cmd);
41
+ }
42
+ // require the plugin into the system, run the init func
43
+ async load() {
44
+ const stopPlugin = (reason) => {
45
+ logger.default.errorp("error launching node plugin", this.getName(), ":", reason);
46
+ try {
47
+ this.disrequireAll();
48
+ } catch (e) {
49
+ logger.default.errorp("error unloading node plugin (2)", this.getName(), e);
50
+ }
51
+ this.emitStatus();
52
+ return false;
33
53
  };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const logger_1 = __importDefault(require("../../logger"));
40
- const util = __importStar(require("../../util"));
41
- const disrequire_1 = __importDefault(require("disrequire"));
42
- const fs_1 = __importDefault(require("fs"));
43
- const path_1 = __importDefault(require("path"));
44
- const interface_1 = require("./interface");
45
- global.OMEGGA_UTIL = util;
46
- // Main plugin file (like index.js)
47
- // this isn't named 'index.js' or 'plugin.js' because those may be filenames
48
- // used with other loaders (rpc loader) and are too generic
49
- // omegga.main.js is rather unique and helps avoid collision
50
- const MAIN_FILE = 'omegga.main.js';
51
- // Documentation file (contains name, description, author, command helptext)
52
- const DOC_FILE = 'doc.json';
53
- const PLUGIN_FILE = 'plugin.json';
54
- class NodePlugin extends interface_1.Plugin {
55
- // every node plugin requires the main file and a doc file
56
- // may evolve this so it checks the contents of the doc file later
57
- static canLoad(pluginPath) {
58
- return (fs_1.default.existsSync(path_1.default.join(pluginPath, MAIN_FILE)) &&
59
- fs_1.default.existsSync(path_1.default.join(pluginPath, DOC_FILE)));
60
- }
61
- // unsafe node plugins (can potentially crash omegga) are powerful
62
- static getFormat() {
63
- return 'node_unsafe';
64
- }
65
- constructor(pluginPath, omegga) {
66
- super(pluginPath, omegga);
67
- // TODO: validate documentation
68
- this.documentation = interface_1.Plugin.readJSON(path_1.default.join(pluginPath, DOC_FILE));
69
- this.pluginConfig = interface_1.Plugin.readJSON(path_1.default.join(pluginPath, PLUGIN_FILE));
70
- this.pluginFile = path_1.default.join(pluginPath, MAIN_FILE);
71
- // list of registered comands
72
- this.commands = [];
73
- }
74
- // documentation is based on doc.json file
75
- getDocumentation() {
76
- return this.documentation;
77
- }
78
- // loaded state is based on if the loadedPlugin object is created
79
- isLoaded() {
80
- return !!this.loadedPlugin;
81
- }
82
- // determing if a command is registered
83
- isCommand(cmd) {
84
- return this.commands.includes(cmd);
85
- }
86
- // require the plugin into the system, run the init func
87
- async load() {
88
- var _a;
89
- const stopPlugin = (reason) => {
90
- logger_1.default.errorp('error launching node plugin', this.getName(), ':', reason);
91
- try {
92
- this.disrequireAll();
93
- }
94
- catch (e) {
95
- logger_1.default.errorp('error unloading node plugin (2)', this.getName(), e);
96
- }
97
- this.emitStatus();
98
- return false;
99
- };
100
- this.commands = [];
101
- try {
102
- const config = await this.storage.getConfig();
103
- if ((_a = this.pluginConfig) === null || _a === void 0 ? void 0 : _a.emitConfig) {
104
- await fs_1.default.promises.writeFile(path_1.default.join(this.path, this.pluginConfig.emitConfig), JSON.stringify(config));
105
- }
106
- // require the plugin itself
107
- const Plugin = require(this.pluginFile);
108
- // node plugins must export a class with a constructor
109
- if (typeof Plugin.prototype !== 'object' ||
110
- typeof Plugin.prototype.constructor !== 'function')
111
- return stopPlugin('missing constructor in plugin');
112
- // interface with plugin store
113
- const store = {
114
- get: key => this.storage.get(key),
115
- set: (key, value) => this.storage.set(key, value),
116
- delete: key => this.storage.delete(key),
117
- wipe: () => this.storage.wipe(),
118
- count: () => this.storage.count(),
119
- keys: () => this.storage.keys(),
120
- };
121
- // create the loaded plugin
122
- this.loadedPlugin = new Plugin(this.omegga, config, store);
123
- // start the loaded plugin
124
- if (typeof this.loadedPlugin.init === 'function') {
125
- const result = await this.loadedPlugin.init();
126
- // plugins can return a result object
127
- if (typeof result === 'object' && result) {
128
- // if registeredCommands is in the results, register the provided strings as commands
129
- const cmds = result.registeredCommands;
130
- if (cmds &&
131
- cmds instanceof Array &&
132
- cmds.every(i => typeof i === 'string'))
133
- this.commands = cmds;
134
- }
135
- }
136
- this.emitStatus();
137
- return true;
138
- }
139
- catch (e) {
140
- logger_1.default.errorp('error loading node plugin', this.getName(), e);
141
- this.emitStatus();
142
- return false;
54
+ this.commands = [];
55
+ try {
56
+ const config = await this.storage.getConfig();
57
+ if (this.pluginConfig?.emitConfig) {
58
+ await fs.promises.writeFile(
59
+ path.join(this.path, this.pluginConfig.emitConfig),
60
+ JSON.stringify(config)
61
+ );
62
+ }
63
+ const Plugin2 = require(this.pluginFile);
64
+ if (typeof Plugin2.prototype !== "object" || typeof Plugin2.prototype.constructor !== "function")
65
+ return stopPlugin("missing constructor in plugin");
66
+ const store = {
67
+ get: (key) => this.storage.get(key),
68
+ set: (key, value) => this.storage.set(key, value),
69
+ delete: (key) => this.storage.delete(key),
70
+ wipe: () => this.storage.wipe(),
71
+ count: () => this.storage.count(),
72
+ keys: () => this.storage.keys()
73
+ };
74
+ this.loadedPlugin = new Plugin2(this.omegga, config, store);
75
+ if (typeof this.loadedPlugin.init === "function") {
76
+ const result = await this.loadedPlugin.init();
77
+ if (typeof result === "object" && result) {
78
+ const cmds = result.registeredCommands;
79
+ if (cmds && cmds instanceof Array && cmds.every((i) => typeof i === "string"))
80
+ this.commands = cmds;
143
81
  }
82
+ }
83
+ this.emitStatus();
84
+ return true;
85
+ } catch (e) {
86
+ logger.default.errorp("error loading node plugin", this.getName(), e);
87
+ this.emitStatus();
88
+ return false;
144
89
  }
145
- // disrequire the plugin into the system, run the stop func
146
- async unload() {
147
- // can't unload the plugin if it hasn't been loaded
148
- if (typeof this.loadedPlugin === 'undefined') {
149
- this.emitStatus();
150
- return false;
151
- }
152
- try {
153
- // run the stop func on the plugin if applicable
154
- if (typeof this.loadedPlugin.stop === 'function')
155
- await this.loadedPlugin.stop();
156
- // unload the plugin
157
- this.disrequireAll();
158
- this.loadedPlugin = undefined;
159
- this.emitStatus();
160
- this.commands = [];
161
- return true;
162
- }
163
- catch (e) {
164
- logger_1.default.errorp('error unloading node plugin', this.getName(), e);
165
- this.emitStatus();
166
- return false;
167
- }
90
+ }
91
+ // disrequire the plugin into the system, run the stop func
92
+ async unload() {
93
+ if (typeof this.loadedPlugin === "undefined") {
94
+ this.emitStatus();
95
+ return false;
168
96
  }
169
- // disrequire all that match plugin path in require.cache
170
- disrequireAll() {
171
- // get all files in plugin directory from require cache
172
- const requiredFiles = Object.keys(require.cache).filter(requiredFile => requiredFile.includes(this.path));
173
- // disrequire all the files
174
- requiredFiles.forEach(file => {
175
- try {
176
- (0, disrequire_1.default)(file);
177
- }
178
- catch (e) {
179
- if (e.code !== 'MODULE_NOT_FOUND')
180
- // ignore error thrown if a module was deleted
181
- throw e;
182
- }
183
- });
97
+ try {
98
+ if (typeof this.loadedPlugin.stop === "function")
99
+ await this.loadedPlugin.stop();
100
+ this.disrequireAll();
101
+ this.loadedPlugin = void 0;
102
+ this.emitStatus();
103
+ this.commands = [];
104
+ return true;
105
+ } catch (e) {
106
+ logger.default.errorp("error unloading node plugin", this.getName(), e);
107
+ this.emitStatus();
108
+ return false;
184
109
  }
110
+ }
111
+ // disrequire all that match plugin path in require.cache
112
+ disrequireAll() {
113
+ const requiredFiles = Object.keys(require.cache).filter(
114
+ (requiredFile) => requiredFile.includes(this.path)
115
+ );
116
+ requiredFiles.forEach((file) => {
117
+ try {
118
+ disrequire(file);
119
+ } catch (e) {
120
+ if (e.code !== "MODULE_NOT_FOUND")
121
+ throw e;
122
+ }
123
+ });
124
+ }
185
125
  }
186
126
  exports.default = NodePlugin;
187
- //# sourceMappingURL=plugin_node_unsafe.js.map
127
+ //# sourceMappingURL=plugin_node_unsafe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin_node_unsafe.js","sourceRoot":"","sources":["../../../src/omegga/plugin/plugin_node_unsafe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA8B;AAG9B,iDAA8B;AAC9B,4DAAoC;AACpC,4CAAoB;AACpB,gDAAwB;AACxB,2CAAqC;AAErC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;AAE1B,mCAAmC;AACnC,4EAA4E;AAC5E,2DAA2D;AAC3D,4DAA4D;AAC5D,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAEnC,4EAA4E;AAC5E,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,MAAqB,UAAW,SAAQ,kBAAM;IAC5C,0DAA0D;IAC1D,kEAAkE;IAClE,MAAM,CAAC,OAAO,CAAC,UAAkB;QAC/B,OAAO,CACL,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC/C,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAC/C,CAAC;IACJ,CAAC;IAED,kEAAkE;IAClE,MAAM,CAAC,SAAS;QACd,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,YAAY,UAAkB,EAAE,MAAc;QAC5C,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1B,+BAA+B;QAC/B,IAAI,CAAC,aAAa,GAAG,kBAAM,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,GAAG,kBAAM,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEnD,6BAA6B;QAC7B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,0CAA0C;IAC1C,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,iEAAiE;IACjE,QAAQ;QACN,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,uCAAuC;IACvC,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,IAAI;;QACR,MAAM,UAAU,GAAG,CAAC,MAAe,EAAE,EAAE;YACrC,gBAAM,CAAC,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAC1E,IAAI,CAAC;gBACH,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,gBAAM,CAAC,MAAM,CAAC,iCAAiC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QAEnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9C,IAAI,MAAA,IAAI,CAAC,YAAY,0CAAE,UAAU,EAAE,CAAC;gBAClC,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAClD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACvB,CAAC;YACJ,CAAC;YAED,4BAA4B;YAC5B,MAAM,MAAM,GAAiB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEtD,sDAAsD;YACtD,IACE,OAAQ,MAAc,CAAC,SAAS,KAAK,QAAQ;gBAC7C,OAAQ,MAAc,CAAC,SAAS,CAAC,WAAW,KAAK,UAAU;gBAE3D,OAAO,UAAU,CAAC,+BAA+B,CAAC,CAAC;YAErD,8BAA8B;YAC9B,MAAM,KAAK,GAAgB;gBACzB,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBACjC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;gBACjD,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;gBACvC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBAC/B,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACjC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;aAChC,CAAC;YAEF,2BAA2B;YAC3B,IAAI,CAAC,YAAY,GAAG,IAAK,MAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAEpE,0BAA0B;YAC1B,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBAE9C,qCAAqC;gBACrC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;oBACzC,qFAAqF;oBACrF,MAAM,IAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC;oBACvC,IACE,IAAI;wBACJ,IAAI,YAAY,KAAK;wBACrB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;wBAEtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,gBAAM,CAAC,MAAM,CAAC,2BAA2B,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,MAAM;QACV,mDAAmD;QACnD,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,gDAAgD;YAChD,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,UAAU;gBAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAEjC,oBAAoB;YACpB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,gBAAM,CAAC,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,aAAa;QACX,uDAAuD;QACvD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CACrE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,CAAC;QACF,2BAA2B;QAC3B,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC;gBACH,IAAA,oBAAU,EAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB;oBAC/B,8CAA8C;oBAC9C,MAAM,CAAC,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA5JD,6BA4JC"}
1
+ {"version":3,"file":"plugin_node_unsafe.js","sources":["../../../src/omegga/plugin/plugin_node_unsafe.ts"],"sourcesContent":["import Logger from '@/logger';\nimport OmeggaPlugin, { PluginStore } from '@/plugin';\nimport type Omegga from '@omegga/server';\nimport * as util from '@util';\nimport disrequire from 'disrequire';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { Plugin } from './interface';\n\nglobal.OMEGGA_UTIL = util;\n\n// Main plugin file (like index.js)\n// this isn't named 'index.js' or 'plugin.js' because those may be filenames\n// used with other loaders (rpc loader) and are too generic\n// omegga.main.js is rather unique and helps avoid collision\nconst MAIN_FILE = 'omegga.main.js';\n\n// Documentation file (contains name, description, author, command helptext)\nconst DOC_FILE = 'doc.json';\nconst PLUGIN_FILE = 'plugin.json';\n\nexport default class NodePlugin extends Plugin {\n // every node plugin requires the main file and a doc file\n // may evolve this so it checks the contents of the doc file later\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 // unsafe node plugins (can potentially crash omegga) are powerful\n static getFormat() {\n return 'node_unsafe';\n }\n\n constructor(pluginPath: string, omegga: Omegga) {\n super(pluginPath, omegga);\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 // list of registered comands\n this.commands = [];\n }\n\n // documentation is based on doc.json file\n getDocumentation() {\n return this.documentation;\n }\n\n // loaded state is based on if the loadedPlugin object is created\n isLoaded() {\n return !!this.loadedPlugin;\n }\n\n // determing if a command is registered\n isCommand(cmd: string) {\n return this.commands.includes(cmd);\n }\n\n // require the plugin into the system, run the init func\n async load() {\n const stopPlugin = (reason?: string) => {\n Logger.errorp('error launching node plugin', this.getName(), ':', reason);\n try {\n this.disrequireAll();\n } catch (e) {\n Logger.errorp('error unloading node plugin (2)', this.getName(), e);\n }\n this.emitStatus();\n return false;\n };\n this.commands = [];\n\n try {\n const config = await this.storage.getConfig();\n if (this.pluginConfig?.emitConfig) {\n await fs.promises.writeFile(\n path.join(this.path, this.pluginConfig.emitConfig),\n JSON.stringify(config),\n );\n }\n\n // require the plugin itself\n const Plugin: OmeggaPlugin = require(this.pluginFile);\n\n // node plugins must export a class with a constructor\n if (\n typeof (Plugin as any).prototype !== 'object' ||\n typeof (Plugin as any).prototype.constructor !== 'function'\n )\n return stopPlugin('missing constructor in plugin');\n\n // interface with plugin store\n const store: PluginStore = {\n get: key => this.storage.get(key),\n set: (key, value) => this.storage.set(key, value),\n delete: key => this.storage.delete(key),\n wipe: () => this.storage.wipe(),\n count: () => this.storage.count(),\n keys: () => this.storage.keys(),\n };\n\n // create the loaded plugin\n this.loadedPlugin = new (Plugin as any)(this.omegga, config, store);\n\n // start the loaded plugin\n if (typeof this.loadedPlugin.init === 'function') {\n const result = await this.loadedPlugin.init();\n\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 }\n\n this.emitStatus();\n return true;\n } catch (e) {\n Logger.errorp('error loading node plugin', this.getName(), e);\n this.emitStatus();\n return false;\n }\n }\n\n // disrequire the plugin into the system, run the stop func\n async unload() {\n // can't unload the plugin if it hasn't been loaded\n if (typeof this.loadedPlugin === 'undefined') {\n this.emitStatus();\n return false;\n }\n\n try {\n // run the stop func on the plugin if applicable\n if (typeof this.loadedPlugin.stop === 'function')\n await this.loadedPlugin.stop();\n\n // unload the plugin\n this.disrequireAll();\n this.loadedPlugin = undefined;\n this.emitStatus();\n this.commands = [];\n return true;\n } catch (e) {\n Logger.errorp('error unloading node plugin', this.getName(), e);\n this.emitStatus();\n return false;\n }\n }\n\n // disrequire all that match plugin path in require.cache\n disrequireAll() {\n // get all files in plugin directory from require cache\n const requiredFiles = Object.keys(require.cache).filter(requiredFile =>\n requiredFile.includes(this.path),\n );\n // disrequire all the files\n requiredFiles.forEach(file => {\n try {\n disrequire(file);\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND')\n // ignore error thrown if a module was deleted\n throw e;\n }\n });\n }\n}\n"],"names":["util","Plugin","Logger"],"mappings":"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"}