@open-core/framework 1.0.5-beta.1 → 1.0.5-beta.2

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 (344) hide show
  1. package/dist/adapters/contracts/IEngineEvents.d.ts +3 -0
  2. package/dist/adapters/contracts/IEngineEvents.js +7 -0
  3. package/dist/adapters/contracts/IPlatformContext.d.ts +43 -0
  4. package/dist/adapters/contracts/IPlatformContext.js +8 -0
  5. package/dist/adapters/contracts/client/IClientLocalPlayerBridge.d.ts +4 -0
  6. package/dist/adapters/contracts/client/IClientLocalPlayerBridge.js +2 -0
  7. package/dist/adapters/contracts/client/IClientLogConsole.d.ts +13 -0
  8. package/dist/adapters/contracts/client/IClientLogConsole.js +2 -0
  9. package/dist/adapters/contracts/client/IClientPlatformBridge.d.ts +195 -0
  10. package/dist/adapters/contracts/client/IClientPlatformBridge.js +282 -0
  11. package/dist/adapters/contracts/client/IClientRuntimeBridge.d.ts +18 -0
  12. package/dist/adapters/contracts/client/IClientRuntimeBridge.js +14 -0
  13. package/dist/adapters/contracts/client/IGtaPedAppearanceBridge.d.ts +26 -0
  14. package/dist/adapters/contracts/client/IGtaPedAppearanceBridge.js +2 -0
  15. package/dist/adapters/contracts/client/index.d.ts +7 -0
  16. package/dist/adapters/contracts/client/index.js +7 -0
  17. package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.d.ts +7 -0
  18. package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.js +2 -0
  19. package/dist/adapters/contracts/client/spawn/index.d.ts +2 -0
  20. package/dist/adapters/contracts/client/spawn/index.js +2 -0
  21. package/dist/adapters/contracts/client/spawn/types.d.ts +14 -0
  22. package/dist/adapters/contracts/client/ui/IClientBlipBridge.d.ts +25 -0
  23. package/dist/adapters/contracts/client/ui/IClientBlipBridge.js +2 -0
  24. package/dist/adapters/contracts/client/ui/IClientMarkerBridge.d.ts +31 -0
  25. package/dist/adapters/contracts/client/ui/IClientMarkerBridge.js +2 -0
  26. package/dist/adapters/contracts/client/ui/IClientNotificationBridge.d.ts +21 -0
  27. package/dist/adapters/contracts/client/ui/IClientNotificationBridge.js +2 -0
  28. package/dist/adapters/contracts/client/ui/index.d.ts +4 -0
  29. package/dist/adapters/contracts/client/ui/index.js +4 -0
  30. package/dist/adapters/contracts/client/ui/webview/IClientWebViewBridge.d.ts +13 -0
  31. package/dist/adapters/contracts/client/ui/webview/IClientWebViewBridge.js +2 -0
  32. package/dist/adapters/contracts/client/ui/webview/index.d.ts +2 -0
  33. package/dist/adapters/contracts/client/ui/webview/index.js +2 -0
  34. package/dist/adapters/contracts/client/ui/webview/types.d.ts +25 -0
  35. package/dist/adapters/contracts/client/ui/webview/types.js +0 -0
  36. package/dist/adapters/contracts/index.d.ts +4 -2
  37. package/dist/adapters/contracts/index.js +4 -3
  38. package/dist/adapters/contracts/runtime/index.d.ts +1 -0
  39. package/dist/adapters/contracts/runtime/index.js +1 -0
  40. package/dist/adapters/contracts/runtime/runtime-events.d.ts +9 -0
  41. package/dist/adapters/contracts/runtime/runtime-events.js +7 -0
  42. package/dist/adapters/contracts/server/IEntityServer.d.ts +4 -28
  43. package/dist/adapters/contracts/server/IEntityServer.js +0 -26
  44. package/dist/adapters/contracts/server/IPlayerServer.d.ts +7 -26
  45. package/dist/adapters/contracts/server/IPlayerServer.js +0 -26
  46. package/dist/adapters/contracts/server/index.d.ts +10 -0
  47. package/dist/adapters/contracts/server/index.js +10 -0
  48. package/dist/adapters/contracts/server/npc-lifecycle/INpcLifecycleServer.d.ts +5 -0
  49. package/dist/adapters/contracts/server/npc-lifecycle/INpcLifecycleServer.js +2 -0
  50. package/dist/adapters/contracts/server/npc-lifecycle/index.d.ts +2 -0
  51. package/dist/adapters/contracts/server/npc-lifecycle/index.js +2 -0
  52. package/dist/adapters/contracts/server/npc-lifecycle/types.d.ts +17 -0
  53. package/dist/adapters/contracts/server/npc-lifecycle/types.js +0 -0
  54. package/dist/adapters/contracts/server/player-appearance/IPlayerAppearanceLifecycleServer.d.ts +11 -0
  55. package/dist/adapters/contracts/server/player-appearance/IPlayerAppearanceLifecycleServer.js +2 -0
  56. package/dist/adapters/contracts/server/player-appearance/index.d.ts +1 -0
  57. package/dist/adapters/contracts/server/player-appearance/index.js +1 -0
  58. package/dist/adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer.d.ts +6 -0
  59. package/dist/adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer.js +2 -0
  60. package/dist/adapters/contracts/server/player-lifecycle/index.d.ts +2 -0
  61. package/dist/adapters/contracts/server/player-lifecycle/index.js +2 -0
  62. package/dist/adapters/contracts/server/player-lifecycle/types.d.ts +17 -0
  63. package/dist/adapters/contracts/server/player-lifecycle/types.js +0 -0
  64. package/dist/adapters/contracts/server/player-state/IPlayerStateSyncServer.d.ts +6 -0
  65. package/dist/adapters/contracts/server/player-state/IPlayerStateSyncServer.js +2 -0
  66. package/dist/adapters/contracts/server/player-state/index.d.ts +1 -0
  67. package/dist/adapters/contracts/server/player-state/index.js +1 -0
  68. package/dist/adapters/contracts/server/vehicle-lifecycle/IVehicleLifecycleServer.d.ts +5 -0
  69. package/dist/adapters/contracts/server/vehicle-lifecycle/IVehicleLifecycleServer.js +2 -0
  70. package/dist/adapters/contracts/server/vehicle-lifecycle/index.d.ts +2 -0
  71. package/dist/adapters/contracts/server/vehicle-lifecycle/index.js +2 -0
  72. package/dist/adapters/contracts/server/vehicle-lifecycle/types.d.ts +16 -0
  73. package/dist/adapters/contracts/server/vehicle-lifecycle/types.js +0 -0
  74. package/dist/adapters/contracts/transport/index.d.ts +4 -0
  75. package/dist/adapters/contracts/transport/index.js +4 -0
  76. package/dist/adapters/index.d.ts +3 -14
  77. package/dist/adapters/index.js +3 -20
  78. package/dist/adapters/node/node-capabilities.d.ts +11 -11
  79. package/dist/adapters/node/node-capabilities.js +15 -27
  80. package/dist/adapters/node/node-engine-events.d.ts +1 -1
  81. package/dist/adapters/node/node-engine-events.js +2 -1
  82. package/dist/adapters/node/node-entity-server.d.ts +2 -2
  83. package/dist/adapters/node/node-entity-server.js +2 -2
  84. package/dist/adapters/node/node-ped-appearance-client.d.ts +2 -2
  85. package/dist/adapters/node/node-ped-appearance-client.js +2 -2
  86. package/dist/adapters/node/node-platform.js +4 -4
  87. package/dist/adapters/node/node-player-server.d.ts +3 -2
  88. package/dist/adapters/node/node-player-server.js +8 -2
  89. package/dist/adapters/register-capabilities.d.ts +1 -1
  90. package/dist/adapters/register-capabilities.js +1 -3
  91. package/dist/adapters/register-client-capabilities.d.ts +3 -2
  92. package/dist/adapters/register-client-capabilities.js +16 -41
  93. package/dist/contracts/client.d.ts +5 -0
  94. package/dist/contracts/client.js +5 -0
  95. package/dist/contracts/server.d.ts +19 -0
  96. package/dist/contracts/server.js +19 -0
  97. package/dist/contracts.d.ts +4 -0
  98. package/dist/contracts.js +4 -0
  99. package/dist/index.d.ts +1 -1
  100. package/dist/index.js +1 -1
  101. package/dist/kernel/logger/client-log-console.d.ts +4 -0
  102. package/dist/kernel/logger/client-log-console.js +43 -0
  103. package/dist/kernel/logger/core-logger.d.ts +3 -1
  104. package/dist/kernel/logger/core-logger.js +4 -2
  105. package/dist/kernel/logger/index.d.ts +2 -0
  106. package/dist/kernel/logger/index.js +1 -0
  107. package/dist/kernel/logger/transports/dev-transport.factory.js +1 -1
  108. package/dist/kernel/logger/transports/simple-console.transport.js +13 -8
  109. package/dist/kernel-public.d.ts +1 -0
  110. package/dist/kernel-public.js +1 -0
  111. package/dist/runtime/client/adapter/client-adapter.d.ts +25 -0
  112. package/dist/runtime/client/adapter/client-adapter.js +11 -0
  113. package/dist/runtime/client/adapter/index.d.ts +15 -0
  114. package/dist/runtime/client/adapter/index.js +15 -0
  115. package/dist/runtime/client/adapter/local-player-bridge.d.ts +1 -0
  116. package/dist/runtime/client/adapter/local-player-bridge.js +1 -0
  117. package/dist/runtime/client/adapter/node-blip-bridge.d.ts +9 -0
  118. package/dist/runtime/client/adapter/node-blip-bridge.js +34 -0
  119. package/dist/runtime/client/adapter/node-client-adapter.d.ts +5 -0
  120. package/dist/runtime/client/adapter/node-client-adapter.js +50 -0
  121. package/dist/runtime/client/adapter/node-local-player-bridge.d.ts +8 -0
  122. package/dist/{adapters/fivem/fivem-hasher.js → runtime/client/adapter/node-local-player-bridge.js} +7 -9
  123. package/dist/runtime/client/adapter/node-log-console.d.ts +11 -0
  124. package/dist/runtime/client/adapter/node-log-console.js +48 -0
  125. package/dist/runtime/client/adapter/node-marker-bridge.d.ts +10 -0
  126. package/dist/runtime/client/adapter/node-marker-bridge.js +35 -0
  127. package/dist/runtime/client/adapter/node-notification-bridge.d.ts +5 -0
  128. package/dist/runtime/client/adapter/node-notification-bridge.js +16 -0
  129. package/dist/runtime/client/adapter/node-platform-bridge.d.ts +3 -0
  130. package/dist/{adapters/fivem/fivem-tick.js → runtime/client/adapter/node-platform-bridge.js} +5 -10
  131. package/dist/runtime/client/adapter/node-runtime-bridge.d.ts +24 -0
  132. package/dist/runtime/client/adapter/node-runtime-bridge.js +58 -0
  133. package/dist/runtime/client/adapter/node-spawn-bridge.d.ts +8 -0
  134. package/dist/runtime/client/adapter/node-spawn-bridge.js +18 -0
  135. package/dist/runtime/client/adapter/node-webview-bridge.d.ts +15 -0
  136. package/dist/runtime/client/adapter/node-webview-bridge.js +43 -0
  137. package/dist/runtime/client/adapter/platform-bridge.d.ts +1 -0
  138. package/dist/runtime/client/adapter/platform-bridge.js +1 -0
  139. package/dist/runtime/client/adapter/registry.d.ts +9 -0
  140. package/dist/runtime/client/adapter/registry.js +85 -0
  141. package/dist/runtime/client/adapter/runtime-bridge.d.ts +1 -0
  142. package/dist/runtime/client/adapter/runtime-bridge.js +1 -0
  143. package/dist/runtime/client/api.d.ts +2 -1
  144. package/dist/runtime/client/api.js +2 -1
  145. package/dist/runtime/client/client-bootstrap.js +51 -44
  146. package/dist/runtime/client/client-core.d.ts +2 -0
  147. package/dist/runtime/client/client-core.js +9 -0
  148. package/dist/runtime/client/client-runtime.d.ts +3 -0
  149. package/dist/runtime/client/client-runtime.js +3 -0
  150. package/dist/runtime/client/controllers/appearance.controller.d.ts +3 -1
  151. package/dist/runtime/client/controllers/appearance.controller.js +14 -4
  152. package/dist/runtime/client/controllers/spawner.controller.js +2 -0
  153. package/dist/runtime/client/decorators/controller.js +2 -10
  154. package/dist/runtime/client/decorators/onView.d.ts +3 -3
  155. package/dist/runtime/client/decorators/onView.js +3 -3
  156. package/dist/runtime/client/index.d.ts +1 -0
  157. package/dist/runtime/client/index.js +1 -0
  158. package/dist/runtime/client/library/create-client-library.js +9 -1
  159. package/dist/runtime/client/services/appearance.service.d.ts +2 -2
  160. package/dist/runtime/client/services/appearance.service.js +7 -4
  161. package/dist/runtime/client/services/blip.service.d.ts +6 -93
  162. package/dist/runtime/client/services/blip.service.js +58 -153
  163. package/dist/runtime/client/services/camera-effects.registry.d.ts +3 -0
  164. package/dist/runtime/client/services/camera-effects.registry.js +20 -7
  165. package/dist/runtime/client/services/camera.d.ts +3 -83
  166. package/dist/runtime/client/services/camera.js +37 -93
  167. package/dist/runtime/client/services/cinematic.d.ts +5 -1
  168. package/dist/runtime/client/services/cinematic.js +45 -30
  169. package/dist/runtime/client/services/index.d.ts +1 -0
  170. package/dist/runtime/client/services/index.js +1 -0
  171. package/dist/runtime/client/services/marker.service.d.ts +12 -63
  172. package/dist/runtime/client/services/marker.service.js +62 -97
  173. package/dist/runtime/client/services/notification.service.d.ts +6 -57
  174. package/dist/runtime/client/services/notification.service.js +43 -81
  175. package/dist/runtime/client/services/ped.service.d.ts +3 -130
  176. package/dist/runtime/client/services/ped.service.js +66 -198
  177. package/dist/runtime/client/services/progress.service.d.ts +5 -30
  178. package/dist/runtime/client/services/progress.service.js +73 -99
  179. package/dist/runtime/client/services/session-bridge.service.d.ts +15 -0
  180. package/dist/runtime/client/services/session-bridge.service.js +61 -0
  181. package/dist/runtime/client/services/spawn.service.d.ts +6 -56
  182. package/dist/runtime/client/services/spawn.service.js +34 -191
  183. package/dist/runtime/client/services/streaming.service.d.ts +5 -126
  184. package/dist/runtime/client/services/streaming.service.js +72 -217
  185. package/dist/runtime/client/services/textui.service.d.ts +5 -45
  186. package/dist/runtime/client/services/textui.service.js +55 -88
  187. package/dist/runtime/client/services/vehicle-client.service.d.ts +12 -149
  188. package/dist/runtime/client/services/vehicle-client.service.js +180 -326
  189. package/dist/runtime/client/services/vehicle.service.d.ts +3 -109
  190. package/dist/runtime/client/services/vehicle.service.js +94 -194
  191. package/dist/runtime/client/system/processors/export.processor.d.ts +3 -0
  192. package/dist/runtime/client/system/processors/export.processor.js +16 -3
  193. package/dist/runtime/client/system/processors/gameEvent.processor.d.ts +3 -0
  194. package/dist/runtime/client/system/processors/gameEvent.processor.js +16 -3
  195. package/dist/runtime/client/system/processors/interval.processor.d.ts +3 -0
  196. package/dist/runtime/client/system/processors/interval.processor.js +17 -4
  197. package/dist/runtime/client/system/processors/key.processor.d.ts +3 -0
  198. package/dist/runtime/client/system/processors/key.processor.js +18 -5
  199. package/dist/runtime/client/system/processors/localEvent.processor.d.ts +3 -0
  200. package/dist/runtime/client/system/processors/localEvent.processor.js +16 -3
  201. package/dist/runtime/client/system/processors/netEvent.processor.d.ts +3 -0
  202. package/dist/runtime/client/system/processors/netEvent.processor.js +16 -3
  203. package/dist/runtime/client/system/processors/onRpc.processor.js +1 -1
  204. package/dist/runtime/client/system/processors/resourceLifecycle.processor.d.ts +5 -0
  205. package/dist/runtime/client/system/processors/resourceLifecycle.processor.js +26 -7
  206. package/dist/runtime/client/system/processors/tick.processor.d.ts +3 -0
  207. package/dist/runtime/client/system/processors/tick.processor.js +16 -3
  208. package/dist/runtime/client/system/processors/view.processor.d.ts +3 -0
  209. package/dist/runtime/client/system/processors/view.processor.js +21 -10
  210. package/dist/runtime/client/system/processors.register.d.ts +1 -0
  211. package/dist/runtime/client/system/processors.register.js +8 -0
  212. package/dist/runtime/client/ui-bridge.d.ts +2 -114
  213. package/dist/runtime/client/ui-bridge.js +2 -194
  214. package/dist/runtime/client/webview-bridge.d.ts +31 -0
  215. package/dist/runtime/client/webview-bridge.js +97 -0
  216. package/dist/runtime/client/webview.service.d.ts +14 -0
  217. package/dist/runtime/client/webview.service.js +98 -0
  218. package/dist/runtime/server/adapter/index.d.ts +5 -0
  219. package/dist/runtime/server/adapter/index.js +5 -0
  220. package/dist/runtime/server/adapter/node-npc-lifecycle-server.d.ts +12 -0
  221. package/dist/runtime/server/adapter/node-npc-lifecycle-server.js +52 -0
  222. package/dist/runtime/server/adapter/node-player-appearance-lifecycle-server.d.ts +22 -0
  223. package/dist/runtime/server/adapter/node-player-appearance-lifecycle-server.js +94 -0
  224. package/dist/runtime/server/adapter/node-player-lifecycle-server.d.ts +11 -0
  225. package/dist/runtime/server/adapter/node-player-lifecycle-server.js +55 -0
  226. package/dist/runtime/server/adapter/node-player-state-sync-server.d.ts +12 -0
  227. package/dist/runtime/server/adapter/node-player-state-sync-server.js +49 -0
  228. package/dist/runtime/server/adapter/node-server-adapter.d.ts +5 -0
  229. package/dist/runtime/server/adapter/node-server-adapter.js +67 -0
  230. package/dist/runtime/server/adapter/node-vehicle-lifecycle-server.d.ts +13 -0
  231. package/dist/runtime/server/adapter/node-vehicle-lifecycle-server.js +57 -0
  232. package/dist/runtime/server/adapter/player-adapter.d.ts +28 -0
  233. package/dist/runtime/server/adapter/player-adapter.js +28 -0
  234. package/dist/runtime/server/adapter/registry.d.ts +26 -0
  235. package/dist/runtime/server/adapter/registry.js +101 -0
  236. package/dist/runtime/server/adapter/serialization.d.ts +6 -0
  237. package/dist/runtime/server/adapter/serialization.js +9 -0
  238. package/dist/runtime/server/adapter/server-adapter.d.ts +28 -0
  239. package/dist/runtime/server/adapter/server-adapter.js +14 -0
  240. package/dist/runtime/server/api.d.ts +2 -1
  241. package/dist/runtime/server/api.js +2 -1
  242. package/dist/runtime/server/apis/appearance.api.d.ts +5 -3
  243. package/dist/runtime/server/apis/appearance.api.js +20 -7
  244. package/dist/runtime/server/apis/npcs.api.d.ts +3 -4
  245. package/dist/runtime/server/apis/npcs.api.js +26 -56
  246. package/dist/runtime/server/apis/vehicle-modification.api.d.ts +3 -1
  247. package/dist/runtime/server/apis/vehicle-modification.api.js +9 -4
  248. package/dist/runtime/server/apis/vehicles.api.d.ts +12 -6
  249. package/dist/runtime/server/apis/vehicles.api.js +48 -36
  250. package/dist/runtime/server/bootstrap.js +15 -7
  251. package/dist/runtime/server/controllers/channel.controller.js +2 -1
  252. package/dist/runtime/server/controllers/command-export.controller.js +1 -1
  253. package/dist/runtime/server/controllers/player-export.controller.js +5 -4
  254. package/dist/runtime/server/controllers/session.controller.js +3 -2
  255. package/dist/runtime/server/controllers/vehicle.controller.d.ts +3 -1
  256. package/dist/runtime/server/controllers/vehicle.controller.js +10 -5
  257. package/dist/runtime/server/core.d.ts +2 -0
  258. package/dist/runtime/server/core.js +9 -1
  259. package/dist/runtime/server/decorators/onRuntimeEvent.d.ts +2 -1
  260. package/dist/runtime/server/entities/npc.d.ts +2 -0
  261. package/dist/runtime/server/entities/npc.js +3 -3
  262. package/dist/runtime/server/entities/player.d.ts +8 -11
  263. package/dist/runtime/server/entities/player.js +39 -28
  264. package/dist/runtime/server/entities/vehicle.js +2 -2
  265. package/dist/runtime/server/error-handler.js +13 -2
  266. package/dist/runtime/server/helpers/command-validation.helper.js +1 -1
  267. package/dist/runtime/server/implementations/local/player.local.d.ts +7 -3
  268. package/dist/runtime/server/implementations/local/player.local.js +23 -11
  269. package/dist/runtime/server/implementations/remote/channel.remote.d.ts +2 -1
  270. package/dist/runtime/server/implementations/remote/channel.remote.js +5 -2
  271. package/dist/runtime/server/implementations/remote/command.remote.d.ts +3 -1
  272. package/dist/runtime/server/implementations/remote/command.remote.js +9 -4
  273. package/dist/runtime/server/implementations/remote/player.remote.d.ts +7 -10
  274. package/dist/runtime/server/implementations/remote/player.remote.js +24 -29
  275. package/dist/runtime/server/library/create-server-library.js +17 -2
  276. package/dist/runtime/server/runtime.d.ts +3 -0
  277. package/dist/runtime/server/runtime.js +1 -15
  278. package/dist/runtime/server/services/appearance.service.d.ts +0 -95
  279. package/dist/runtime/server/services/appearance.service.js +15 -192
  280. package/dist/runtime/server/services/services.register.js +56 -24
  281. package/dist/runtime/server/system/processors/netEvent.processor.js +1 -1
  282. package/dist/runtime/server/system/processors/onRpc.processor.js +1 -1
  283. package/dist/runtime/server/system/processors/runtimeEvent.processor.d.ts +2 -1
  284. package/dist/runtime/server/system/processors/runtimeEvent.processor.js +1 -1
  285. package/dist/runtime/server/types/core-exports.types.d.ts +5 -0
  286. package/dist/runtime/shared/helpers/process-tuple-schema.d.ts +2 -0
  287. package/dist/runtime/shared/helpers/process-tuple-schema.js +29 -0
  288. package/package.json +21 -3
  289. package/dist/adapters/cfx/cfx-capabilities.d.ts +0 -16
  290. package/dist/adapters/cfx/cfx-capabilities.js +0 -70
  291. package/dist/adapters/cfx/cfx-platform.d.ts +0 -2
  292. package/dist/adapters/cfx/cfx-platform.js +0 -85
  293. package/dist/adapters/cfx/index.d.ts +0 -3
  294. package/dist/adapters/cfx/index.js +0 -3
  295. package/dist/adapters/cfx/runtime-profile.d.ts +0 -3
  296. package/dist/adapters/cfx/runtime-profile.js +0 -37
  297. package/dist/adapters/contracts/IPlatformCapabilities.d.ts +0 -79
  298. package/dist/adapters/contracts/IPlatformCapabilities.js +0 -27
  299. package/dist/adapters/contracts/client/IPedAppearanceClient.d.ts +0 -206
  300. package/dist/adapters/contracts/client/IPedAppearanceClient.js +0 -12
  301. package/dist/adapters/fivem/fivem-capabilities.d.ts +0 -18
  302. package/dist/adapters/fivem/fivem-capabilities.js +0 -61
  303. package/dist/adapters/fivem/fivem-engine-events.d.ts +0 -5
  304. package/dist/adapters/fivem/fivem-engine-events.js +0 -24
  305. package/dist/adapters/fivem/fivem-entity-server.d.ts +0 -26
  306. package/dist/adapters/fivem/fivem-entity-server.js +0 -87
  307. package/dist/adapters/fivem/fivem-exports.d.ts +0 -5
  308. package/dist/adapters/fivem/fivem-exports.js +0 -9
  309. package/dist/adapters/fivem/fivem-hasher.d.ts +0 -7
  310. package/dist/adapters/fivem/fivem-net-transport.d.ts +0 -1
  311. package/dist/adapters/fivem/fivem-ped-appearance-client.d.ts +0 -34
  312. package/dist/adapters/fivem/fivem-ped-appearance-client.js +0 -79
  313. package/dist/adapters/fivem/fivem-ped-appearance-server.d.ts +0 -14
  314. package/dist/adapters/fivem/fivem-ped-appearance-server.js +0 -22
  315. package/dist/adapters/fivem/fivem-ped-server.d.ts +0 -9
  316. package/dist/adapters/fivem/fivem-ped-server.js +0 -30
  317. package/dist/adapters/fivem/fivem-platform.d.ts +0 -5
  318. package/dist/adapters/fivem/fivem-platform.js +0 -74
  319. package/dist/adapters/fivem/fivem-player-server.d.ts +0 -24
  320. package/dist/adapters/fivem/fivem-player-server.js +0 -83
  321. package/dist/adapters/fivem/fivem-playerinfo.d.ts +0 -6
  322. package/dist/adapters/fivem/fivem-playerinfo.js +0 -10
  323. package/dist/adapters/fivem/fivem-resourceinfo.d.ts +0 -5
  324. package/dist/adapters/fivem/fivem-resourceinfo.js +0 -24
  325. package/dist/adapters/fivem/fivem-tick.d.ts +0 -7
  326. package/dist/adapters/fivem/fivem-vehicle-server.d.ts +0 -15
  327. package/dist/adapters/fivem/fivem-vehicle-server.js +0 -44
  328. package/dist/adapters/fivem/index.d.ts +0 -14
  329. package/dist/adapters/fivem/index.js +0 -16
  330. package/dist/adapters/fivem/transport/adapter.d.ts +0 -8
  331. package/dist/adapters/fivem/transport/adapter.js +0 -8
  332. package/dist/adapters/fivem/transport/fivem.events.d.ts +0 -8
  333. package/dist/adapters/fivem/transport/fivem.events.js +0 -36
  334. package/dist/adapters/fivem/transport/fivem.rpc.d.ts +0 -28
  335. package/dist/adapters/fivem/transport/fivem.rpc.js +0 -183
  336. package/dist/runtime/client/controllers/player-sync.controller.d.ts +0 -11
  337. package/dist/runtime/client/controllers/player-sync.controller.js +0 -51
  338. package/dist/runtime/client/player/player.d.ts +0 -262
  339. package/dist/runtime/client/player/player.js +0 -474
  340. package/dist/runtime/client/player/player.loader.d.ts +0 -1
  341. package/dist/runtime/client/player/player.loader.js +0 -18
  342. package/dist/runtime/server/helpers/process-tuple-schema.d.ts +0 -20
  343. package/dist/runtime/server/helpers/process-tuple-schema.js +0 -56
  344. /package/dist/adapters/{fivem/fivem-net-transport.js → contracts/client/spawn/types.js} +0 -0
@@ -1,6 +1,7 @@
1
1
  import { IHasher } from '../../../adapters/contracts/IHasher';
2
2
  import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
3
3
  import { IEntityServer } from '../../../adapters/contracts/server/IEntityServer';
4
+ import { INpcLifecycleServer } from '../../../adapters/contracts/server/npc-lifecycle/INpcLifecycleServer';
4
5
  import { IPedServer } from '../../../adapters/contracts/server/IPedServer';
5
6
  import { Vector3 } from '../../../kernel/utils/vector3';
6
7
  import { WorldContext } from '../../core/world';
@@ -20,6 +21,7 @@ import { NpcSpawnOptions, NpcSpawnResult, SerializedNpcData } from '../types/npc
20
21
  export declare class Npcs {
21
22
  private readonly world;
22
23
  private readonly entityServer;
24
+ private readonly npcLifecycle;
23
25
  private readonly pedServer;
24
26
  private readonly hasher;
25
27
  private readonly events;
@@ -27,7 +29,7 @@ export declare class Npcs {
27
29
  private readonly idByHandle;
28
30
  private readonly idByNetId;
29
31
  private readonly adapters;
30
- constructor(world: WorldContext, entityServer: IEntityServer, pedServer: IPedServer, hasher: IHasher, events: EventsAPI<'server'>);
32
+ constructor(world: WorldContext, entityServer: IEntityServer, npcLifecycle: INpcLifecycleServer, pedServer: IPedServer, hasher: IHasher, events: EventsAPI<'server'>);
31
33
  /**
32
34
  * Spawn (create) a single NPC and register it into the runtime.
33
35
  *
@@ -206,8 +208,5 @@ export declare class Npcs {
206
208
  * @returns An array of serialized NPC data.
207
209
  */
208
210
  serializeAll(): SerializedNpcData[];
209
- private resolveNetId;
210
211
  private removeFromRegistry;
211
- private safeDeleteHandle;
212
- private waitForSpawn;
213
212
  }
@@ -15,12 +15,11 @@ import { v4 as uuid } from 'uuid';
15
15
  import { IHasher } from '../../../adapters/contracts/IHasher';
16
16
  import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
17
17
  import { IEntityServer } from '../../../adapters/contracts/server/IEntityServer';
18
+ import { INpcLifecycleServer } from '../../../adapters/contracts/server/npc-lifecycle/INpcLifecycleServer';
18
19
  import { IPedServer } from '../../../adapters/contracts/server/IPedServer';
19
20
  import { coreLogger } from '../../../kernel/logger';
20
21
  import { WorldContext } from '../../core/world';
21
22
  import { NPC } from '../entities/npc';
22
- const DEFAULT_PED_TYPE = 4;
23
- const DEFAULT_SPAWN_TIMEOUT_MS = 2000;
24
23
  /**
25
24
  * Server-side API responsible for the full NPC (ped) lifecycle:
26
25
  * spawn, registry, queries, spatial search, serialization and deletion.
@@ -35,6 +34,7 @@ const DEFAULT_SPAWN_TIMEOUT_MS = 2000;
35
34
  let Npcs = class Npcs {
36
35
  world;
37
36
  entityServer;
37
+ npcLifecycle;
38
38
  pedServer;
39
39
  hasher;
40
40
  events;
@@ -42,15 +42,17 @@ let Npcs = class Npcs {
42
42
  idByHandle = new Map();
43
43
  idByNetId = new Map();
44
44
  adapters;
45
- constructor(world, entityServer, pedServer, hasher, events) {
45
+ constructor(world, entityServer, npcLifecycle, pedServer, hasher, events) {
46
46
  this.world = world;
47
47
  this.entityServer = entityServer;
48
+ this.npcLifecycle = npcLifecycle;
48
49
  this.pedServer = pedServer;
49
50
  this.hasher = hasher;
50
51
  this.events = events;
51
52
  this.adapters = {
52
53
  entityServer: this.entityServer,
53
54
  pedServer: this.pedServer,
55
+ npcLifecycle: this.npcLifecycle,
54
56
  };
55
57
  }
56
58
  /**
@@ -67,7 +69,7 @@ let Npcs = class Npcs {
67
69
  * @returns An object containing a `result` (success/error) and the created `npc` on success.
68
70
  */
69
71
  async create(options) {
70
- const { id, model, position, heading = 0, networked = true, pedType = DEFAULT_PED_TYPE, routingBucket = 0, persistent = false, metadata, } = options;
72
+ const { id, model, position, heading = 0, networked = true, routingBucket = 0, persistent = false, metadata, } = options;
71
73
  const npcId = id ?? uuid();
72
74
  if (this.npcById.has(npcId)) {
73
75
  return {
@@ -78,27 +80,29 @@ let Npcs = class Npcs {
78
80
  };
79
81
  }
80
82
  const modelHash = typeof model === 'string' ? this.hasher.getHashKey(model) : model;
81
- const handle = this.pedServer.create(pedType, modelHash, position.x, position.y, position.z, heading, networked);
82
- if (!handle || handle <= 0) {
83
- return {
84
- result: {
85
- success: false,
86
- error: 'Failed to create NPC ped entity',
87
- },
88
- };
83
+ let lifecycleResult;
84
+ try {
85
+ lifecycleResult = await Promise.resolve(this.npcLifecycle.create({
86
+ model: typeof model === 'string' ? model : String(model),
87
+ modelHash,
88
+ position,
89
+ heading,
90
+ networked,
91
+ routingBucket,
92
+ persistent,
93
+ }));
89
94
  }
90
- const spawnOk = await this.waitForSpawn(handle);
91
- if (!spawnOk) {
92
- this.safeDeleteHandle(handle);
95
+ catch (error) {
93
96
  return {
94
97
  result: {
95
98
  success: false,
96
- error: `NPC spawn timed out after ${DEFAULT_SPAWN_TIMEOUT_MS}ms`,
99
+ error: error instanceof Error ? error.message : 'Failed to create NPC ped entity',
97
100
  },
98
101
  };
99
102
  }
103
+ const handle = lifecycleResult.handle;
100
104
  const resolvedModel = typeof model === 'string' ? model : modelHash.toString();
101
- const netId = networked ? this.resolveNetId(handle) : undefined;
105
+ const netId = lifecycleResult.netId;
102
106
  const session = {
103
107
  id: npcId,
104
108
  handle,
@@ -110,12 +114,6 @@ let Npcs = class Npcs {
110
114
  createdAt: Date.now(),
111
115
  };
112
116
  const npc = new NPC(session, this.adapters);
113
- if (routingBucket !== 0) {
114
- npc.setRoutingBucket(routingBucket);
115
- }
116
- if (persistent) {
117
- this.entityServer.setOrphanMode(handle, 2);
118
- }
119
117
  if (metadata) {
120
118
  for (const [key, value] of Object.entries(metadata)) {
121
119
  npc.setMeta(key, value);
@@ -410,10 +408,6 @@ let Npcs = class Npcs {
410
408
  serializeAll() {
411
409
  return Array.from(this.npcById.values()).map((npc) => npc.serialize());
412
410
  }
413
- resolveNetId(handle) {
414
- const netId = this.pedServer.getNetworkIdFromEntity(handle);
415
- return netId > 0 ? netId : undefined;
416
- }
417
411
  removeFromRegistry(npc) {
418
412
  this.npcById.delete(npc.npcId);
419
413
  this.idByHandle.delete(npc.getHandle());
@@ -422,44 +416,20 @@ let Npcs = class Npcs {
422
416
  }
423
417
  this.world.remove(npc.id);
424
418
  }
425
- safeDeleteHandle(handle) {
426
- try {
427
- if (this.entityServer.doesExist(handle)) {
428
- this.pedServer.delete(handle);
429
- }
430
- }
431
- catch (error) {
432
- coreLogger.warn('Failed to cleanup NPC handle after spawn failure', {
433
- handle,
434
- error: error instanceof Error ? error.message : String(error),
435
- });
436
- }
437
- }
438
- async waitForSpawn(handle, timeoutMs = DEFAULT_SPAWN_TIMEOUT_MS) {
439
- const startedAt = Date.now();
440
- while (!this.entityServer.doesExist(handle)) {
441
- if (Date.now() - startedAt > timeoutMs) {
442
- return false;
443
- }
444
- await sleep(0);
445
- }
446
- return true;
447
- }
448
419
  };
449
420
  Npcs = __decorate([
450
421
  injectable(),
451
422
  __param(0, inject(WorldContext)),
452
423
  __param(1, inject(IEntityServer)),
453
- __param(2, inject(IPedServer)),
454
- __param(3, inject(IHasher)),
455
- __param(4, inject(EventsAPI)),
424
+ __param(2, inject(INpcLifecycleServer)),
425
+ __param(3, inject(IPedServer)),
426
+ __param(4, inject(IHasher)),
427
+ __param(5, inject(EventsAPI)),
456
428
  __metadata("design:paramtypes", [WorldContext,
457
429
  IEntityServer,
430
+ INpcLifecycleServer,
458
431
  IPedServer,
459
432
  IHasher,
460
433
  EventsAPI])
461
434
  ], Npcs);
462
435
  export { Npcs };
463
- function sleep(ms) {
464
- return new Promise((resolve) => setTimeout(resolve, ms));
465
- }
@@ -1,3 +1,4 @@
1
+ import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
1
2
  import { VehicleModificationOptions, VehicleMods } from '../types/vehicle.types';
2
3
  import { Vehicles } from './vehicles.api';
3
4
  /**
@@ -14,7 +15,8 @@ import { Vehicles } from './vehicles.api';
14
15
  */
15
16
  export declare class VehicleModification {
16
17
  private readonly vehicleService;
17
- constructor(vehicleService: Vehicles);
18
+ private readonly events;
19
+ constructor(vehicleService: Vehicles, events: EventsAPI<'server'>);
18
20
  /**
19
21
  * Applies modifications to a vehicle with validation.
20
22
  *
@@ -11,6 +11,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
13
  import { inject, injectable } from 'tsyringe';
14
+ import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
14
15
  import { coreLogger } from '../../../kernel/logger';
15
16
  import { Vehicles } from './vehicles.api';
16
17
  /**
@@ -27,8 +28,10 @@ import { Vehicles } from './vehicles.api';
27
28
  */
28
29
  let VehicleModification = class VehicleModification {
29
30
  vehicleService;
30
- constructor(vehicleService) {
31
+ events;
32
+ constructor(vehicleService, events) {
31
33
  this.vehicleService = vehicleService;
34
+ this.events = events;
32
35
  }
33
36
  /**
34
37
  * Applies modifications to a vehicle with validation.
@@ -70,7 +73,7 @@ let VehicleModification = class VehicleModification {
70
73
  requestedBy,
71
74
  mods: Object.keys(validatedMods),
72
75
  });
73
- emitNet('opencore:vehicle:modified', -1, {
76
+ this.events.emit('opencore:vehicle:modified', 'all', {
74
77
  networkId,
75
78
  mods: validatedMods,
76
79
  });
@@ -197,7 +200,7 @@ let VehicleModification = class VehicleModification {
197
200
  windowTint: 0,
198
201
  };
199
202
  coreLogger.info('Vehicle modifications reset', { networkId, requestedBy });
200
- emitNet('opencore:vehicle:modified', -1, {
203
+ this.events.emit('opencore:vehicle:modified', 'all', {
201
204
  networkId,
202
205
  mods: defaultMods,
203
206
  });
@@ -303,6 +306,8 @@ let VehicleModification = class VehicleModification {
303
306
  VehicleModification = __decorate([
304
307
  injectable(),
305
308
  __param(0, inject(Vehicles)),
306
- __metadata("design:paramtypes", [Vehicles])
309
+ __param(1, inject(EventsAPI)),
310
+ __metadata("design:paramtypes", [Vehicles,
311
+ EventsAPI])
307
312
  ], VehicleModification);
308
313
  export { VehicleModification };
@@ -1,12 +1,17 @@
1
1
  import { IHasher } from '../../../adapters/contracts/IHasher';
2
- import { IPlatformCapabilities } from '../../../adapters/contracts/IPlatformCapabilities';
3
2
  import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
4
3
  import { IEntityServer } from '../../../adapters/contracts/server/IEntityServer';
5
- import { IPlayerServer } from '../../../adapters/contracts/server/IPlayerServer';
4
+ import { IVehicleLifecycleServer } from '../../../adapters/contracts/server/vehicle-lifecycle/IVehicleLifecycleServer';
6
5
  import { IVehicleServer } from '../../../adapters/contracts/server/IVehicleServer';
6
+ import { Vector3 } from '../../../kernel/utils/vector3';
7
+ import { Player } from '../entities/player';
7
8
  import { Vehicle } from '../entities/vehicle';
8
9
  import { SerializedVehicleData, VehicleCreateOptions, VehicleSpawnResult } from '../types/vehicle.types';
9
10
  import { Players } from '../ports/players.api-port';
11
+ export interface VehicleCreateForPlayerOptions extends Omit<VehicleCreateOptions, 'position' | 'ownership'> {
12
+ offset?: Vector3;
13
+ seatIndex?: number;
14
+ }
10
15
  /**
11
16
  * Server-side service for managing vehicle entities.
12
17
  *
@@ -24,9 +29,8 @@ export declare class Vehicles {
24
29
  private readonly playerDirectory;
25
30
  private readonly entityServer;
26
31
  private readonly vehicleServer;
27
- private readonly platformCapabilities;
32
+ private readonly vehicleLifecycle;
28
33
  private readonly hasher;
29
- private readonly playerServer;
30
34
  private readonly events;
31
35
  /**
32
36
  * Internal registry of all managed vehicles indexed by Network ID
@@ -36,7 +40,7 @@ export declare class Vehicles {
36
40
  * Cached adapters bundle for Vehicle instances
37
41
  */
38
42
  private readonly vehicleAdapters;
39
- constructor(playerDirectory: Players, entityServer: IEntityServer, vehicleServer: IVehicleServer, platformCapabilities: IPlatformCapabilities, hasher: IHasher, playerServer: IPlayerServer, events: EventsAPI<'server'>);
43
+ constructor(playerDirectory: Players, entityServer: IEntityServer, vehicleServer: IVehicleServer, vehicleLifecycle: IVehicleLifecycleServer, hasher: IHasher, events: EventsAPI<'server'>);
40
44
  /**
41
45
  * Creates a new vehicle on the server.
42
46
  *
@@ -54,7 +58,9 @@ export declare class Vehicles {
54
58
  * @param options - Vehicle creation options
55
59
  * @returns Spawn result
56
60
  */
57
- createForPlayer(clientID: number, options: VehicleCreateOptions): Promise<VehicleSpawnResult>;
61
+ createForPlayer(playerOrClientID: Player | number, options: VehicleCreateForPlayerOptions): Promise<VehicleSpawnResult>;
62
+ private resolvePlayer;
63
+ private getSpawnPositionForPlayer;
58
64
  /**
59
65
  * Retrieves a vehicle by its Network ID.
60
66
  *
@@ -12,14 +12,14 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  };
13
13
  import { inject, injectable } from 'tsyringe';
14
14
  import { IHasher } from '../../../adapters/contracts/IHasher';
15
- import { IPlatformCapabilities, PlatformFeatures, } from '../../../adapters/contracts/IPlatformCapabilities';
16
15
  import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
17
16
  import { IEntityServer } from '../../../adapters/contracts/server/IEntityServer';
18
- import { IPlayerServer } from '../../../adapters/contracts/server/IPlayerServer';
17
+ import { IVehicleLifecycleServer } from '../../../adapters/contracts/server/vehicle-lifecycle/IVehicleLifecycleServer';
19
18
  import { IVehicleServer } from '../../../adapters/contracts/server/IVehicleServer';
20
19
  import { coreLogger } from '../../../kernel/logger';
21
20
  import { Vehicle } from '../entities/vehicle';
22
21
  import { Players } from '../ports/players.api-port';
22
+ const DEFAULT_PLAYER_VEHICLE_OFFSET = { x: 0, y: 3, z: 0 };
23
23
  /**
24
24
  * Server-side service for managing vehicle entities.
25
25
  *
@@ -37,9 +37,8 @@ let Vehicles = class Vehicles {
37
37
  playerDirectory;
38
38
  entityServer;
39
39
  vehicleServer;
40
- platformCapabilities;
40
+ vehicleLifecycle;
41
41
  hasher;
42
- playerServer;
43
42
  events;
44
43
  /**
45
44
  * Internal registry of all managed vehicles indexed by Network ID
@@ -49,13 +48,12 @@ let Vehicles = class Vehicles {
49
48
  * Cached adapters bundle for Vehicle instances
50
49
  */
51
50
  vehicleAdapters;
52
- constructor(playerDirectory, entityServer, vehicleServer, platformCapabilities, hasher, playerServer, events) {
51
+ constructor(playerDirectory, entityServer, vehicleServer, vehicleLifecycle, hasher, events) {
53
52
  this.playerDirectory = playerDirectory;
54
53
  this.entityServer = entityServer;
55
54
  this.vehicleServer = vehicleServer;
56
- this.platformCapabilities = platformCapabilities;
55
+ this.vehicleLifecycle = vehicleLifecycle;
57
56
  this.hasher = hasher;
58
- this.playerServer = playerServer;
59
57
  this.events = events;
60
58
  this.vehicleAdapters = {
61
59
  entityServer: this.entityServer,
@@ -75,20 +73,13 @@ let Vehicles = class Vehicles {
75
73
  try {
76
74
  const { model, position, heading = 0, plate, primaryColor, secondaryColor, mods, persistent = false, ownership, metadata, routingBucket = 0, locked = false, fuel = 100.0, } = options;
77
75
  const modelHash = typeof model === 'string' ? this.hasher.getHashKey(model) : model;
78
- const serverVehicleCreationEnabled = this.platformCapabilities.getConfig('enableServerVehicleCreation') ??
79
- this.platformCapabilities.isFeatureSupported(PlatformFeatures.SERVER_ENTITIES);
80
- if (!serverVehicleCreationEnabled) {
81
- const profile = this.platformCapabilities.getConfig('gameProfile') ?? 'unknown';
82
- return {
83
- networkId: 0,
84
- handle: 0,
85
- success: false,
86
- error: `Server vehicle creation is disabled for profile '${profile}'`,
87
- };
88
- }
89
- const vehicleType = this.platformCapabilities.getConfig('defaultVehicleType') ?? 'automobile';
90
- const handle = this.vehicleServer.createServerSetter(modelHash, vehicleType, position.x, position.y, position.z, heading);
91
- if (!handle || handle === 0) {
76
+ const { handle, networkId } = await this.vehicleLifecycle.create({
77
+ model: typeof model === 'string' ? model : String(model),
78
+ modelHash,
79
+ position,
80
+ heading,
81
+ });
82
+ if (!Number.isFinite(handle) || handle < 0) {
92
83
  coreLogger.error('Failed to create vehicle', { model, position });
93
84
  return {
94
85
  networkId: 0,
@@ -100,7 +91,6 @@ let Vehicles = class Vehicles {
100
91
  while (!this.entityServer.doesExist(handle)) {
101
92
  await new Promise((resolve) => setTimeout(resolve, 0));
102
93
  }
103
- const networkId = this.vehicleServer.getNetworkIdFromEntity(handle);
104
94
  const vehicleOwnership = {
105
95
  clientID: ownership?.clientID,
106
96
  accountID: ownership?.accountID,
@@ -129,10 +119,14 @@ let Vehicles = class Vehicles {
129
119
  vehicle.setRoutingBucket(routingBucket);
130
120
  }
131
121
  this.vehiclesByNetworkId.set(networkId, vehicle);
122
+ let ownershipComp = vehicleOwnership.type;
123
+ if (vehicleOwnership.type === 'player') {
124
+ ownershipComp = `${vehicleOwnership.type}:${ownership?.clientID}`;
125
+ }
132
126
  coreLogger.info('Vehicle created', {
133
127
  networkId,
134
128
  model,
135
- ownership: vehicleOwnership.type,
129
+ ownership: ownershipComp,
136
130
  persistent,
137
131
  totalVehicles: this.vehiclesByNetworkId.size,
138
132
  });
@@ -163,8 +157,8 @@ let Vehicles = class Vehicles {
163
157
  * @param options - Vehicle creation options
164
158
  * @returns Spawn result
165
159
  */
166
- async createForPlayer(clientID, options) {
167
- const player = this.playerDirectory.getByClient(clientID);
160
+ async createForPlayer(playerOrClientID, options) {
161
+ const player = this.resolvePlayer(playerOrClientID);
168
162
  if (!player) {
169
163
  return {
170
164
  networkId: 0,
@@ -174,19 +168,42 @@ let Vehicles = class Vehicles {
174
168
  };
175
169
  }
176
170
  const ownership = {
177
- clientID,
171
+ clientID: player.clientID,
178
172
  accountID: player.accountID,
179
173
  type: 'player',
180
174
  };
175
+ const spawnPosition = this.getSpawnPositionForPlayer(player, options.offset);
176
+ const spawnHeading = options.heading ?? player.getHeading();
181
177
  const result = await this.create({
182
178
  ...options,
179
+ position: spawnPosition,
180
+ heading: spawnHeading,
183
181
  ownership,
184
182
  });
185
183
  if (result.success) {
186
- this.events.emit('opencore:vehicle:warpInto', clientID, result.networkId, -1);
184
+ const seatIndex = options.seatIndex ?? -1;
185
+ await Promise.resolve(this.vehicleLifecycle.warpPlayerIntoVehicle({
186
+ playerSrc: player.clientID.toString(),
187
+ networkId: result.networkId,
188
+ seatIndex,
189
+ }));
187
190
  }
188
191
  return result;
189
192
  }
193
+ resolvePlayer(playerOrClientID) {
194
+ return typeof playerOrClientID === 'number'
195
+ ? this.playerDirectory.getByClient(playerOrClientID)
196
+ : playerOrClientID;
197
+ }
198
+ getSpawnPositionForPlayer(player, offset = DEFAULT_PLAYER_VEHICLE_OFFSET) {
199
+ const position = player.getPosition();
200
+ const headingRadians = (player.getHeading() * Math.PI) / 180;
201
+ return {
202
+ x: position.x + Math.sin(headingRadians) * offset.y + Math.cos(headingRadians) * offset.x,
203
+ y: position.y + Math.cos(headingRadians) * offset.y - Math.sin(headingRadians) * offset.x,
204
+ z: position.z + offset.z,
205
+ };
206
+ }
190
207
  /**
191
208
  * Retrieves a vehicle by its Network ID.
192
209
  *
@@ -318,10 +335,7 @@ let Vehicles = class Vehicles {
318
335
  const player = this.playerDirectory.getByClient(clientID);
319
336
  if (!player)
320
337
  return false;
321
- const playerPed = this.playerServer.getPed(player.clientID.toString());
322
- if (!playerPed || playerPed === 0)
323
- return false;
324
- const playerPos = this.entityServer.getCoords(playerPed);
338
+ const playerPos = player.getPosition();
325
339
  const vehiclePos = vehicle.position;
326
340
  const distance = Math.sqrt((playerPos.x - vehiclePos.x) ** 2 +
327
341
  (playerPos.y - vehiclePos.y) ** 2 +
@@ -371,16 +385,14 @@ Vehicles = __decorate([
371
385
  __param(0, inject(Players)),
372
386
  __param(1, inject(IEntityServer)),
373
387
  __param(2, inject(IVehicleServer)),
374
- __param(3, inject(IPlatformCapabilities)),
388
+ __param(3, inject(IVehicleLifecycleServer)),
375
389
  __param(4, inject(IHasher)),
376
- __param(5, inject(IPlayerServer)),
377
- __param(6, inject(EventsAPI)),
390
+ __param(5, inject(EventsAPI)),
378
391
  __metadata("design:paramtypes", [Players,
379
392
  IEntityServer,
380
393
  IVehicleServer,
381
- IPlatformCapabilities,
394
+ IVehicleLifecycleServer,
382
395
  IHasher,
383
- IPlayerServer,
384
396
  EventsAPI])
385
397
  ], Vehicles);
386
398
  export { Vehicles };
@@ -1,8 +1,10 @@
1
- import { IEngineEvents } from '../../adapters';
2
- import { registerServerCapabilities } from '../../adapters/register-capabilities';
1
+ import { IEngineEvents, IPlatformContext } from '../../adapters';
2
+ import { IExports } from '../../adapters/contracts/IExports';
3
3
  import { EventsAPI } from '../../adapters/contracts/transport/events.api';
4
4
  import { GLOBAL_CONTAINER, MetadataScanner } from '../../kernel/di/index';
5
5
  import { getLogLevel, LogLevelLabels, loggers } from '../../kernel/logger';
6
+ import { createNodeServerAdapter } from './adapter/node-server-adapter';
7
+ import { installServerAdapter } from './adapter/registry';
6
8
  import { PrincipalProviderContract } from './contracts/index';
7
9
  import { getServerBinaryServiceRegistry } from './decorators/binaryService';
8
10
  import { getServerControllerRegistry } from './decorators/controller';
@@ -84,9 +86,13 @@ export async function initServer(options, plugins) {
84
86
  mode: ctx.mode,
85
87
  scope: getFrameworkModeScope(ctx.mode),
86
88
  });
87
- // Register platform-specific capabilities (adapters)
88
- await registerServerCapabilities();
89
- loggers.bootstrap.debug('Platform capabilities registered');
89
+ // Register platform-specific capabilities through the selected server adapter.
90
+ await installServerAdapter(options.adapter ?? createNodeServerAdapter());
91
+ const platformContext = GLOBAL_CONTAINER.resolve(IPlatformContext);
92
+ loggers.bootstrap.debug('Loading server Adapter ', {
93
+ adapter: options.adapter?.name ?? 'node',
94
+ game: platformContext.gameProfile,
95
+ });
90
96
  const dependenciesToWaitFor = [];
91
97
  if (ctx.mode === 'RESOURCE') {
92
98
  loggers.bootstrap.info(`[WAIT] Standing by for Core '${ctx.coreResourceName}' to be ready...`);
@@ -183,6 +189,7 @@ function createCoreDependency(coreName) {
183
189
  clearInterval(pollingInterval);
184
190
  };
185
191
  // 1. Register listener FIRST (before any requests)
192
+ const exportsService = GLOBAL_CONTAINER.resolve(IExports);
186
193
  const onReady = () => {
187
194
  if (!resolved) {
188
195
  loggers.bootstrap.debug(`Core '${coreName}' detected via 'core:ready' event!`);
@@ -197,8 +204,9 @@ function createCoreDependency(coreName) {
197
204
  if (resolved)
198
205
  return;
199
206
  try {
200
- const globalExports = globalThis.exports;
201
- const isReady = globalExports?.[coreName]?.isCoreReady?.();
207
+ const isReady = exportsService
208
+ .getResource(coreName)
209
+ ?.isCoreReady?.();
202
210
  loggers.bootstrap.debug(`Polling isCoreReady export: ${isReady}`);
203
211
  if (isReady === true) {
204
212
  loggers.bootstrap.debug(`Core '${coreName}' detected via isCoreReady export!`);
@@ -360,7 +360,7 @@ __decorate([
360
360
  __metadata("design:returntype", Array)
361
361
  ], ChannelExportController.prototype, "getAllChannels", null);
362
362
  __decorate([
363
- OnRuntimeEvent('onServerResourceStop'),
363
+ OnRuntimeEvent(RUNTIME_EVENTS.serverResourceStop),
364
364
  __metadata("design:type", Function),
365
365
  __metadata("design:paramtypes", [String]),
366
366
  __metadata("design:returntype", void 0)
@@ -371,3 +371,4 @@ ChannelExportController = __decorate([
371
371
  Players])
372
372
  ], ChannelExportController);
373
373
  export { ChannelExportController };
374
+ import { RUNTIME_EVENTS } from '../../../adapters/contracts/runtime';
@@ -267,7 +267,7 @@ let CommandExportController = class CommandExportController {
267
267
  if (!allowed) {
268
268
  const errorMessage = message || `Rate limit exceeded for command: ${commandName}`;
269
269
  if (onExceed === 'KICK') {
270
- DropPlayer(player.clientID.toString(), errorMessage);
270
+ player.kick(errorMessage);
271
271
  }
272
272
  throw new SecurityError(onExceed || 'LOG', errorMessage, { clientID: player.clientID });
273
273
  }
@@ -13,6 +13,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  import { inject } from 'tsyringe';
14
14
  import { Controller } from '../decorators/controller';
15
15
  import { Export } from '../decorators/export';
16
+ import { serializeServerPlayerData } from '../adapter/serialization';
16
17
  import { Players } from '../ports/players.api-port';
17
18
  /**
18
19
  * Exports player directory functionality for RESOURCE mode access.
@@ -37,18 +38,18 @@ let PlayerExportController = class PlayerExportController {
37
38
  }
38
39
  getPlayerData(clientID) {
39
40
  const player = this.playerService.getByClient(clientID);
40
- return player?.serialize() ?? null;
41
+ return player ? serializeServerPlayerData(player) : null;
41
42
  }
42
43
  getManyData(clientIds) {
43
- return this.playerService.getMany(clientIds).map((p) => p.serialize());
44
+ return this.playerService.getMany(clientIds).map((player) => serializeServerPlayerData(player));
44
45
  }
45
46
  getAllPlayersData() {
46
- return this.playerService.getAll().map((p) => p.serialize());
47
+ return this.playerService.getAll().map((player) => serializeServerPlayerData(player));
47
48
  }
48
49
  getPlayerByAccountId(accountId) {
49
50
  const players = this.playerService.getAll();
50
51
  const player = players.find((p) => p.accountID === accountId);
51
- return player?.serialize() ?? null;
52
+ return player ? serializeServerPlayerData(player) : null;
52
53
  }
53
54
  getPlayerCount() {
54
55
  return this.playerService.getAll().length;
@@ -10,6 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
+ import { RUNTIME_EVENTS } from '../../../adapters/contracts/runtime';
13
14
  import { inject } from 'tsyringe';
14
15
  import { loggers } from '../../../kernel/logger';
15
16
  import { emitFrameworkEvent } from '../bus/internal-event.bus';
@@ -60,13 +61,13 @@ let SessionController = class SessionController {
60
61
  }
61
62
  };
62
63
  __decorate([
63
- OnRuntimeEvent('playerJoining'),
64
+ OnRuntimeEvent(RUNTIME_EVENTS.playerJoining),
64
65
  __metadata("design:type", Function),
65
66
  __metadata("design:paramtypes", [Number, Object]),
66
67
  __metadata("design:returntype", Promise)
67
68
  ], SessionController.prototype, "onPlayerJoining", null);
68
69
  __decorate([
69
- OnRuntimeEvent('playerDropped'),
70
+ OnRuntimeEvent(RUNTIME_EVENTS.playerDropped),
70
71
  __metadata("design:type", Function),
71
72
  __metadata("design:paramtypes", [Number]),
72
73
  __metadata("design:returntype", Promise)
@@ -1,3 +1,4 @@
1
+ import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
1
2
  import { Player } from '../entities/player';
2
3
  import { Vehicles } from '../apis/vehicles.api';
3
4
  /**
@@ -8,7 +9,8 @@ import { Vehicles } from '../apis/vehicles.api';
8
9
  */
9
10
  export declare class VehicleController {
10
11
  private readonly vehicleService;
11
- constructor(vehicleService: Vehicles);
12
+ private readonly events;
13
+ constructor(vehicleService: Vehicles, events: EventsAPI<'server'>);
12
14
  /**
13
15
  * Handles client request to get vehicle data.
14
16
  */