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":"server.js","sourceRoot":"","sources":["../../src/brickadia/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sources":["../../src/brickadia/server.ts"],"sourcesContent":["/*\n Brickadia Server Wrapper\n Manages IO with the game server\n*/\n\nimport Logger from '@/logger';\nimport {\n ACTIVE_WORLD_FILE,\n CONFIG_SAVED_DIR,\n GAME_BIN_PATH,\n GAME_DIRNAME,\n GAME_INSTALL_DIR,\n OVERRIDE_GAME_DIR,\n} from '@/softconfig';\nimport { getGlobalToken } from '@cli/auth';\nimport { IConfig } from '@config/types';\nimport { checkWsl } from '@util/wsl';\nimport 'colors';\nimport { existsSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';\nimport { ChildProcessWithoutNullStreams, spawn } from 'node:child_process';\nimport EventEmitter from 'node:events';\nimport path from 'node:path';\nimport { env } from 'node:process';\nimport readline from 'readline';\nimport stripAnsi from 'strip-ansi';\n\n// list of errors that can be solved by yelling at the user\nconst knownErrors: {\n name: string;\n solution?: string;\n match: RegExp;\n message?: string;\n}[] = [\n {\n name: 'MISSING_LIBGL',\n solution: 'apt-get install libgl1-mesa-glx libglib2.0-0',\n match:\n /error while loading shared libraries: libGL\\.so\\.1: cannot open shared object file/,\n },\n {\n name: 'MISSING_GLIB',\n solution: 'apt-get install libgl1-mesa-glx libglib2.0-0',\n match:\n /error while loading shared libraries: libgthread-2\\.0\\.so\\.0: cannot open shared object file/,\n },\n];\n\n/** Start a brickadia server */\nexport default class BrickadiaServer extends EventEmitter {\n #child: ChildProcessWithoutNullStreams = null;\n #errInterface: readline.Interface = null;\n #outInterface: readline.Interface = null;\n\n config: IConfig;\n path: string;\n\n constructor(dataPath: string, config: IConfig) {\n super();\n\n this.config = config;\n // use the data path if it's absolute, otherwise build an absolute path\n this.path =\n path.isAbsolute(dataPath) || dataPath.startsWith('/')\n ? dataPath\n : path.join(process.cwd(), dataPath);\n\n this.lineListener = this.lineListener.bind(this);\n this.errorListener = this.errorListener.bind(this);\n this.exitListener = this.exitListener.bind(this);\n }\n\n getActiveWorldFile(): string {\n return path.join(this.path, ACTIVE_WORLD_FILE);\n }\n\n /** A world specified by the active world file */\n getActiveWorld(): string | null {\n const activeWorldFile = this.getActiveWorldFile();\n if (existsSync(activeWorldFile)) {\n try {\n return readFileSync(activeWorldFile, 'utf8').trim();\n } catch (err) {\n Logger.errorp(\n 'Failed to read active world file',\n activeWorldFile.yellow,\n err,\n );\n return null;\n }\n }\n return null;\n }\n\n /** Set the world to use next startup */\n setActiveWorld(world: string | null): boolean {\n const activeWorldFile = this.getActiveWorldFile();\n if (!world || world === null) {\n if (existsSync(activeWorldFile)) {\n Logger.verbose('Removing active world file', activeWorldFile.yellow);\n unlinkSync(activeWorldFile);\n }\n return true;\n }\n\n if (!this.worldExists(world)) {\n Logger.verbose(\n 'Cannot set active world to',\n world.yellow,\n 'as it does not exist',\n );\n return false;\n }\n\n Logger.verbose('Setting active world to', world.yellow);\n try {\n writeFileSync(activeWorldFile, world, 'utf8');\n return true;\n } catch (err) {\n Logger.errorp(\n 'Failed to write active world file',\n activeWorldFile.yellow,\n err,\n );\n return false;\n }\n }\n\n /** A world specified by the config */\n getConfigWorld(): string | null {\n return this.config?.server?.world ?? null;\n }\n\n /** A world specified by the BRICKADIA_WORLD env variable */\n getEnvWorld(): string | null {\n return env.BRICKADIA_WORLD || null;\n }\n\n /** Check if a world exists */\n worldExists(world: string): boolean {\n const savedDir = this.config?.server?.savedDir ?? CONFIG_SAVED_DIR;\n const worldPath = path.join(this.path, savedDir, 'Worlds', world + '.brdb');\n return existsSync(worldPath);\n }\n\n /** Get the world that will be used next startup */\n getNextWorld() {\n const candidates = [\n { source: 'file', file: this.getActiveWorld() },\n { source: 'config', file: this.getConfigWorld() },\n { source: 'env', file: this.getEnvWorld() },\n ];\n\n return (\n candidates.find(({ file }) => file && this.worldExists(file)) ?? null\n );\n }\n\n // start the server child process\n start() {\n const {\n email,\n password,\n token: confToken,\n }: { email?: string; password?: string; token?: string } = this.config\n .credentials || {};\n\n const token = confToken || process.env.BRICKADIA_TOKEN || getGlobalToken();\n\n if (token) {\n Logger.verbose('Starting server with hosting token');\n } else {\n Logger.verbose(\n 'Starting server',\n (!email && !password ? 'without' : 'with').yellow,\n 'credentials',\n );\n }\n\n const isSteam = !this.config.server.branch;\n const steamBeta = this.config.server.steambeta ?? 'main';\n const overrideBinary =\n OVERRIDE_GAME_DIR &&\n path.join(\n OVERRIDE_GAME_DIR, // from BRICKADIA_DIR env\n GAME_BIN_PATH,\n );\n const steamBinary = path.join(\n GAME_INSTALL_DIR, // steam install directory\n steamBeta, // steam beta branch (or main)\n GAME_DIRNAME, // Brickadia\n GAME_BIN_PATH, // path to binary\n );\n\n let gameBinary = steamBinary;\n\n if (overrideBinary) {\n if (!existsSync(overrideBinary)) {\n Logger.error(\n 'Override binary',\n overrideBinary.yellow,\n 'does not exist!',\n );\n throw new Error(`Override binary ${overrideBinary} does not exist!`);\n }\n\n Logger.verbose(\n 'Using override binary',\n overrideBinary.yellow,\n 'instead of',\n steamBinary.yellow,\n );\n gameBinary = overrideBinary;\n } else if (isSteam) {\n Logger.verbose('Using steam binary', steamBeta.yellow);\n } else {\n Logger.verbose(\n 'Running',\n (this.config.server.__LOCAL\n ? path.join(__dirname, '../../tools/brickadia.sh')\n : 'brickadia launcher'\n ).yellow,\n );\n if (typeof this.config.server.branch === 'string')\n Logger.verbose('Using branch', this.config.server.branch.yellow);\n }\n\n // handle local launcher support\n const launchArgs = isSteam\n ? [gameBinary]\n : [\n this.config.server.__LOCAL\n ? path.join(__dirname, '../../tools/brickadia.sh')\n : 'brickadia',\n this.config.server.branch && `--branch=${this.config.server.branch}`,\n '--server',\n '--',\n ];\n\n const world = this.getNextWorld();\n if (world) {\n Logger.verbose(\n 'Using world',\n world.file.yellow,\n 'from',\n world.source.yellow,\n );\n } else if (this.config.server.map) {\n Logger.verbose('Using map', this.config.server.map.yellow, 'from config');\n }\n\n const params = [\n '--output=L',\n '--',\n ...launchArgs,\n !world &&\n this.config.server.map &&\n `-Environment=\"${this.config.server.map}\"`,\n world && `-World=\"${world.file}\"`,\n '-NotInstalled',\n '-log',\n checkWsl() === 1 ? '-OneThread' : null,\n this.path ? `-UserDir=\"${this.path}\"` : null,\n token ? `-Token=\"${token}\"` : null, // remove token argument if not provided\n !token && email ? `-User=\"${email}\"` : null, // remove email argument if not provided or token is provided\n !token && password ? `-Password=\"${password}\"` : null, // remove password argument if not provided or token is provided\n `-port=\"${this.config.server.port}\"`,\n this.config.server.launchArgs,\n ].filter(Boolean); // remove unused arguments\n Logger.verbose(\n 'Params for spawn',\n params\n .join(' ')\n .replace(/-User=\".*?\"/, '-User=\"<hidden>\"')\n .replace(/-Password=\".*?\"/, '-Password=\"<hidden>\"')\n .replace(/-Token=\".*?\"/, '-Token=\"<hidden>\"'),\n );\n\n // Either unbuffer or stdbuf must be used because brickadia's output is buffered\n // this means that multiple lines can be bundled together if the output buffer is not full\n // unfortunately without stdbuf or unbuffer, the output would not happen immediately\n this.#child = spawn('stdbuf', params);\n\n Logger.verbose(\n 'Spawn process',\n this.#child ? this.#child.pid : 'failed'.red,\n );\n\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 Logger.verbose('Attached listeners');\n }\n\n // write a string to the child process\n write(line: string) {\n if (line.length >= 512) {\n // show a warning\n Logger.warn(\n 'WARNING'.yellow,\n 'The following line was called and is',\n 'longer than allowed limit'.red,\n );\n Logger.warn(line.replace(/\\n$/, ''));\n // throw a fake error to get the line number\n try {\n throw new Error('Console Line Too Long');\n } catch (err) {\n Logger.warn(err);\n }\n return;\n }\n if (this.#child) {\n Logger.verbose('WRITE'.green, line.replace(/\\n$/, ''));\n this.#child.stdin.write(line);\n }\n }\n\n // write a line to the child process\n writeln(line: string) {\n this.write(line + '\\n');\n }\n\n // forcibly kills the server\n stop() {\n if (!this.#child) {\n Logger.verbose('Cannot stop server as no subprocess exists');\n return;\n }\n\n Logger.verbose('Forcibly stopping server');\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\n // detaches listeners\n cleanup() {\n if (!this.#child) return;\n\n Logger.verbose('Cleaning up brickadia server');\n\n // detach listener\n this.detachListeners();\n\n this.#child = null;\n this.#outInterface = null;\n this.#errInterface = null;\n }\n\n // attaches proxy event listeners\n attachListeners() {\n this.#outInterface.on('line', this.lineListener);\n this.#errInterface.on('line', this.errorListener);\n this.#child.on('exit', this.exitListener);\n this.#child.on('close', () => {});\n }\n\n // removes previously attached proxy event listeners\n detachListeners() {\n this.#outInterface.off('line', this.lineListener);\n this.#errInterface.off('line', this.errorListener);\n this.#child.off('exit', this.exitListener);\n this.#child.removeAllListeners('close');\n }\n\n // -- listeners for basic events (line, err, exit)\n errorListener(line: string) {\n Logger.verbose('ERROR'.red, line);\n this.emit('err', line);\n for (const { match, solution, name, message } of knownErrors) {\n if (line.match(match)) {\n Logger.error(\n `Encountered ${name.red}. ${\n solution ? 'Known fix:\\n ' + solution : message || 'Unknown error.'\n }`,\n );\n }\n }\n }\n\n exitListener(...args: any[]) {\n Logger.verbose('Exit listener fired');\n this.emit('closed', ...args);\n this.cleanup();\n }\n\n lineListener(line: string) {\n this.emit('line', stripAnsi(line));\n }\n}\n"],"names":["ACTIVE_WORLD_FILE","existsSync","readFileSync","Logger","unlinkSync","writeFileSync","env","CONFIG_SAVED_DIR","getGlobalToken","OVERRIDE_GAME_DIR","GAME_BIN_PATH","GAME_INSTALL_DIR","GAME_DIRNAME","checkWsl","spawn"],"mappings":"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"}
package/dist/cli/auth.js CHANGED
@@ -1,196 +1,168 @@
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;
33
- };
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
- exports.clean = exports.exists = exports.prompt = exports.AUTH_PATH = void 0;
40
- exports.getGlobalToken = getGlobalToken;
41
- const softconfig_1 = __importDefault(require("../softconfig"));
42
- const auth_1 = require("../omegga/auth");
43
- const file = __importStar(require("../util/file"));
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const softconfig = require("../softconfig.js");
4
+ const auth = require("../omegga/auth.js");
5
+ const file = require("../util/file.js");
44
6
  require("colors");
45
- const fs_1 = __importStar(require("fs"));
46
- const path_1 = __importDefault(require("path"));
47
- const prompts_1 = __importDefault(require("prompts"));
48
- exports.AUTH_PATH = path_1.default.join(softconfig_1.default.CONFIG_HOME, softconfig_1.default.CONFIG_AUTH_DIR);
49
- // async function to prompt for credentials
7
+ const fs = require("node:fs");
8
+ const path = require("node:path");
9
+ const prompts = require("prompts");
10
+ const AUTH_PATH = path.join(softconfig.default.CONFIG_HOME, softconfig.default.CONFIG_AUTH_DIR);
50
11
  async function credentialPrompt() {
51
- console.log('>>'.green, 'Enter', 'Brickadia'.green.underline, 'credentials (not stored)');
52
- const response = await (0, prompts_1.default)([
53
- {
54
- type: 'text',
55
- name: 'email',
56
- message: 'Email',
57
- },
58
- {
59
- type: 'password',
60
- name: 'password',
61
- message: 'Password',
62
- },
63
- ]);
64
- return [response.email, response.password];
65
- }
66
- async function authFromPrompt({ email, password, debug = false, isSteam, branch, authDir, savedDir, launchArgs, }) {
67
- let files;
68
- if (isSteam || !email || !password) {
69
- // Prompt user to pick to select username/password or Auth Token
70
- const { authType } = await (0, prompts_1.default)({
71
- type: 'select',
72
- name: 'authType',
73
- message: 'Select authentication method',
74
- choices: [
75
- { title: 'Hosting Token', value: 'token' },
76
- { title: 'Username/Password', value: 'credentials' },
77
- ],
78
- });
79
- if (!authType) {
80
- console.error('!>'.red, 'No authentication method selected');
81
- return false;
82
- }
83
- if (authType === 'token') {
84
- // Prompt for hosting token
85
- const { token } = await (0, prompts_1.default)({
86
- type: 'password',
87
- name: 'token',
88
- message: 'Paste your server hosting token (from https://brickadia.com/account)',
89
- validate: value => (value ? true : 'Token is required'),
90
- });
91
- if (!token) {
92
- console.error('!>'.red, 'Hosting token is required');
93
- return false;
94
- }
95
- // Write to global token file
96
- try {
97
- console.log('>>'.green, 'Storing hosting token...');
98
- fs_1.default.writeFileSync(softconfig_1.default.GLOBAL_TOKEN, token.trim());
99
- }
100
- catch (err) {
101
- console.error('!>'.red, 'Error writing hosting token to config\n', err);
102
- return false;
103
- }
104
- return true;
105
- }
106
- if (isSteam) {
107
- console.error('!>'.red, 'Launching with steam requires a hosting token right now.');
108
- return false;
109
- }
110
- // Non-steam password auth is handled below
12
+ console.log(
13
+ ">>".green,
14
+ "Enter",
15
+ "Brickadia".green.underline,
16
+ "credentials (not stored)"
17
+ );
18
+ const response = await prompts([
19
+ {
20
+ type: "text",
21
+ name: "email",
22
+ message: "Email"
23
+ },
24
+ {
25
+ type: "password",
26
+ name: "password",
27
+ message: "Password"
111
28
  }
112
- if (!email || !password || !isSteam) {
113
- // prompt for user credentials
114
- try {
115
- [email, password] = await credentialPrompt();
116
- }
117
- catch (err) {
118
- console.error('!>'.red, 'Error prompting credentials\n', err);
119
- return false;
120
- }
29
+ ]);
30
+ return [response.email, response.password];
31
+ }
32
+ async function authFromPrompt({
33
+ email,
34
+ password,
35
+ debug = false,
36
+ isSteam,
37
+ branch,
38
+ authDir,
39
+ savedDir,
40
+ launchArgs
41
+ }) {
42
+ let files;
43
+ if (isSteam || !email || !password) {
44
+ const { authType } = await prompts({
45
+ type: "select",
46
+ name: "authType",
47
+ message: "Select authentication method",
48
+ choices: [
49
+ { title: "Hosting Token", value: "token" },
50
+ { title: "Username/Password", value: "credentials" }
51
+ ]
52
+ });
53
+ if (!authType) {
54
+ console.error("!>".red, "No authentication method selected");
55
+ return false;
121
56
  }
122
- if (!email || !password) {
123
- console.error('!>'.red, 'Email and password are required');
57
+ if (authType === "token") {
58
+ const { token } = await prompts({
59
+ type: "password",
60
+ name: "token",
61
+ message: "Paste your server hosting token (from https://brickadia.com/account)",
62
+ validate: (value) => value ? true : "Token is required"
63
+ });
64
+ if (!token) {
65
+ console.error("!>".red, "Hosting token is required");
124
66
  return false;
125
- }
126
- // generate auth tokens
127
- console.log('>>'.green, 'Generating auth tokens...');
128
- const timeout = setTimeout(() => {
129
- console.log('>>'.green, 'Probably also installing the game...');
130
- }, 10000);
131
- try {
132
- files = await (0, auth_1.genAuthFiles)(email, password, {
133
- debug,
134
- branch,
135
- authDir,
136
- savedDir,
137
- launchArgs,
138
- });
139
- clearTimeout(timeout);
140
- }
141
- catch (err) {
142
- clearTimeout(timeout);
143
- console.error('!>'.red, 'Error generating tokens:', err);
67
+ }
68
+ try {
69
+ console.log(">>".green, "Storing hosting token...");
70
+ fs.writeFileSync(softconfig.default.GLOBAL_TOKEN, token.trim());
71
+ } catch (err) {
72
+ console.error("!>".red, "Error writing hosting token to config\n", err);
144
73
  return false;
74
+ }
75
+ return true;
145
76
  }
146
- if (!files) {
147
- console.error('!>'.red, 'Authentication Failed');
148
- return;
77
+ if (isSteam) {
78
+ console.error(
79
+ "!>".red,
80
+ "Launching with steam requires a hosting token right now."
81
+ );
82
+ return false;
149
83
  }
150
- // save the tokens to the config path (will be copied when omegga starts)
84
+ }
85
+ if (!email || !password || !isSteam) {
151
86
  try {
152
- console.log('>>'.green, 'Storing auth tokens...');
153
- const authPath = path_1.default.join(softconfig_1.default.CONFIG_HOME, savedDir !== softconfig_1.default.CONFIG_SAVED_DIR ? savedDir : '', authDir !== null && authDir !== void 0 ? authDir : softconfig_1.default.CONFIG_AUTH_DIR);
154
- file.mkdir(authPath);
155
- (0, auth_1.writeAuthFiles)(authPath, files);
156
- }
157
- catch (err) {
158
- console.error('!>'.red, 'Error writing tokens to config\n', err);
159
- return false;
87
+ [email, password] = await credentialPrompt();
88
+ } catch (err) {
89
+ console.error("!>".red, "Error prompting credentials\n", err);
90
+ return false;
160
91
  }
161
- console.log('>>'.green, 'Auth tokens successfully generated!');
162
- return true;
92
+ }
93
+ if (!email || !password) {
94
+ console.error("!>".red, "Email and password are required");
95
+ return false;
96
+ }
97
+ console.log(">>".green, "Generating auth tokens...");
98
+ const timeout = setTimeout(() => {
99
+ console.log(">>".green, "Probably also installing the game...");
100
+ }, 1e4);
101
+ try {
102
+ files = await auth.genAuthFiles(email, password, {
103
+ debug,
104
+ branch,
105
+ authDir,
106
+ savedDir,
107
+ launchArgs
108
+ });
109
+ clearTimeout(timeout);
110
+ } catch (err) {
111
+ clearTimeout(timeout);
112
+ console.error("!>".red, "Error generating tokens:", err);
113
+ return false;
114
+ }
115
+ if (!files) {
116
+ console.error("!>".red, "Authentication Failed");
117
+ return;
118
+ }
119
+ try {
120
+ console.log(">>".green, "Storing auth tokens...");
121
+ const authPath = path.join(
122
+ softconfig.default.CONFIG_HOME,
123
+ savedDir !== softconfig.default.CONFIG_SAVED_DIR ? savedDir : "",
124
+ authDir ?? softconfig.default.CONFIG_AUTH_DIR
125
+ );
126
+ file.mkdir(authPath);
127
+ auth.writeAuthFiles(authPath, files);
128
+ } catch (err) {
129
+ console.error("!>".red, "Error writing tokens to config\n", err);
130
+ return false;
131
+ }
132
+ console.log(">>".green, "Auth tokens successfully generated!");
133
+ return true;
163
134
  }
164
- // check if auth files exist
165
135
  function authExists(dir) {
166
- return softconfig_1.default.BRICKADIA_AUTH_FILES.every(f => fs_1.default.existsSync(path_1.default.join(dir !== null && dir !== void 0 ? dir : exports.AUTH_PATH, f)));
136
+ return softconfig.default.BRICKADIA_AUTH_FILES.every(
137
+ (f) => fs.existsSync(path.join(dir ?? AUTH_PATH, f))
138
+ );
167
139
  }
168
- // delete auth files stored in config
169
- // delete auth files stored in config
170
140
  function deleteAuthFiles(dir) {
171
- const isConfigHome = dir && dir.startsWith(softconfig_1.default.CONFIG_HOME);
172
- // will not delete files outside of the config home
173
- if (dir && !isConfigHome)
174
- return;
175
- file.rmdir(dir !== null && dir !== void 0 ? dir : exports.AUTH_PATH);
176
- // Remove the global auth token
177
- if ((0, fs_1.existsSync)(softconfig_1.default.GLOBAL_TOKEN)) {
178
- fs_1.default.unlinkSync(softconfig_1.default.GLOBAL_TOKEN);
179
- }
141
+ const isConfigHome = dir && dir.startsWith(softconfig.default.CONFIG_HOME);
142
+ if (dir && !isConfigHome) return;
143
+ file.rmdir(dir ?? AUTH_PATH);
144
+ if (fs.existsSync(softconfig.default.GLOBAL_TOKEN)) {
145
+ fs.unlinkSync(softconfig.default.GLOBAL_TOKEN);
146
+ }
180
147
  }
181
148
  function getGlobalToken() {
182
- if (!fs_1.default.existsSync(softconfig_1.default.GLOBAL_TOKEN))
183
- return null;
184
- return fs_1.default.readFileSync(softconfig_1.default.GLOBAL_TOKEN, 'utf-8').trim();
149
+ if (!fs.existsSync(softconfig.default.GLOBAL_TOKEN)) return null;
150
+ return fs.readFileSync(softconfig.default.GLOBAL_TOKEN, "utf-8").trim();
185
151
  }
186
- exports.prompt = authFromPrompt;
187
- exports.exists = authExists;
188
- exports.clean = deleteAuthFiles;
189
- exports.default = {
190
- AUTH_PATH: exports.AUTH_PATH,
191
- prompt: exports.prompt,
192
- exists: exports.exists,
193
- clean: exports.clean,
194
- getGlobalToken,
152
+ const prompt = authFromPrompt;
153
+ const exists = authExists;
154
+ const clean = deleteAuthFiles;
155
+ const _auth = {
156
+ AUTH_PATH,
157
+ prompt,
158
+ exists,
159
+ clean,
160
+ getGlobalToken
195
161
  };
196
- //# sourceMappingURL=auth.js.map
162
+ exports.AUTH_PATH = AUTH_PATH;
163
+ exports.clean = clean;
164
+ exports.default = _auth;
165
+ exports.exists = exists;
166
+ exports.getGlobalToken = getGlobalToken;
167
+ exports.prompt = prompt;
168
+ //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sources":["../../src/cli/auth.ts"],"sourcesContent":["import soft from '@/softconfig';\nimport { genAuthFiles, writeAuthFiles } from '@omegga/auth';\nimport * as file from '@util/file';\nimport 'colors';\nimport fs, { existsSync } from 'node:fs';\nimport path from 'node:path';\nimport prompts from 'prompts';\n\nexport const AUTH_PATH = path.join(soft.CONFIG_HOME, soft.CONFIG_AUTH_DIR);\n\n// async function to prompt for credentials\nasync function credentialPrompt() {\n console.log(\n '>>'.green,\n 'Enter',\n 'Brickadia'.green.underline,\n 'credentials (not stored)',\n );\n\n const response = await prompts([\n {\n type: 'text',\n name: 'email',\n message: 'Email',\n },\n {\n type: 'password',\n name: 'password',\n message: 'Password',\n },\n ]);\n\n return [response.email, response.password];\n}\n\nasync function authFromPrompt({\n email,\n password,\n debug = false,\n isSteam,\n branch,\n authDir,\n savedDir,\n launchArgs,\n}: {\n email?: string | null;\n password?: string | null;\n debug?: boolean;\n isSteam?: boolean;\n branch?: string;\n authDir?: string;\n savedDir?: string;\n launchArgs?: string;\n}) {\n let files: Record<string, Buffer>;\n\n if (isSteam || !email || !password) {\n // Prompt user to pick to select username/password or Auth Token\n const { authType } = await prompts({\n type: 'select',\n name: 'authType',\n message: 'Select authentication method',\n choices: [\n { title: 'Hosting Token', value: 'token' },\n { title: 'Username/Password', value: 'credentials' },\n ],\n });\n\n if (!authType) {\n console.error('!>'.red, 'No authentication method selected');\n return false;\n }\n\n if (authType === 'token') {\n // Prompt for hosting token\n const { token } = await prompts({\n type: 'password',\n name: 'token',\n message:\n 'Paste your server hosting token (from https://brickadia.com/account)',\n validate: value => (value ? true : 'Token is required'),\n });\n\n if (!token) {\n console.error('!>'.red, 'Hosting token is required');\n return false;\n }\n\n // Write to global token file\n try {\n console.log('>>'.green, 'Storing hosting token...');\n fs.writeFileSync(soft.GLOBAL_TOKEN, token.trim());\n } catch (err) {\n console.error('!>'.red, 'Error writing hosting token to config\\n', err);\n return false;\n }\n\n return true;\n }\n\n if (isSteam) {\n console.error(\n '!>'.red,\n 'Launching with steam requires a hosting token right now.',\n );\n return false;\n }\n\n // Non-steam password auth is handled below\n }\n\n if (!email || !password || !isSteam) {\n // prompt for user credentials\n try {\n [email, password] = await credentialPrompt();\n } catch (err) {\n console.error('!>'.red, 'Error prompting credentials\\n', err);\n return false;\n }\n }\n\n if (!email || !password) {\n console.error('!>'.red, 'Email and password are required');\n return false;\n }\n\n // generate auth tokens\n console.log('>>'.green, 'Generating auth tokens...');\n const timeout = setTimeout(() => {\n console.log('>>'.green, 'Probably also installing the game...');\n }, 10000);\n try {\n files = await genAuthFiles(email, password, {\n debug,\n branch,\n authDir,\n savedDir,\n launchArgs,\n });\n clearTimeout(timeout);\n } catch (err) {\n clearTimeout(timeout);\n console.error('!>'.red, 'Error generating tokens:', err);\n return false;\n }\n\n if (!files) {\n console.error('!>'.red, 'Authentication Failed');\n return;\n }\n\n // save the tokens to the config path (will be copied when omegga starts)\n try {\n console.log('>>'.green, 'Storing auth tokens...');\n const authPath = path.join(\n soft.CONFIG_HOME,\n savedDir !== soft.CONFIG_SAVED_DIR ? savedDir : '',\n authDir ?? soft.CONFIG_AUTH_DIR,\n );\n file.mkdir(authPath);\n writeAuthFiles(authPath, files);\n } catch (err) {\n console.error('!>'.red, 'Error writing tokens to config\\n', err);\n return false;\n }\n\n console.log('>>'.green, 'Auth tokens successfully generated!');\n return true;\n}\n\n// check if auth files exist\nfunction authExists(dir?: string) {\n return soft.BRICKADIA_AUTH_FILES.every(f =>\n fs.existsSync(path.join(dir ?? AUTH_PATH, f)),\n );\n}\n\n// delete auth files stored in config\n// delete auth files stored in config\nfunction deleteAuthFiles(dir?: string) {\n const isConfigHome = dir && dir.startsWith(soft.CONFIG_HOME);\n // will not delete files outside of the config home\n if (dir && !isConfigHome) return;\n file.rmdir(dir ?? AUTH_PATH);\n\n // Remove the global auth token\n if (existsSync(soft.GLOBAL_TOKEN)) {\n fs.unlinkSync(soft.GLOBAL_TOKEN);\n }\n}\n\nexport function getGlobalToken() {\n if (!fs.existsSync(soft.GLOBAL_TOKEN)) return null;\n return fs.readFileSync(soft.GLOBAL_TOKEN, 'utf-8').trim();\n}\n\nexport const prompt = authFromPrompt;\nexport const exists = authExists;\nexport const clean = deleteAuthFiles;\n\nexport default {\n AUTH_PATH,\n prompt,\n exists,\n clean,\n getGlobalToken,\n};\n"],"names":["soft","genAuthFiles","file.mkdir","writeAuthFiles","file.rmdir","existsSync"],"mappings":"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"}
@@ -1,72 +1,70 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const _config_1 = require("../config");
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const err = (...args) => console.error('!>'.red, ...args);
10
- const log = (...args) => console.log('>>'.green, ...args);
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const index = require("../config/index.js");
4
+ const fs = require("node:fs");
5
+ const path = require("node:path");
6
+ const err = (...args) => console.error("!>".red, ...args);
7
+ const log = (...args) => console.log(">>".green, ...args);
11
8
  const fields = {
12
- default: {
13
- desc: 'default omegga project directory when running omegga in a non-configured folder',
14
- example: 'omegga config default $(pwd)',
15
- default: '.',
16
- get() {
17
- let val = _config_1.store.get('defaultOmegga') || '.';
18
- if (val === '.')
19
- val += ' [current working dir]'.grey;
20
- return val;
21
- },
22
- set(val) {
23
- if (!val) {
24
- val = '.';
25
- }
26
- // check if the path is valid
27
- if (val !== '.' && !path_1.default.isAbsolute(val)) {
28
- err('setting must be an absolute path or "."');
29
- process.exit(1);
30
- return;
31
- }
32
- if (!fs_1.default.existsSync(val)) {
33
- err('given path does not exist');
34
- process.exit(1);
35
- return;
36
- }
37
- if (!fs_1.default.statSync(val).isDirectory) {
38
- err('given path is not for a directory');
39
- process.exit(1);
40
- return;
41
- }
42
- // update the setting
43
- _config_1.store.set('defaultOmegga', val);
44
- log('Set', 'default'.green, 'to', val.green);
45
- },
9
+ default: {
10
+ desc: "default omegga project directory when running omegga in a non-configured folder",
11
+ example: "omegga config default $(pwd)",
12
+ default: ".",
13
+ get() {
14
+ let val = index.store.get("defaultOmegga") || ".";
15
+ if (val === ".") val += " [current working dir]".grey;
16
+ return val;
46
17
  },
47
- };
48
- exports.default = (field, value, _opts = {}) => {
49
- // list command lists all fields, current setting, and description
50
- if (field === 'list') {
51
- log('Configurable fields:');
52
- const maxLen = Math.max(...Object.keys(fields).map(f => f.length));
53
- for (const key in fields) {
54
- const field = fields[key];
55
- console.log('\n ' + key.yellow.underline, '-'.padStart(maxLen - key.length + 1), field.desc);
56
- console.log(' current'.brightGreen + ':', field.get());
57
- console.log(' default:', field.default);
58
- console.log(' example'.brightBlue + ':', field.example);
59
- }
60
- console.log();
61
- }
62
- else if (fields[field]) {
63
- // a valid field was entered - run the set command
64
- fields[field].set(value);
65
- }
66
- else {
67
- // no valid field was entered
68
- err('invalid field, run', 'omegga config list'.yellow.underline, 'for a list of available fields');
18
+ set(val) {
19
+ if (!val) {
20
+ val = ".";
21
+ }
22
+ if (val !== "." && !path.isAbsolute(val)) {
23
+ err('setting must be an absolute path or "."');
69
24
  process.exit(1);
25
+ return;
26
+ }
27
+ if (!fs.existsSync(val)) {
28
+ err("given path does not exist");
29
+ process.exit(1);
30
+ return;
31
+ }
32
+ if (!fs.statSync(val).isDirectory) {
33
+ err("given path is not for a directory");
34
+ process.exit(1);
35
+ return;
36
+ }
37
+ index.store.set("defaultOmegga", val);
38
+ log("Set", "default".green, "to", val.green);
39
+ }
40
+ }
41
+ };
42
+ const _config = (field, value, _opts = {}) => {
43
+ if (field === "list") {
44
+ log("Configurable fields:");
45
+ const maxLen = Math.max(...Object.keys(fields).map((f) => f.length));
46
+ for (const key in fields) {
47
+ const field2 = fields[key];
48
+ console.log(
49
+ "\n " + key.yellow.underline,
50
+ "-".padStart(maxLen - key.length + 1),
51
+ field2.desc
52
+ );
53
+ console.log(" current".brightGreen + ":", field2.get());
54
+ console.log(" default:", field2.default);
55
+ console.log(" example".brightBlue + ":", field2.example);
70
56
  }
57
+ console.log();
58
+ } else if (fields[field]) {
59
+ fields[field].set(value);
60
+ } else {
61
+ err(
62
+ "invalid field, run",
63
+ "omegga config list".yellow.underline,
64
+ "for a list of available fields"
65
+ );
66
+ process.exit(1);
67
+ }
71
68
  };
72
- //# sourceMappingURL=config.js.map
69
+ exports.default = _config;
70
+ //# sourceMappingURL=config.js.map