omegga 1.2.8 → 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 +2 -2
  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.js","sourceRoot":"","sources":["../../src/cli/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../../src/cli/plugin.ts"],"sourcesContent":["import Logger from '@/logger';\nimport soft from '@/softconfig';\nimport * as config from '@config';\nimport { PluginLoader } from '@omegga/plugin';\nimport { exec as execNonPromise } from 'node:child_process';\nimport 'colors';\nimport fs from 'node:fs';\nimport hasbin from 'hasbin';\nimport path from 'node:path';\nimport prompts from 'prompts';\nimport semver from 'semver';\nimport simpleGit, { ResetMode, SimpleGit } from 'simple-git';\nimport { promisify } from 'node:util';\nimport { VERSION } from '@/version';\n\nconst exec = promisify(execNonPromise);\n\nconst MAIN_BRANCHES = ['master', 'main'];\n\n// get the working directory for omegga\nfunction getWorkDir() {\n // default working directory is the one specified in config\n let workDir = config.store.get('defaultOmegga');\n verboseLog('Using working directory', workDir.yellow);\n\n // if there's a config in the current directory, use that one instead\n if (config.find('.')) workDir = '.';\n\n const confFile = config.find(workDir);\n\n return confFile\n ? path.resolve(process.cwd(), path.dirname(confFile))\n : undefined;\n}\n\ninterface IPlugin {\n name?: string;\n type: string | 'raw';\n url: string;\n}\n\ninterface IInstalledPlugin {\n name: string;\n path?: string;\n git?: SimpleGit;\n}\n\ninterface ITransformer {\n pattern: RegExp;\n fn(match: Record<string, string>): IPlugin;\n}\n\nconst PLUGIN_TYPES = ['safe', 'safe-ts', 'unsafe', 'rust', 'rpc'];\ntype PluginType = (typeof PLUGIN_TYPES)[number];\n\n// plugin url transformers\nconst transformers: ITransformer[] = [\n {\n // github transformer\n pattern: /^gh:(?<owner>[^/]+)\\/(?<repo>[^/]+)$/,\n fn: ({ owner, repo }) => ({\n type: 'short',\n name: repo,\n url: `https://github.com/${owner}/omegga-${repo}`,\n }),\n },\n {\n // gitlab transformer\n pattern: /^gl:(?<owner>[^/]+)\\/(?<repo>[^/]+)$/,\n fn: ({ owner, repo }) => ({\n type: 'short',\n name: repo,\n url: `https://gitlab.com/${owner}/omegga-${repo}`,\n }),\n },\n];\n\n// convert a shortened url into a full length one\nconst transformUrl = (url: string): IPlugin => {\n const found = transformers.find(t => url.match(t.pattern));\n if (!found) return { type: 'raw', url };\n return found.fn(url.match(found.pattern).groups);\n};\n\nlet needsNL = false;\n\n// rewrite a console line\nconst rewriteLine = (...args: string[]) => {\n process.stdout.clearLine(0);\n process.stdout.cursorTo(0);\n process.stdout.write(args.join(' '));\n needsNL = true;\n};\n\n// logging helper functions\nconst plg = (plugin: IPlugin | IInstalledPlugin, ...args: any[]) => {\n if (needsNL) {\n needsNL = false;\n console.log();\n }\n console.log(plugin.name, '>>'.green, ...args);\n};\nconst plgLog = (plugin: IPlugin | IInstalledPlugin, ...args: any[]) => {\n if (Logger.VERBOSE) plg(plugin, ...args);\n else rewriteLine(plugin.name, '>>'.green, ...args);\n};\nconst plgWarn = (plugin: IPlugin | IInstalledPlugin, ...args: any[]) => {\n if (needsNL) {\n needsNL = false;\n console.warn();\n }\n console.warn(plugin.name, 'W>'.yellow, ...args);\n};\nconst plgErr = (plugin: IPlugin | IInstalledPlugin, ...args: any[]) => {\n if (needsNL) {\n needsNL = false;\n console.error();\n }\n console.error(plugin.name, '!>'.red, ...args);\n};\n\nconst err = (...args: any[]) => {\n if (needsNL) {\n needsNL = false;\n console.error();\n }\n console.error('!>'.red, ...args);\n};\nconst log = (...args: any[]) => {\n if (needsNL) {\n needsNL = false;\n console.log();\n }\n console.log('>>'.green, ...args);\n};\nconst verboseLog = (...args: any[]) => {\n if (!Logger.VERBOSE) return;\n if (needsNL) {\n needsNL = false;\n console.log();\n }\n console.log('V>'.magenta, ...args);\n};\n\nfunction checkPlugin(omeggaPath: string, plugin: IPlugin | IInstalledPlugin) {\n const pluginPath = path.join(omeggaPath, soft.PLUGIN_PATH, plugin.name);\n\n // check for the plugin file, whatever it's called\n if (fs.existsSync(path.join(pluginPath, soft.PLUGIN_FILE))) {\n if (needsNL) {\n console.log();\n needsNL = false;\n }\n plgLog(plugin, 'Checking plugin file...');\n let data;\n try {\n data = JSON.parse(\n fs.readFileSync(path.join(pluginPath, soft.PLUGIN_FILE), 'utf8'),\n );\n } catch (e) {\n plgErr(plugin, 'Error reading plugin file', e);\n return false;\n }\n\n // make sure this plugin version is okay.\n // in the future, this may include deprecation warnings and format changes\n if (data.formatVersion !== 1) {\n plgWarn(\n plugin,\n 'WARNING - Plugin file has invalid',\n 'formatVersion'.yellow + '. Expected',\n '1'.yellow,\n );\n return;\n }\n\n // check the omeggaVersion field of the plugin file\n if (!data.omeggaVersion || !semver.validRange(data.omeggaVersion)) {\n plgWarn(\n plugin,\n 'WARNING - Plugin file has invalid',\n 'omeggaVersion'.yellow + '. Expected semver expression',\n );\n return false;\n } else if (!semver.satisfies(VERSION, data.omeggaVersion)) {\n plgWarn(\n plugin,\n `WARNING - Plugin is not made for this version of omegga (${VERSION.yellow} vs ${data.omeggaVersion.yellow})`,\n );\n return false;\n }\n\n plgLog(plugin, 'Plugin file', 'OK'.green);\n return true;\n }\n\n // no plugin file, no problem!\n plgWarn(\n plugin,\n `WARNING - Plugin is missing plugin file (${soft.PLUGIN_FILE}), this may be a problem in future versions`,\n );\n return true;\n}\n\n// install plugins from a list of plugins\nexport async function install(plugins: string[], _options: unknown) {\n const omeggaPath = getWorkDir();\n if (!omeggaPath)\n return err(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n\n log('Attempting to install', (plugins.length + '').yellow, 'plugins...');\n\n for (const pluginUrl of plugins) {\n const plugin = transformUrl(pluginUrl);\n\n // if the plugin wasn't transformed, try to extract its name from the git url\n if (!('name' in plugin)) {\n try {\n const { name } = path.parse(plugin.url);\n plugin.name = name.replace(/^omegga-/, '');\n } catch (e) {\n console.error('!>'.red, 'Error parsing name from url', plugin.url);\n break;\n }\n }\n\n log(\n 'Installing plugin',\n plugin.name.yellow,\n 'from',\n plugin.url.yellow + '...',\n );\n\n // plugin absolute path\n const pluginPath = path.join(omeggaPath, soft.PLUGIN_PATH, plugin.name);\n\n // check if plugin already exists\n // TODO: if force is passed in, remove the old directory\n if (\n fs.existsSync(pluginPath) &&\n fs.existsSync(path.join(pluginPath, 'doc.json'))\n ) {\n plgErr(\n plugin,\n 'Directory already exists! Try',\n ('omegga update ' + plugin.name).yellow,\n 'or check for plugin name collisions',\n );\n continue;\n }\n\n if (!fs.existsSync(pluginPath)) {\n // create plugin local directory\n try {\n fs.mkdirSync(pluginPath, { recursive: true });\n } catch (e) {\n plgErr(plugin, 'Error creating plugin directory', e);\n }\n }\n\n // clone the plugin from git\n try {\n plgLog(plugin, 'Cloning...');\n const git = simpleGit(pluginPath);\n await git.clone(plugin.url, pluginPath);\n } catch (e) {\n plgErr(plugin, 'Error cloning plugin', e);\n }\n\n // check for the plugin file for issues\n // TODO: if force is passed in, ignore the plugin check\n if (!checkPlugin(omeggaPath, plugin)) continue;\n\n const postInstallPath = path.join(pluginPath, soft.PLUGIN_POSTINSTALL);\n if (fs.existsSync(postInstallPath)) {\n plgLog(plugin, 'Running post install script...');\n try {\n verboseLog('Changing permission of', postInstallPath);\n fs.chmodSync(postInstallPath, '0755');\n verboseLog('Executing bash file');\n let { stdout, stderr } = await exec(postInstallPath, {\n cwd: pluginPath,\n shell: 'bash',\n });\n\n if (stderr.length) plgErr(plugin, stderr);\n\n verboseLog(stdout);\n } catch (e) {\n plgErr(plugin, 'Error running post install script:', e);\n }\n }\n }\n}\nexport async function update(pluginsNames: string[], _options: unknown) {\n const omeggaPath = getWorkDir();\n if (!omeggaPath)\n return err(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n\n const pluginFolder = path.join(omeggaPath, soft.PLUGIN_PATH);\n\n // if no plugins are passed in, use every plugin in the plugins folder\n if (pluginsNames.length === 0) {\n pluginsNames = fs.readdirSync(pluginFolder);\n }\n\n const plugins: IInstalledPlugin[] = pluginsNames\n .map(dir => path.join(pluginFolder, dir))\n // every plugin must be in a directory\n .filter(\n dir =>\n fs.existsSync(dir) &&\n fs.lstatSync(dir).isDirectory() &&\n fs.existsSync(path.join(dir, '.git')),\n )\n .map(dir => ({ name: path.basename(dir) }));\n\n if (plugins.length === 0) {\n log('Found no plugins that can be updated');\n return;\n }\n\n log('Checking', (plugins.length + '').yellow, 'plugins for updates...');\n\n // list of plugins that will be updated\n let pluginsToUpdate = [];\n\n for (const plugin of plugins) {\n if (needsNL) {\n console.log();\n needsNL = false;\n }\n plgLog(plugin, 'Checking...');\n const pluginPath = path.join(pluginFolder, plugin.name);\n plugin.path = pluginPath;\n const git = simpleGit(pluginPath);\n plugin.git = git;\n if (!(await git.checkIsRepo())) {\n plgErr(plugin, 'No git repo detected');\n continue;\n }\n\n let status;\n // get git status\n try {\n status = await git.status();\n } catch (e) {\n plgErr(plugin, 'Error getting status', e);\n }\n\n try {\n // check for uncommitted changes\n if (status.files.some(f => f.working_dir !== '?')) {\n plgErr(plugin, 'Detected uncommitted changes - ignoring');\n continue;\n }\n\n const remotes = await git.getRemotes();\n const branches = await git.branch();\n\n // check if we're on a weird branch\n if (!MAIN_BRANCHES.includes(branches.current)) {\n plgErr(plugin, 'Not on a main branch - ignoring');\n continue;\n }\n\n // try to correct a weird detached branch\n if (\n remotes.length === 1 &&\n remotes[0].name === 'origin' &&\n !status.tracking\n ) {\n let skip = false;\n for (const branch of MAIN_BRANCHES) {\n if (\n branches.current === branch &&\n branches.branches[`remotes/origin/${branch}`]\n ) {\n plgLog(plugin, 'Correcting upstream...');\n try {\n await git.branch({ '--set-upstream-to': `origin/${branch}` });\n status = await git.status();\n break;\n } catch (e) {\n plgErr(plugin, 'Error getting status/fixing upstream branch', e);\n skip = true;\n break;\n }\n }\n }\n if (skip) continue;\n }\n\n // this should be corrected by the above check, though if it's not I am not fighting git lol\n if (!status.tracking) {\n plgErr(plugin, 'No upstream branch - ignoring');\n continue;\n }\n\n // local developers, publish your code please!!! :)\n if (remotes.length === 0) {\n plgErr(plugin, 'No remotes - ignoring');\n continue;\n }\n\n try {\n plgLog(plugin, 'Fetching...');\n await git.fetch();\n status = await git.status();\n } catch (e) {\n plgErr(plugin, 'Error fetching remote code', e);\n continue;\n }\n\n if (status.ahead > 0) {\n plgErr(plugin, 'Detected plugin is ahead - ignoring');\n continue;\n }\n\n if (status.behind === 0) {\n plgLog(plugin, 'Already up-to-date!'.green);\n continue;\n }\n\n plgLog(plugin, 'Update available');\n pluginsToUpdate.push(plugin);\n } catch (e) {\n plgErr(plugin, 'Error', e);\n }\n }\n\n if (pluginsToUpdate.length === 0) {\n log('All plugins are currently up-to-date');\n return;\n }\n\n log('Updating', (pluginsToUpdate.length + '').yellow, 'plugins...');\n let updates = 0;\n\n for (const plugin of pluginsToUpdate) {\n const { git } = plugin;\n if (needsNL) {\n console.log();\n needsNL = false;\n }\n plgLog(plugin, 'Creating backup branch...');\n try {\n const branches = await git.branch();\n const mainBranch =\n MAIN_BRANCHES.find(b => branches.branches[b]) ?? MAIN_BRANCHES[0];\n if (branches.branches['omegga-upgrade-backup']) {\n plgLog(plugin, 'Deleting leftover backup branch...');\n await git.deleteLocalBranch('omegga-upgrade-backup', true);\n }\n await git.checkoutBranch('omegga-upgrade-backup', mainBranch);\n await git.branch({ '--set-upstream-to': `origin/${mainBranch}` });\n await git.checkout(mainBranch);\n plgLog(plugin, 'Pulling update...');\n await git.pull();\n if ((await git.status()).behind > 0) {\n throw '- still behind?';\n }\n plgLog(plugin, 'Checking plugin versions...');\n if (!checkPlugin(omeggaPath, plugin)) {\n throw 'Incompatible';\n }\n\n const postInstallPath = path.join(plugin.path, soft.PLUGIN_POSTINSTALL);\n if (fs.existsSync(postInstallPath)) {\n plgLog(plugin, 'Running post install script...');\n try {\n fs.chmodSync(postInstallPath, '0755');\n let { stdout, stderr } = await exec(postInstallPath, {\n cwd: plugin.path,\n shell: 'bash',\n });\n\n if (stderr.length) plgErr(plugin, stderr);\n\n verboseLog(stdout);\n } catch (e) {\n plgErr(plugin, 'Error running post install script:', e);\n }\n }\n\n plgLog(plugin, 'Updated!'.green);\n updates++;\n } catch (e) {\n plgErr(\n plugin,\n 'Error updating - attempting to restore from backup branch',\n e,\n );\n try {\n const branches = await git.branch();\n if (!MAIN_BRANCHES.includes(branches.current)) {\n plgErr(\n plugin,\n 'Not on expected branch - exiting before I break more things',\n );\n continue;\n }\n\n const mainBranch =\n MAIN_BRANCHES.find(b => branches.branches[b]) ?? MAIN_BRANCHES[0];\n\n plg(plugin, 'Resetting current branch');\n await git.reset(ResetMode.HARD);\n plgLog(plugin, 'Attempting to checkout backup branch');\n await git.checkout('omegga-upgrade-backup');\n plgLog(plugin, `Replacing ${mainBranch} with backup`);\n await git.deleteLocalBranch(mainBranch);\n await git.checkoutBranch(mainBranch, 'omegga-upgrade-backup');\n plgLog(plugin, 'Restored to backup branch');\n\n if ((await git.branch()).current !== mainBranch) {\n plgErr(\n plugin,\n `Failed to checkout newly created ${mainBranch} branch`,\n );\n continue;\n } else {\n plgWarn(plugin, 'Restored from backup and plugin not updated...');\n }\n } catch (e) {\n plgErr(plugin, 'Error restoring from backup... Whelp...');\n }\n continue;\n }\n }\n\n log('Updated', (updates + '').yellow, 'plugins!');\n}\n\nexport async function check(pluginNames: string[], _options: unknown) {\n const omeggaPath = getWorkDir();\n if (!omeggaPath)\n return err(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n\n const pluginFolder = path.join(omeggaPath, soft.PLUGIN_PATH);\n\n // if no plugins are passed in, use every plugin in the plugins folder\n if (pluginNames.length === 0) {\n pluginNames = fs.readdirSync(pluginFolder);\n }\n\n const plugins: IInstalledPlugin[] = pluginNames\n .map(dir => path.join(pluginFolder, dir))\n // every plugin must be in a directory\n .filter(\n dir =>\n fs.existsSync(dir) &&\n fs.lstatSync(dir).isDirectory() &&\n fs.existsSync(path.join(dir, '.git')),\n )\n .map(dir => ({ name: path.basename(dir) }));\n\n if (plugins.length === 0) {\n log('Found no plugins that can be checked');\n return;\n }\n\n log(\n 'Checking',\n (plugins.length + '').yellow,\n 'plugins for valid plugin files',\n );\n\n for (const plugin of plugins) {\n const pluginPath = path.join(pluginFolder, plugin.name);\n plugin.path = pluginPath;\n const git = simpleGit(pluginPath);\n plugin.git = git;\n if (!(await git.checkIsRepo())) {\n plgErr(plugin, 'No git repo detected');\n continue;\n }\n checkPlugin(omeggaPath, plugin);\n }\n console.log();\n}\n\nconst EXECUTABLES = ['setup.sh', 'omegga_plugin'];\n\nasync function init() {\n const { author, ...response } = await prompts([\n {\n type: 'text',\n name: 'name',\n message: 'What would you like to ' + 'name'.yellow + ' your plugin?',\n validate: value =>\n value.match(/^[\\w-_]+$/) ? true : 'Invalid plugin name!',\n },\n {\n type: 'select',\n name: 'type',\n message:\n 'What ' + 'type'.yellow + ' of plugin would you like to initialize?',\n choices: [\n { title: 'safe ' + '(default)'.italic, value: 'safe' },\n { title: 'unsafe', value: 'unsafe' },\n { title: 'rust', value: 'rust' },\n { title: 'rpc', value: 'rpc' },\n ],\n },\n {\n type: prev => (prev == 'safe' ? 'confirm' : null),\n name: 'ts',\n message:\n 'Would you like to use ' + 'TypeScript'.yellow + ' in your plugin?',\n initial: false,\n },\n {\n type: 'text',\n name: 'author',\n message: 'Who is the ' + 'author'.yellow + ' of this plugin?',\n },\n ]);\n\n const name = response.name;\n const type: PluginType =\n response.type == 'safe' && response.ts ? 'safe-ts' : response.type;\n\n if (!PLUGIN_TYPES.includes(type)) {\n err('Invalid plugin type', type.red, '!');\n process.exit(1);\n }\n\n let dest: string;\n if (!config.find('.')) {\n log(\n 'Warning:'.yellow,\n 'This is not an omegga installation, initializing here instead...',\n );\n dest = `./${name}`;\n } else {\n dest = `./plugins/${name}`;\n if (!fs.existsSync('./plugins')) fs.mkdirSync('./plugins');\n }\n\n if (fs.existsSync(dest)) {\n err('A directory already exists at the desired plugin location.');\n process.exit(1);\n }\n\n log('Initializing new', type.yellow, 'plugin', name.cyan, '...');\n\n const templateData = {\n name,\n author: author ?? 'AUTHOR',\n omeggaVersion: VERSION,\n };\n\n const copyAndRender = async (src: string, dest: string) => {\n const stats = fs.statSync(src);\n // remove .rename suffix from files\n dest = dest.replace(/\\.rename$/, '');\n if (stats.isDirectory()) {\n await fs.promises.mkdir(dest);\n const contents = await fs.promises.readdir(src);\n for (const child of contents)\n await copyAndRender(path.join(src, child), path.join(dest, child));\n } else {\n // copy and render the file\n const data = (await fs.promises.readFile(src)).toString();\n const mode = EXECUTABLES.includes(path.basename(dest)) ? 0o755 : 0o644;\n\n await fs.promises.writeFile(\n dest,\n data.replace(/{{(\\w+)}}/g, (_, p) => templateData[p] ?? `{{${p}}}`),\n { mode },\n );\n }\n };\n\n const src = path.join(__dirname, `../../templates/${type}`);\n\n verboseLog('Copying and rendering template...');\n await copyAndRender(src, dest);\n\n if (hasbin.sync('git')) {\n verboseLog('Running', 'git init'.yellow, 'in the new plugin directory ...');\n await exec('git init', { cwd: dest });\n }\n\n if (fs.existsSync(path.join(src, 'package.json'))) {\n verboseLog('Running', 'npm i'.yellow, 'in the new plugin directory ...');\n try {\n await exec('npm i', { cwd: dest });\n } catch (e) {\n log('Warning: npm i'.yellow, 'failed to execute. Proceeding anyway...');\n }\n }\n\n log('Initialized', type.yellow, 'plugin', `${name}`.cyan, 'successfully!');\n}\n\nfunction pluginLoaderFactory() {\n const workDir = getWorkDir();\n return new PluginLoader(workDir);\n}\n\n/** Loads in a plugin and it's documentation. */\nasync function loadPlugin(pluginName) {\n const pluginLoader = pluginLoaderFactory();\n const foundPluginDirectory = fs\n .readdirSync(pluginLoader.path)\n .find(dir => dir.toLowerCase() === pluginName.toLowerCase());\n if (!foundPluginDirectory) {\n err(\n `Plugin ${pluginName} not found! Make sure to use the plugin's directory name.`,\n );\n process.exit(1);\n }\n const plugin = await pluginLoader.scanPlugin(\n path.join(pluginLoader.path, foundPluginDirectory),\n );\n return plugin;\n}\n\nasync function listConfig(pluginName: string, json = false) {\n const plugin = await loadPlugin(pluginName);\n const configDoc = plugin.getDocumentation().config;\n const config = await plugin.storage.getConfig();\n if (json) {\n console.log(JSON.stringify(config, null, 2));\n } else {\n for (const key in config) {\n if (!configDoc[key]) continue; // Skip unknown config keys.\n const value = config[key];\n log(\n key.cyan,\n '=',\n ['string', 'number', 'boolean'].includes(typeof value)\n ? value.toString().yellow\n : JSON.stringify(value).yellow,\n );\n }\n }\n process.exit();\n}\n\nasync function getConfig(pluginName: string, configName: string, json = false) {\n const plugin = await loadPlugin(pluginName);\n const configDoc = plugin.getDocumentation().config[configName];\n if (configDoc === undefined) {\n err('Config', configName.cyan, 'not found');\n process.exit(1);\n }\n const config = await plugin.storage.getConfig();\n if (json) {\n console.log(JSON.stringify(config[configName], null, 2));\n } else {\n log(config[configName]);\n }\n process.exit();\n}\n\nasync function setConfig(pluginName, configName: string, valueString: string) {\n const plugin = await loadPlugin(pluginName);\n const configDoc = plugin.getDocumentation().config[configName];\n if (configDoc === undefined) {\n err('Config', configName.cyan, 'not found');\n process.exit(1);\n }\n\n // Parse the value string into a value of the correct type for the config.\n let parsed;\n switch (configDoc.type) {\n case 'boolean':\n parsed = valueString === 'true';\n break;\n case 'number':\n parsed = Number(valueString);\n if (isNaN(parsed)) {\n err('Invalid number value', valueString.yellow);\n process.exit(1);\n }\n break;\n case 'string':\n parsed = valueString;\n break;\n case 'enum':\n if (!configDoc.options.includes(valueString)) {\n err(\n 'Config',\n configName.cyan,\n 'must be one of',\n configDoc.options.join(', ').yellow,\n );\n process.exit(1);\n }\n parsed = valueString;\n break;\n default:\n err('set-context does not support config type', configDoc.type.cyan);\n process.exit(1);\n }\n\n const pluginConfig = await plugin.storage.getConfig();\n pluginConfig[configName] = parsed;\n await plugin.storage.setConfig(pluginConfig);\n log(\n 'Set config',\n configName.cyan,\n 'of plugin',\n plugin.getName().cyan,\n 'to',\n parsed.toString().yellow,\n );\n process.exit();\n}\n\nasync function resetAllConfigs(pluginName, force) {\n const plugin = await loadPlugin(pluginName);\n if (!force) {\n const { answer } = await prompts([\n {\n type: 'confirm',\n name: 'answer',\n message: 'Are you sure you want to reset all configs?',\n initial: false,\n },\n ]);\n if (!answer) {\n log('Reset aborted.');\n process.exit(1);\n }\n }\n await plugin.storage.wipeConfig();\n await plugin.storage.init();\n log('Reset all configs of plugin', plugin.getName().cyan);\n process.exit();\n}\n\nasync function resetConfig(pluginName, configName: string) {\n const plugin = await loadPlugin(pluginName);\n const configDoc = plugin.getDocumentation().config[configName];\n if (configDoc === undefined) {\n err('Config', configName.cyan, 'not found');\n process.exit(1);\n }\n const pluginConfig = await plugin.storage.getConfig();\n pluginConfig[configName] = plugin.storage.getDefaultConfig()[configName];\n await plugin.storage.setConfig(pluginConfig);\n log(\n 'Reset config',\n configName.cyan,\n 'of plugin',\n plugin.getName().cyan,\n 'to',\n pluginConfig[configName],\n );\n process.exit();\n}\n\nexport default {\n install,\n update,\n check,\n init,\n listConfig,\n getConfig,\n setConfig,\n resetAllConfigs,\n resetConfig,\n};\n"],"names":["promisify","execNonPromise","config.store","config.find","plugin","Logger","soft","VERSION","ResetMode","e","src","dest","PluginLoader","config"],"mappings":"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"}