@open-core/framework 0.1.0-alpha.1 → 0.2.1-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 +98 -98
  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
@@ -8,7 +8,7 @@
8
8
  * When FiveM or the target environment supports native worker threads,
9
9
  * this script can be used as the worker entry point.
10
10
  */
11
- import type { WorkerMessage, WorkerResponse } from './types';
11
+ import { WorkerMessage, WorkerResponse } from './types';
12
12
  /**
13
13
  * Execute a compute function from its string body
14
14
  */
@@ -1,4 +1,4 @@
1
- import type { Player } from '../entities/player';
1
+ import { Player } from '../entities/player';
2
2
  /**
3
3
  * Internal service that orchestrates player data persistence.
4
4
  *
@@ -8,9 +8,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.PlayerPersistenceService = void 0;
10
10
  const tsyringe_1 = require("tsyringe");
11
- const container_1 = require("../container");
12
- const persistence_1 = require("../templates/persistence");
13
- const logger_1 = require("../../shared/logger");
11
+ const container_1 = require("../../../kernel/di/container");
12
+ const logger_1 = require("../../../kernel/shared/logger");
13
+ const contracts_1 = require("../contracts");
14
14
  /**
15
15
  * Internal service that orchestrates player data persistence.
16
16
  *
@@ -31,8 +31,8 @@ let PlayerPersistenceService = class PlayerPersistenceService {
31
31
  if (this.initialized)
32
32
  return;
33
33
  try {
34
- if (container_1.di.isRegistered(persistence_1.PlayerPersistenceContract)) {
35
- const provider = container_1.di.resolve(persistence_1.PlayerPersistenceContract);
34
+ if (container_1.di.isRegistered(contracts_1.PlayerPersistenceContract)) {
35
+ const provider = container_1.di.resolve(contracts_1.PlayerPersistenceContract);
36
36
  this.provider = provider;
37
37
  logger_1.loggers.bootstrap.info('Player Persistence Provider initialized', {
38
38
  autoSaveEnabled: provider.config.autoSaveEnabled,
@@ -115,9 +115,12 @@ let PlayerPersistenceService = class PlayerPersistenceService {
115
115
  async saveAllPlayers(players) {
116
116
  if (!this.provider)
117
117
  return;
118
- const savePromises = players.map((player) => this.provider.onSessionSave(player).catch((error) => {
119
- logger_1.loggers.session.error('Failed to save player data during bulk save', { clientId: player.clientID }, error);
120
- }));
118
+ const savePromises = players.map((player) => {
119
+ var _a;
120
+ return (_a = this.provider) === null || _a === void 0 ? void 0 : _a.onSessionSave(player).catch((error) => {
121
+ logger_1.loggers.session.error('Failed to save player data during bulk save', { clientId: player.clientID }, error);
122
+ });
123
+ });
121
124
  await Promise.all(savePromises);
122
125
  logger_1.loggers.session.info('Bulk player save completed', { playerCount: players.length });
123
126
  }
@@ -129,8 +132,9 @@ let PlayerPersistenceService = class PlayerPersistenceService {
129
132
  return;
130
133
  const intervalMs = this.provider.config.autoSaveIntervalMs;
131
134
  const interval = setInterval(async () => {
135
+ var _a;
132
136
  try {
133
- await this.provider.onAutoSave(player);
137
+ await ((_a = this.provider) === null || _a === void 0 ? void 0 : _a.onAutoSave(player));
134
138
  logger_1.loggers.session.debug('Player auto-save completed', { clientId: player.clientID });
135
139
  }
136
140
  catch (error) {
@@ -0,0 +1,41 @@
1
+ import { CommandMetadata } from '../../decorators/command';
2
+ import { Player } from '../../entities';
3
+ /**
4
+ * Command information returned by getAllCommands.
5
+ */
6
+ export interface CommandInfo {
7
+ command: string;
8
+ description?: string;
9
+ usage?: string;
10
+ isPublic: boolean;
11
+ }
12
+ /**
13
+ * Abstract port for command registration and execution.
14
+ *
15
+ * @remarks
16
+ * This port provides mode-agnostic access to the command system.
17
+ * Implementations:
18
+ * - CommandService (local): CORE/STANDALONE modes maintain command registry locally
19
+ * - RemoteCommandService (remote): RESOURCE mode delegates to CORE via exports
20
+ */
21
+ export declare abstract class CommandExecutionPort {
22
+ /**
23
+ * Registers a command handler.
24
+ *
25
+ * @param metadata - Command metadata from decorator
26
+ * @param handler - Bound method to invoke when command is executed
27
+ */
28
+ abstract register(metadata: CommandMetadata, handler: Function): void;
29
+ /**
30
+ * Executes a registered command.
31
+ *
32
+ * @param player - Player invoking the command
33
+ * @param commandName - Command name (without leading slash)
34
+ * @param args - Raw argument strings
35
+ */
36
+ abstract execute(player: Player, commandName: string, args: string[]): Promise<void>;
37
+ /**
38
+ * Returns all registered commands.
39
+ */
40
+ abstract getAllCommands(): CommandInfo[];
41
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommandExecutionPort = void 0;
4
+ /**
5
+ * Abstract port for command registration and execution.
6
+ *
7
+ * @remarks
8
+ * This port provides mode-agnostic access to the command system.
9
+ * Implementations:
10
+ * - CommandService (local): CORE/STANDALONE modes maintain command registry locally
11
+ * - RemoteCommandService (remote): RESOURCE mode delegates to CORE via exports
12
+ */
13
+ class CommandExecutionPort {
14
+ }
15
+ exports.CommandExecutionPort = CommandExecutionPort;
@@ -0,0 +1,107 @@
1
+ import { Player } from '../../entities';
2
+ /**
3
+ * Core port that provides access to active player sessions.
4
+ *
5
+ * @remarks
6
+ * This port defines a framework-owned boundary for querying and managing player-related data
7
+ * regardless of the current runtime mode (CORE, RESOURCE, etc.).
8
+ *
9
+ * Implementations of this port are responsible for resolving player information
10
+ * from the authoritative source (local session store, remote core exports, etc.).
11
+ *
12
+ * Consumers should treat returned {@link Player} instances as runtime representations
13
+ * of connected clients, not as persistent domain models.
14
+ *
15
+ * **Mode Differences:**
16
+ * - **CORE/STANDALONE**: Data is local and authoritative
17
+ * - **RESOURCE**: Data is fetched from CORE via exports
18
+ */
19
+ export declare abstract class PlayerDirectoryPort {
20
+ /**
21
+ * Returns the {@link Player} associated with a given FiveM client ID.
22
+ *
23
+ * @param clientID - The FiveM server client ID (`source`).
24
+ * @returns The corresponding {@link Player} instance, or `undefined` if the player is not connected.
25
+ */
26
+ abstract getByClient(clientID: number): Player | undefined;
27
+ /**
28
+ * Returns a group of {@link Player} associated with a given fivem clients ids
29
+ *
30
+ * @param clientIds The fivem server client ID (`source`)
31
+ */
32
+ abstract getMany(clientIds: number[]): Player[];
33
+ /**
34
+ * Returns all currently connected players.
35
+ *
36
+ * @returns An array of {@link Player} instances representing all active clients.
37
+ */
38
+ abstract getAll(): Player[];
39
+ /**
40
+ * Returns the persistent account identifier associated with a client.
41
+ *
42
+ * @remarks
43
+ * The returned identifier is typically assigned after authentication and may be
44
+ * `undefined` if the player has not completed the login or character selection flow.
45
+ *
46
+ * @param clientID - The FiveM server client ID (`source`).
47
+ * @returns The linked account ID, or `undefined` if none is associated.
48
+ */
49
+ abstract getPlayerId(clientID: number): string | undefined;
50
+ /**
51
+ * Retrieves a metadata value associated with a player session.
52
+ *
53
+ * @remarks
54
+ * Metadata values are transient and scoped to the current session.
55
+ * Implementations may resolve this data locally or delegate to the core runtime.
56
+ *
57
+ * @typeParam T - The expected type of the stored value.
58
+ * @param clientID - The FiveM server client ID (`source`).
59
+ * @param key - The metadata key to retrieve.
60
+ * @returns The stored value, or `undefined` if the key does not exist.
61
+ */
62
+ abstract getMeta<T = unknown>(clientID: number, key: string): Promise<T | undefined>;
63
+ /**
64
+ * Stores a metadata value in the player session.
65
+ *
66
+ * @remarks
67
+ * Metadata is intended for transient runtime state such as flags, gameplay context,
68
+ * or temporary attributes. It is not persisted across reconnects.
69
+ *
70
+ * @param clientID - The FiveM server client ID (`source`).
71
+ * @param key - The metadata key to store.
72
+ * @param value - The value to associate with the given key.
73
+ */
74
+ abstract setMeta(clientID: number, key: string, value: unknown): void;
75
+ /**
76
+ * Returns the {@link Player} associated with a persistent account ID.
77
+ *
78
+ * @remarks
79
+ * Searches all connected players for one with the matching accountID.
80
+ * Returns `undefined` if no player with that account is currently online.
81
+ *
82
+ * @param accountId - The persistent account identifier.
83
+ * @returns The corresponding {@link Player} instance, or `undefined` if not online.
84
+ */
85
+ getByAccountId?(accountId: string): Player | undefined;
86
+ /**
87
+ * Returns the current number of connected players.
88
+ *
89
+ * @remarks
90
+ * More efficient than `getAll().length` for implementations that
91
+ * can provide a count without fetching all player data.
92
+ *
93
+ * @returns The number of currently connected players.
94
+ */
95
+ getPlayerCount?(): number;
96
+ /**
97
+ * Checks if a player with the given account ID is currently online.
98
+ *
99
+ * @remarks
100
+ * More efficient than `getByAccountId() !== undefined` for implementations
101
+ * that can check presence without fetching full player data.
102
+ *
103
+ * @param accountId - The persistent account identifier.
104
+ * @returns `true` if the player is online, `false` otherwise.
105
+ */
106
+ isOnline?(accountId: string): boolean;
107
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlayerDirectoryPort = void 0;
4
+ /**
5
+ * Core port that provides access to active player sessions.
6
+ *
7
+ * @remarks
8
+ * This port defines a framework-owned boundary for querying and managing player-related data
9
+ * regardless of the current runtime mode (CORE, RESOURCE, etc.).
10
+ *
11
+ * Implementations of this port are responsible for resolving player information
12
+ * from the authoritative source (local session store, remote core exports, etc.).
13
+ *
14
+ * Consumers should treat returned {@link Player} instances as runtime representations
15
+ * of connected clients, not as persistent domain models.
16
+ *
17
+ * **Mode Differences:**
18
+ * - **CORE/STANDALONE**: Data is local and authoritative
19
+ * - **RESOURCE**: Data is fetched from CORE via exports
20
+ */
21
+ class PlayerDirectoryPort {
22
+ }
23
+ exports.PlayerDirectoryPort = PlayerDirectoryPort;
@@ -0,0 +1,49 @@
1
+ import { Player } from '../../entities';
2
+ import { LinkedID } from '../types/linked-id';
3
+ import { PlayerSession } from '../types/player-session.object';
4
+ /**
5
+ * Core port responsible for managing the lifecycle of player sessions.
6
+ *
7
+ * @remarks
8
+ * This port defines the authoritative boundary for creating, linking, and
9
+ * destroying player sessions within the framework.
10
+ *
11
+ * Implementations of this port own the session state and are expected to be
12
+ * invoked in response to connection, authentication, and disconnection events.
13
+ */
14
+ export declare abstract class PlayerSessionLifecyclePort {
15
+ /**
16
+ * Creates and binds a new player session to a connected client.
17
+ *
18
+ * @remarks
19
+ * This method is typically called when a player joins the server or completes
20
+ * the initial handshake phase. The returned {@link Player} represents the
21
+ * runtime session associated with the client.
22
+ *
23
+ * @param clientID - The FiveM server client ID (`source`).
24
+ * @param identifiers - Optional platform identifiers (license, steam, etc.).
25
+ * @returns The newly created {@link Player} instance.
26
+ */
27
+ abstract bind(clientID: number, identifiers?: PlayerSession['identifiers']): Player;
28
+ /**
29
+ * Terminates and removes the player session associated with a client.
30
+ *
31
+ * @remarks
32
+ * This method should be called when the client disconnects to ensure
33
+ * session state is properly cleaned up and memory is released.
34
+ *
35
+ * @param clientID - The FiveM server client ID (`source`).
36
+ */
37
+ abstract unbind(clientID: number): void;
38
+ /**
39
+ * Links an authenticated account to an existing player session.
40
+ *
41
+ * @remarks
42
+ * This method is typically invoked after successful authentication or
43
+ * character selection to associate persistent data with the active session.
44
+ *
45
+ * @param clientID - The FiveM server client ID (`source`).
46
+ * @param accountID - The persistent account identifier.
47
+ */
48
+ abstract linkAccount(clientID: number, accountID: LinkedID): void;
49
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlayerSessionLifecyclePort = void 0;
4
+ /**
5
+ * Core port responsible for managing the lifecycle of player sessions.
6
+ *
7
+ * @remarks
8
+ * This port defines the authoritative boundary for creating, linking, and
9
+ * destroying player sessions within the framework.
10
+ *
11
+ * Implementations of this port own the session state and are expected to be
12
+ * invoked in response to connection, authentication, and disconnection events.
13
+ */
14
+ class PlayerSessionLifecyclePort {
15
+ }
16
+ exports.PlayerSessionLifecyclePort = PlayerSessionLifecyclePort;
@@ -0,0 +1,149 @@
1
+ import { Principal } from '../../contracts/security/permission.types';
2
+ import { GuardOptions } from '../../decorators/guard';
3
+ import { Player } from '../../entities';
4
+ /**
5
+ * Core port that provides access to player authorization and permissions.
6
+ *
7
+ * @remarks
8
+ * This port defines a framework-owned boundary for querying permission-related data
9
+ * regardless of the current runtime mode (CORE, RESOURCE, etc.).
10
+ *
11
+ * Implementations of this port are responsible for resolving permission information
12
+ * from the authoritative source (local provider, remote core exports, etc.).
13
+ *
14
+ * **Mode Differences:**
15
+ * - **CORE/STANDALONE**: Uses the user-provided PrincipalProviderContract directly
16
+ * - **RESOURCE**: Delegates to CORE via exports
17
+ *
18
+ * **Usage:**
19
+ * ```typescript
20
+ * @injectable()
21
+ * class MyService {
22
+ * constructor(private principal: PrincipalPort) {}
23
+ *
24
+ * async canBan(player: Player): Promise<boolean> {
25
+ * return await this.principal.hasPermission(player, 'admin.ban')
26
+ * }
27
+ * }
28
+ * ```
29
+ */
30
+ export declare abstract class PrincipalPort {
31
+ /**
32
+ * Gets the full Principal object for a player.
33
+ *
34
+ * @param player - The player entity
35
+ * @returns Principal data or null if not authenticated
36
+ */
37
+ abstract getPrincipal(player: Player): Promise<Principal | null>;
38
+ /**
39
+ * Gets Principal by account ID (works for offline players too).
40
+ *
41
+ * @param accountId - Database account identifier
42
+ * @returns Principal data or null
43
+ */
44
+ abstract getPrincipalByAccountId(accountId: string): Promise<Principal | null>;
45
+ /**
46
+ * Forces a refresh of the player's permissions from persistence.
47
+ *
48
+ * @remarks
49
+ * Use this after promoting/demoting a player while they're online.
50
+ *
51
+ * @param player - The player to refresh
52
+ */
53
+ abstract refreshPrincipal(player: Player): Promise<void>;
54
+ /**
55
+ * Checks if player has a specific permission.
56
+ *
57
+ * @remarks
58
+ * Supports wildcard '*' permission for super-admin access.
59
+ *
60
+ * @param player - The player entity
61
+ * @param permission - Permission string to check
62
+ * @returns True if player has permission
63
+ */
64
+ abstract hasPermission(player: Player, permission: string): Promise<boolean>;
65
+ /**
66
+ * Checks if player has at least the required rank.
67
+ *
68
+ * @remarks
69
+ * Uses numeric comparison: playerRank >= requiredRank
70
+ *
71
+ * @param player - The player entity
72
+ * @param requiredRank - Minimum rank value
73
+ * @returns True if playerRank >= requiredRank
74
+ */
75
+ abstract hasRank(player: Player, requiredRank: number): Promise<boolean>;
76
+ /**
77
+ * Checks if player has ANY of the specified permissions.
78
+ *
79
+ * @param player - The player entity
80
+ * @param permissions - Array of permissions to check
81
+ * @returns True if player has at least one permission
82
+ */
83
+ abstract hasAnyPermission(player: Player, permissions: string[]): Promise<boolean>;
84
+ /**
85
+ * Checks if player has ALL of the specified permissions.
86
+ *
87
+ * @param player - The player entity
88
+ * @param permissions - Array of permissions to check
89
+ * @returns True if player has all permissions
90
+ */
91
+ abstract hasAllPermissions(player: Player, permissions: string[]): Promise<boolean>;
92
+ /**
93
+ * Gets all permissions for a player.
94
+ *
95
+ * @param player - The player entity
96
+ * @returns Array of permission strings
97
+ */
98
+ abstract getPermissions(player: Player): Promise<string[]>;
99
+ /**
100
+ * Gets the rank value for a player.
101
+ *
102
+ * @param player - The player entity
103
+ * @returns Rank number or null if not set
104
+ */
105
+ abstract getRank(player: Player): Promise<number | null>;
106
+ /**
107
+ * Gets the principal name/role name for a player.
108
+ *
109
+ * @param player - The player entity
110
+ * @returns Role name or null
111
+ */
112
+ abstract getPrincipalName(player: Player): Promise<string | null>;
113
+ /**
114
+ * Gets principal metadata for a player.
115
+ *
116
+ * @param player - The player entity
117
+ * @param key - Metadata key
118
+ * @returns Metadata value or null
119
+ */
120
+ abstract getPrincipalMeta(player: Player, key: string): Promise<unknown>;
121
+ /**
122
+ * Enforces access control requirements, throwing on failure.
123
+ *
124
+ * @remarks
125
+ * This is the primary method used by `@Guard` decorator and security validation.
126
+ * It validates rank and/or permission requirements and throws `AppError` if
127
+ * the player doesn't meet the criteria.
128
+ *
129
+ * **Validation Order:**
130
+ * 1. Rank check (if `rank` specified)
131
+ * 2. Permission check (if `permission` specified)
132
+ *
133
+ * @param player - The player entity to validate
134
+ * @param requirements - Guard options containing rank and/or permission requirements
135
+ *
136
+ * @throws AppError - `AUTH:UNAUTHORIZED` if player has no principal
137
+ * @throws AppError - `GAME:NO_RANK_IN_PRINCIPAL` if rank check requested but principal has no rank
138
+ * @throws AppError - `AUTH:PERMISSION_DENIED` if player doesn't meet requirements
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * // In a service or controller
143
+ * await this.principal.enforce(player, { rank: 5 })
144
+ * await this.principal.enforce(player, { permission: 'admin.ban' })
145
+ * await this.principal.enforce(player, { rank: 3, permission: 'mod.kick' })
146
+ * ```
147
+ */
148
+ abstract enforce(player: Player, requirements: GuardOptions): Promise<void>;
149
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrincipalPort = void 0;
4
+ /**
5
+ * Core port that provides access to player authorization and permissions.
6
+ *
7
+ * @remarks
8
+ * This port defines a framework-owned boundary for querying permission-related data
9
+ * regardless of the current runtime mode (CORE, RESOURCE, etc.).
10
+ *
11
+ * Implementations of this port are responsible for resolving permission information
12
+ * from the authoritative source (local provider, remote core exports, etc.).
13
+ *
14
+ * **Mode Differences:**
15
+ * - **CORE/STANDALONE**: Uses the user-provided PrincipalProviderContract directly
16
+ * - **RESOURCE**: Delegates to CORE via exports
17
+ *
18
+ * **Usage:**
19
+ * ```typescript
20
+ * @injectable()
21
+ * class MyService {
22
+ * constructor(private principal: PrincipalPort) {}
23
+ *
24
+ * async canBan(player: Player): Promise<boolean> {
25
+ * return await this.principal.hasPermission(player, 'admin.ban')
26
+ * }
27
+ * }
28
+ * ```
29
+ */
30
+ class PrincipalPort {
31
+ }
32
+ exports.PrincipalPort = PrincipalPort;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * In-memory rate limiter used by security-related decorators.
3
+ *
4
+ * @remarks
5
+ * This service is intentionally simple and process-local.
6
+ * It is primarily used by {@link Throttle} to enforce per-player call limits.
7
+ */
8
+ export declare class RateLimiterService {
9
+ private hits;
10
+ /**
11
+ * Checks whether a key is still within the rate limit window.
12
+ *
13
+ * @param key - Unique identifier for the caller/action.
14
+ * @param limit - Maximum number of calls allowed within the time window.
15
+ * @param windowMs - Sliding window size in milliseconds.
16
+ * @returns `true` if the call is allowed; `false` if the limit was exceeded.
17
+ */
18
+ checkLimit(key: string, limit: number, windowMs: number): boolean;
19
+ /**
20
+ * Best-effort cleanup to prevent unbounded memory growth.
21
+ */
22
+ private cleanup;
23
+ }
@@ -8,10 +8,25 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.RateLimiterService = void 0;
10
10
  const tsyringe_1 = require("tsyringe");
11
+ /**
12
+ * In-memory rate limiter used by security-related decorators.
13
+ *
14
+ * @remarks
15
+ * This service is intentionally simple and process-local.
16
+ * It is primarily used by {@link Throttle} to enforce per-player call limits.
17
+ */
11
18
  let RateLimiterService = class RateLimiterService {
12
19
  constructor() {
13
20
  this.hits = new Map();
14
21
  }
22
+ /**
23
+ * Checks whether a key is still within the rate limit window.
24
+ *
25
+ * @param key - Unique identifier for the caller/action.
26
+ * @param limit - Maximum number of calls allowed within the time window.
27
+ * @param windowMs - Sliding window size in milliseconds.
28
+ * @returns `true` if the call is allowed; `false` if the limit was exceeded.
29
+ */
15
30
  checkLimit(key, limit, windowMs) {
16
31
  const now = Date.now();
17
32
  const timestamps = this.hits.get(key) || [];
@@ -25,6 +40,9 @@ let RateLimiterService = class RateLimiterService {
25
40
  this.cleanup();
26
41
  return true;
27
42
  }
43
+ /**
44
+ * Best-effort cleanup to prevent unbounded memory growth.
45
+ */
28
46
  cleanup() {
29
47
  const now = Date.now();
30
48
  for (const [key, times] of this.hits.entries()) {
@@ -0,0 +1,63 @@
1
+ import { IExports } from '../../../../adapters/contracts/IExports';
2
+ import { CommandMetadata } from '../../decorators/command';
3
+ import { Player } from '../../entities';
4
+ import { CommandExecutionPort, type CommandInfo } from '../ports/command-execution.port';
5
+ /**
6
+ * Remote command service for RESOURCE mode.
7
+ *
8
+ * @remarks
9
+ * In RESOURCE mode, this service:
10
+ * - Stores command handlers and metadata locally in the resource
11
+ * - Registers command metadata with CORE via exports
12
+ * - Executes handlers when invoked by CORE via net event
13
+ * - Validates arguments using Zod schemas (same as CommandService)
14
+ *
15
+ * Flow:
16
+ * 1. Resource declares @Command → metadata registered with CORE
17
+ * 2. Player executes command → CORE validates security and emits event to resource
18
+ * 3. Resource receives event → validates schema → executes handler
19
+ *
20
+ * Security validation is split:
21
+ * - CORE validates: @Guard (rank/permission), @Throttle (rate limit), @RequiresState
22
+ * - RESOURCE validates: Zod schema (not serializable, must be local)
23
+ */
24
+ export declare class RemoteCommandService extends CommandExecutionPort {
25
+ private exportsService;
26
+ private commands;
27
+ constructor(exportsService: IExports);
28
+ /**
29
+ * Gets typed access to CORE resource exports.
30
+ */
31
+ private get core();
32
+ /**
33
+ * Registers a command handler locally and with CORE.
34
+ *
35
+ * @remarks
36
+ * The handler and full metadata are stored locally for schema validation.
37
+ * Only serializable metadata is sent to CORE for security validation.
38
+ */
39
+ register(metadata: CommandMetadata, handler: Function): void;
40
+ /**
41
+ * Executes a command handler stored in this resource.
42
+ *
43
+ * @remarks
44
+ * Called by the resource's command execution controller when CORE
45
+ * emits a command execution event to this resource.
46
+ *
47
+ * CORE has already validated:
48
+ * - @Guard (rank/permission requirements)
49
+ * - @Throttle (rate limiting)
50
+ * - @RequiresState (player state)
51
+ * - @Public (authentication - if not public, player must be authenticated)
52
+ *
53
+ * This method validates:
54
+ * - Zod schema (argument types and structure)
55
+ *
56
+ * @throws AppError - If schema validation fails or command not found
57
+ */
58
+ execute(player: Player, commandName: string, args: string[]): Promise<void>;
59
+ /**
60
+ * Returns all commands registered in CORE (local + remote).
61
+ */
62
+ getAllCommands(): CommandInfo[];
63
+ }