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":"player.js","sourceRoot":"","sources":["../../src/omegga/player.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"player.js","sources":["../../src/omegga/player.ts"],"sourcesContent":["import type { OmeggaLike, OmeggaPlayer, WeaponClass } from '@/plugin';\nimport { IBrickBounds } from '@util/brick';\nimport { WriteSaveObject } from 'brs-js';\nimport { brick as brickUtils, color } from '../util/';\n\nconst DEFAULT_PERMS: Record<string, string[]> = {\n moderator: [\n 'Bricks.ClearAll',\n 'Minigame.AlwaysLeave',\n 'Players.Kick',\n 'Players.TPInMinigame',\n 'Players.TPOthers',\n 'Self.Ghost',\n ],\n admin: [\n 'Bricks.ClearAll',\n 'Bricks.ClearOwn',\n 'Bricks.IgnoreTrust',\n 'Bricks.Load',\n 'Map.Environment',\n 'Minigame.AlwaysEdit',\n 'Minigame.AlwaysLeave',\n 'Minigame.AlwaysSwitchTeam',\n 'Minigame.MakeDefault',\n 'Minigame.MakePersistent',\n 'Minigame.UseAllBricks',\n 'Players.Ban',\n 'Players.Kick',\n 'Players.TPInMinigame',\n 'Players.TPOthers',\n 'Roles.Grant',\n 'Self.Ghost',\n 'Server.ChangeRoles',\n 'Server.ChangeSettings',\n 'Server.FreezeCamera',\n 'Tools.Selector.BypassLimits',\n 'Tools.Selector.BypassTimeouts',\n ],\n};\n\nclass Player implements OmeggaPlayer {\n #omegga: OmeggaLike;\n name: string;\n displayName: string;\n id: string;\n controller: string;\n state: string;\n\n static getRoles(omegga: OmeggaLike, id: string): readonly string[] {\n const data = omegga.getRoleAssignments().savedPlayerRoles[id];\n return Object.freeze(data && data.roles ? data.roles : []);\n }\n\n static getPermissions(\n omegga: OmeggaLike,\n id: string,\n ): Record<string, boolean> {\n const { roles, defaultRole } = omegga.getRoleSetup();\n\n // if the player is the host, the player has every permission\n if (omegga.host.id === id) {\n return Object.freeze(\n Object.fromEntries(\n [].concat(\n defaultRole.permissions.map(p => [p.name, true]),\n // sometimes the default role does not have every permission listed\n ...roles.map(r => r.permissions.map(p => [p.name, true])),\n ),\n ),\n );\n }\n\n // get the player's roles\n const playerRoles = Player.getRoles(omegga, id).map(r => r.toLowerCase());\n\n // default player permissions\n const permissions: Record<string, boolean> = {\n 'Bricks.ClearAll': false,\n 'Bricks.ClearOwn': true,\n 'Bricks.Delete': true,\n 'Bricks.Edit': true,\n 'Bricks.IgnoreTrust': false,\n 'Bricks.Paint': true,\n 'Bricks.Place': true,\n 'BricksItems.Spawn': true,\n 'Map.Change': false,\n 'Map.Environment': false,\n 'Map.SetSpawn': false,\n 'Minigame.AlwaysEdit': false,\n 'Minigame.AlwaysLeave': false,\n 'Minigame.AlwaysSwitchTeam': false,\n 'Minigame.Create': true,\n 'Minigame.MakePersistent': false,\n 'Minigame.UseAllBricks': false,\n 'Players.Ban': false,\n 'Players.TPInMinigame': false,\n 'Players.TPOthers': false,\n 'Players.TPSelf': true,\n 'Roles.Grant': false,\n 'Self.Flashlight': true,\n 'Self.Fly': true,\n 'Self.FreezeCamera': false,\n 'Self.Ghost': false,\n 'Self.Sprint': true,\n 'Self.Suicide': true,\n 'Tools.Selector.Use': true,\n };\n\n // apply all permissions from default role\n for (const p of defaultRole.permissions) {\n // technically this can never be Unchanged so it's always on enabled or allowed\n permissions[p.name] =\n p.state === 'Unchanged' ? permissions[p.name] : p.state === 'Allowed';\n }\n\n // loop through all the roles\n for (const role of roles) {\n // ignore ones the player does not have\n if (!playerRoles.includes(role.name.toLowerCase())) continue;\n\n const defaultPerms = DEFAULT_PERMS[role.name.toLowerCase()] || [];\n // iterate through default permissions\n for (const perm of defaultPerms) {\n // if they are not overriden, set it to true\n if (!role.permissions.find(r => r.name === perm))\n permissions[perm] = true;\n }\n\n // add all the new permissions the player now has\n for (const p of role.permissions) {\n // permission is disabled on forbidden, persisted on unchanged, and enabled on bEnabled or Allowed\n permissions[p.name] =\n p.state !== 'Forbidden' &&\n (p.state === 'Unchanged'\n ? permissions[p.name]\n : permissions[p.name] || p.state === 'Allowed');\n permissions[p.name] = permissions[p.name];\n }\n }\n\n return Object.freeze(permissions);\n }\n\n static kill(omegga: OmeggaLike, target: string | OmeggaPlayer) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (target?.name) omegga.writeln(`Server.Players.Kill \"${target?.name}\"`);\n }\n\n static damage(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n amount: number,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (amount === 0) return;\n if (target?.name)\n omegga.writeln(`Server.Players.Damage \"${target?.name}\" ${amount}`);\n }\n\n static heal(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n amount: number,\n ) {\n if (amount === 0) return;\n Player.damage(omegga, target, -amount);\n }\n\n static giveItem(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n item: WeaponClass,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (!item) return;\n if (target?.name)\n omegga.writeln(`Server.Players.GiveItem \"${target?.name}\" ${item}`);\n }\n\n static takeItem(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n item: WeaponClass,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (!item) return;\n if (target?.name)\n omegga.writeln(`Server.Players.RemoveItem \"${target?.name}\" ${item}`);\n }\n\n static setTeam(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n teamIndex: number,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (target?.name)\n omegga.writeln(`Server.Players.SetTeam \"${target?.name}\" ${teamIndex}`);\n }\n\n static setMinigame(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n index: number,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (target?.name)\n omegga.writeln(`Server.Players.SetMinigame \"${target?.name}\" ${index}`);\n }\n\n static setScore(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n minigameIndex: number,\n score: number,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (target?.name)\n omegga.writeln(\n `Server.Players.SetLeaderboardValue \"${target?.name}\" ${minigameIndex} ${score}`,\n );\n }\n\n static async getScore(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n minigameIndex: number,\n ): Promise<number> {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (target?.name) {\n const name = target?.name;\n const id = target?.id;\n\n const match = await omegga.addWatcher(\n (line, match) => {\n if (match && match.groups.generator === 'LogConsoleCommands') {\n const test = match.groups.data.match(\n /^(?<uuid>.+) leaderboard value (?<minigame>\\d+) = (?<score>-?\\d+)$/,\n );\n if (!test) return;\n if (test.groups.uuid !== id) return;\n if (Number(test.groups.minigame) !== minigameIndex) return;\n return test;\n }\n },\n {\n timeoutDelay: 1000,\n exec: () =>\n omegga.writeln(\n `Server.Players.PrintLeaderboardValue \"${name}\" ${minigameIndex}`,\n ),\n },\n );\n if (match) return Number(match[0].groups.score);\n }\n return 0;\n }\n\n /**\n * players are not to be constructed\n * @constructor\n * @param omegga Omegga Instance\n * @param name Player Name\n * @param displayName Player Display Name\n * @param id Player Id\n * @param controller Player Controller\n * @param state Player State\n */\n constructor(\n omegga: OmeggaLike,\n username: string,\n displayName: string,\n id: string,\n controller: string,\n state: string,\n ) {\n this.#omegga = omegga;\n this.name = username;\n this.displayName = displayName;\n this.id = id;\n this.controller = controller;\n this.state = state;\n }\n\n getOmegga(): OmeggaLike {\n return this.#omegga;\n }\n\n clone(): OmeggaPlayer {\n return new Player(\n this.#omegga,\n this.name,\n this.displayName,\n this.id,\n this.controller,\n this.state,\n );\n }\n\n raw(): [string, string, string, string, string] {\n return [this.name, this.displayName, this.id, this.controller, this.state];\n }\n\n isHost(): boolean {\n return this.#omegga.host.id === this.id;\n }\n\n clearBricks(quiet = false) {\n this.#omegga.clearBricks(this.id, quiet);\n }\n\n getRoles(): readonly string[] {\n return Player.getRoles(this.#omegga, this.id);\n }\n\n getPermissions(): Record<string, boolean> {\n return Player.getPermissions(this.#omegga, this.id);\n }\n\n getNameColor(): string {\n const { roles, defaultRole, ownerRoleColor, bOwnerRoleHasColor } =\n this.#omegga.getRoleSetup();\n\n // host check if host has host color\n if (this.isHost() && bOwnerRoleHasColor)\n return color.rgbToHex(ownerRoleColor);\n\n // get the player's role\n const playerRoles = this.getRoles().map(r => r.toLowerCase());\n\n // only if the player actually has roles...\n if (playerRoles.length > 0) {\n // check the role list in reverse for the player's role (highest tier first)\n const found = roles\n .slice()\n .reverse()\n .find(\n role =>\n role.bHasColor && playerRoles.includes(role.name.toLowerCase()),\n );\n\n if (found) return color.rgbToHex(found.color);\n }\n\n return color.rgbToHex(\n defaultRole.bHasColor\n ? defaultRole.color\n : { r: 255, g: 255, b: 255, a: 255 },\n );\n }\n\n async getPawn(): Promise<string | null> {\n // given a player controller, match the player's pawn\n const pawnRegExp = new RegExp(\n `^(?<index>\\\\d+)\\\\) BP_PlayerController_C .+?PersistentLevel\\\\.${this.controller}\\\\.Pawn = .*?(?:BP_FigureV2_C'.+:PersistentLevel\\\\.)?(?<pawn>BP_FigureV2_C_\\\\d+|None)'?`,\n );\n\n // wait for the pawn watcher to return a pawn\n const [{ groups: { pawn = null } = {} } = {}] =\n await this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BP_PlayerController_C Pawn Name=' + this.controller,\n pawnRegExp,\n { first: 'index', timeoutDelay: 500 },\n );\n\n if (pawn === 'None') return null;\n\n return pawn;\n }\n\n async getPosition(): Promise<[number, number, number] | null> {\n // this is here because my text editor had weird syntax highlighting glitches when the other omeggas were replaced with this.#omegga...\n // guess the code is \"too new\" :egg:\n const omegga = this.#omegga;\n\n // given a player controller, match the player's pawn\n const pawnRegExp = new RegExp(\n `^(?<index>\\\\d+)\\\\) BP_PlayerController_C .+?PersistentLevel\\\\.${this.controller}\\\\.Pawn = .*?(?:BP_FigureV2_C'.+:PersistentLevel\\\\.)?(?<pawn>BP_FigureV2_C_\\\\d+|None)'?`,\n );\n\n // wait for the pawn watcher to return a pawn\n const [\n {\n groups: { pawn },\n },\n ] = await omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BP_PlayerController_C Pawn Name=' + this.controller,\n pawnRegExp,\n { first: 'index', timeoutDelay: 100 },\n );\n\n if (pawn === 'None') return null;\n\n // given a player's pawn, match the player's position\n const posRegExp = new RegExp(\n `CapsuleComponent .+?PersistentLevel\\\\.${pawn}\\\\.CollisionCylinder\\\\.RelativeLocation = \\\\(X=(?<x>[\\\\d\\\\.-]+),Y=(?<y>[\\\\d\\\\.-]+),Z=(?<z>[\\\\d\\\\.-]+)\\\\)`,\n );\n\n // wait for the position promise\n const [\n {\n groups: { x, y, z },\n },\n ] = await omegga.addWatcher(posRegExp, {\n // request the position for this player's pawn\n exec: () =>\n omegga.writeln(\n `GetAll SceneComponent RelativeLocation Name=CollisionCylinder Outer=${pawn}`,\n ),\n timeoutDelay: 100,\n });\n\n // return the player's position as an array of numbers\n return [Number(x), Number(y), Number(z)];\n }\n\n async getGhostBrick(): Promise<{\n targetGrid: string;\n location: number[];\n orientation: string;\n }> {\n const { controller } = this;\n\n const previewClass = 'BP_ToolPreviewActor_C';\n\n const ownerRegExp = new RegExp(\n `^(?<index>\\\\d+)\\\\) ${previewClass} (.+):PersistentLevel\\\\.(?<actor>${previewClass}_\\\\d+)\\.Owner = .*?BP_PlayerController_C'(.+):PersistentLevel\\\\.(?<controller>BP_PlayerController_C_\\\\d+)'$`,\n );\n const transformParamsRegExp = new RegExp(\n `^(?<index>\\\\d+)\\\\) ${previewClass} (.+):PersistentLevel\\\\.(?<actor>${previewClass}_\\\\d+)\\\\.TransformParameters = \\\\(TargetGrid=(\"(?<targetGrid>.+)\"|None),Location=\\\\(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\\\\),Orientation=(?<orientation>.+)\\\\)$`,\n );\n\n const [owners, transformParams] = await Promise.all([\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n `GetAll ${previewClass} Owner`,\n ownerRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n `GetAll ${previewClass} TransformParameters`,\n transformParamsRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n ]);\n\n // get BrickGridPreviewActor by controller\n const owner = owners.find(owner => owner.groups.controller === controller);\n\n if (!owner) return;\n\n const actor = owner.groups.actor;\n // get transform parameters for the found actor\n const transformParameters = transformParams.find(\n transformParameters => transformParameters.groups.actor === actor,\n );\n\n if (!transformParameters) return;\n\n return {\n targetGrid: transformParameters.groups.targetGrid,\n location: [\n +transformParameters.groups.x,\n +transformParameters.groups.y,\n +transformParameters.groups.z,\n ],\n orientation: transformParameters.groups.orientation,\n };\n }\n\n async getPaint(): Promise<{\n materialIndex: string;\n materialAlpha: string;\n material: string;\n color: number[];\n }> {\n const { controller } = this;\n\n const match = await this.#omegga\n .addWatcher<{\n materialIndex: string;\n materialAlpha: string;\n material: string;\n color: number[];\n }>(\n line => {\n // [date][counter]0) BP_PlayerState_C /Game/Maps/Plate/Plate.Plate:PersistentLevel.BP_PlayerState_C_2147482378.ColorSelectionState = (SelectedColor=(B=6,G=73,R=246,A=255),MaterialIndex=3,MaterialAlpha=5)\n const match = line.match(\n /^\\[[^\\]]+\\]\\[[^\\]]+\\]\\d+\\) BP_PlayerState_C .+?PersistentLevel\\.(?<state>BP_PlayerState_C_\\d+)\\.ColorSelectionState = \\(SelectedColor=\\(B=(?<b>\\d+),G=(?<g>\\d+),R=(?<r>\\d+),A=(?<a>\\d+)\\),MaterialIndex=(?<materialIndex>\\d+),MaterialAlpha=(?<materialAlpha>\\d+)\\)$/,\n );\n if (!match) return;\n if (match.groups.state !== this.state) return;\n const colorRaw = [+match.groups.r, +match.groups.g, +match.groups.b];\n return {\n materialIndex: match.groups.materialIndex,\n materialAlpha: match.groups.materialAlpha,\n material:\n brickUtils.BRICK_CONSTANTS.DEFAULT_MATERIALS[\n Number(match.groups.materialIndex)\n ],\n color: colorRaw,\n };\n },\n {\n timeoutDelay: 1000,\n exec: () =>\n this.#omegga.writeln('GetAll BRPlayerState ColorSelectionState'),\n },\n )\n .catch(() => null);\n if (!match?.[0]) return;\n return match[0];\n }\n\n async isCrouched(pawn?: string): Promise<boolean> {\n if (!pawn) pawn = await this.getPawn();\n\n const reg =\n /(?<index>\\d+)\\) BP_FigureV2_C .+?PersistentLevel\\.(?<pawn>BP_FigureV2_C_\\d+)\\.bIsCrouched = (?<crouched>True|False)$/;\n\n const resp = await this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BP_FigureV2_C bIsCrouched Name=' + pawn,\n reg,\n { first: 'index', timeoutDelay: 500 },\n );\n\n const me = resp.find(r => r.groups.pawn === pawn);\n if (!me) return false;\n\n return me.groups.crouched == 'True';\n }\n\n async isDead(pawn?: string): Promise<boolean> {\n if (!pawn) pawn = await this.getPawn();\n\n const reg =\n /(?<index>\\d+)\\) BP_FigureV2_C .+?PersistentLevel\\.(?<pawn>BP_FigureV2_C_\\d+)\\.bIsDead = (?<dead>True|False)$/;\n\n const resp = await this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BP_FigureV2_C bIsDead Name=' + pawn,\n reg,\n { first: 'index', timeoutDelay: 500 },\n );\n\n const me = resp.find(r => r.groups.pawn === pawn);\n if (!me) return true;\n\n return me.groups.dead == 'True';\n }\n\n async getTemplateBounds() {\n const { controller } = this;\n\n const brickTemplateRegExp =\n /^(?<index>\\d+)\\) Tool_Selector_C (.+):PersistentLevel\\.(?<tool>Tool_Selector_C_\\d+)\\.CurrentTemplate = (.+)Brickadia.BrickBuildingTemplate'(.+)Transient.(?<templateName>BrickBuildingTemplate_\\d+)'$/;\n const brickTemplateOwnerRegExp =\n /^(?<index>\\d+)\\) Tool_Selector_C (.+):PersistentLevel\\.(?<tool>Tool_Selector_C_\\d+)\\.Owner = (.+)(?<controller>BP_PlayerController_C_\\d+)'$/;\n const minBoundsRegExp =\n /^(?<index>\\d+)\\) BrickBuildingTemplate (.+)Transient\\.(?<templateName>BrickBuildingTemplate_\\d+)\\.MinBounds = \\(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\\)$/;\n const maxBoundsRegExp =\n /^(?<index>\\d+)\\) BrickBuildingTemplate (.+)Transient\\.(?<templateName>BrickBuildingTemplate_\\d+)\\.MaxBounds = \\(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\\)$/;\n const centerRegExp =\n /^(?<index>\\d+)\\) BrickBuildingTemplate (.+)Transient\\.(?<templateName>BrickBuildingTemplate_\\d+)\\.Center = \\(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\\)$/;\n\n const [templates, owners, minBounds, maxBounds, centers] =\n await Promise.all([\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll Tool_Selector_C CurrentTemplate',\n brickTemplateRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll Tool_Selector_C Owner',\n brickTemplateOwnerRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BrickBuildingTemplate MinBounds',\n minBoundsRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BrickBuildingTemplate MaxBounds',\n maxBoundsRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BrickBuildingTemplate Center',\n centerRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n ]);\n\n if (\n !templates.length ||\n !owners.length ||\n !minBounds.length ||\n !maxBounds.length ||\n !centers.length\n )\n return;\n\n // get selector for this controller, we need to handle if there are multiple selectors for the same controller\n const selectors = owners\n .filter(selectors => selectors.groups.controller === controller)\n .map(selectors => selectors.groups.tool)\n .sort();\n const selector = selectors[0]; // grab the most recently created\n\n if (!selector) {\n return;\n }\n\n // template for this selector, we need to handle if there are multiple templates for the same selector and grab the most recent one\n const brickTemplates = templates\n .filter(template => template.groups.tool === selector)\n .map(template => template.groups.templateName)\n .sort();\n const templateName = brickTemplates[0]; // grab the most recently created\n\n if (!templateName) {\n return;\n }\n\n // find all values with matching template name\n const minBound = minBounds.find(\n minBound => minBound.groups.templateName === templateName,\n );\n const maxBound = maxBounds.find(\n maxBound => maxBound.groups.templateName === templateName,\n );\n const center = centers.find(\n center => center.groups.templateName === templateName,\n );\n\n if (!minBound || !maxBound || !center) return;\n\n return {\n minBound: [+minBound.groups.x, +minBound.groups.y, +minBound.groups.z],\n maxBound: [+maxBound.groups.x, +maxBound.groups.y, +maxBound.groups.z],\n center: [+center.groups.x, +center.groups.y, +center.groups.z],\n } as IBrickBounds;\n }\n\n async getTemplateBoundsData() {\n const templateBounds = await this.getTemplateBounds();\n\n if (!templateBounds) return;\n\n const saveData = await this.#omegga.getSaveData({\n center: templateBounds.center,\n extent: [\n Math.round(\n (templateBounds.maxBound[0] - templateBounds.minBound[0]) / 2,\n ),\n Math.round(\n (templateBounds.maxBound[1] - templateBounds.minBound[1]) / 2,\n ),\n Math.round(\n (templateBounds.maxBound[2] - templateBounds.minBound[2]) / 2,\n ),\n ],\n });\n\n if (!saveData) return;\n\n // filter bricks outside the bounds\n // no longer necessary thanks to Bricks.SaveRegion\n /* saveData.bricks = (saveData.bricks as Brick[]).filter(brick => {\n return brickUtils.checkBounds(\n brick,\n saveData.brick_assets,\n templateBounds\n );\n }) as typeof saveData.bricks; */\n\n if (saveData.bricks.length > 0) {\n return saveData;\n }\n\n return undefined;\n }\n\n loadBricks(saveName: string) {\n this.#omegga.loadBricksOnPlayer(saveName, this);\n }\n\n async loadSaveData(\n saveData: WriteSaveObject,\n { offX = 0, offY = 0, offZ = 0 } = {},\n ) {\n await this.#omegga.loadSaveDataOnPlayer(saveData, this, {\n offX,\n offY,\n offZ,\n });\n }\n\n async loadDataAtGhostBrick(\n saveData: WriteSaveObject,\n { rotate = true, offX = 0, offY = 0, offZ = 0, quiet = true } = {},\n ) {\n const ghostBrickData = await this.getGhostBrick();\n\n if (!ghostBrickData || !saveData) return;\n\n // get bounds of the bricks\n const bounds = brickUtils.getBounds(saveData);\n\n if (rotate) {\n const orientation =\n brickUtils.BRICK_CONSTANTS.orientationMap[ghostBrickData.orientation];\n saveData.bricks = saveData.bricks.map(brick =>\n brickUtils.rotate(brick, orientation),\n );\n // rotate bounds, if we dont use the original bounds they are off by 1 sometimes >:(\n bounds.minBound = brickUtils.BRICK_CONSTANTS.translationTable[\n brickUtils.d2o(...orientation)\n ](bounds.minBound);\n bounds.maxBound = brickUtils.BRICK_CONSTANTS.translationTable[\n brickUtils.d2o(...orientation)\n ](bounds.maxBound);\n bounds.center = brickUtils.BRICK_CONSTANTS.translationTable[\n brickUtils.d2o(...orientation)\n ](bounds.center);\n }\n\n // calculate offset from bricks center to ghost brick center\n const offset = bounds.center.map(\n (center, index) => ghostBrickData.location[index] - center,\n );\n\n // load at offset location\n await this.#omegga.loadSaveData(saveData, {\n offX: offX + offset[0],\n offY: offY + offset[1],\n offZ: offZ + offset[2],\n quiet,\n });\n }\n\n kill() {\n Player.kill(this.#omegga, this);\n }\n\n damage(amount: number): void {\n Player.damage(this.#omegga, this, amount);\n }\n\n heal(amount: number): void {\n Player.heal(this.#omegga, this, amount);\n }\n\n giveItem(item: WeaponClass): void {\n Player.giveItem(this.#omegga, this, item);\n }\n\n takeItem(item: WeaponClass): void {\n Player.takeItem(this.#omegga, this, item);\n }\n\n setTeam(teamIndex: number): void {\n Player.setTeam(this.#omegga, this, teamIndex);\n }\n\n setMinigame(index: number): void {\n Player.setMinigame(this.#omegga, this, index);\n }\n\n setScore(minigameIndex: number, score: number): void {\n Player.setScore(this.#omegga, this, minigameIndex, score);\n }\n\n getScore(minigameIndex: number): Promise<number> {\n return Player.getScore(this.#omegga, this, minigameIndex);\n }\n}\n\nglobal.Player = Player;\n\nexport default Player;\n"],"names":["index","match","color","owner","transformParameters","brickUtils","selectors","minBound","maxBound","center"],"mappings":"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"}
@@ -1,106 +1,99 @@
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
- exports.Plugin = void 0;
7
- const softconfig_1 = require("../../softconfig");
8
- const fs_1 = require("fs");
9
- const path_1 = __importDefault(require("path"));
10
- // Check if this plugin is disabled
11
- const DISABLED_FILE = 'disabled.omegga';
12
- /*
13
- Plugin interface
14
- Allows omegga to interface with plugins of a format
15
- */
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const softconfig = require("../../softconfig.js");
4
+ const fs = require("node:fs");
5
+ const path = require("node:path");
6
+ const DISABLED_FILE = "disabled.omegga";
16
7
  class Plugin {
17
- // returns true if a plugin at this path can be loaded
18
- // only one kind of plugin should match this type
19
- static canLoad(_pluginPath) {
20
- return false;
8
+ // returns true if a plugin at this path can be loaded
9
+ // only one kind of plugin should match this type
10
+ static canLoad(_pluginPath) {
11
+ return false;
12
+ }
13
+ // returns the kind of plugin this is
14
+ static getFormat() {
15
+ throw "undefined plugin format";
16
+ }
17
+ // read a file as json or return null
18
+ static readJSON(file) {
19
+ try {
20
+ return JSON.parse(fs.readFileSync(file, "utf8"));
21
+ } catch (e) {
22
+ return null;
21
23
  }
22
- // returns the kind of plugin this is
23
- static getFormat() {
24
- throw 'undefined plugin format';
24
+ }
25
+ // initialize a plugin at this path
26
+ constructor(pluginPath, omegga) {
27
+ this.path = pluginPath;
28
+ this.omegga = omegga;
29
+ if (omegga) {
30
+ this.shortPath = pluginPath.replace(
31
+ path.join(omegga.path, softconfig.PLUGIN_PATH) + "/",
32
+ ""
33
+ );
25
34
  }
26
- // read a file as json or return null
27
- static readJSON(file) {
28
- try {
29
- return JSON.parse((0, fs_1.readFileSync)(file, 'utf8'));
30
- }
31
- catch (e) {
32
- return null;
33
- }
35
+ }
36
+ // assign plugin storage
37
+ setStorage(storage) {
38
+ this.storage = storage;
39
+ }
40
+ // check if the plugin is enabled
41
+ isEnabled() {
42
+ return !fs.existsSync(path.join(this.path, DISABLED_FILE));
43
+ }
44
+ // set the plugin enabled/disabled
45
+ setEnabled(enabled) {
46
+ const disabledPath = path.join(this.path, DISABLED_FILE);
47
+ if (enabled === this.isEnabled()) {
48
+ return;
34
49
  }
35
- // initialize a plugin at this path
36
- constructor(pluginPath, omegga) {
37
- this.path = pluginPath;
38
- this.omegga = omegga;
39
- if (omegga) {
40
- this.shortPath = pluginPath.replace(path_1.default.join(omegga.path, softconfig_1.PLUGIN_PATH) + '/', '');
41
- }
42
- }
43
- // assign plugin storage
44
- setStorage(storage) {
45
- this.storage = storage;
46
- }
47
- // check if the plugin is enabled
48
- isEnabled() {
49
- return !(0, fs_1.existsSync)(path_1.default.join(this.path, DISABLED_FILE));
50
- }
51
- // set the plugin enabled/disabled
52
- setEnabled(enabled) {
53
- const disabledPath = path_1.default.join(this.path, DISABLED_FILE);
54
- if (enabled === this.isEnabled()) {
55
- return;
56
- }
57
- if (enabled) {
58
- (0, fs_1.unlinkSync)(disabledPath);
59
- }
60
- else {
61
- (0, fs_1.closeSync)((0, fs_1.openSync)(disabledPath, 'w'));
62
- }
63
- this.emitStatus();
64
- }
65
- // emit a plugin status change
66
- emitStatus() {
67
- this.omegga.emit('plugin:status', this.shortPath, {
68
- name: this.getName(),
69
- isLoaded: this.isLoaded(),
70
- isEnabled: this.isEnabled(),
71
- });
72
- }
73
- // emit a custom event from another plugin
74
- async emitPlugin(_ev, _from, _args) { }
75
- // get the plugin name, usually based on documentation data
76
- getName() {
77
- const doc = this.getDocumentation();
78
- return (doc ? doc.name : path_1.default.basename(this.path)) || 'unnamed plugin';
79
- }
80
- // get the documentation object for this plugin
81
- getDocumentation() {
82
- return null;
83
- }
84
- // return true if this plugin is loaded
85
- isLoaded() {
86
- return false;
87
- }
88
- // return true if the command exists
89
- isCommand(_cmd) {
90
- return false;
91
- }
92
- // start the plugin, returns true if plugin successfully loaded
93
- async load() {
94
- return false;
95
- }
96
- // stop + kill the plugin, returns true if plugin successfully unloaded
97
- async unload() {
98
- return false;
99
- }
100
- // extra info for this kind of plugin
101
- getInfo() {
102
- return {};
50
+ if (enabled) {
51
+ fs.unlinkSync(disabledPath);
52
+ } else {
53
+ fs.closeSync(fs.openSync(disabledPath, "w"));
103
54
  }
55
+ this.emitStatus();
56
+ }
57
+ // emit a plugin status change
58
+ emitStatus() {
59
+ this.omegga.emit("plugin:status", this.shortPath, {
60
+ name: this.getName(),
61
+ isLoaded: this.isLoaded(),
62
+ isEnabled: this.isEnabled()
63
+ });
64
+ }
65
+ // emit a custom event from another plugin
66
+ async emitPlugin(_ev, _from, _args) {
67
+ }
68
+ // get the plugin name, usually based on documentation data
69
+ getName() {
70
+ const doc = this.getDocumentation();
71
+ return (doc ? doc.name : path.basename(this.path)) || "unnamed plugin";
72
+ }
73
+ // get the documentation object for this plugin
74
+ getDocumentation() {
75
+ return null;
76
+ }
77
+ // return true if this plugin is loaded
78
+ isLoaded() {
79
+ return false;
80
+ }
81
+ // return true if the command exists
82
+ isCommand(_cmd) {
83
+ return false;
84
+ }
85
+ // start the plugin, returns true if plugin successfully loaded
86
+ async load() {
87
+ return false;
88
+ }
89
+ // stop + kill the plugin, returns true if plugin successfully unloaded
90
+ async unload() {
91
+ return false;
92
+ }
93
+ // extra info for this kind of plugin
94
+ getInfo() {
95
+ return {};
96
+ }
104
97
  }
105
98
  exports.Plugin = Plugin;
106
- //# sourceMappingURL=interface.js.map
99
+ //# sourceMappingURL=interface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/omegga/plugin/interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interface.js","sources":["../../../src/omegga/plugin/interface.ts"],"sourcesContent":["import OmeggaPlugin, { IPluginDocumentation } from '@/plugin';\nimport { PLUGIN_PATH } from '@/softconfig';\nimport { IPluginJSON, PluginStorage } from '@omegga/plugin';\nimport Omegga from '@omegga/server';\nimport {\n closeSync,\n existsSync,\n openSync,\n readFileSync,\n unlinkSync,\n} from 'node:fs';\nimport path from 'node:path';\n\n// Check if this plugin is disabled\nconst DISABLED_FILE = 'disabled.omegga';\n\n/*\n Plugin interface\n Allows omegga to interface with plugins of a format\n*/\nexport class Plugin {\n // returns true if a plugin at this path can be loaded\n // only one kind of plugin should match this type\n static canLoad(_pluginPath: string) {\n return false;\n }\n\n // returns the kind of plugin this is\n static getFormat(): string {\n throw 'undefined plugin format';\n }\n\n // read a file as json or return null\n static readJSON(file: string) {\n try {\n return JSON.parse(readFileSync(file, 'utf8'));\n } catch (e) {\n return null;\n }\n }\n\n path: string;\n omegga: Omegga;\n shortPath: string;\n storage: PluginStorage;\n\n documentation: IPluginDocumentation;\n pluginConfig: IPluginJSON;\n pluginFile: string;\n commands: string[];\n loadedPlugin: OmeggaPlugin;\n\n // initialize a plugin at this path\n constructor(pluginPath: string, omegga?: Omegga) {\n this.path = pluginPath;\n this.omegga = omegga;\n if (omegga) {\n this.shortPath = pluginPath.replace(\n path.join(omegga.path, PLUGIN_PATH) + '/',\n '',\n );\n }\n }\n\n // assign plugin storage\n setStorage(storage: PluginStorage) {\n this.storage = storage;\n }\n\n // check if the plugin is enabled\n isEnabled() {\n return !existsSync(path.join(this.path, DISABLED_FILE));\n }\n // set the plugin enabled/disabled\n setEnabled(enabled: boolean) {\n const disabledPath = path.join(this.path, DISABLED_FILE);\n if (enabled === this.isEnabled()) {\n return;\n }\n if (enabled) {\n unlinkSync(disabledPath);\n } else {\n closeSync(openSync(disabledPath, 'w'));\n }\n this.emitStatus();\n }\n\n // emit a plugin status change\n emitStatus() {\n this.omegga.emit('plugin:status', this.shortPath, {\n name: this.getName(),\n isLoaded: this.isLoaded(),\n isEnabled: this.isEnabled(),\n });\n }\n\n // emit a custom event from another plugin\n async emitPlugin(_ev: string, _from: string, _args: any[]): Promise<any> {}\n\n // get the plugin name, usually based on documentation data\n getName() {\n const doc = this.getDocumentation();\n return (doc ? doc.name : path.basename(this.path)) || 'unnamed plugin';\n }\n\n // get the documentation object for this plugin\n getDocumentation(): IPluginDocumentation {\n return null;\n }\n\n // return true if this plugin is loaded\n isLoaded() {\n return false;\n }\n\n // return true if the command exists\n isCommand(_cmd: string) {\n return false;\n }\n\n // start the plugin, returns true if plugin successfully loaded\n async load() {\n return false;\n }\n\n // stop + kill the plugin, returns true if plugin successfully unloaded\n async unload() {\n return false;\n }\n\n // extra info for this kind of plugin\n getInfo(): Record<string, unknown> {\n return {};\n }\n}\n"],"names":["readFileSync","PLUGIN_PATH","existsSync","unlinkSync","closeSync","openSync"],"mappings":";;;;;AAcA,MAAM,gBAAgB;AAMf,MAAM,OAAO;AAAA;AAAA;AAAA,EAGlB,OAAO,QAAQ,aAAqB;AAClC,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,OAAO,YAAoB;AACzB,UAAM;AAAA,EACR;AAAA;AAAA,EAGA,OAAO,SAAS,MAAc;AAC5B,QAAI;AACF,aAAO,KAAK,MAAMA,GAAAA,aAAa,MAAM,MAAM,CAAC;AAAA,IAC9C,SAAS,GAAG;AACV,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EAcA,YAAY,YAAoB,QAAiB;AAC/C,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,QAAI,QAAQ;AACV,WAAK,YAAY,WAAW;AAAA,QAC1B,KAAK,KAAK,OAAO,MAAMC,WAAAA,WAAW,IAAI;AAAA,QACtC;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AAAA;AAAA,EAGA,WAAW,SAAwB;AACjC,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA,EAGA,YAAY;AACV,WAAO,CAACC,GAAAA,WAAW,KAAK,KAAK,KAAK,MAAM,aAAa,CAAC;AAAA,EACxD;AAAA;AAAA,EAEA,WAAW,SAAkB;AAC3B,UAAM,eAAe,KAAK,KAAK,KAAK,MAAM,aAAa;AACvD,QAAI,YAAY,KAAK,aAAa;AAChC;AAAA,IACF;AACA,QAAI,SAAS;AACXC,SAAAA,WAAW,YAAY;AAAA,IACzB,OAAO;AACLC,SAAAA,UAAUC,GAAAA,SAAS,cAAc,GAAG,CAAC;AAAA,IACvC;AACA,SAAK,WAAA;AAAA,EACP;AAAA;AAAA,EAGA,aAAa;AACX,SAAK,OAAO,KAAK,iBAAiB,KAAK,WAAW;AAAA,MAChD,MAAM,KAAK,QAAA;AAAA,MACX,UAAU,KAAK,SAAA;AAAA,MACf,WAAW,KAAK,UAAA;AAAA,IAAU,CAC3B;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,WAAW,KAAa,OAAe,OAA4B;AAAA,EAAC;AAAA;AAAA,EAG1E,UAAU;AACR,UAAM,MAAM,KAAK,iBAAA;AACjB,YAAQ,MAAM,IAAI,OAAO,KAAK,SAAS,KAAK,IAAI,MAAM;AAAA,EACxD;AAAA;AAAA,EAGA,mBAAyC;AACvC,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,WAAW;AACT,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,UAAU,MAAc;AACtB,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,OAAO;AACX,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,SAAS;AACb,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,UAAmC;AACjC,WAAO,CAAA;AAAA,EACT;AACF;;"}