@open-core/framework 0.1.0-alpha.1 → 0.2.0-beta.1

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 (569) hide show
  1. package/README.md +217 -360
  2. package/dist/adapters/contracts/IEngineEvents.d.ts +20 -0
  3. package/dist/adapters/contracts/IEngineEvents.js +6 -0
  4. package/dist/adapters/contracts/IEntityServer.d.ts +88 -0
  5. package/dist/adapters/contracts/IEntityServer.js +13 -0
  6. package/dist/adapters/contracts/IExports.d.ts +4 -0
  7. package/dist/adapters/contracts/IExports.js +6 -0
  8. package/dist/adapters/contracts/IHasher.d.ts +15 -0
  9. package/dist/adapters/contracts/IHasher.js +12 -0
  10. package/dist/adapters/contracts/INetTransport.d.ts +8 -0
  11. package/dist/adapters/contracts/INetTransport.js +6 -0
  12. package/dist/adapters/contracts/IPedAppearanceClient.d.ts +206 -0
  13. package/dist/adapters/contracts/IPedAppearanceClient.js +16 -0
  14. package/dist/adapters/contracts/IPedAppearanceServer.d.ts +45 -0
  15. package/dist/adapters/contracts/IPedAppearanceServer.js +16 -0
  16. package/dist/adapters/contracts/IPlayerInfo.d.ts +5 -0
  17. package/dist/adapters/contracts/IPlayerInfo.js +6 -0
  18. package/dist/adapters/contracts/IPlayerServer.d.ts +73 -0
  19. package/dist/adapters/contracts/IPlayerServer.js +13 -0
  20. package/dist/adapters/contracts/IResourceInfo.d.ts +3 -0
  21. package/dist/adapters/contracts/IResourceInfo.js +6 -0
  22. package/dist/adapters/contracts/ITick.d.ts +10 -0
  23. package/dist/adapters/contracts/ITick.js +9 -0
  24. package/dist/adapters/contracts/IVehicleServer.d.ts +55 -0
  25. package/dist/adapters/contracts/IVehicleServer.js +13 -0
  26. package/dist/{server/database/adapters → adapters/database}/oxmysql.adapter.d.ts +2 -2
  27. package/dist/{server/database/adapters → adapters/database}/oxmysql.adapter.js +2 -2
  28. package/dist/adapters/database/resource.adapter.d.ts +12 -0
  29. package/dist/adapters/database/resource.adapter.js +68 -0
  30. package/dist/adapters/fivem/fivem-engine-events.d.ts +5 -0
  31. package/dist/adapters/fivem/fivem-engine-events.js +13 -0
  32. package/dist/adapters/fivem/fivem-entity-server.d.ts +22 -0
  33. package/dist/adapters/fivem/fivem-entity-server.js +80 -0
  34. package/dist/adapters/fivem/fivem-exports.d.ts +5 -0
  35. package/dist/adapters/fivem/fivem-exports.js +14 -0
  36. package/dist/adapters/fivem/fivem-hasher.d.ts +7 -0
  37. package/dist/adapters/fivem/fivem-hasher.js +23 -0
  38. package/dist/adapters/fivem/fivem-net-transport.d.ts +5 -0
  39. package/dist/adapters/fivem/fivem-net-transport.js +24 -0
  40. package/dist/adapters/fivem/fivem-ped-appearance-client.d.ts +34 -0
  41. package/dist/adapters/fivem/fivem-ped-appearance-client.js +84 -0
  42. package/dist/adapters/fivem/fivem-ped-appearance-server.d.ts +14 -0
  43. package/dist/adapters/fivem/fivem-ped-appearance-server.js +26 -0
  44. package/dist/adapters/fivem/fivem-player-server.d.ts +15 -0
  45. package/dist/adapters/fivem/fivem-player-server.js +63 -0
  46. package/dist/adapters/fivem/fivem-playerinfo.d.ts +6 -0
  47. package/dist/adapters/fivem/fivem-playerinfo.js +14 -0
  48. package/dist/adapters/fivem/fivem-resourceinfo.d.ts +4 -0
  49. package/dist/adapters/fivem/fivem-resourceinfo.js +16 -0
  50. package/dist/adapters/fivem/fivem-tick.d.ts +7 -0
  51. package/dist/adapters/fivem/fivem-tick.js +22 -0
  52. package/dist/adapters/fivem/fivem-vehicle-server.d.ts +15 -0
  53. package/dist/adapters/fivem/fivem-vehicle-server.js +47 -0
  54. package/dist/adapters/index.d.ts +15 -0
  55. package/dist/adapters/index.js +40 -0
  56. package/dist/adapters/node/index.d.ts +8 -0
  57. package/dist/adapters/node/index.js +19 -0
  58. package/dist/adapters/node/node-engine-events.d.ts +20 -0
  59. package/dist/adapters/node/node-engine-events.js +42 -0
  60. package/dist/adapters/node/node-entity-server.d.ts +26 -0
  61. package/dist/adapters/node/node-entity-server.js +101 -0
  62. package/dist/adapters/node/node-exports.d.ts +26 -0
  63. package/dist/adapters/node/node-exports.js +63 -0
  64. package/dist/adapters/node/node-hasher.d.ts +12 -0
  65. package/dist/adapters/node/node-hasher.js +39 -0
  66. package/dist/adapters/node/node-net-transport.d.ts +18 -0
  67. package/dist/adapters/node/node-net-transport.js +57 -0
  68. package/dist/adapters/node/node-ped-appearance-client.d.ts +34 -0
  69. package/dist/adapters/node/node-ped-appearance-client.js +59 -0
  70. package/dist/adapters/node/node-ped-appearance-server.d.ts +14 -0
  71. package/dist/adapters/node/node-ped-appearance-server.js +18 -0
  72. package/dist/adapters/node/node-player-server.d.ts +27 -0
  73. package/dist/adapters/node/node-player-server.js +82 -0
  74. package/dist/adapters/node/node-playerinfo.d.ts +6 -0
  75. package/dist/adapters/node/node-playerinfo.js +12 -0
  76. package/dist/adapters/node/node-resourceinfo.d.ts +12 -0
  77. package/dist/adapters/node/node-resourceinfo.js +27 -0
  78. package/dist/adapters/node/node-tick.d.ts +10 -0
  79. package/dist/{server/system/processors/command.processor.js → adapters/node/node-tick.js} +27 -14
  80. package/dist/adapters/node/node-vehicle-server.d.ts +21 -0
  81. package/dist/adapters/node/node-vehicle-server.js +93 -0
  82. package/dist/adapters/register-capabilities.d.ts +11 -0
  83. package/dist/adapters/register-capabilities.js +148 -0
  84. package/dist/adapters/register-client-capabilities.d.ts +8 -0
  85. package/dist/adapters/register-client-capabilities.js +56 -0
  86. package/dist/index.d.ts +5 -4
  87. package/dist/index.js +9 -5
  88. package/dist/kernel/di/index.d.ts +4 -0
  89. package/dist/kernel/di/index.js +20 -0
  90. package/dist/{system → kernel/di}/metadata.scanner.d.ts +1 -2
  91. package/dist/kernel/di/tokens.d.ts +30 -0
  92. package/dist/kernel/di/tokens.js +38 -0
  93. package/dist/kernel/index.d.ts +7 -0
  94. package/dist/kernel/index.js +30 -0
  95. package/dist/kernel/schema/index.d.ts +32 -0
  96. package/dist/kernel/schema/index.js +5 -0
  97. package/dist/kernel/shared/appearance/appearance.interface.d.ts +276 -0
  98. package/dist/kernel/shared/appearance/appearance.interface.js +77 -0
  99. package/dist/kernel/shared/appearance/index.d.ts +1 -0
  100. package/dist/kernel/shared/appearance/index.js +17 -0
  101. package/dist/kernel/shared/index.d.ts +2 -0
  102. package/dist/{shared → kernel/shared}/index.js +1 -0
  103. package/dist/{shared → kernel/shared}/logger/core-logger.d.ts +13 -0
  104. package/dist/{shared → kernel/shared}/logger/core-logger.js +38 -9
  105. package/dist/{shared → kernel/shared}/logger/index.d.ts +12 -9
  106. package/dist/{shared → kernel/shared}/logger/index.js +24 -15
  107. package/dist/{shared → kernel/shared}/logger/logger.config.d.ts +1 -1
  108. package/dist/kernel/shared/logger/logger.env.d.ts +28 -0
  109. package/dist/kernel/shared/logger/logger.env.js +51 -0
  110. package/dist/{shared → kernel/shared}/logger/logger.service.d.ts +2 -2
  111. package/dist/{shared → kernel/shared}/logger/transports/buffered.transport.d.ts +2 -2
  112. package/dist/{shared → kernel/shared}/logger/transports/buffered.transport.js +1 -1
  113. package/dist/{shared → kernel/shared}/logger/transports/console.transport.d.ts +2 -2
  114. package/dist/{shared → kernel/shared}/logger/transports/console.transport.js +1 -0
  115. package/dist/kernel/shared/logger/transports/dev-transport.factory.d.ts +75 -0
  116. package/dist/kernel/shared/logger/transports/dev-transport.factory.js +111 -0
  117. package/dist/kernel/shared/logger/transports/http.transport.d.ts +67 -0
  118. package/dist/kernel/shared/logger/transports/http.transport.js +170 -0
  119. package/dist/kernel/shared/logger/transports/index.d.ts +7 -0
  120. package/dist/kernel/shared/logger/transports/index.js +34 -0
  121. package/dist/kernel/shared/logger/transports/simple-console.transport.d.ts +38 -0
  122. package/dist/kernel/shared/logger/transports/simple-console.transport.js +93 -0
  123. package/dist/{shared → kernel/shared}/logger/transports/transport.interface.d.ts +1 -1
  124. package/dist/kernel/shared/logger/transports/websocket.transport.d.ts +69 -0
  125. package/dist/kernel/shared/logger/transports/websocket.transport.js +169 -0
  126. package/dist/kernel/utils/error/app.error.d.ts +9 -0
  127. package/dist/{utils/errors.js → kernel/utils/error/app.error.js} +1 -9
  128. package/dist/kernel/utils/error/security.error.d.ts +6 -0
  129. package/dist/kernel/utils/error/security.error.js +12 -0
  130. package/dist/{utils → kernel/utils}/index.d.ts +3 -2
  131. package/dist/{utils → kernel/utils}/index.js +3 -2
  132. package/dist/{utils → kernel/utils}/result.d.ts +1 -1
  133. package/dist/runtime/client/client-bootstrap.d.ts +7 -0
  134. package/dist/runtime/client/client-bootstrap.js +180 -0
  135. package/dist/runtime/client/client-core.d.ts +19 -0
  136. package/dist/runtime/client/client-core.js +24 -0
  137. package/dist/runtime/client/client-runtime.d.ts +58 -0
  138. package/dist/runtime/client/client-runtime.js +32 -0
  139. package/dist/runtime/client/controllers/appearance.controller.d.ts +8 -0
  140. package/dist/runtime/client/controllers/appearance.controller.js +50 -0
  141. package/dist/runtime/client/controllers/player-sync.controller.d.ts +11 -0
  142. package/dist/runtime/client/controllers/player-sync.controller.js +54 -0
  143. package/dist/{client → runtime/client}/controllers/spawner.controller.d.ts +1 -1
  144. package/dist/runtime/client/decorators/controller.d.ts +20 -0
  145. package/dist/runtime/client/decorators/controller.js +55 -0
  146. package/dist/runtime/client/decorators/export.d.ts +21 -0
  147. package/dist/runtime/client/decorators/export.js +29 -0
  148. package/dist/{client → runtime/client}/decorators/gameEvent.d.ts +2 -2
  149. package/dist/runtime/client/decorators/interval.d.ts +23 -0
  150. package/dist/runtime/client/decorators/interval.js +31 -0
  151. package/dist/runtime/client/decorators/key.d.ts +23 -0
  152. package/dist/runtime/client/decorators/key.js +31 -0
  153. package/dist/runtime/client/decorators/localEvent.d.ts +21 -0
  154. package/dist/runtime/client/decorators/localEvent.js +29 -0
  155. package/dist/runtime/client/decorators/nui.d.ts +21 -0
  156. package/dist/runtime/client/decorators/nui.js +29 -0
  157. package/dist/runtime/client/decorators/onNet.d.ts +21 -0
  158. package/dist/runtime/client/decorators/onNet.js +29 -0
  159. package/dist/runtime/client/decorators/resourceLifecycle.d.ts +40 -0
  160. package/dist/runtime/client/decorators/resourceLifecycle.js +53 -0
  161. package/dist/runtime/client/decorators/tick.d.ts +21 -0
  162. package/dist/runtime/client/decorators/tick.js +29 -0
  163. package/dist/{client → runtime/client}/index.d.ts +2 -2
  164. package/dist/{client → runtime/client}/index.js +4 -2
  165. package/dist/runtime/client/interfaces/appearance.interface.d.ts +25 -0
  166. package/dist/runtime/client/interfaces/appearance.interface.js +2 -0
  167. package/dist/{client → runtime/client}/player/player.d.ts +1 -1
  168. package/dist/{client → runtime/client}/player/player.js +5 -6
  169. package/dist/{client → runtime/client}/player/player.loader.js +2 -2
  170. package/dist/runtime/client/services/appearance.service.d.ts +132 -0
  171. package/dist/runtime/client/services/appearance.service.js +328 -0
  172. package/dist/{client → runtime/client}/services/blip.service.d.ts +1 -1
  173. package/dist/{client → runtime/client}/services/index.d.ts +6 -5
  174. package/dist/{client → runtime/client}/services/index.js +6 -5
  175. package/dist/{client → runtime/client}/services/marker.service.d.ts +1 -1
  176. package/dist/{client → runtime/client}/services/ped.service.d.ts +1 -1
  177. package/dist/{client → runtime/client}/services/ped.service.js +3 -2
  178. package/dist/{client → runtime/client}/services/spawn.service.d.ts +2 -2
  179. package/dist/{client → runtime/client}/services/spawn.service.js +4 -8
  180. package/dist/{client → runtime/client}/services/textui.service.d.ts +1 -1
  181. package/dist/runtime/client/services/vehicle-client.service.d.ts +180 -0
  182. package/dist/runtime/client/services/vehicle-client.service.js +485 -0
  183. package/dist/{client → runtime/client}/services/vehicle.service.d.ts +2 -2
  184. package/dist/{client → runtime/client}/services/vehicle.service.js +1 -1
  185. package/dist/{client → runtime/client}/system/processors/export.processor.d.ts +1 -1
  186. package/dist/{client → runtime/client}/system/processors/export.processor.js +1 -1
  187. package/dist/{client → runtime/client}/system/processors/gameEvent.processor.d.ts +1 -1
  188. package/dist/{client → runtime/client}/system/processors/gameEvent.processor.js +2 -2
  189. package/dist/{client → runtime/client}/system/processors/interval.processor.d.ts +1 -1
  190. package/dist/{client → runtime/client}/system/processors/interval.processor.js +1 -1
  191. package/dist/{client → runtime/client}/system/processors/key.processor.d.ts +1 -1
  192. package/dist/{client → runtime/client}/system/processors/localEvent.processor.d.ts +1 -1
  193. package/dist/{client → runtime/client}/system/processors/localEvent.processor.js +1 -1
  194. package/dist/{client → runtime/client}/system/processors/netEvent.processor.d.ts +1 -1
  195. package/dist/{client → runtime/client}/system/processors/netEvent.processor.js +1 -1
  196. package/dist/{client → runtime/client}/system/processors/nui.processor.d.ts +1 -1
  197. package/dist/{client → runtime/client}/system/processors/nui.processor.js +1 -1
  198. package/dist/{client → runtime/client}/system/processors/resourceLifecycle.processor.d.ts +1 -1
  199. package/dist/{client → runtime/client}/system/processors/resourceLifecycle.processor.js +1 -1
  200. package/dist/{client → runtime/client}/system/processors/tick.processor.d.ts +1 -1
  201. package/dist/{client → runtime/client}/system/processors/tick.processor.js +1 -1
  202. package/dist/{client → runtime/client}/types/game-events.js +0 -8
  203. package/dist/{client → runtime/client}/ui-bridge.js +1 -1
  204. package/dist/runtime/index.d.ts +2 -0
  205. package/dist/runtime/index.js +39 -0
  206. package/dist/{server → runtime/server}/bootstrap.d.ts +2 -1
  207. package/dist/runtime/server/bootstrap.js +234 -0
  208. package/dist/runtime/server/bootstrap.validation.d.ts +12 -0
  209. package/dist/runtime/server/bootstrap.validation.js +102 -0
  210. package/dist/runtime/server/bus/core-event-bus.d.ts +6 -0
  211. package/dist/{server → runtime/server}/bus/core-event-bus.js +5 -5
  212. package/dist/{server → runtime/server}/configs/api.config.d.ts +1 -1
  213. package/dist/{server/templates/auth → runtime/server/contracts}/auth-provider.contract.d.ts +2 -2
  214. package/dist/runtime/server/contracts/index.d.ts +7 -0
  215. package/dist/{server/templates → runtime/server/contracts}/index.js +8 -4
  216. package/dist/{server/templates/persistence → runtime/server/contracts}/player-persistence.contract.d.ts +1 -1
  217. package/dist/{server/templates → runtime/server/contracts}/repository/index.d.ts +2 -2
  218. package/dist/{server/templates → runtime/server/contracts}/repository/index.js +1 -1
  219. package/dist/{server/templates → runtime/server/contracts}/repository/repository.contract.d.ts +2 -2
  220. package/dist/{server/templates → runtime/server/contracts}/repository/repository.contract.js +0 -1
  221. package/dist/runtime/server/contracts/security/net-event-security-observer.contract.d.ts +15 -0
  222. package/dist/runtime/server/contracts/security/net-event-security-observer.contract.js +6 -0
  223. package/dist/{server/templates → runtime/server/contracts}/security/principal-provider.contract.d.ts +3 -3
  224. package/dist/{server/templates → runtime/server/contracts}/security/security-handler.contract.d.ts +2 -2
  225. package/dist/runtime/server/controllers/chat.controller.d.ts +11 -0
  226. package/dist/{server → runtime/server}/controllers/chat.controller.js +23 -11
  227. package/dist/runtime/server/controllers/command-export.controller.d.ts +74 -0
  228. package/dist/runtime/server/controllers/command-export.controller.js +260 -0
  229. package/dist/runtime/server/controllers/command.controller.d.ts +15 -0
  230. package/dist/runtime/server/controllers/command.controller.js +100 -0
  231. package/dist/runtime/server/controllers/player-export.controller.d.ts +29 -0
  232. package/dist/runtime/server/controllers/player-export.controller.js +173 -0
  233. package/dist/runtime/server/controllers/principal-export.controller.d.ts +79 -0
  234. package/dist/runtime/server/controllers/principal-export.controller.js +296 -0
  235. package/dist/runtime/server/controllers/remote-command-execution.controller.d.ts +43 -0
  236. package/dist/runtime/server/controllers/remote-command-execution.controller.js +104 -0
  237. package/dist/runtime/server/controllers/session.controller.d.ts +11 -0
  238. package/dist/{server → runtime/server}/controllers/session.controller.js +15 -12
  239. package/dist/runtime/server/controllers/vehicle.controller.d.ts +55 -0
  240. package/dist/runtime/server/controllers/vehicle.controller.js +216 -0
  241. package/dist/runtime/server/core.d.ts +3 -0
  242. package/dist/runtime/server/core.js +11 -0
  243. package/dist/runtime/server/database/adapter.registry.d.ts +4 -0
  244. package/dist/runtime/server/database/adapter.registry.js +14 -0
  245. package/dist/{server → runtime/server}/database/database.contract.d.ts +1 -1
  246. package/dist/{server → runtime/server}/database/database.service.d.ts +3 -31
  247. package/dist/{server → runtime/server}/database/database.service.js +36 -50
  248. package/dist/runtime/server/database/index.d.ts +5 -0
  249. package/dist/runtime/server/database/index.js +25 -0
  250. package/dist/runtime/server/decorators/bind.d.ts +21 -0
  251. package/dist/runtime/server/decorators/bind.js +31 -0
  252. package/dist/runtime/server/decorators/command.d.ts +81 -0
  253. package/dist/runtime/server/decorators/command.js +32 -0
  254. package/dist/{server → runtime/server}/decorators/controller.d.ts +4 -3
  255. package/dist/runtime/server/decorators/controller.js +61 -0
  256. package/dist/runtime/server/decorators/export.d.ts +24 -0
  257. package/dist/runtime/server/decorators/export.js +32 -0
  258. package/dist/runtime/server/decorators/guard.d.ts +49 -0
  259. package/dist/{server → runtime/server}/decorators/guard.js +33 -32
  260. package/dist/{server → runtime/server}/decorators/index.d.ts +7 -4
  261. package/dist/{server → runtime/server}/decorators/index.js +8 -5
  262. package/dist/runtime/server/decorators/onFiveMEvent.d.ts +24 -0
  263. package/dist/runtime/server/decorators/onFiveMEvent.js +32 -0
  264. package/dist/runtime/server/decorators/onFrameworkEvent.d.ts +22 -0
  265. package/dist/{server → runtime/server}/decorators/onFrameworkEvent.js +9 -9
  266. package/dist/runtime/server/decorators/onNet.d.ts +62 -0
  267. package/dist/runtime/server/decorators/onNet.js +15 -0
  268. package/dist/runtime/server/decorators/onTick.d.ts +21 -0
  269. package/dist/runtime/server/decorators/onTick.js +29 -0
  270. package/dist/runtime/server/decorators/public.d.ts +26 -0
  271. package/dist/{server → runtime/server}/decorators/public.js +15 -16
  272. package/dist/{server → runtime/server}/decorators/requiresState.d.ts +29 -22
  273. package/dist/runtime/server/decorators/requiresState.js +73 -0
  274. package/dist/runtime/server/decorators/throttle.d.ts +56 -0
  275. package/dist/{server → runtime/server}/decorators/throttle.js +31 -19
  276. package/dist/runtime/server/decorators/utils.d.ts +54 -0
  277. package/dist/runtime/server/decorators/utils.js +60 -0
  278. package/dist/runtime/server/devmode/contracts/IDevModeBridge.d.ts +36 -0
  279. package/dist/runtime/server/devmode/contracts/IDevModeBridge.js +12 -0
  280. package/dist/runtime/server/devmode/contracts/IDevModeInspector.d.ts +52 -0
  281. package/dist/runtime/server/devmode/contracts/IDevModeInspector.js +12 -0
  282. package/dist/runtime/server/devmode/contracts/IDevModeInterceptor.d.ts +41 -0
  283. package/dist/runtime/server/devmode/contracts/IDevModeInterceptor.js +11 -0
  284. package/dist/runtime/server/devmode/contracts/index.d.ts +3 -0
  285. package/dist/runtime/server/devmode/contracts/index.js +9 -0
  286. package/dist/runtime/server/devmode/dev-mode.service.d.ts +110 -0
  287. package/dist/runtime/server/devmode/dev-mode.service.js +324 -0
  288. package/dist/runtime/server/devmode/event-interceptor.service.d.ts +80 -0
  289. package/dist/runtime/server/devmode/event-interceptor.service.js +232 -0
  290. package/dist/runtime/server/devmode/hot-reload.server.d.ts +74 -0
  291. package/dist/runtime/server/devmode/hot-reload.server.js +261 -0
  292. package/dist/runtime/server/devmode/index.d.ts +8 -0
  293. package/dist/runtime/server/devmode/index.js +32 -0
  294. package/dist/runtime/server/devmode/player-simulator.service.d.ts +66 -0
  295. package/dist/runtime/server/devmode/player-simulator.service.js +202 -0
  296. package/dist/runtime/server/devmode/state-inspector.service.d.ts +57 -0
  297. package/dist/runtime/server/devmode/state-inspector.service.js +183 -0
  298. package/dist/runtime/server/devmode/types.d.ts +161 -0
  299. package/dist/runtime/server/devmode/types.js +28 -0
  300. package/dist/runtime/server/entities/index.d.ts +2 -0
  301. package/dist/{server → runtime/server}/entities/index.js +1 -0
  302. package/dist/{server → runtime/server}/entities/player.d.ts +70 -3
  303. package/dist/{server → runtime/server}/entities/player.js +92 -14
  304. package/dist/runtime/server/entities/vehicle.d.ts +160 -0
  305. package/dist/runtime/server/entities/vehicle.js +261 -0
  306. package/dist/{server → runtime/server}/error-handler.d.ts +1 -1
  307. package/dist/{server → runtime/server}/error-handler.js +7 -8
  308. package/dist/runtime/server/helpers/command-validation.helper.d.ts +6 -0
  309. package/dist/runtime/server/helpers/command-validation.helper.js +72 -0
  310. package/dist/runtime/server/helpers/function-helper.d.ts +1 -0
  311. package/dist/runtime/server/helpers/function-helper.js +15 -0
  312. package/dist/{server → runtime/server}/helpers/resolve-method.d.ts +1 -1
  313. package/dist/runtime/server/helpers/resolve-method.js +28 -0
  314. package/dist/{server → runtime/server}/index.d.ts +8 -6
  315. package/dist/{server → runtime/server}/index.js +14 -10
  316. package/dist/runtime/server/runtime.d.ts +408 -0
  317. package/dist/runtime/server/runtime.js +234 -0
  318. package/dist/runtime/server/services/access-control.service.d.ts +59 -0
  319. package/dist/runtime/server/services/access-control.service.js +127 -0
  320. package/dist/runtime/server/services/appearance.service.d.ts +99 -0
  321. package/dist/runtime/server/services/appearance.service.js +307 -0
  322. package/dist/runtime/server/services/chat.service.d.ts +33 -0
  323. package/dist/{server → runtime/server}/services/chat.service.js +26 -0
  324. package/dist/{server → runtime/server}/services/config.service.js +1 -1
  325. package/dist/runtime/server/services/core/command.service.d.ts +49 -0
  326. package/dist/runtime/server/services/core/command.service.js +112 -0
  327. package/dist/{server/services → runtime/server/services/core}/player.service.d.ts +48 -22
  328. package/dist/{server/services → runtime/server/services/core}/player.service.js +98 -14
  329. package/dist/runtime/server/services/core/principal.service.d.ts +28 -0
  330. package/dist/runtime/server/services/core/principal.service.js +126 -0
  331. package/dist/runtime/server/services/core/vehicle-modification.service.d.ts +104 -0
  332. package/dist/runtime/server/services/core/vehicle-modification.service.js +330 -0
  333. package/dist/runtime/server/services/core/vehicle.service.d.ts +128 -0
  334. package/dist/runtime/server/services/core/vehicle.service.js +391 -0
  335. package/dist/runtime/server/services/default/default-net-event-security-observer.d.ts +15 -0
  336. package/dist/runtime/server/services/default/default-net-event-security-observer.js +28 -0
  337. package/dist/runtime/server/services/default/default-security.handler.d.ts +19 -0
  338. package/dist/{server → runtime/server}/services/default/default-security.handler.js +15 -2
  339. package/dist/{server → runtime/server}/services/http/http.service.js +5 -5
  340. package/dist/runtime/server/services/index.d.ts +16 -0
  341. package/dist/runtime/server/services/index.js +39 -0
  342. package/dist/{server → runtime/server}/services/parallel/index.d.ts +2 -4
  343. package/dist/{server → runtime/server}/services/parallel/index.js +13 -15
  344. package/dist/{server → runtime/server}/services/parallel/parallel-compute.service.d.ts +1 -1
  345. package/dist/{server → runtime/server}/services/parallel/parallel-compute.service.js +2 -1
  346. package/dist/{server → runtime/server}/services/parallel/worker-pool.d.ts +1 -1
  347. package/dist/{server → runtime/server}/services/parallel/worker.d.ts +1 -1
  348. package/dist/{server → runtime/server}/services/persistence.service.d.ts +1 -1
  349. package/dist/{server → runtime/server}/services/persistence.service.js +13 -9
  350. package/dist/runtime/server/services/ports/command-execution.port.d.ts +41 -0
  351. package/dist/runtime/server/services/ports/command-execution.port.js +15 -0
  352. package/dist/runtime/server/services/ports/player-directory.port.d.ts +107 -0
  353. package/dist/runtime/server/services/ports/player-directory.port.js +23 -0
  354. package/dist/runtime/server/services/ports/player-session-lifecycle.port.d.ts +49 -0
  355. package/dist/runtime/server/services/ports/player-session-lifecycle.port.js +16 -0
  356. package/dist/runtime/server/services/ports/principal.port.d.ts +149 -0
  357. package/dist/runtime/server/services/ports/principal.port.js +32 -0
  358. package/dist/runtime/server/services/rate-limiter.service.d.ts +23 -0
  359. package/dist/{server → runtime/server}/services/rate-limiter.service.js +18 -0
  360. package/dist/runtime/server/services/remote/remote-command.service.d.ts +63 -0
  361. package/dist/runtime/server/services/remote/remote-command.service.js +139 -0
  362. package/dist/runtime/server/services/remote/remote-player.service.d.ts +62 -0
  363. package/dist/runtime/server/services/remote/remote-player.service.js +191 -0
  364. package/dist/runtime/server/services/remote/remote-principal.provider.d.ts +55 -0
  365. package/dist/runtime/server/services/remote/remote-principal.provider.js +130 -0
  366. package/dist/runtime/server/services/remote/remote-principal.service.d.ts +33 -0
  367. package/dist/runtime/server/services/remote/remote-principal.service.js +99 -0
  368. package/dist/runtime/server/services/remote/server-bridge.d.ts +34 -0
  369. package/dist/runtime/server/services/remote/server-bridge.js +94 -0
  370. package/dist/runtime/server/services/services.register.d.ts +14 -0
  371. package/dist/runtime/server/services/services.register.js +98 -0
  372. package/dist/runtime/server/services/types/linked-id.d.ts +6 -0
  373. package/dist/runtime/server/services/types/player-session.object.d.ts +11 -0
  374. package/dist/runtime/server/services/vehicle-modification.service.d.ts +94 -0
  375. package/dist/runtime/server/services/vehicle-modification.service.js +310 -0
  376. package/dist/runtime/server/services/vehicle.service.d.ts +138 -0
  377. package/dist/runtime/server/services/vehicle.service.js +361 -0
  378. package/dist/runtime/server/setup.d.ts +10 -0
  379. package/dist/runtime/server/setup.js +33 -0
  380. package/dist/{server → runtime/server}/system/metadata-server.keys.d.ts +2 -0
  381. package/dist/{server → runtime/server}/system/metadata-server.keys.js +2 -0
  382. package/dist/runtime/server/system/processors/command.processor.d.ts +16 -0
  383. package/dist/runtime/server/system/processors/command.processor.js +54 -0
  384. package/dist/{server → runtime/server}/system/processors/coreEvent.processor.d.ts +1 -1
  385. package/dist/{server → runtime/server}/system/processors/coreEvent.processor.js +3 -3
  386. package/dist/runtime/server/system/processors/export.processor.d.ts +10 -0
  387. package/dist/{server → runtime/server}/system/processors/export.processor.js +15 -5
  388. package/dist/runtime/server/system/processors/fivemEvent.processor.d.ts +10 -0
  389. package/dist/{server → runtime/server}/system/processors/fivemEvent.processor.js +15 -5
  390. package/dist/runtime/server/system/processors/netEvent.processor.d.ts +23 -0
  391. package/dist/runtime/server/system/processors/netEvent.processor.js +240 -0
  392. package/dist/runtime/server/system/processors/tick.processor.d.ts +8 -0
  393. package/dist/{server → runtime/server}/system/processors/tick.processor.js +14 -4
  394. package/dist/runtime/server/system/processors.register.d.ts +2 -0
  395. package/dist/runtime/server/system/processors.register.js +37 -0
  396. package/dist/{server → runtime/server}/system/schema-generator.d.ts +1 -1
  397. package/dist/{server → runtime/server}/system/schema-generator.js +17 -8
  398. package/dist/{server/templates/admin → runtime/server/templates}/admin.controller-template.d.ts +1 -1
  399. package/dist/runtime/server/templates/index.d.ts +1 -0
  400. package/dist/runtime/server/templates/index.js +17 -0
  401. package/dist/runtime/server/types/core-exports.d.ts +285 -0
  402. package/dist/runtime/server/types/core-exports.js +2 -0
  403. package/dist/runtime/server/types/index.d.ts +4 -0
  404. package/dist/runtime/server/types/index.js +20 -0
  405. package/dist/runtime/server/types/security.types.js +2 -0
  406. package/dist/runtime/server/types/vehicle.types.d.ts +152 -0
  407. package/dist/runtime/server/types/vehicle.types.js +2 -0
  408. package/package.json +30 -30
  409. package/dist/client/client-bootstrap.d.ts +0 -1
  410. package/dist/client/client-bootstrap.js +0 -50
  411. package/dist/client/client-core.d.ts +0 -1
  412. package/dist/client/client-core.js +0 -7
  413. package/dist/client/decorators/controller.d.ts +0 -3
  414. package/dist/client/decorators/controller.js +0 -14
  415. package/dist/client/decorators/export.d.ts +0 -7
  416. package/dist/client/decorators/export.js +0 -15
  417. package/dist/client/decorators/interval.d.ts +0 -7
  418. package/dist/client/decorators/interval.js +0 -15
  419. package/dist/client/decorators/key.d.ts +0 -2
  420. package/dist/client/decorators/key.js +0 -10
  421. package/dist/client/decorators/localEvent.d.ts +0 -7
  422. package/dist/client/decorators/localEvent.js +0 -15
  423. package/dist/client/decorators/nui.d.ts +0 -1
  424. package/dist/client/decorators/nui.js +0 -9
  425. package/dist/client/decorators/onNet.d.ts +0 -1
  426. package/dist/client/decorators/onNet.js +0 -9
  427. package/dist/client/decorators/resourceLifecycle.d.ts +0 -11
  428. package/dist/client/decorators/resourceLifecycle.js +0 -24
  429. package/dist/client/decorators/tick.d.ts +0 -1
  430. package/dist/client/decorators/tick.js +0 -9
  431. package/dist/client/interfaces/appearance.interface.d.ts +0 -19
  432. package/dist/client/services/appearance.service.d.ts +0 -6
  433. package/dist/client/services/appearance.service.js +0 -89
  434. package/dist/server/bootstrap.js +0 -57
  435. package/dist/server/bus/core-event-bus.d.ts +0 -6
  436. package/dist/server/controllers/chat.controller.d.ts +0 -10
  437. package/dist/server/controllers/command.controller.d.ts +0 -7
  438. package/dist/server/controllers/command.controller.js +0 -47
  439. package/dist/server/controllers/session.controller.d.ts +0 -9
  440. package/dist/server/core.d.ts +0 -1
  441. package/dist/server/core.js +0 -7
  442. package/dist/server/database/index.d.ts +0 -53
  443. package/dist/server/database/index.js +0 -70
  444. package/dist/server/decorators/bind.d.ts +0 -2
  445. package/dist/server/decorators/bind.js +0 -15
  446. package/dist/server/decorators/command.d.ts +0 -49
  447. package/dist/server/decorators/command.js +0 -23
  448. package/dist/server/decorators/controller.js +0 -36
  449. package/dist/server/decorators/export.d.ts +0 -39
  450. package/dist/server/decorators/export.js +0 -47
  451. package/dist/server/decorators/guard.d.ts +0 -56
  452. package/dist/server/decorators/onFiveMEvent.d.ts +0 -6
  453. package/dist/server/decorators/onFiveMEvent.js +0 -14
  454. package/dist/server/decorators/onFrameworkEvent.d.ts +0 -22
  455. package/dist/server/decorators/onNet.d.ts +0 -58
  456. package/dist/server/decorators/onNet.js +0 -57
  457. package/dist/server/decorators/onTick.d.ts +0 -32
  458. package/dist/server/decorators/onTick.js +0 -40
  459. package/dist/server/decorators/public.d.ts +0 -27
  460. package/dist/server/decorators/requiresState.js +0 -63
  461. package/dist/server/decorators/throttle.d.ts +0 -48
  462. package/dist/server/decorators/utils.d.ts +0 -57
  463. package/dist/server/decorators/utils.js +0 -63
  464. package/dist/server/entities/index.d.ts +0 -1
  465. package/dist/server/helpers/resolve-method.js +0 -18
  466. package/dist/server/loaders/exports.loader.d.ts +0 -0
  467. package/dist/server/loaders/exports.loader.js +0 -23
  468. package/dist/server/loaders/playerSession.loader.d.ts +0 -1
  469. package/dist/server/loaders/playerSession.loader.js +0 -51
  470. package/dist/server/services/access-control.service.d.ts +0 -56
  471. package/dist/server/services/access-control.service.js +0 -99
  472. package/dist/server/services/chat.service.d.ts +0 -7
  473. package/dist/server/services/command.service.d.ts +0 -15
  474. package/dist/server/services/command.service.js +0 -77
  475. package/dist/server/services/default/default-security.handler.d.ts +0 -6
  476. package/dist/server/services/index.d.ts +0 -10
  477. package/dist/server/services/index.js +0 -26
  478. package/dist/server/services/rate-limiter.service.d.ts +0 -5
  479. package/dist/server/services/registers.d.ts +0 -1
  480. package/dist/server/services/registers.js +0 -18
  481. package/dist/server/setup.d.ts +0 -9
  482. package/dist/server/setup.js +0 -28
  483. package/dist/server/system/processors/command.processor.d.ts +0 -9
  484. package/dist/server/system/processors/export.processor.d.ts +0 -7
  485. package/dist/server/system/processors/fivemEvent.processor.d.ts +0 -7
  486. package/dist/server/system/processors/netEvent.processor.d.ts +0 -11
  487. package/dist/server/system/processors/netEvent.processor.js +0 -103
  488. package/dist/server/system/processors/tick.processor.d.ts +0 -5
  489. package/dist/server/system/processors.register.d.ts +0 -1
  490. package/dist/server/system/processors.register.js +0 -23
  491. package/dist/server/templates/index.d.ts +0 -8
  492. package/dist/server/templates/persistence/index.d.ts +0 -30
  493. package/dist/server/templates/persistence/index.js +0 -34
  494. package/dist/shared/index.d.ts +0 -1
  495. package/dist/shared/logger/transports/index.d.ts +0 -3
  496. package/dist/shared/logger/transports/index.js +0 -19
  497. package/dist/utils/errors.d.ts +0 -14
  498. package/dist/{system → kernel/di}/class-constructor.d.ts +0 -0
  499. package/dist/{system → kernel/di}/class-constructor.js +0 -0
  500. package/dist/{server → kernel/di}/container.d.ts +0 -0
  501. package/dist/{server → kernel/di}/container.js +0 -0
  502. package/dist/{system → kernel/di}/decorator-processor.d.ts +0 -0
  503. package/dist/{system → kernel/di}/decorator-processor.js +0 -0
  504. package/dist/{system → kernel/di}/metadata.scanner.js +0 -0
  505. package/dist/{shared → kernel/shared}/logger/logger.config.js +0 -0
  506. package/dist/{shared → kernel/shared}/logger/logger.service.js +0 -0
  507. package/dist/{shared → kernel/shared}/logger/logger.types.d.ts +0 -0
  508. package/dist/{shared → kernel/shared}/logger/logger.types.js +0 -0
  509. package/dist/{shared → kernel/shared}/logger/transports/transport.interface.js +0 -0
  510. package/dist/{utils → kernel/utils}/result.js +0 -0
  511. package/dist/{utils → kernel/utils}/rgb.d.ts +0 -0
  512. package/dist/{utils → kernel/utils}/rgb.js +0 -0
  513. package/dist/{utils → kernel/utils}/vector3.d.ts +0 -0
  514. package/dist/{utils → kernel/utils}/vector3.js +0 -0
  515. package/dist/{client → runtime/client}/client-container.d.ts +0 -0
  516. package/dist/{client → runtime/client}/client-container.js +0 -0
  517. package/dist/{client → runtime/client}/controllers/spawner.controller.js +0 -0
  518. package/dist/{client → runtime/client}/decorators/gameEvent.js +0 -0
  519. package/dist/{client → runtime/client}/decorators/index.d.ts +5 -5
  520. package/dist/{client → runtime/client}/decorators/index.js +5 -5
  521. package/dist/{client → runtime/client}/player/player.loader.d.ts +0 -0
  522. package/dist/{client → runtime/client}/services/blip.service.js +0 -0
  523. package/dist/{client → runtime/client}/services/marker.service.js +0 -0
  524. package/dist/{client → runtime/client}/services/notification.service.d.ts +0 -0
  525. package/dist/{client → runtime/client}/services/notification.service.js +0 -0
  526. package/dist/{client → runtime/client}/services/progress.service.d.ts +0 -0
  527. package/dist/{client → runtime/client}/services/progress.service.js +0 -0
  528. package/dist/{client → runtime/client}/services/streaming.service.d.ts +0 -0
  529. package/dist/{client → runtime/client}/services/streaming.service.js +0 -0
  530. package/dist/{client → runtime/client}/services/textui.service.js +0 -0
  531. package/dist/{client → runtime/client}/system/metadata-client.keys.d.ts +0 -0
  532. package/dist/{client → runtime/client}/system/metadata-client.keys.js +0 -0
  533. package/dist/{client → runtime/client}/system/processors/key.processor.js +0 -0
  534. package/dist/{client → runtime/client}/system/processors.register.d.ts +0 -0
  535. package/dist/{client → runtime/client}/system/processors.register.js +6 -6
  536. /package/dist/{client → runtime/client}/types/game-events.d.ts +0 -0
  537. /package/dist/{client → runtime/client}/types/index.d.ts +0 -0
  538. /package/dist/{client → runtime/client}/types/index.js +0 -0
  539. /package/dist/{client → runtime/client}/ui-bridge.d.ts +0 -0
  540. /package/dist/{server → runtime/server}/configs/api.config.js +0 -0
  541. /package/dist/{server → runtime/server}/configs/config.base.d.ts +0 -0
  542. /package/dist/{server → runtime/server}/configs/config.base.js +0 -0
  543. /package/dist/{server → runtime/server}/configs/index.d.ts +0 -0
  544. /package/dist/{server → runtime/server}/configs/index.js +0 -0
  545. /package/dist/{server/templates/auth → runtime/server/contracts}/auth-provider.contract.js +0 -0
  546. /package/dist/{server/templates/persistence → runtime/server/contracts}/player-persistence.contract.js +0 -0
  547. /package/dist/{server/templates → runtime/server/contracts}/repository/repository.types.d.ts +0 -0
  548. /package/dist/{server/templates → runtime/server/contracts}/repository/repository.types.js +0 -0
  549. /package/dist/{server/templates → runtime/server/contracts}/security/permission.types.d.ts +0 -0
  550. /package/dist/{server/templates → runtime/server/contracts}/security/permission.types.js +0 -0
  551. /package/dist/{server/templates → runtime/server/contracts}/security/principal-provider.contract.js +0 -0
  552. /package/dist/{server/templates → runtime/server/contracts}/security/security-handler.contract.js +0 -0
  553. /package/dist/{server → runtime/server}/database/database.contract.js +0 -0
  554. /package/dist/{server → runtime/server}/database/types.d.ts +0 -0
  555. /package/dist/{server → runtime/server}/database/types.js +0 -0
  556. /package/dist/{server → runtime/server}/database.d.ts +0 -0
  557. /package/dist/{server → runtime/server}/database.js +0 -0
  558. /package/dist/{server → runtime/server}/services/config.service.d.ts +0 -0
  559. /package/dist/{server → runtime/server}/services/http/http.service.d.ts +0 -0
  560. /package/dist/{server → runtime/server}/services/parallel/types.d.ts +0 -0
  561. /package/dist/{server → runtime/server}/services/parallel/types.js +0 -0
  562. /package/dist/{server → runtime/server}/services/parallel/worker-pool.js +0 -0
  563. /package/dist/{server → runtime/server}/services/parallel/worker.js +0 -0
  564. /package/dist/{client/interfaces/appearance.interface.js → runtime/server/services/types/linked-id.js} +0 -0
  565. /package/dist/{server/templates/admin/admin.controller-template.js → runtime/server/services/types/player-session.object.js} +0 -0
  566. /package/dist/{server/types/core-events.js → runtime/server/templates/admin.controller-template.js} +0 -0
  567. /package/dist/{server → runtime/server}/types/core-events.d.ts +0 -0
  568. /package/dist/{server/types/security.types.js → runtime/server/types/core-events.js} +0 -0
  569. /package/dist/{server → runtime/server}/types/security.types.d.ts +0 -0
@@ -0,0 +1,307 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AppearanceService = void 0;
16
+ const tsyringe_1 = require("tsyringe");
17
+ const INetTransport_1 = require("../../../adapters/contracts/INetTransport");
18
+ const IPedAppearanceServer_1 = require("../../../adapters/contracts/IPedAppearanceServer");
19
+ const IPlayerServer_1 = require("../../../adapters/contracts/IPlayerServer");
20
+ /**
21
+ * Server-side appearance management service.
22
+ *
23
+ * @remarks
24
+ * Handles validating and applying ped appearance data on the server.
25
+ * Provides security validation and server-authoritative appearance control.
26
+ *
27
+ * **Security Model:**
28
+ * - All appearance changes should be validated server-side
29
+ * - Server applies components/props directly (available natives)
30
+ * - Server emits events to client for client-only natives (headBlend, overlays, tattoos)
31
+ * - Client never sends appearance data directly to other clients
32
+ *
33
+ * **Persistence:**
34
+ * The framework does NOT handle persistence internally.
35
+ * After calling `applyAppearance`, you receive the validated data back.
36
+ * You decide when and where to save it (database, file, etc.).
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * // Apply appearance to a player
41
+ * const result = await appearanceService.applyAppearance(playerSrc, appearanceData)
42
+ * if (result.success) {
43
+ * // Save to your database
44
+ * await myDatabase.saveAppearance(playerId, result.appearance)
45
+ * }
46
+ *
47
+ * // Validate appearance without applying
48
+ * const validation = appearanceService.validateAppearance(appearanceData)
49
+ * if (!validation.valid) {
50
+ * console.log('Errors:', validation.errors)
51
+ * }
52
+ * ```
53
+ */
54
+ let AppearanceService = class AppearanceService {
55
+ constructor(pedAdapter, playerServer, netTransport) {
56
+ this.pedAdapter = pedAdapter;
57
+ this.playerServer = playerServer;
58
+ this.netTransport = netTransport;
59
+ }
60
+ /**
61
+ * Applies validated appearance to a player.
62
+ *
63
+ * @remarks
64
+ * This method:
65
+ * 1. Validates the appearance data
66
+ * 2. Applies server-side natives (components, props)
67
+ * 3. Emits event to client for client-only natives
68
+ * 4. Returns the validated appearance for persistence
69
+ *
70
+ * @param playerSrc - Player source/client ID
71
+ * @param appearance - Appearance data to apply
72
+ * @returns Result with success status and validated appearance
73
+ */
74
+ async applyAppearance(playerSrc, appearance) {
75
+ const validation = this.validateAppearance(appearance);
76
+ if (!validation.valid) {
77
+ return { success: false, errors: validation.errors };
78
+ }
79
+ const ped = this.playerServer.getPed(playerSrc);
80
+ if (ped === 0) {
81
+ return { success: false, errors: ['Player ped not found'] };
82
+ }
83
+ // Apply server-side natives (components and props)
84
+ this.applyServerSideAppearance(ped, appearance);
85
+ // Emit event to client for client-only natives
86
+ this.netTransport.emitNet('opencore:appearance:apply', parseInt(playerSrc, 10), appearance);
87
+ return { success: true, appearance };
88
+ }
89
+ /**
90
+ * Applies only components and props (server-side available natives).
91
+ *
92
+ * @remarks
93
+ * Use this for quick clothing changes without full appearance update.
94
+ *
95
+ * @param playerSrc - Player source/client ID
96
+ * @param appearance - Partial appearance with components/props only
97
+ * @returns Success status
98
+ */
99
+ applyClothing(playerSrc, appearance) {
100
+ const ped = this.playerServer.getPed(playerSrc);
101
+ if (ped === 0) {
102
+ return false;
103
+ }
104
+ this.applyServerSideAppearance(ped, appearance);
105
+ return true;
106
+ }
107
+ /**
108
+ * Resets a player's appearance to default.
109
+ *
110
+ * @param playerSrc - Player source/client ID
111
+ * @returns Success status
112
+ */
113
+ resetAppearance(playerSrc) {
114
+ const ped = this.playerServer.getPed(playerSrc);
115
+ if (ped === 0) {
116
+ return false;
117
+ }
118
+ this.pedAdapter.setDefaultComponentVariation(ped);
119
+ // Notify client to reset client-only appearance elements
120
+ this.netTransport.emitNet('opencore:appearance:reset', parseInt(playerSrc, 10));
121
+ return true;
122
+ }
123
+ /**
124
+ * Validates appearance data without applying it.
125
+ *
126
+ * @remarks
127
+ * Use this to validate appearance data before storing or applying.
128
+ * All validation rules are enforced to prevent invalid/malicious data.
129
+ *
130
+ * @param appearance - Appearance data to validate
131
+ * @returns Validation result with errors if any
132
+ */
133
+ validateAppearance(appearance) {
134
+ const errors = [];
135
+ if (!appearance) {
136
+ return { valid: false, errors: ['Appearance data is null or undefined'] };
137
+ }
138
+ // Validate components (0-11)
139
+ if (appearance.components) {
140
+ for (const [id, data] of Object.entries(appearance.components)) {
141
+ const componentId = parseInt(id, 10);
142
+ if (Number.isNaN(componentId) || componentId < 0 || componentId > 11) {
143
+ errors.push(`Invalid component ID: ${id} (must be 0-11)`);
144
+ }
145
+ if (data.drawable === undefined || data.drawable < -1) {
146
+ errors.push(`Invalid drawable for component ${id}`);
147
+ }
148
+ if (data.texture === undefined || data.texture < 0) {
149
+ errors.push(`Invalid texture for component ${id}`);
150
+ }
151
+ }
152
+ }
153
+ // Validate props (0-7)
154
+ if (appearance.props) {
155
+ for (const [id, data] of Object.entries(appearance.props)) {
156
+ const propId = parseInt(id, 10);
157
+ if (Number.isNaN(propId) || propId < 0 || propId > 7) {
158
+ errors.push(`Invalid prop ID: ${id} (must be 0-7)`);
159
+ }
160
+ if (data.drawable === undefined) {
161
+ errors.push(`Missing drawable for prop ${id}`);
162
+ }
163
+ if (data.texture === undefined || data.texture < 0) {
164
+ errors.push(`Invalid texture for prop ${id}`);
165
+ }
166
+ }
167
+ }
168
+ // Validate faceFeatures (0-19, values -1.0 to 1.0)
169
+ if (appearance.faceFeatures) {
170
+ for (const [id, value] of Object.entries(appearance.faceFeatures)) {
171
+ const index = parseInt(id, 10);
172
+ if (Number.isNaN(index) || index < 0 || index > 19) {
173
+ errors.push(`Invalid face feature index: ${id} (must be 0-19)`);
174
+ }
175
+ if (typeof value !== 'number' || value < -1.0 || value > 1.0) {
176
+ errors.push(`Face feature ${id} value out of range: ${value} (must be -1.0 to 1.0)`);
177
+ }
178
+ }
179
+ }
180
+ // Validate headBlend
181
+ if (appearance.headBlend) {
182
+ const hb = appearance.headBlend;
183
+ if (typeof hb.shapeFirst !== 'number' || hb.shapeFirst < 0 || hb.shapeFirst > 45) {
184
+ errors.push('Invalid shapeFirst (must be 0-45)');
185
+ }
186
+ if (typeof hb.shapeSecond !== 'number' || hb.shapeSecond < 0 || hb.shapeSecond > 45) {
187
+ errors.push('Invalid shapeSecond (must be 0-45)');
188
+ }
189
+ if (typeof hb.skinFirst !== 'number' || hb.skinFirst < 0 || hb.skinFirst > 45) {
190
+ errors.push('Invalid skinFirst (must be 0-45)');
191
+ }
192
+ if (typeof hb.skinSecond !== 'number' || hb.skinSecond < 0 || hb.skinSecond > 45) {
193
+ errors.push('Invalid skinSecond (must be 0-45)');
194
+ }
195
+ if (typeof hb.shapeMix !== 'number' || hb.shapeMix < 0 || hb.shapeMix > 1) {
196
+ errors.push('Invalid shapeMix (must be 0.0-1.0)');
197
+ }
198
+ if (typeof hb.skinMix !== 'number' || hb.skinMix < 0 || hb.skinMix > 1) {
199
+ errors.push('Invalid skinMix (must be 0.0-1.0)');
200
+ }
201
+ if (hb.shapeThird !== undefined && (hb.shapeThird < 0 || hb.shapeThird > 45)) {
202
+ errors.push('Invalid shapeThird (must be 0-45)');
203
+ }
204
+ if (hb.skinThird !== undefined && (hb.skinThird < 0 || hb.skinThird > 45)) {
205
+ errors.push('Invalid skinThird (must be 0-45)');
206
+ }
207
+ if (hb.thirdMix !== undefined && (hb.thirdMix < 0 || hb.thirdMix > 1)) {
208
+ errors.push('Invalid thirdMix (must be 0.0-1.0)');
209
+ }
210
+ }
211
+ // Validate headOverlays (0-12)
212
+ if (appearance.headOverlays) {
213
+ for (const [id, overlay] of Object.entries(appearance.headOverlays)) {
214
+ const overlayId = parseInt(id, 10);
215
+ if (Number.isNaN(overlayId) || overlayId < 0 || overlayId > 12) {
216
+ errors.push(`Invalid overlay ID: ${id} (must be 0-12)`);
217
+ }
218
+ if (typeof overlay.index !== 'number' || overlay.index < 0) {
219
+ errors.push(`Invalid overlay index for ID ${id}`);
220
+ }
221
+ if (typeof overlay.opacity !== 'number' || overlay.opacity < 0 || overlay.opacity > 1) {
222
+ errors.push(`Invalid overlay opacity for ID ${id} (must be 0.0-1.0)`);
223
+ }
224
+ if (overlay.colorType !== undefined && ![0, 1, 2].includes(overlay.colorType)) {
225
+ errors.push(`Invalid overlay colorType for ID ${id} (must be 0, 1, or 2)`);
226
+ }
227
+ }
228
+ }
229
+ // Validate hairColor
230
+ if (appearance.hairColor) {
231
+ if (typeof appearance.hairColor.colorId !== 'number' || appearance.hairColor.colorId < 0) {
232
+ errors.push('Invalid hair colorId');
233
+ }
234
+ if (typeof appearance.hairColor.highlightColorId !== 'number' ||
235
+ appearance.hairColor.highlightColorId < 0) {
236
+ errors.push('Invalid hair highlightColorId');
237
+ }
238
+ }
239
+ // Validate eyeColor (0-31)
240
+ if (appearance.eyeColor !== undefined) {
241
+ if (typeof appearance.eyeColor !== 'number' ||
242
+ appearance.eyeColor < 0 ||
243
+ appearance.eyeColor > 31) {
244
+ errors.push(`Invalid eye color: ${appearance.eyeColor} (must be 0-31)`);
245
+ }
246
+ }
247
+ // Validate tattoos
248
+ if (appearance.tattoos) {
249
+ if (!Array.isArray(appearance.tattoos)) {
250
+ errors.push('Tattoos must be an array');
251
+ }
252
+ else {
253
+ for (let i = 0; i < appearance.tattoos.length; i++) {
254
+ const tattoo = appearance.tattoos[i];
255
+ if (!tattoo.collection || typeof tattoo.collection !== 'string') {
256
+ errors.push(`Invalid tattoo collection at index ${i}`);
257
+ }
258
+ if (!tattoo.overlay || typeof tattoo.overlay !== 'string') {
259
+ errors.push(`Invalid tattoo overlay at index ${i}`);
260
+ }
261
+ }
262
+ }
263
+ }
264
+ // Validate model
265
+ if (appearance.model !== undefined) {
266
+ if (typeof appearance.model !== 'string' || appearance.model.length === 0) {
267
+ errors.push('Invalid model (must be a non-empty string)');
268
+ }
269
+ }
270
+ return { valid: errors.length === 0, errors };
271
+ }
272
+ /**
273
+ * Applies server-side appearance natives (components and props only).
274
+ *
275
+ * @param ped - Ped entity handle
276
+ * @param appearance - Appearance data
277
+ */
278
+ applyServerSideAppearance(ped, appearance) {
279
+ // Apply components
280
+ if (appearance.components) {
281
+ for (const [componentId, data] of Object.entries(appearance.components)) {
282
+ this.pedAdapter.setComponentVariation(ped, parseInt(componentId, 10), data.drawable, data.texture, 2);
283
+ }
284
+ }
285
+ // Apply props
286
+ if (appearance.props) {
287
+ for (const [propId, data] of Object.entries(appearance.props)) {
288
+ if (data.drawable === -1) {
289
+ this.pedAdapter.clearProp(ped, parseInt(propId, 10));
290
+ }
291
+ else {
292
+ this.pedAdapter.setPropIndex(ped, parseInt(propId, 10), data.drawable, data.texture, true);
293
+ }
294
+ }
295
+ }
296
+ }
297
+ };
298
+ exports.AppearanceService = AppearanceService;
299
+ exports.AppearanceService = AppearanceService = __decorate([
300
+ (0, tsyringe_1.injectable)(),
301
+ __param(0, (0, tsyringe_1.inject)(IPedAppearanceServer_1.IPedAppearanceServer)),
302
+ __param(1, (0, tsyringe_1.inject)(IPlayerServer_1.IPlayerServer)),
303
+ __param(2, (0, tsyringe_1.inject)(INetTransport_1.INetTransport)),
304
+ __metadata("design:paramtypes", [IPedAppearanceServer_1.IPedAppearanceServer,
305
+ IPlayerServer_1.IPlayerServer,
306
+ INetTransport_1.INetTransport])
307
+ ], AppearanceService);
@@ -0,0 +1,33 @@
1
+ import { Server } from '../../..';
2
+ import { RGB } from '../../../kernel/utils';
3
+ /**
4
+ * Service for sending chat messages to players.
5
+ *
6
+ * @remarks
7
+ * This service emits framework chat events over the network.
8
+ */
9
+ export declare class ChatService {
10
+ /**
11
+ * Broadcast a chat message to all connected players.
12
+ *
13
+ * @param message - Message body.
14
+ * @param author - Author label shown in chat. Defaults to `SYSTEM`.
15
+ * @param color - Message color (RGB). Defaults to white.
16
+ */
17
+ broadcast(message: string, author?: string, color?: RGB): void;
18
+ /**
19
+ * Send a private chat message to a single player.
20
+ *
21
+ * @param player - Target player.
22
+ * @param message - Message body.
23
+ * @param author - Author label shown in chat. Defaults to `Private`.
24
+ * @param color - Message color (RGB).
25
+ */
26
+ sendPrivate(player: Server.Player, message: string, author?: string, color?: RGB): void;
27
+ /**
28
+ * Clear chat for a single player.
29
+ *
30
+ * @param player - Target player.
31
+ */
32
+ clearChat(player: Server.Player): void;
33
+ }
@@ -8,19 +8,45 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.ChatService = void 0;
10
10
  const tsyringe_1 = require("tsyringe");
11
+ /**
12
+ * Service for sending chat messages to players.
13
+ *
14
+ * @remarks
15
+ * This service emits framework chat events over the network.
16
+ */
11
17
  let ChatService = class ChatService {
18
+ /**
19
+ * Broadcast a chat message to all connected players.
20
+ *
21
+ * @param message - Message body.
22
+ * @param author - Author label shown in chat. Defaults to `SYSTEM`.
23
+ * @param color - Message color (RGB). Defaults to white.
24
+ */
12
25
  broadcast(message, author = 'SYSTEM', color = { r: 255, g: 255, b: 255 }) {
13
26
  emitNet('core:chat:message', -1, {
14
27
  args: [author, message],
15
28
  color: color,
16
29
  });
17
30
  }
31
+ /**
32
+ * Send a private chat message to a single player.
33
+ *
34
+ * @param player - Target player.
35
+ * @param message - Message body.
36
+ * @param author - Author label shown in chat. Defaults to `Private`.
37
+ * @param color - Message color (RGB).
38
+ */
18
39
  sendPrivate(player, message, author = 'Private', color = { r: 200, g: 200, b: 200 }) {
19
40
  emitNet('core:chat:addMessage', player.clientID, {
20
41
  args: [author, message],
21
42
  color: color,
22
43
  });
23
44
  }
45
+ /**
46
+ * Clear chat for a single player.
47
+ *
48
+ * @param player - Target player.
49
+ */
24
50
  clearChat(player) {
25
51
  emitNet('core:chat:clear', player.clientID);
26
52
  }
@@ -62,7 +62,7 @@ let ConfigService = class ConfigService {
62
62
  getNumber(key, defaultValue) {
63
63
  const value = GetConvar(this.PREFIX + key, String(defaultValue));
64
64
  const parsed = Number(value);
65
- return isNaN(parsed) ? defaultValue : parsed;
65
+ return Number.isNaN(parsed) ? defaultValue : parsed;
66
66
  }
67
67
  /**
68
68
  * Gets a boolean configuration value.
@@ -0,0 +1,49 @@
1
+ import { CommandMetadata } from '../../decorators/command';
2
+ import { Player } from '../../entities';
3
+ import { CommandExecutionPort, type CommandInfo } from '../ports/command-execution.port';
4
+ /**
5
+ * Local command execution service (CORE/STANDALONE modes).
6
+ *
7
+ * @remarks
8
+ * Maintains an in-memory registry of command handlers and executes them with full validation.
9
+ * Controllers declare commands via @Command decorator. During bootstrap, the framework
10
+ * scans and registers handlers via CommandProcessor.
11
+ *
12
+ * Execution pipeline:
13
+ * - Enforces authentication (secure by default unless marked @Public)
14
+ * - Validates arguments using Zod schemas (explicit or auto-generated)
15
+ * - Coerces argument types before invoking handlers
16
+ */
17
+ export declare class CommandService extends CommandExecutionPort {
18
+ private commands;
19
+ /**
20
+ * Registers a command handler.
21
+ *
22
+ * @param meta - Command metadata collected from the {@link Command} decorator.
23
+ * @param handler - The bound method to invoke.
24
+ */
25
+ register(meta: CommandMetadata, handler: Function): void;
26
+ /**
27
+ * Executes a registered command.
28
+ *
29
+ * @remarks
30
+ * **Security**: Commands require authentication by default unless marked with @Public().
31
+ * Unauthenticated attempts are blocked gracefully with player notification.
32
+ *
33
+ * Argument parsing behavior depends on the schema:
34
+ * - Zod object schema: maps raw args to parameter names.
35
+ * - Zod tuple schema: validates positional args.
36
+ * - No schema: attempts to generate a schema from parameter types.
37
+ *
38
+ * @param player - Player invoking the command.
39
+ * @param commandName - Command name (without the leading `/`).
40
+ * @param args - Raw argument list (strings).
41
+ *
42
+ * @throws AppError - If the command does not exist, the schema mismatches parameters, or validation fails.
43
+ */
44
+ execute(player: Player, commandName: string, args: string[]): Promise<any>;
45
+ /**
46
+ * Returns a list of all registered commands.
47
+ */
48
+ getAllCommands(): CommandInfo[];
49
+ }
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CommandService = void 0;
10
+ const tsyringe_1 = require("tsyringe");
11
+ const logger_1 = require("../../../../kernel/shared/logger");
12
+ const utils_1 = require("../../../../kernel/utils");
13
+ const command_validation_helper_1 = require("../../helpers/command-validation.helper");
14
+ const command_execution_port_1 = require("../ports/command-execution.port");
15
+ /**
16
+ * Local command execution service (CORE/STANDALONE modes).
17
+ *
18
+ * @remarks
19
+ * Maintains an in-memory registry of command handlers and executes them with full validation.
20
+ * Controllers declare commands via @Command decorator. During bootstrap, the framework
21
+ * scans and registers handlers via CommandProcessor.
22
+ *
23
+ * Execution pipeline:
24
+ * - Enforces authentication (secure by default unless marked @Public)
25
+ * - Validates arguments using Zod schemas (explicit or auto-generated)
26
+ * - Coerces argument types before invoking handlers
27
+ */
28
+ let CommandService = class CommandService extends command_execution_port_1.CommandExecutionPort {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.commands = new Map();
32
+ }
33
+ /**
34
+ * Registers a command handler.
35
+ *
36
+ * @param meta - Command metadata collected from the {@link Command} decorator.
37
+ * @param handler - The bound method to invoke.
38
+ */
39
+ register(meta, handler) {
40
+ var _a;
41
+ if (this.commands.has(meta.command.toLowerCase())) {
42
+ logger_1.loggers.command.error(`Command '${meta.command}' is already registered. Skipped`, {
43
+ command: meta.command,
44
+ });
45
+ }
46
+ this.commands.set(meta.command.toLowerCase(), {
47
+ meta,
48
+ handler,
49
+ isPublic: (_a = meta.isPublic) !== null && _a !== void 0 ? _a : false,
50
+ });
51
+ const publicFlag = meta.isPublic ? ' [Public]' : '';
52
+ const schemaFlag = meta.schema ? ' [Validated]' : '';
53
+ logger_1.loggers.command.debug(`Registered: /${meta.command}${publicFlag}${schemaFlag}`);
54
+ }
55
+ /**
56
+ * Executes a registered command.
57
+ *
58
+ * @remarks
59
+ * **Security**: Commands require authentication by default unless marked with @Public().
60
+ * Unauthenticated attempts are blocked gracefully with player notification.
61
+ *
62
+ * Argument parsing behavior depends on the schema:
63
+ * - Zod object schema: maps raw args to parameter names.
64
+ * - Zod tuple schema: validates positional args.
65
+ * - No schema: attempts to generate a schema from parameter types.
66
+ *
67
+ * @param player - Player invoking the command.
68
+ * @param commandName - Command name (without the leading `/`).
69
+ * @param args - Raw argument list (strings).
70
+ *
71
+ * @throws AppError - If the command does not exist, the schema mismatches parameters, or validation fails.
72
+ */
73
+ async execute(player, commandName, args) {
74
+ const entry = this.commands.get(commandName.toLowerCase());
75
+ if (!entry)
76
+ throw new utils_1.AppError('COMMAND:NOT_FOUND', `Command not found: ${commandName}`, 'client');
77
+ const { meta, handler, isPublic } = entry;
78
+ // ═══════════════════════════════════════════════════════════════
79
+ // SECURE BY DEFAULT: Require authentication unless @Public()
80
+ // ═══════════════════════════════════════════════════════════════
81
+ if (!isPublic) {
82
+ if (!player.accountID) {
83
+ logger_1.loggers.security.warn(`Unauthenticated command attempt blocked`, {
84
+ command: commandName,
85
+ clientId: player.clientID,
86
+ });
87
+ player.emit('core:auth:required', { command: commandName });
88
+ player.send('You must be authenticated to use this command', 'error');
89
+ return;
90
+ }
91
+ }
92
+ return await (0, command_validation_helper_1.validateAndExecuteCommand)(meta, player, args, handler);
93
+ }
94
+ /**
95
+ * Returns a list of all registered commands.
96
+ */
97
+ getAllCommands() {
98
+ return Array.from(this.commands.values()).map((c) => {
99
+ var _a, _b;
100
+ return ({
101
+ command: c.meta.command,
102
+ description: (_a = c.meta.description) !== null && _a !== void 0 ? _a : '',
103
+ usage: (_b = c.meta.usage) !== null && _b !== void 0 ? _b : '',
104
+ isPublic: c.isPublic,
105
+ });
106
+ });
107
+ }
108
+ };
109
+ exports.CommandService = CommandService;
110
+ exports.CommandService = CommandService = __decorate([
111
+ (0, tsyringe_1.injectable)()
112
+ ], CommandService);
@@ -1,30 +1,35 @@
1
- import type { UUIDTypes } from 'uuid';
2
- import { Player } from '../entities/player';
3
- /**
4
- * Type representing a linked account identifier. This come from your persistence layer
5
- * and is used to associate a Player session with their stored data.
6
- */
7
- export type LinkedID = string | UUIDTypes;
8
- export interface PlayerSession {
9
- clientID: number;
10
- accountID?: LinkedID;
11
- identifiers?: {
12
- license?: string;
13
- steam?: string;
14
- discord?: string;
15
- };
16
- meta: Record<string, unknown>;
17
- }
1
+ import { IPlayerInfo } from '../../../../adapters';
2
+ import { IEntityServer } from '../../../../adapters/contracts/IEntityServer';
3
+ import { INetTransport } from '../../../../adapters/contracts/INetTransport';
4
+ import { IPlayerServer } from '../../../../adapters/contracts/IPlayerServer';
5
+ import { Player } from '../../entities';
6
+ import { PlayerDirectoryPort } from '../ports/player-directory.port';
7
+ import { PlayerSessionLifecyclePort } from '../ports/player-session-lifecycle.port';
8
+ import { LinkedID } from '../types/linked-id';
9
+ import { PlayerSession } from '../types/player-session.object';
18
10
  /**
19
11
  * Service responsible for managing the lifecycle of player sessions.
20
12
  * It acts as the central registry for all connected players, mapping FiveM client IDs
21
13
  * to Core `Player` entities.
14
+ *
15
+ * @remarks
16
+ * This service is used as a singleton in the dependency container.
17
+ * It exposes the operations defined by {@link PlayerDirectoryPort} and {@link PlayerSessionLifecyclePort}.
22
18
  */
23
- export declare class PlayerService {
19
+ export declare class PlayerService implements PlayerDirectoryPort, PlayerSessionLifecyclePort {
20
+ private readonly playerInfo;
21
+ private readonly playerServer;
22
+ private readonly entityServer;
23
+ private readonly netTransport;
24
24
  /**
25
25
  * Internal map storing active player sessions indexed by their FiveM client ID (source).
26
26
  */
27
27
  private playersByClient;
28
+ /**
29
+ * Cached adapters bundle for Player instances
30
+ */
31
+ private readonly playerAdapters;
32
+ constructor(playerInfo: IPlayerInfo, playerServer: IPlayerServer, entityServer: IEntityServer, netTransport: INetTransport);
28
33
  /**
29
34
  * Initializes a new player session for a connecting client.
30
35
  *
@@ -54,21 +59,22 @@ export declare class PlayerService {
54
59
  *
55
60
  * @param clientID - The FiveM server ID of the player disconnecting.
56
61
  */
57
- unbindByClient(clientID: number): void;
62
+ unbind(clientID: number): void;
58
63
  /**
59
64
  * Retrieves the `Player` entity associated with a specific FiveM client ID.
60
65
  *
61
66
  * @param clientID - The FiveM server ID to look up.
62
67
  * @returns The `Player` instance if found, or `null` if the session does not exist.
63
68
  */
64
- getByClient(clientID: number): Player | null;
69
+ getByClient(clientID: number): Player | undefined;
70
+ getMany(clientIds: number[]): Player[];
65
71
  /**
66
72
  * Helper to retrieve the authenticated Account ID for a given client.
67
73
  *
68
74
  * @param clientID - The FiveM server ID to look up.
69
75
  * @returns The bound Account ID (string/UUID) if the player is logged in, or `null` otherwise.
70
76
  */
71
- getPlayerId(clientID: number): string | null;
77
+ getPlayerId(clientID: number): string | undefined;
72
78
  /**
73
79
  * Stores arbitrary metadata in the player's session.
74
80
  * Useful for storing transient state like 'isDead', 'job', 'dimension', etc.
@@ -86,11 +92,31 @@ export declare class PlayerService {
86
92
  * @param key - The metadata key to retrieve.
87
93
  * @returns The value cast to type `T`, or `undefined` if the key or player doesn't exist.
88
94
  */
89
- getMeta<T = unknown>(clientID: number, key: string): T | undefined;
95
+ getMeta<T = unknown>(clientID: number, key: string): Promise<T | undefined>;
90
96
  /**
91
97
  * Returns a list of all currently active `Player` entities.
92
98
  *
93
99
  * @returns An array containing all connected players managed by this service.
94
100
  */
95
101
  getAll(): Player[];
102
+ /**
103
+ * Retrieves a Player by their persistent account ID.
104
+ *
105
+ * @param accountId - The unique account identifier to search for.
106
+ * @returns The Player if found, or `undefined` if not online.
107
+ */
108
+ getByAccountId(accountId: string): Player | undefined;
109
+ /**
110
+ * Returns the current number of connected players.
111
+ *
112
+ * @returns Player count.
113
+ */
114
+ getPlayerCount(): number;
115
+ /**
116
+ * Checks if a player with the given account ID is currently online.
117
+ *
118
+ * @param accountId - The account identifier to check.
119
+ * @returns `true` if online, `false` otherwise.
120
+ */
121
+ isOnline(accountId: string): boolean;
96
122
  }