@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
@@ -12,39 +12,51 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ChatController = void 0;
13
13
  const controller_1 = require("../decorators/controller");
14
14
  const export_1 = require("../decorators/export");
15
- const services_1 = require("../services");
16
15
  const chat_service_1 = require("../services/chat.service");
16
+ const player_directory_port_1 = require("../services/ports/player-directory.port");
17
17
  let ChatController = class ChatController {
18
- constructor(chatService, playerService) {
18
+ constructor(chatService, playerDirectory) {
19
19
  this.chatService = chatService;
20
- this.playerService = playerService;
20
+ this.playerDirectory = playerDirectory;
21
21
  }
22
- apiBroadcast(message, author = 'SYSTEM', color = { r: 255, g: 255, b: 255 }) {
22
+ coreBroadcast(message, author = 'SYSTEM', color = { r: 255, g: 255, b: 255 }) {
23
23
  this.chatService.broadcast(message, author, color);
24
24
  }
25
- apiSendPrivate(targetId, message, author = 'Private') {
26
- const player = this.playerService.getByClient(targetId);
25
+ coreSendPrivate(targetId, message, author = 'Private') {
26
+ const player = this.playerDirectory.getByClient(targetId);
27
27
  if (!player) {
28
28
  throw new Error(`Player with client ID ${targetId} not found`);
29
29
  }
30
30
  this.chatService.sendPrivate(player, message, author);
31
31
  }
32
+ coreSendToGroupOfPlayers(targets, message, author = 'Private', color) {
33
+ const players = this.playerDirectory.getMany(targets);
34
+ for (let i = 0; i < players.length; i++) {
35
+ this.chatService.sendPrivate(players[i], message, author, color);
36
+ }
37
+ }
32
38
  };
33
39
  exports.ChatController = ChatController;
34
40
  __decorate([
35
- (0, export_1.Export)('core:broadcast'),
41
+ (0, export_1.Export)(),
36
42
  __metadata("design:type", Function),
37
43
  __metadata("design:paramtypes", [String, String, Object]),
38
44
  __metadata("design:returntype", void 0)
39
- ], ChatController.prototype, "apiBroadcast", null);
45
+ ], ChatController.prototype, "coreBroadcast", null);
40
46
  __decorate([
41
- (0, export_1.Export)('core:sendprivate'),
47
+ (0, export_1.Export)(),
42
48
  __metadata("design:type", Function),
43
49
  __metadata("design:paramtypes", [Number, String, String]),
44
50
  __metadata("design:returntype", void 0)
45
- ], ChatController.prototype, "apiSendPrivate", null);
51
+ ], ChatController.prototype, "coreSendPrivate", null);
52
+ __decorate([
53
+ (0, export_1.Export)(),
54
+ __metadata("design:type", Function),
55
+ __metadata("design:paramtypes", [Array, String, String, Object]),
56
+ __metadata("design:returntype", void 0)
57
+ ], ChatController.prototype, "coreSendToGroupOfPlayers", null);
46
58
  exports.ChatController = ChatController = __decorate([
47
59
  (0, controller_1.Controller)(),
48
60
  __metadata("design:paramtypes", [chat_service_1.ChatService,
49
- services_1.PlayerService])
61
+ player_directory_port_1.PlayerDirectoryPort])
50
62
  ], ChatController);
@@ -0,0 +1,74 @@
1
+ import { IEngineEvents } from '../../../adapters/contracts/IEngineEvents';
2
+ import { Player } from '../entities';
3
+ import { CommandExecutionPort, type CommandInfo } from '../services/ports/command-execution.port';
4
+ import { PlayerDirectoryPort } from '../services/ports/player-directory.port';
5
+ import { PrincipalPort } from '../services/ports/principal.port';
6
+ import { RateLimiterService } from '../services/rate-limiter.service';
7
+ import { CommandRegistrationDto, CoreCommandsExports } from '../types/core-exports';
8
+ /**
9
+ * Export controller for command system (CORE mode only).
10
+ *
11
+ * @remarks
12
+ * Exposes command registration and execution to RESOURCE mode instances.
13
+ * Maintains a registry of both local and remote commands, delegating
14
+ * remote command execution back to the owning resource via net events.
15
+ */
16
+ export declare class CommandExportController implements CoreCommandsExports {
17
+ private commandService;
18
+ private playerDirectory;
19
+ private principalPort;
20
+ private rateLimiter;
21
+ private engineEvents;
22
+ private remoteCommands;
23
+ constructor(commandService: CommandExecutionPort, playerDirectory: PlayerDirectoryPort, principalPort: PrincipalPort, rateLimiter: RateLimiterService, engineEvents: IEngineEvents);
24
+ /**
25
+ * Receives command execution requests from clients.
26
+ *
27
+ * @remarks
28
+ * This is the entry point for all command execution in CORE mode.
29
+ * Handles both local commands (registered in CORE) and remote commands
30
+ * (registered by RESOURCE mode instances).
31
+ */
32
+ onCommandReceived(player: Player, command: string, args: string[]): Promise<void>;
33
+ /**
34
+ * Registers a command from a RESOURCE with CORE.
35
+ *
36
+ * @remarks
37
+ * The command handler remains in the resource. CORE stores metadata
38
+ * and delegates execution back to the resource when invoked.
39
+ *
40
+ * Exported as: `exports[coreResourceName].registerCommand`
41
+ */
42
+ registerCommand(metadata: CommandRegistrationDto): void;
43
+ /**
44
+ * Executes a command (local or remote).
45
+ *
46
+ * @remarks
47
+ * If the command is registered locally in CORE, executes it directly.
48
+ * If it's a remote command, delegates to the owning resource via net event.
49
+ *
50
+ * Exported as: `exports[coreResourceName].executeCommand`
51
+ */
52
+ executeCommand(clientID: number, commandName: string, args: string[]): Promise<void>;
53
+ /**
54
+ * Returns all registered commands (local + remote).
55
+ *
56
+ * Exported as: `exports[coreResourceName].getAllCommands`
57
+ */
58
+ getAllCommands(): CommandInfo[];
59
+ /**
60
+ * Validates security decorators before delegating to RESOURCE.
61
+ *
62
+ * @remarks
63
+ * Validation order: @Guard → @Throttle → @RequiresState
64
+ * Throws on first failure to prevent execution.
65
+ *
66
+ * @param player - Player executing the command
67
+ * @param commandName - Command name (for rate limit key)
68
+ * @param security - Security metadata from command decorators
69
+ *
70
+ * @throws AppError - If @Guard or @RequiresState validation fails
71
+ * @throws SecurityError - If @Throttle rate limit is exceeded
72
+ */
73
+ private validateSecurity;
74
+ }
@@ -0,0 +1,260 @@
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.CommandExportController = void 0;
16
+ const tsyringe_1 = require("tsyringe");
17
+ const IEngineEvents_1 = require("../../../adapters/contracts/IEngineEvents");
18
+ const logger_1 = require("../../../kernel/shared/logger");
19
+ const utils_1 = require("../../../kernel/utils");
20
+ const security_error_1 = require("../../../kernel/utils/error/security.error");
21
+ const decorators_1 = require("../decorators");
22
+ const onNet_1 = require("../decorators/onNet");
23
+ const entities_1 = require("../entities");
24
+ const command_execution_port_1 = require("../services/ports/command-execution.port");
25
+ const player_directory_port_1 = require("../services/ports/player-directory.port");
26
+ const principal_port_1 = require("../services/ports/principal.port");
27
+ const rate_limiter_service_1 = require("../services/rate-limiter.service");
28
+ /**
29
+ * Export controller for command system (CORE mode only).
30
+ *
31
+ * @remarks
32
+ * Exposes command registration and execution to RESOURCE mode instances.
33
+ * Maintains a registry of both local and remote commands, delegating
34
+ * remote command execution back to the owning resource via net events.
35
+ */
36
+ let CommandExportController = class CommandExportController {
37
+ constructor(commandService, playerDirectory, principalPort, rateLimiter, engineEvents) {
38
+ this.commandService = commandService;
39
+ this.playerDirectory = playerDirectory;
40
+ this.principalPort = principalPort;
41
+ this.rateLimiter = rateLimiter;
42
+ this.engineEvents = engineEvents;
43
+ this.remoteCommands = new Map();
44
+ }
45
+ // ═══════════════════════════════════════════════════════════════
46
+ // Network Event Handler (receives commands from clients)
47
+ // ═══════════════════════════════════════════════════════════════
48
+ /**
49
+ * Receives command execution requests from clients.
50
+ *
51
+ * @remarks
52
+ * This is the entry point for all command execution in CORE mode.
53
+ * Handles both local commands (registered in CORE) and remote commands
54
+ * (registered by RESOURCE mode instances).
55
+ */
56
+ async onCommandReceived(player, command, args) {
57
+ try {
58
+ if (command.startsWith('/'))
59
+ command = command.slice(1);
60
+ // Basic input validation
61
+ if (args.length > 10 || !/^[a-zA-Z0-9:_-]+$/.test(command)) {
62
+ logger_1.loggers.command.warn(`Rejected suspicious command: ${command}`, {
63
+ playerId: player.clientID,
64
+ playerName: player.name,
65
+ });
66
+ return;
67
+ }
68
+ logger_1.loggers.command.trace(`Received: /${command}`, {
69
+ playerId: player.clientID,
70
+ playerName: player.name,
71
+ });
72
+ // Use unified execution that handles both local and remote commands
73
+ await this.executeCommand(player.clientID, command, args);
74
+ }
75
+ catch (error) {
76
+ if (error instanceof utils_1.AppError) {
77
+ if (error.code === 'GAME:BAD_REQUEST' || error.code === 'COMMAND:NOT_FOUND') {
78
+ player.send(error.message, 'error');
79
+ }
80
+ else {
81
+ player.send('An error occurred while executing the command', 'error');
82
+ }
83
+ logger_1.loggers.command.error(`Execution failed: /${command}`, { playerId: player.clientID }, error);
84
+ }
85
+ else if (error instanceof security_error_1.SecurityError) {
86
+ player.send(error.message, 'error');
87
+ logger_1.loggers.command.warn(`Security error: /${command}`, {
88
+ playerId: player.clientID,
89
+ error: error.message,
90
+ });
91
+ }
92
+ }
93
+ }
94
+ // ═══════════════════════════════════════════════════════════════
95
+ // Command Registration (for RESOURCE mode)
96
+ // ═══════════════════════════════════════════════════════════════
97
+ /**
98
+ * Registers a command from a RESOURCE with CORE.
99
+ *
100
+ * @remarks
101
+ * The command handler remains in the resource. CORE stores metadata
102
+ * and delegates execution back to the resource when invoked.
103
+ *
104
+ * Exported as: `exports[coreResourceName].registerCommand`
105
+ */
106
+ registerCommand(metadata) {
107
+ var _a;
108
+ const commandKey = metadata.command.toLowerCase();
109
+ if (this.remoteCommands.has(commandKey)) {
110
+ logger_1.loggers.command.warn(`Remote command '${metadata.command}' already registered`, {
111
+ command: metadata.command,
112
+ existingResource: (_a = this.remoteCommands.get(commandKey)) === null || _a === void 0 ? void 0 : _a.resourceName,
113
+ newResource: metadata.resourceName,
114
+ });
115
+ return;
116
+ }
117
+ this.remoteCommands.set(commandKey, {
118
+ metadata,
119
+ resourceName: metadata.resourceName,
120
+ });
121
+ const publicFlag = metadata.isPublic ? ' [Public]' : '';
122
+ logger_1.loggers.command.debug(`Registered remote command: /${metadata.command}${publicFlag} (owner: ${metadata.resourceName})`);
123
+ }
124
+ /**
125
+ * Executes a command (local or remote).
126
+ *
127
+ * @remarks
128
+ * If the command is registered locally in CORE, executes it directly.
129
+ * If it's a remote command, delegates to the owning resource via net event.
130
+ *
131
+ * Exported as: `exports[coreResourceName].executeCommand`
132
+ */
133
+ async executeCommand(clientID, commandName, args) {
134
+ const player = this.playerDirectory.getByClient(clientID);
135
+ if (!player) {
136
+ throw new utils_1.AppError('GAME:PLAYER_NOT_FOUND', `Player not found: ${clientID}`, 'core');
137
+ }
138
+ const commandKey = commandName.toLowerCase();
139
+ const remoteEntry = this.remoteCommands.get(commandKey);
140
+ if (remoteEntry) {
141
+ // Validate security BEFORE delegating to resource
142
+ await this.validateSecurity(player, commandName, remoteEntry.metadata.security);
143
+ // Delegate to resource via local event (server-to-server, not network)
144
+ const eventName = `opencore:command:execute:${remoteEntry.resourceName}`;
145
+ this.engineEvents.emit(eventName, clientID, commandName, args);
146
+ logger_1.loggers.command.debug(`Delegated remote command execution to ${remoteEntry.resourceName}`, {
147
+ command: commandName,
148
+ clientID,
149
+ resource: remoteEntry.resourceName,
150
+ });
151
+ return;
152
+ }
153
+ // Execute local command
154
+ return await this.commandService.execute(player, commandName, args);
155
+ }
156
+ /**
157
+ * Returns all registered commands (local + remote).
158
+ *
159
+ * Exported as: `exports[coreResourceName].getAllCommands`
160
+ */
161
+ getAllCommands() {
162
+ const localCommands = this.commandService.getAllCommands();
163
+ const remoteCommandsInfo = Array.from(this.remoteCommands.values()).map((entry) => ({
164
+ command: entry.metadata.command,
165
+ description: entry.metadata.description,
166
+ usage: entry.metadata.usage,
167
+ isPublic: entry.metadata.isPublic,
168
+ }));
169
+ return [...localCommands, ...remoteCommandsInfo];
170
+ }
171
+ /**
172
+ * Validates security decorators before delegating to RESOURCE.
173
+ *
174
+ * @remarks
175
+ * Validation order: @Guard → @Throttle → @RequiresState
176
+ * Throws on first failure to prevent execution.
177
+ *
178
+ * @param player - Player executing the command
179
+ * @param commandName - Command name (for rate limit key)
180
+ * @param security - Security metadata from command decorators
181
+ *
182
+ * @throws AppError - If @Guard or @RequiresState validation fails
183
+ * @throws SecurityError - If @Throttle rate limit is exceeded
184
+ */
185
+ async validateSecurity(player, commandName, security) {
186
+ if (!security)
187
+ return;
188
+ // 1. Validate @Guard (rank/permission)
189
+ if (security.guard) {
190
+ await this.principalPort.enforce(player, security.guard);
191
+ }
192
+ // 2. Validate @Throttle (rate limiting)
193
+ if (security.throttle) {
194
+ const { limit, windowMs, onExceed, message } = security.throttle;
195
+ const rateLimitKey = `${player.clientID}:remote:${commandName}`;
196
+ const allowed = this.rateLimiter.checkLimit(rateLimitKey, limit, windowMs);
197
+ if (!allowed) {
198
+ const errorMessage = message || `Rate limit exceeded for command: ${commandName}`;
199
+ if (onExceed === 'KICK') {
200
+ DropPlayer(player.clientID.toString(), errorMessage);
201
+ }
202
+ throw new security_error_1.SecurityError(onExceed || 'LOG', errorMessage, { clientID: player.clientID });
203
+ }
204
+ }
205
+ // 3. Validate @RequiresState (player state)
206
+ if (security.requiresState) {
207
+ const { has, missing, errorMessage } = security.requiresState;
208
+ if (has) {
209
+ for (const state of has) {
210
+ if (!player.hasState(state)) {
211
+ throw new utils_1.AppError('GAME:INVALID_STATE', errorMessage || `Command requires state: ${state}`, 'core');
212
+ }
213
+ }
214
+ }
215
+ if (missing) {
216
+ for (const state of missing) {
217
+ if (player.hasState(state)) {
218
+ throw new utils_1.AppError('GAME:INVALID_STATE', errorMessage || `Command cannot be used in state: ${state}`, 'core');
219
+ }
220
+ }
221
+ }
222
+ }
223
+ }
224
+ };
225
+ exports.CommandExportController = CommandExportController;
226
+ __decorate([
227
+ (0, decorators_1.Public)(),
228
+ (0, onNet_1.OnNet)('core:execute-command'),
229
+ __metadata("design:type", Function),
230
+ __metadata("design:paramtypes", [entities_1.Player, String, Array]),
231
+ __metadata("design:returntype", Promise)
232
+ ], CommandExportController.prototype, "onCommandReceived", null);
233
+ __decorate([
234
+ (0, decorators_1.Export)(),
235
+ __metadata("design:type", Function),
236
+ __metadata("design:paramtypes", [Object]),
237
+ __metadata("design:returntype", void 0)
238
+ ], CommandExportController.prototype, "registerCommand", null);
239
+ __decorate([
240
+ (0, decorators_1.Export)(),
241
+ __metadata("design:type", Function),
242
+ __metadata("design:paramtypes", [Number, String, Array]),
243
+ __metadata("design:returntype", Promise)
244
+ ], CommandExportController.prototype, "executeCommand", null);
245
+ __decorate([
246
+ (0, decorators_1.Export)(),
247
+ __metadata("design:type", Function),
248
+ __metadata("design:paramtypes", []),
249
+ __metadata("design:returntype", Array)
250
+ ], CommandExportController.prototype, "getAllCommands", null);
251
+ exports.CommandExportController = CommandExportController = __decorate([
252
+ (0, tsyringe_1.injectable)(),
253
+ (0, decorators_1.Controller)(),
254
+ __param(4, (0, tsyringe_1.inject)(IEngineEvents_1.IEngineEvents)),
255
+ __metadata("design:paramtypes", [command_execution_port_1.CommandExecutionPort,
256
+ player_directory_port_1.PlayerDirectoryPort,
257
+ principal_port_1.PrincipalPort,
258
+ rate_limiter_service_1.RateLimiterService,
259
+ IEngineEvents_1.IEngineEvents])
260
+ ], CommandExportController);
@@ -0,0 +1,15 @@
1
+ import { CommandExecutionPort } from '../services/ports/command-execution.port'
2
+ import { Player } from '../entities'
3
+ /**
4
+ * Network controller for command execution.
5
+ *
6
+ * @remarks
7
+ * Receives command execution requests from clients and delegates to CommandExecutionPort.
8
+ * In CORE mode, executes commands directly or delegates to owning resource.
9
+ * In RESOURCE mode, delegates to CORE via exports.
10
+ */
11
+ export declare class CommandNetworkController {
12
+ private readonly commandService
13
+ constructor(commandService: CommandExecutionPort)
14
+ onCommandReceived(player: Player, command: string, args: string[]): Promise<void>
15
+ }
@@ -0,0 +1,100 @@
1
+ 'use strict'
2
+ var __decorate =
3
+ (this && this.__decorate) ||
4
+ function (decorators, target, key, desc) {
5
+ var c = arguments.length,
6
+ r =
7
+ c < 3
8
+ ? target
9
+ : desc === null
10
+ ? (desc = Object.getOwnPropertyDescriptor(target, key))
11
+ : desc,
12
+ d
13
+ if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
14
+ r = Reflect.decorate(decorators, target, key, desc)
15
+ else
16
+ for (var i = decorators.length - 1; i >= 0; i--)
17
+ if ((d = decorators[i]))
18
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r
19
+ return c > 3 && r && Object.defineProperty(target, key, r), r
20
+ }
21
+ var __metadata =
22
+ (this && this.__metadata) ||
23
+ ((k, v) => {
24
+ if (typeof Reflect === 'object' && typeof Reflect.metadata === 'function')
25
+ return Reflect.metadata(k, v)
26
+ })
27
+ Object.defineProperty(exports, '__esModule', { value: true })
28
+ exports.CommandNetworkController = void 0
29
+ const onNet_1 = require('../decorators/onNet')
30
+ const command_execution_port_1 = require('../services/ports/command-execution.port')
31
+ const entities_1 = require('../entities')
32
+ const decorators_1 = require('../decorators')
33
+ const logger_1 = require('../../../kernel/shared/logger')
34
+ const utils_1 = require('../../../kernel/utils')
35
+ /**
36
+ * Network controller for command execution.
37
+ *
38
+ * @remarks
39
+ * Receives command execution requests from clients and delegates to CommandExecutionPort.
40
+ * In CORE mode, executes commands directly or delegates to owning resource.
41
+ * In RESOURCE mode, delegates to CORE via exports.
42
+ */
43
+ let CommandNetworkController = class CommandNetworkController {
44
+ constructor(commandService) {
45
+ this.commandService = commandService
46
+ }
47
+ async onCommandReceived(player, command, args) {
48
+ try {
49
+ if (command.startsWith('/')) command = command.slice(1)
50
+ if (!player.clientID || player.clientID === null || player.clientID === undefined) {
51
+ console.log('DEBUG; Player entity not received in core:execute-command')
52
+ }
53
+ if (args.length > 10 || !/^[a-zA-Z0-9:_-]+$/.test(command)) {
54
+ logger_1.loggers.command.warn(`Rejected suspicious command: ${command}`, {
55
+ playerId: player.clientID,
56
+ playerName: player.name,
57
+ })
58
+ return
59
+ }
60
+ logger_1.loggers.command.trace(`Received: /${command}`, {
61
+ playerId: player.clientID,
62
+ playerName: player.name,
63
+ })
64
+ await this.commandService.execute(player, command, args)
65
+ } catch (error) {
66
+ if (error instanceof utils_1.AppError) {
67
+ if (error.code === 'GAME:BAD_REQUEST' || error.code === 'COMMAND:NOT_FOUND')
68
+ player.send(error.message, 'error')
69
+ else player.send('An error occurred while executing the command', 'error')
70
+ logger_1.loggers.command.error(
71
+ `Execution failed: /${command}`,
72
+ {
73
+ playerId: player.clientID,
74
+ },
75
+ error,
76
+ )
77
+ }
78
+ }
79
+ }
80
+ }
81
+ exports.CommandNetworkController = CommandNetworkController
82
+ __decorate(
83
+ [
84
+ (0, decorators_1.Public)(),
85
+ (0, onNet_1.OnNet)('core:execute-command'),
86
+ __metadata('design:type', Function),
87
+ __metadata('design:paramtypes', [entities_1.Player, String, Array]),
88
+ __metadata('design:returntype', Promise),
89
+ ],
90
+ CommandNetworkController.prototype,
91
+ 'onCommandReceived',
92
+ null,
93
+ )
94
+ exports.CommandNetworkController = CommandNetworkController = __decorate(
95
+ [
96
+ (0, decorators_1.Controller)(),
97
+ __metadata('design:paramtypes', [command_execution_port_1.CommandExecutionPort]),
98
+ ],
99
+ CommandNetworkController,
100
+ )
@@ -0,0 +1,29 @@
1
+ import { PlayerDirectoryPort } from '../services/ports/player-directory.port';
2
+ import { CorePlayerExports, SerializedPlayerData } from '../types/core-exports';
3
+ /**
4
+ * Exports player directory functionality for RESOURCE mode access.
5
+ *
6
+ * @remarks
7
+ * This controller provides a complete API for remote resources to:
8
+ * - Query player data (by client ID, account ID, or all players)
9
+ * - Check online status and player count
10
+ * - Read/write session metadata
11
+ * - Manage player state flags
12
+ */
13
+ export declare class PlayerExportController implements CorePlayerExports {
14
+ private playerService;
15
+ constructor(playerService: PlayerDirectoryPort);
16
+ getPlayerId(clientID: number): string | undefined;
17
+ getPlayerData(clientID: number): SerializedPlayerData | null;
18
+ getManyData(clientIds: number[]): SerializedPlayerData[];
19
+ getAllPlayersData(): SerializedPlayerData[];
20
+ getPlayerByAccountId(accountId: string): SerializedPlayerData | null;
21
+ getPlayerCount(): number;
22
+ isPlayerOnline(accountId: string): boolean;
23
+ getPlayerMeta(clientID: number, key: string): Promise<any>;
24
+ setPlayerMeta(clientID: number, key: string, value: any): void;
25
+ getPlayerStates(clientID: number): string[];
26
+ hasPlayerState(clientID: number, state: string): boolean;
27
+ addPlayerState(clientID: number, state: string): void;
28
+ removePlayerState(clientID: number, state: string): void;
29
+ }