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

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 (397) hide show
  1. package/dist/adapters/contracts/IEngineEvents.d.ts +5 -2
  2. package/dist/adapters/contracts/IEngineEvents.js +7 -0
  3. package/dist/adapters/contracts/IExports.d.ts +2 -2
  4. package/dist/adapters/contracts/IPlatformContext.d.ts +43 -0
  5. package/dist/adapters/contracts/IPlatformContext.js +8 -0
  6. package/dist/adapters/contracts/client/IClientLocalPlayerBridge.d.ts +25 -0
  7. package/dist/adapters/contracts/client/IClientLocalPlayerBridge.js +8 -0
  8. package/dist/adapters/contracts/client/IClientLogConsole.d.ts +13 -0
  9. package/dist/adapters/contracts/client/IClientLogConsole.js +2 -0
  10. package/dist/adapters/contracts/client/IClientPlatformBridge.d.ts +195 -0
  11. package/dist/adapters/contracts/client/IClientPlatformBridge.js +282 -0
  12. package/dist/adapters/contracts/client/IClientRuntimeBridge.d.ts +18 -0
  13. package/dist/adapters/contracts/client/IClientRuntimeBridge.js +14 -0
  14. package/dist/adapters/contracts/client/IGtaPedAppearanceBridge.d.ts +26 -0
  15. package/dist/adapters/contracts/client/IGtaPedAppearanceBridge.js +2 -0
  16. package/dist/adapters/contracts/client/camera/IClientCameraPort.d.ts +107 -0
  17. package/dist/adapters/contracts/client/camera/IClientCameraPort.js +8 -0
  18. package/dist/adapters/contracts/client/camera/index.d.ts +1 -0
  19. package/dist/adapters/contracts/client/camera/index.js +1 -0
  20. package/dist/adapters/contracts/client/index.d.ts +11 -0
  21. package/dist/adapters/contracts/client/index.js +11 -0
  22. package/dist/adapters/contracts/client/ped/IClientPedPort.d.ts +62 -0
  23. package/dist/adapters/contracts/client/ped/IClientPedPort.js +5 -0
  24. package/dist/adapters/contracts/client/ped/index.d.ts +1 -0
  25. package/dist/adapters/contracts/client/ped/index.js +1 -0
  26. package/dist/adapters/contracts/client/progress/IClientProgressPort.d.ts +53 -0
  27. package/dist/adapters/contracts/client/progress/IClientProgressPort.js +8 -0
  28. package/dist/adapters/contracts/client/progress/index.d.ts +1 -0
  29. package/dist/adapters/contracts/client/progress/index.js +1 -0
  30. package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.d.ts +6 -0
  31. package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.js +6 -0
  32. package/dist/adapters/contracts/client/spawn/IClientSpawnPort.d.ts +19 -0
  33. package/dist/adapters/contracts/client/spawn/IClientSpawnPort.js +2 -0
  34. package/dist/adapters/contracts/client/spawn/index.d.ts +4 -0
  35. package/dist/adapters/contracts/client/spawn/index.js +4 -0
  36. package/dist/adapters/contracts/client/spawn/types.d.ts +17 -0
  37. package/dist/adapters/contracts/client/ui/IClientBlipBridge.d.ts +25 -0
  38. package/dist/adapters/contracts/client/ui/IClientBlipBridge.js +2 -0
  39. package/dist/adapters/contracts/client/ui/IClientMarkerBridge.d.ts +31 -0
  40. package/dist/adapters/contracts/client/ui/IClientMarkerBridge.js +2 -0
  41. package/dist/adapters/contracts/client/ui/IClientNotificationBridge.d.ts +21 -0
  42. package/dist/adapters/contracts/client/ui/IClientNotificationBridge.js +2 -0
  43. package/dist/adapters/contracts/client/ui/index.d.ts +4 -0
  44. package/dist/adapters/contracts/client/ui/index.js +4 -0
  45. package/dist/adapters/contracts/client/ui/webview/IClientWebViewBridge.d.ts +14 -0
  46. package/dist/adapters/contracts/client/ui/webview/IClientWebViewBridge.js +2 -0
  47. package/dist/adapters/contracts/client/ui/webview/index.d.ts +2 -0
  48. package/dist/adapters/contracts/client/ui/webview/index.js +2 -0
  49. package/dist/adapters/contracts/client/ui/webview/types.d.ts +27 -0
  50. package/dist/adapters/contracts/client/ui/webview/types.js +0 -0
  51. package/dist/adapters/contracts/client/vehicle/IClientVehiclePort.d.ts +166 -0
  52. package/dist/adapters/contracts/client/vehicle/IClientVehiclePort.js +8 -0
  53. package/dist/adapters/contracts/client/vehicle/index.d.ts +1 -0
  54. package/dist/adapters/contracts/client/vehicle/index.js +1 -0
  55. package/dist/adapters/contracts/index.d.ts +4 -2
  56. package/dist/adapters/contracts/index.js +4 -3
  57. package/dist/adapters/contracts/runtime/index.d.ts +1 -0
  58. package/dist/adapters/contracts/runtime/index.js +1 -0
  59. package/dist/adapters/contracts/runtime/runtime-events.d.ts +9 -0
  60. package/dist/adapters/contracts/runtime/runtime-events.js +7 -0
  61. package/dist/adapters/contracts/server/IEntityServer.d.ts +4 -28
  62. package/dist/adapters/contracts/server/IEntityServer.js +0 -26
  63. package/dist/adapters/contracts/server/IPlayerServer.d.ts +7 -26
  64. package/dist/adapters/contracts/server/IPlayerServer.js +0 -26
  65. package/dist/adapters/contracts/server/index.d.ts +10 -0
  66. package/dist/adapters/contracts/server/index.js +10 -0
  67. package/dist/adapters/contracts/server/npc-lifecycle/INpcLifecycleServer.d.ts +5 -0
  68. package/dist/adapters/contracts/server/npc-lifecycle/INpcLifecycleServer.js +2 -0
  69. package/dist/adapters/contracts/server/npc-lifecycle/index.d.ts +2 -0
  70. package/dist/adapters/contracts/server/npc-lifecycle/index.js +2 -0
  71. package/dist/adapters/contracts/server/npc-lifecycle/types.d.ts +17 -0
  72. package/dist/adapters/contracts/server/npc-lifecycle/types.js +0 -0
  73. package/dist/adapters/contracts/server/player-appearance/IPlayerAppearanceLifecycleServer.d.ts +11 -0
  74. package/dist/adapters/contracts/server/player-appearance/IPlayerAppearanceLifecycleServer.js +2 -0
  75. package/dist/adapters/contracts/server/player-appearance/index.d.ts +1 -0
  76. package/dist/adapters/contracts/server/player-appearance/index.js +1 -0
  77. package/dist/adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer.d.ts +6 -0
  78. package/dist/adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer.js +2 -0
  79. package/dist/adapters/contracts/server/player-lifecycle/index.d.ts +2 -0
  80. package/dist/adapters/contracts/server/player-lifecycle/index.js +2 -0
  81. package/dist/adapters/contracts/server/player-lifecycle/types.d.ts +17 -0
  82. package/dist/adapters/contracts/server/player-lifecycle/types.js +0 -0
  83. package/dist/adapters/contracts/server/player-state/IPlayerStateSyncServer.d.ts +6 -0
  84. package/dist/adapters/contracts/server/player-state/IPlayerStateSyncServer.js +2 -0
  85. package/dist/adapters/contracts/server/player-state/index.d.ts +1 -0
  86. package/dist/adapters/contracts/server/player-state/index.js +1 -0
  87. package/dist/adapters/contracts/server/vehicle-lifecycle/IVehicleLifecycleServer.d.ts +5 -0
  88. package/dist/adapters/contracts/server/vehicle-lifecycle/IVehicleLifecycleServer.js +2 -0
  89. package/dist/adapters/contracts/server/vehicle-lifecycle/index.d.ts +2 -0
  90. package/dist/adapters/contracts/server/vehicle-lifecycle/index.js +2 -0
  91. package/dist/adapters/contracts/server/vehicle-lifecycle/types.d.ts +16 -0
  92. package/dist/adapters/contracts/server/vehicle-lifecycle/types.js +0 -0
  93. package/dist/adapters/contracts/transport/events.api.d.ts +3 -3
  94. package/dist/adapters/contracts/transport/index.d.ts +4 -0
  95. package/dist/adapters/contracts/transport/index.js +4 -0
  96. package/dist/adapters/contracts/transport/rpc.api.d.ts +3 -3
  97. package/dist/adapters/index.d.ts +3 -14
  98. package/dist/adapters/index.js +3 -20
  99. package/dist/adapters/node/node-capabilities.d.ts +11 -11
  100. package/dist/adapters/node/node-capabilities.js +15 -27
  101. package/dist/adapters/node/node-engine-events.d.ts +1 -1
  102. package/dist/adapters/node/node-engine-events.js +2 -1
  103. package/dist/adapters/node/node-entity-server.d.ts +2 -2
  104. package/dist/adapters/node/node-entity-server.js +2 -2
  105. package/dist/adapters/node/node-ped-appearance-client.d.ts +2 -2
  106. package/dist/adapters/node/node-ped-appearance-client.js +2 -2
  107. package/dist/adapters/node/node-platform.js +4 -4
  108. package/dist/adapters/node/node-player-server.d.ts +3 -2
  109. package/dist/adapters/node/node-player-server.js +8 -2
  110. package/dist/adapters/node/transport/node.events.d.ts +4 -4
  111. package/dist/adapters/node/transport/node.rpc.d.ts +3 -3
  112. package/dist/adapters/node/transport/node.rpc.js +1 -1
  113. package/dist/adapters/register-capabilities.d.ts +1 -1
  114. package/dist/adapters/register-capabilities.js +1 -3
  115. package/dist/adapters/register-client-capabilities.d.ts +3 -2
  116. package/dist/adapters/register-client-capabilities.js +16 -41
  117. package/dist/contracts/client.d.ts +5 -0
  118. package/dist/contracts/client.js +5 -0
  119. package/dist/contracts/server.d.ts +19 -0
  120. package/dist/contracts/server.js +19 -0
  121. package/dist/contracts.d.ts +5 -0
  122. package/dist/contracts.js +5 -0
  123. package/dist/index.d.ts +2 -1
  124. package/dist/index.js +2 -1
  125. package/dist/kernel/logger/client-log-console.d.ts +4 -0
  126. package/dist/kernel/logger/client-log-console.js +43 -0
  127. package/dist/kernel/logger/core-logger.d.ts +3 -1
  128. package/dist/kernel/logger/core-logger.js +4 -2
  129. package/dist/kernel/logger/index.d.ts +3 -1
  130. package/dist/kernel/logger/index.js +2 -1
  131. package/dist/kernel/logger/logger.types.d.ts +1 -0
  132. package/dist/kernel/logger/logger.types.js +35 -0
  133. package/dist/kernel/logger/transports/buffered.transport.js +4 -4
  134. package/dist/kernel/logger/transports/console.transport.js +2 -2
  135. package/dist/kernel/logger/transports/dev-transport.factory.js +1 -1
  136. package/dist/kernel/logger/transports/simple-console.transport.js +15 -10
  137. package/dist/kernel-public.d.ts +1 -0
  138. package/dist/kernel-public.js +1 -0
  139. package/dist/runtime/client/adapter/client-adapter.d.ts +25 -0
  140. package/dist/runtime/client/adapter/client-adapter.js +11 -0
  141. package/dist/runtime/client/adapter/index.d.ts +20 -0
  142. package/dist/runtime/client/adapter/index.js +20 -0
  143. package/dist/runtime/client/adapter/local-player-bridge.d.ts +1 -0
  144. package/dist/runtime/client/adapter/local-player-bridge.js +1 -0
  145. package/dist/runtime/client/adapter/node-blip-bridge.d.ts +9 -0
  146. package/dist/runtime/client/adapter/node-blip-bridge.js +34 -0
  147. package/dist/runtime/client/adapter/node-camera-port.d.ts +19 -0
  148. package/dist/runtime/client/adapter/node-camera-port.js +31 -0
  149. package/dist/runtime/client/adapter/node-client-adapter.d.ts +5 -0
  150. package/dist/runtime/client/adapter/node-client-adapter.js +64 -0
  151. package/dist/runtime/client/adapter/node-local-player-bridge.d.ts +11 -0
  152. package/dist/runtime/client/adapter/node-local-player-bridge.js +27 -0
  153. package/dist/runtime/client/adapter/node-log-console.d.ts +11 -0
  154. package/dist/runtime/client/adapter/node-log-console.js +48 -0
  155. package/dist/runtime/client/adapter/node-marker-bridge.d.ts +10 -0
  156. package/dist/runtime/client/adapter/node-marker-bridge.js +35 -0
  157. package/dist/runtime/client/adapter/node-notification-bridge.d.ts +5 -0
  158. package/dist/{adapters/fivem/fivem-hasher.js → runtime/client/adapter/node-notification-bridge.js} +7 -11
  159. package/dist/runtime/client/adapter/node-ped-port.d.ts +20 -0
  160. package/dist/runtime/client/adapter/node-ped-port.js +38 -0
  161. package/dist/runtime/client/adapter/node-platform-bridge.d.ts +3 -0
  162. package/dist/{adapters/fivem/fivem-tick.js → runtime/client/adapter/node-platform-bridge.js} +5 -10
  163. package/dist/runtime/client/adapter/node-progress-port.d.ts +8 -0
  164. package/dist/runtime/client/adapter/node-progress-port.js +27 -0
  165. package/dist/runtime/client/adapter/node-runtime-bridge.d.ts +22 -0
  166. package/dist/runtime/client/adapter/node-runtime-bridge.js +58 -0
  167. package/dist/runtime/client/adapter/node-spawn-bridge.d.ts +8 -0
  168. package/dist/runtime/client/adapter/node-spawn-bridge.js +22 -0
  169. package/dist/runtime/client/adapter/node-vehicle-port.d.ts +31 -0
  170. package/dist/runtime/client/adapter/node-vehicle-port.js +73 -0
  171. package/dist/runtime/client/adapter/node-webview-bridge.d.ts +16 -0
  172. package/dist/runtime/client/adapter/node-webview-bridge.js +45 -0
  173. package/dist/runtime/client/adapter/platform-bridge.d.ts +1 -0
  174. package/dist/runtime/client/adapter/platform-bridge.js +1 -0
  175. package/dist/runtime/client/adapter/registry.d.ts +9 -0
  176. package/dist/runtime/client/adapter/registry.js +85 -0
  177. package/dist/runtime/client/adapter/runtime-bridge.d.ts +1 -0
  178. package/dist/runtime/client/adapter/runtime-bridge.js +1 -0
  179. package/dist/runtime/client/api.d.ts +2 -1
  180. package/dist/runtime/client/api.js +2 -1
  181. package/dist/runtime/client/client-bootstrap.js +51 -44
  182. package/dist/runtime/client/client-core.d.ts +2 -0
  183. package/dist/runtime/client/client-core.js +9 -0
  184. package/dist/runtime/client/client-runtime.d.ts +3 -0
  185. package/dist/runtime/client/client-runtime.js +3 -0
  186. package/dist/runtime/client/controllers/appearance.controller.d.ts +3 -1
  187. package/dist/runtime/client/controllers/appearance.controller.js +17 -6
  188. package/dist/runtime/client/controllers/spawner.controller.js +6 -3
  189. package/dist/runtime/client/decorators/controller.js +2 -10
  190. package/dist/runtime/client/decorators/onView.d.ts +3 -3
  191. package/dist/runtime/client/decorators/onView.js +3 -3
  192. package/dist/runtime/client/index.d.ts +1 -0
  193. package/dist/runtime/client/index.js +1 -0
  194. package/dist/runtime/client/library/create-client-library.js +9 -1
  195. package/dist/runtime/client/services/appearance.service.d.ts +2 -2
  196. package/dist/runtime/client/services/appearance.service.js +7 -4
  197. package/dist/runtime/client/services/blip.service.d.ts +6 -93
  198. package/dist/runtime/client/services/blip.service.js +58 -153
  199. package/dist/runtime/client/services/camera-effects.registry.d.ts +3 -0
  200. package/dist/runtime/client/services/camera-effects.registry.js +20 -7
  201. package/dist/runtime/client/services/camera.d.ts +4 -106
  202. package/dist/runtime/client/services/camera.js +36 -98
  203. package/dist/runtime/client/services/cinematic.d.ts +5 -1
  204. package/dist/runtime/client/services/cinematic.js +45 -30
  205. package/dist/runtime/client/services/index.d.ts +1 -0
  206. package/dist/runtime/client/services/index.js +1 -0
  207. package/dist/runtime/client/services/marker.service.d.ts +12 -63
  208. package/dist/runtime/client/services/marker.service.js +62 -97
  209. package/dist/runtime/client/services/notification.service.d.ts +6 -57
  210. package/dist/runtime/client/services/notification.service.js +43 -81
  211. package/dist/runtime/client/services/ped.service.d.ts +6 -148
  212. package/dist/runtime/client/services/ped.service.js +42 -221
  213. package/dist/runtime/client/services/progress.service.d.ts +4 -75
  214. package/dist/runtime/client/services/progress.service.js +20 -178
  215. package/dist/runtime/client/services/session-bridge.service.d.ts +15 -0
  216. package/dist/runtime/client/services/session-bridge.service.js +62 -0
  217. package/dist/runtime/client/services/spawn.service.d.ts +4 -56
  218. package/dist/runtime/client/services/spawn.service.js +29 -191
  219. package/dist/runtime/client/services/streaming.service.d.ts +5 -126
  220. package/dist/runtime/client/services/streaming.service.js +72 -217
  221. package/dist/runtime/client/services/textui.service.d.ts +5 -45
  222. package/dist/runtime/client/services/textui.service.js +55 -88
  223. package/dist/runtime/client/services/vehicle-client.service.d.ts +12 -149
  224. package/dist/runtime/client/services/vehicle-client.service.js +128 -374
  225. package/dist/runtime/client/services/vehicle.service.d.ts +4 -147
  226. package/dist/runtime/client/services/vehicle.service.js +33 -239
  227. package/dist/runtime/client/system/processors/export.processor.d.ts +3 -0
  228. package/dist/runtime/client/system/processors/export.processor.js +16 -3
  229. package/dist/runtime/client/system/processors/gameEvent.processor.d.ts +3 -0
  230. package/dist/runtime/client/system/processors/gameEvent.processor.js +16 -3
  231. package/dist/runtime/client/system/processors/interval.processor.d.ts +3 -0
  232. package/dist/runtime/client/system/processors/interval.processor.js +17 -4
  233. package/dist/runtime/client/system/processors/key.processor.d.ts +3 -0
  234. package/dist/runtime/client/system/processors/key.processor.js +18 -5
  235. package/dist/runtime/client/system/processors/localEvent.processor.d.ts +3 -0
  236. package/dist/runtime/client/system/processors/localEvent.processor.js +16 -3
  237. package/dist/runtime/client/system/processors/netEvent.processor.d.ts +3 -0
  238. package/dist/runtime/client/system/processors/netEvent.processor.js +16 -3
  239. package/dist/runtime/client/system/processors/onRpc.processor.js +1 -1
  240. package/dist/runtime/client/system/processors/resourceLifecycle.processor.d.ts +5 -0
  241. package/dist/runtime/client/system/processors/resourceLifecycle.processor.js +26 -7
  242. package/dist/runtime/client/system/processors/tick.processor.d.ts +3 -0
  243. package/dist/runtime/client/system/processors/tick.processor.js +16 -3
  244. package/dist/runtime/client/system/processors/view.processor.d.ts +3 -0
  245. package/dist/runtime/client/system/processors/view.processor.js +21 -10
  246. package/dist/runtime/client/system/processors.register.d.ts +1 -0
  247. package/dist/runtime/client/system/processors.register.js +8 -0
  248. package/dist/runtime/client/ui-bridge.d.ts +2 -114
  249. package/dist/runtime/client/ui-bridge.js +2 -194
  250. package/dist/runtime/client/webview-bridge.d.ts +34 -0
  251. package/dist/runtime/client/webview-bridge.js +103 -0
  252. package/dist/runtime/client/webview.service.d.ts +15 -0
  253. package/dist/runtime/client/webview.service.js +103 -0
  254. package/dist/runtime/server/adapter/index.d.ts +5 -0
  255. package/dist/runtime/server/adapter/index.js +5 -0
  256. package/dist/runtime/server/adapter/node-npc-lifecycle-server.d.ts +12 -0
  257. package/dist/runtime/server/adapter/node-npc-lifecycle-server.js +52 -0
  258. package/dist/runtime/server/adapter/node-player-appearance-lifecycle-server.d.ts +22 -0
  259. package/dist/runtime/server/adapter/node-player-appearance-lifecycle-server.js +95 -0
  260. package/dist/runtime/server/adapter/node-player-lifecycle-server.d.ts +11 -0
  261. package/dist/runtime/server/adapter/node-player-lifecycle-server.js +56 -0
  262. package/dist/runtime/server/adapter/node-player-state-sync-server.d.ts +12 -0
  263. package/dist/runtime/server/adapter/node-player-state-sync-server.js +49 -0
  264. package/dist/runtime/server/adapter/node-server-adapter.d.ts +5 -0
  265. package/dist/runtime/server/adapter/node-server-adapter.js +67 -0
  266. package/dist/runtime/server/adapter/node-vehicle-lifecycle-server.d.ts +13 -0
  267. package/dist/runtime/server/adapter/node-vehicle-lifecycle-server.js +58 -0
  268. package/dist/runtime/server/adapter/player-adapter.d.ts +28 -0
  269. package/dist/runtime/server/adapter/player-adapter.js +28 -0
  270. package/dist/runtime/server/adapter/registry.d.ts +26 -0
  271. package/dist/runtime/server/adapter/registry.js +101 -0
  272. package/dist/runtime/server/adapter/serialization.d.ts +6 -0
  273. package/dist/runtime/server/adapter/serialization.js +9 -0
  274. package/dist/runtime/server/adapter/server-adapter.d.ts +28 -0
  275. package/dist/runtime/server/adapter/server-adapter.js +14 -0
  276. package/dist/runtime/server/api.d.ts +2 -1
  277. package/dist/runtime/server/api.js +2 -1
  278. package/dist/runtime/server/apis/appearance.api.d.ts +5 -3
  279. package/dist/runtime/server/apis/appearance.api.js +20 -7
  280. package/dist/runtime/server/apis/chat.api.js +6 -5
  281. package/dist/runtime/server/apis/npcs.api.d.ts +3 -4
  282. package/dist/runtime/server/apis/npcs.api.js +28 -57
  283. package/dist/runtime/server/apis/parallel-compute.api.js +1 -0
  284. package/dist/runtime/server/apis/vehicle-modification.api.d.ts +3 -1
  285. package/dist/runtime/server/apis/vehicle-modification.api.js +13 -6
  286. package/dist/runtime/server/apis/vehicles.api.d.ts +12 -6
  287. package/dist/runtime/server/apis/vehicles.api.js +55 -40
  288. package/dist/runtime/server/bootstrap.js +28 -19
  289. package/dist/runtime/server/controllers/channel.controller.js +2 -1
  290. package/dist/runtime/server/controllers/command-export.controller.js +5 -3
  291. package/dist/runtime/server/controllers/player-export.controller.js +5 -4
  292. package/dist/runtime/server/controllers/remote-command-execution.controller.js +2 -1
  293. package/dist/runtime/server/controllers/session.controller.js +3 -2
  294. package/dist/runtime/server/controllers/vehicle.controller.d.ts +3 -1
  295. package/dist/runtime/server/controllers/vehicle.controller.js +13 -7
  296. package/dist/runtime/server/core.d.ts +2 -0
  297. package/dist/runtime/server/core.js +9 -1
  298. package/dist/runtime/server/decorators/command.d.ts +2 -0
  299. package/dist/runtime/server/decorators/command.js +3 -1
  300. package/dist/runtime/server/decorators/onRuntimeEvent.d.ts +2 -1
  301. package/dist/runtime/server/entities/npc.d.ts +3 -1
  302. package/dist/runtime/server/entities/npc.js +3 -3
  303. package/dist/runtime/server/entities/player.d.ts +9 -12
  304. package/dist/runtime/server/entities/player.js +49 -31
  305. package/dist/runtime/server/entities/vehicle.js +2 -2
  306. package/dist/runtime/server/error-handler.js +13 -2
  307. package/dist/runtime/server/helpers/command-validation.helper.js +21 -8
  308. package/dist/runtime/server/helpers/function-helper.d.ts +1 -0
  309. package/dist/runtime/server/helpers/function-helper.js +15 -8
  310. package/dist/runtime/server/implementations/local/channel.local.d.ts +1 -1
  311. package/dist/runtime/server/implementations/local/channel.local.js +3 -2
  312. package/dist/runtime/server/implementations/local/player.local.d.ts +7 -3
  313. package/dist/runtime/server/implementations/local/player.local.js +23 -11
  314. package/dist/runtime/server/implementations/remote/channel.remote.d.ts +2 -1
  315. package/dist/runtime/server/implementations/remote/channel.remote.js +5 -2
  316. package/dist/runtime/server/implementations/remote/command.remote.d.ts +3 -1
  317. package/dist/runtime/server/implementations/remote/command.remote.js +9 -4
  318. package/dist/runtime/server/implementations/remote/player.remote.d.ts +7 -10
  319. package/dist/runtime/server/implementations/remote/player.remote.js +24 -29
  320. package/dist/runtime/server/library/create-server-library.js +17 -2
  321. package/dist/runtime/server/ports/channel.api-port.d.ts +1 -1
  322. package/dist/runtime/server/runtime.d.ts +3 -0
  323. package/dist/runtime/server/runtime.js +1 -15
  324. package/dist/runtime/server/services/appearance.service.d.ts +0 -95
  325. package/dist/runtime/server/services/appearance.service.js +15 -192
  326. package/dist/runtime/server/services/parallel/worker-pool.d.ts +1 -1
  327. package/dist/runtime/server/services/parallel/worker-pool.js +38 -6
  328. package/dist/runtime/server/services/parallel/worker.js +1 -0
  329. package/dist/runtime/server/services/services.register.js +56 -24
  330. package/dist/runtime/server/system/processors/netEvent.processor.js +1 -1
  331. package/dist/runtime/server/system/processors/onRpc.processor.js +1 -1
  332. package/dist/runtime/server/system/processors/runtimeEvent.processor.d.ts +2 -1
  333. package/dist/runtime/server/system/processors/runtimeEvent.processor.js +1 -1
  334. package/dist/runtime/server/system/schema-generator.d.ts +1 -1
  335. package/dist/runtime/server/system/schema-generator.js +6 -3
  336. package/dist/runtime/server/types/core-exports.types.d.ts +5 -0
  337. package/dist/runtime/shared/helpers/process-tuple-schema.d.ts +2 -0
  338. package/dist/runtime/shared/helpers/process-tuple-schema.js +32 -0
  339. package/dist/runtime/shared/types/system-types.d.ts +55 -0
  340. package/dist/runtime/shared/types/system-types.js +54 -0
  341. package/package.json +41 -13
  342. package/dist/adapters/cfx/cfx-capabilities.d.ts +0 -16
  343. package/dist/adapters/cfx/cfx-capabilities.js +0 -70
  344. package/dist/adapters/cfx/cfx-platform.d.ts +0 -2
  345. package/dist/adapters/cfx/cfx-platform.js +0 -85
  346. package/dist/adapters/cfx/index.d.ts +0 -3
  347. package/dist/adapters/cfx/index.js +0 -3
  348. package/dist/adapters/cfx/runtime-profile.d.ts +0 -3
  349. package/dist/adapters/cfx/runtime-profile.js +0 -37
  350. package/dist/adapters/contracts/IPlatformCapabilities.d.ts +0 -79
  351. package/dist/adapters/contracts/IPlatformCapabilities.js +0 -27
  352. package/dist/adapters/contracts/client/IPedAppearanceClient.d.ts +0 -206
  353. package/dist/adapters/contracts/client/IPedAppearanceClient.js +0 -12
  354. package/dist/adapters/fivem/fivem-capabilities.d.ts +0 -18
  355. package/dist/adapters/fivem/fivem-capabilities.js +0 -61
  356. package/dist/adapters/fivem/fivem-engine-events.d.ts +0 -5
  357. package/dist/adapters/fivem/fivem-engine-events.js +0 -24
  358. package/dist/adapters/fivem/fivem-entity-server.d.ts +0 -26
  359. package/dist/adapters/fivem/fivem-entity-server.js +0 -87
  360. package/dist/adapters/fivem/fivem-exports.d.ts +0 -5
  361. package/dist/adapters/fivem/fivem-exports.js +0 -9
  362. package/dist/adapters/fivem/fivem-hasher.d.ts +0 -7
  363. package/dist/adapters/fivem/fivem-net-transport.d.ts +0 -1
  364. package/dist/adapters/fivem/fivem-ped-appearance-client.d.ts +0 -34
  365. package/dist/adapters/fivem/fivem-ped-appearance-client.js +0 -79
  366. package/dist/adapters/fivem/fivem-ped-appearance-server.d.ts +0 -14
  367. package/dist/adapters/fivem/fivem-ped-appearance-server.js +0 -22
  368. package/dist/adapters/fivem/fivem-ped-server.d.ts +0 -9
  369. package/dist/adapters/fivem/fivem-ped-server.js +0 -30
  370. package/dist/adapters/fivem/fivem-platform.d.ts +0 -5
  371. package/dist/adapters/fivem/fivem-platform.js +0 -74
  372. package/dist/adapters/fivem/fivem-player-server.d.ts +0 -24
  373. package/dist/adapters/fivem/fivem-player-server.js +0 -83
  374. package/dist/adapters/fivem/fivem-playerinfo.d.ts +0 -6
  375. package/dist/adapters/fivem/fivem-playerinfo.js +0 -10
  376. package/dist/adapters/fivem/fivem-resourceinfo.d.ts +0 -5
  377. package/dist/adapters/fivem/fivem-resourceinfo.js +0 -24
  378. package/dist/adapters/fivem/fivem-tick.d.ts +0 -7
  379. package/dist/adapters/fivem/fivem-vehicle-server.d.ts +0 -15
  380. package/dist/adapters/fivem/fivem-vehicle-server.js +0 -44
  381. package/dist/adapters/fivem/index.d.ts +0 -14
  382. package/dist/adapters/fivem/index.js +0 -16
  383. package/dist/adapters/fivem/transport/adapter.d.ts +0 -8
  384. package/dist/adapters/fivem/transport/adapter.js +0 -8
  385. package/dist/adapters/fivem/transport/fivem.events.d.ts +0 -8
  386. package/dist/adapters/fivem/transport/fivem.events.js +0 -36
  387. package/dist/adapters/fivem/transport/fivem.rpc.d.ts +0 -28
  388. package/dist/adapters/fivem/transport/fivem.rpc.js +0 -183
  389. package/dist/runtime/client/controllers/player-sync.controller.d.ts +0 -11
  390. package/dist/runtime/client/controllers/player-sync.controller.js +0 -51
  391. package/dist/runtime/client/player/player.d.ts +0 -262
  392. package/dist/runtime/client/player/player.js +0 -474
  393. package/dist/runtime/client/player/player.loader.d.ts +0 -1
  394. package/dist/runtime/client/player/player.loader.js +0 -18
  395. package/dist/runtime/server/helpers/process-tuple-schema.d.ts +0 -20
  396. package/dist/runtime/server/helpers/process-tuple-schema.js +0 -56
  397. /package/dist/adapters/{fivem/fivem-net-transport.js → contracts/client/spawn/types.js} +0 -0
@@ -12,6 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  };
13
13
  import { inject, injectable } from 'tsyringe';
14
14
  import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
15
+ import { SYSTEM_EVENTS } from '../../shared/types/system-types';
15
16
  import { Players } from '../ports/players.api-port';
16
17
  /**
17
18
  * Service for sending chat messages to players.
@@ -35,7 +36,7 @@ let Chat = class Chat {
35
36
  * @param color - Message color (RGB). Defaults to white.
36
37
  */
37
38
  broadcast(message, author = 'SYSTEM', color = { r: 255, g: 255, b: 255 }) {
38
- this.events.emit('core:chat:message', 'all', {
39
+ this.events.emit(SYSTEM_EVENTS.chat.message, 'all', {
39
40
  args: [author, message],
40
41
  color: color,
41
42
  });
@@ -49,7 +50,7 @@ let Chat = class Chat {
49
50
  * @param color - Message color (RGB).
50
51
  */
51
52
  sendPrivate(player, message, author = 'Private', color = { r: 200, g: 200, b: 200 }) {
52
- this.events.emit('core:chat:addMessage', player.clientID, {
53
+ this.events.emit(SYSTEM_EVENTS.chat.addMessage, player.clientID, {
53
54
  args: [author, message],
54
55
  color: color,
55
56
  });
@@ -60,7 +61,7 @@ let Chat = class Chat {
60
61
  * @param player - Target player.
61
62
  */
62
63
  clearChat(player) {
63
- this.events.emit('core:chat:clear', player.clientID);
64
+ this.events.emit(SYSTEM_EVENTS.chat.clear, player.clientID);
64
65
  }
65
66
  /**
66
67
  * Send a chat message to multiple players.
@@ -72,7 +73,7 @@ let Chat = class Chat {
72
73
  */
73
74
  sendMany(players, message, author = 'SYSTEM', color = { r: 255, g: 255, b: 255 }) {
74
75
  const targetIds = players.map((p) => (typeof p === 'number' ? p : p.clientID));
75
- this.events.emit('core:chat:addMessage', targetIds, {
76
+ this.events.emit(SYSTEM_EVENTS.chat.addMessage, targetIds, {
76
77
  args: [author, message],
77
78
  color: color,
78
79
  });
@@ -116,7 +117,7 @@ let Chat = class Chat {
116
117
  * Clear chat for all connected players.
117
118
  */
118
119
  clearChatAll() {
119
- this.events.emit('core:chat:clear', 'all');
120
+ this.events.emit(SYSTEM_EVENTS.chat.clear, 'all');
120
121
  }
121
122
  };
122
123
  Chat = __decorate([
@@ -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,12 @@ 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';
22
+ import { SYSTEM_EVENTS } from '../../shared/types/system-types';
21
23
  import { NPC } from '../entities/npc';
22
- const DEFAULT_PED_TYPE = 4;
23
- const DEFAULT_SPAWN_TIMEOUT_MS = 2000;
24
24
  /**
25
25
  * Server-side API responsible for the full NPC (ped) lifecycle:
26
26
  * spawn, registry, queries, spatial search, serialization and deletion.
@@ -35,6 +35,7 @@ const DEFAULT_SPAWN_TIMEOUT_MS = 2000;
35
35
  let Npcs = class Npcs {
36
36
  world;
37
37
  entityServer;
38
+ npcLifecycle;
38
39
  pedServer;
39
40
  hasher;
40
41
  events;
@@ -42,15 +43,17 @@ let Npcs = class Npcs {
42
43
  idByHandle = new Map();
43
44
  idByNetId = new Map();
44
45
  adapters;
45
- constructor(world, entityServer, pedServer, hasher, events) {
46
+ constructor(world, entityServer, npcLifecycle, pedServer, hasher, events) {
46
47
  this.world = world;
47
48
  this.entityServer = entityServer;
49
+ this.npcLifecycle = npcLifecycle;
48
50
  this.pedServer = pedServer;
49
51
  this.hasher = hasher;
50
52
  this.events = events;
51
53
  this.adapters = {
52
54
  entityServer: this.entityServer,
53
55
  pedServer: this.pedServer,
56
+ npcLifecycle: this.npcLifecycle,
54
57
  };
55
58
  }
56
59
  /**
@@ -67,7 +70,7 @@ let Npcs = class Npcs {
67
70
  * @returns An object containing a `result` (success/error) and the created `npc` on success.
68
71
  */
69
72
  async create(options) {
70
- const { id, model, position, heading = 0, networked = true, pedType = DEFAULT_PED_TYPE, routingBucket = 0, persistent = false, metadata, } = options;
73
+ const { id, model, position, heading = 0, networked = true, routingBucket = 0, persistent = false, metadata, } = options;
71
74
  const npcId = id ?? uuid();
72
75
  if (this.npcById.has(npcId)) {
73
76
  return {
@@ -78,27 +81,29 @@ let Npcs = class Npcs {
78
81
  };
79
82
  }
80
83
  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
- };
84
+ let lifecycleResult;
85
+ try {
86
+ lifecycleResult = await Promise.resolve(this.npcLifecycle.create({
87
+ model: typeof model === 'string' ? model : String(model),
88
+ modelHash,
89
+ position,
90
+ heading,
91
+ networked,
92
+ routingBucket,
93
+ persistent,
94
+ }));
89
95
  }
90
- const spawnOk = await this.waitForSpawn(handle);
91
- if (!spawnOk) {
92
- this.safeDeleteHandle(handle);
96
+ catch (error) {
93
97
  return {
94
98
  result: {
95
99
  success: false,
96
- error: `NPC spawn timed out after ${DEFAULT_SPAWN_TIMEOUT_MS}ms`,
100
+ error: error instanceof Error ? error.message : 'Failed to create NPC ped entity',
97
101
  },
98
102
  };
99
103
  }
104
+ const handle = lifecycleResult.handle;
100
105
  const resolvedModel = typeof model === 'string' ? model : modelHash.toString();
101
- const netId = networked ? this.resolveNetId(handle) : undefined;
106
+ const netId = lifecycleResult.netId;
102
107
  const session = {
103
108
  id: npcId,
104
109
  handle,
@@ -110,12 +115,6 @@ let Npcs = class Npcs {
110
115
  createdAt: Date.now(),
111
116
  };
112
117
  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
118
  if (metadata) {
120
119
  for (const [key, value] of Object.entries(metadata)) {
121
120
  npc.setMeta(key, value);
@@ -313,7 +312,7 @@ let Npcs = class Npcs {
313
312
  netId: npc.netId,
314
313
  remainingNpcs: this.npcById.size,
315
314
  });
316
- this.events.emit('opencore:npc:deleted', 'all', npc.npcId);
315
+ this.events.emit(SYSTEM_EVENTS.npc.deleted, 'all', npc.npcId);
317
316
  return true;
318
317
  }
319
318
  /**
@@ -410,10 +409,6 @@ let Npcs = class Npcs {
410
409
  serializeAll() {
411
410
  return Array.from(this.npcById.values()).map((npc) => npc.serialize());
412
411
  }
413
- resolveNetId(handle) {
414
- const netId = this.pedServer.getNetworkIdFromEntity(handle);
415
- return netId > 0 ? netId : undefined;
416
- }
417
412
  removeFromRegistry(npc) {
418
413
  this.npcById.delete(npc.npcId);
419
414
  this.idByHandle.delete(npc.getHandle());
@@ -422,44 +417,20 @@ let Npcs = class Npcs {
422
417
  }
423
418
  this.world.remove(npc.id);
424
419
  }
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
420
  };
449
421
  Npcs = __decorate([
450
422
  injectable(),
451
423
  __param(0, inject(WorldContext)),
452
424
  __param(1, inject(IEntityServer)),
453
- __param(2, inject(IPedServer)),
454
- __param(3, inject(IHasher)),
455
- __param(4, inject(EventsAPI)),
425
+ __param(2, inject(INpcLifecycleServer)),
426
+ __param(3, inject(IPedServer)),
427
+ __param(4, inject(IHasher)),
428
+ __param(5, inject(EventsAPI)),
456
429
  __metadata("design:paramtypes", [WorldContext,
457
430
  IEntityServer,
431
+ INpcLifecycleServer,
458
432
  IPedServer,
459
433
  IHasher,
460
434
  EventsAPI])
461
435
  ], Npcs);
462
436
  export { Npcs };
463
- function sleep(ms) {
464
- return new Promise((resolve) => setTimeout(resolve, ms));
465
- }
@@ -4,6 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
+ import { performance } from 'node:perf_hooks';
7
8
  import { injectable } from 'tsyringe';
8
9
  import { v4 as uuid } from 'uuid';
9
10
  import { WorkerPool } from '../services/parallel/worker-pool';
@@ -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
  *
@@ -10,8 +10,11 @@ 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 { inject, injectable } from 'tsyringe';
13
+ import { inject } from 'tsyringe';
14
+ import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
14
15
  import { coreLogger } from '../../../kernel/logger';
16
+ import { SYSTEM_EVENTS } from '../../shared/types/system-types';
17
+ import { Bind } from '../decorators/bind';
15
18
  import { Vehicles } from './vehicles.api';
16
19
  /**
17
20
  * Service for handling vehicle modifications with validation.
@@ -27,8 +30,10 @@ import { Vehicles } from './vehicles.api';
27
30
  */
28
31
  let VehicleModification = class VehicleModification {
29
32
  vehicleService;
30
- constructor(vehicleService) {
33
+ events;
34
+ constructor(vehicleService, events) {
31
35
  this.vehicleService = vehicleService;
36
+ this.events = events;
32
37
  }
33
38
  /**
34
39
  * Applies modifications to a vehicle with validation.
@@ -70,7 +75,7 @@ let VehicleModification = class VehicleModification {
70
75
  requestedBy,
71
76
  mods: Object.keys(validatedMods),
72
77
  });
73
- emitNet('opencore:vehicle:modified', -1, {
78
+ this.events.emit(SYSTEM_EVENTS.vehicle.modified, 'all', {
74
79
  networkId,
75
80
  mods: validatedMods,
76
81
  });
@@ -197,7 +202,7 @@ let VehicleModification = class VehicleModification {
197
202
  windowTint: 0,
198
203
  };
199
204
  coreLogger.info('Vehicle modifications reset', { networkId, requestedBy });
200
- emitNet('opencore:vehicle:modified', -1, {
205
+ this.events.emit(SYSTEM_EVENTS.vehicle.modified, 'all', {
201
206
  networkId,
202
207
  mods: defaultMods,
203
208
  });
@@ -301,8 +306,10 @@ let VehicleModification = class VehicleModification {
301
306
  }
302
307
  };
303
308
  VehicleModification = __decorate([
304
- injectable(),
309
+ Bind('singleton'),
305
310
  __param(0, inject(Vehicles)),
306
- __metadata("design:paramtypes", [Vehicles])
311
+ __param(1, inject(EventsAPI)),
312
+ __metadata("design:paramtypes", [Vehicles,
313
+ EventsAPI])
307
314
  ], VehicleModification);
308
315
  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
  *
@@ -10,16 +10,18 @@ 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 { inject, injectable } from 'tsyringe';
13
+ import { inject } 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';
20
+ import { SYSTEM_EVENTS } from '../../shared/types/system-types';
21
21
  import { Vehicle } from '../entities/vehicle';
22
22
  import { Players } from '../ports/players.api-port';
23
+ import { Bind } from '../decorators/bind';
24
+ const DEFAULT_PLAYER_VEHICLE_OFFSET = { x: 0, y: 3, z: 0 };
23
25
  /**
24
26
  * Server-side service for managing vehicle entities.
25
27
  *
@@ -37,9 +39,8 @@ let Vehicles = class Vehicles {
37
39
  playerDirectory;
38
40
  entityServer;
39
41
  vehicleServer;
40
- platformCapabilities;
42
+ vehicleLifecycle;
41
43
  hasher;
42
- playerServer;
43
44
  events;
44
45
  /**
45
46
  * Internal registry of all managed vehicles indexed by Network ID
@@ -49,13 +50,12 @@ let Vehicles = class Vehicles {
49
50
  * Cached adapters bundle for Vehicle instances
50
51
  */
51
52
  vehicleAdapters;
52
- constructor(playerDirectory, entityServer, vehicleServer, platformCapabilities, hasher, playerServer, events) {
53
+ constructor(playerDirectory, entityServer, vehicleServer, vehicleLifecycle, hasher, events) {
53
54
  this.playerDirectory = playerDirectory;
54
55
  this.entityServer = entityServer;
55
56
  this.vehicleServer = vehicleServer;
56
- this.platformCapabilities = platformCapabilities;
57
+ this.vehicleLifecycle = vehicleLifecycle;
57
58
  this.hasher = hasher;
58
- this.playerServer = playerServer;
59
59
  this.events = events;
60
60
  this.vehicleAdapters = {
61
61
  entityServer: this.entityServer,
@@ -75,20 +75,13 @@ let Vehicles = class Vehicles {
75
75
  try {
76
76
  const { model, position, heading = 0, plate, primaryColor, secondaryColor, mods, persistent = false, ownership, metadata, routingBucket = 0, locked = false, fuel = 100.0, } = options;
77
77
  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) {
78
+ const { handle, networkId } = await this.vehicleLifecycle.create({
79
+ model: typeof model === 'string' ? model : String(model),
80
+ modelHash,
81
+ position,
82
+ heading,
83
+ });
84
+ if (!Number.isFinite(handle) || handle < 0) {
92
85
  coreLogger.error('Failed to create vehicle', { model, position });
93
86
  return {
94
87
  networkId: 0,
@@ -100,7 +93,6 @@ let Vehicles = class Vehicles {
100
93
  while (!this.entityServer.doesExist(handle)) {
101
94
  await new Promise((resolve) => setTimeout(resolve, 0));
102
95
  }
103
- const networkId = this.vehicleServer.getNetworkIdFromEntity(handle);
104
96
  const vehicleOwnership = {
105
97
  clientID: ownership?.clientID,
106
98
  accountID: ownership?.accountID,
@@ -129,14 +121,18 @@ let Vehicles = class Vehicles {
129
121
  vehicle.setRoutingBucket(routingBucket);
130
122
  }
131
123
  this.vehiclesByNetworkId.set(networkId, vehicle);
124
+ let ownershipComp = vehicleOwnership.type;
125
+ if (vehicleOwnership.type === 'player') {
126
+ ownershipComp = `${vehicleOwnership.type}:${ownership?.clientID}`;
127
+ }
132
128
  coreLogger.info('Vehicle created', {
133
129
  networkId,
134
130
  model,
135
- ownership: vehicleOwnership.type,
131
+ ownership: ownershipComp,
136
132
  persistent,
137
133
  totalVehicles: this.vehiclesByNetworkId.size,
138
134
  });
139
- this.events.emit('opencore:vehicle:created', 'all', vehicle.serialize());
135
+ this.events.emit(SYSTEM_EVENTS.vehicle.created, 'all', vehicle.serialize());
140
136
  return {
141
137
  networkId,
142
138
  handle,
@@ -163,8 +159,8 @@ let Vehicles = class Vehicles {
163
159
  * @param options - Vehicle creation options
164
160
  * @returns Spawn result
165
161
  */
166
- async createForPlayer(clientID, options) {
167
- const player = this.playerDirectory.getByClient(clientID);
162
+ async createForPlayer(playerOrClientID, options) {
163
+ const player = this.resolvePlayer(playerOrClientID);
168
164
  if (!player) {
169
165
  return {
170
166
  networkId: 0,
@@ -174,19 +170,43 @@ let Vehicles = class Vehicles {
174
170
  };
175
171
  }
176
172
  const ownership = {
177
- clientID,
173
+ clientID: player.clientID,
178
174
  accountID: player.accountID,
179
175
  type: 'player',
180
176
  };
177
+ const spawnPosition = this.getSpawnPositionForPlayer(player, options.offset);
178
+ const spawnHeading = options.heading ?? player.getHeading();
181
179
  const result = await this.create({
182
180
  ...options,
181
+ position: spawnPosition,
182
+ heading: spawnHeading,
183
+ plate: ownership.type === 'player' ? player.name : 'anom',
183
184
  ownership,
184
185
  });
185
186
  if (result.success) {
186
- this.events.emit('opencore:vehicle:warpInto', clientID, result.networkId, -1);
187
+ const seatIndex = options.seatIndex ?? -1;
188
+ await Promise.resolve(this.vehicleLifecycle.warpPlayerIntoVehicle({
189
+ playerSrc: player.clientID.toString(),
190
+ networkId: result.networkId,
191
+ seatIndex,
192
+ }));
187
193
  }
188
194
  return result;
189
195
  }
196
+ resolvePlayer(playerOrClientID) {
197
+ return typeof playerOrClientID === 'number'
198
+ ? this.playerDirectory.getByClient(playerOrClientID)
199
+ : playerOrClientID;
200
+ }
201
+ getSpawnPositionForPlayer(player, offset = DEFAULT_PLAYER_VEHICLE_OFFSET) {
202
+ const position = player.getPosition();
203
+ const headingRadians = (player.getHeading() * Math.PI) / 180;
204
+ return {
205
+ x: position.x + Math.sin(headingRadians) * offset.y + Math.cos(headingRadians) * offset.x,
206
+ y: position.y + Math.cos(headingRadians) * offset.y - Math.sin(headingRadians) * offset.x,
207
+ z: position.z + offset.z,
208
+ };
209
+ }
190
210
  /**
191
211
  * Retrieves a vehicle by its Network ID.
192
212
  *
@@ -272,7 +292,7 @@ let Vehicles = class Vehicles {
272
292
  networkId,
273
293
  totalVehicles: this.vehiclesByNetworkId.size,
274
294
  });
275
- this.events.emit('opencore:vehicle:deleted', 'all', networkId);
295
+ this.events.emit(SYSTEM_EVENTS.vehicle.deleted, 'all', networkId);
276
296
  return true;
277
297
  }
278
298
  /**
@@ -318,10 +338,7 @@ let Vehicles = class Vehicles {
318
338
  const player = this.playerDirectory.getByClient(clientID);
319
339
  if (!player)
320
340
  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);
341
+ const playerPos = player.getPosition();
325
342
  const vehiclePos = vehicle.position;
326
343
  const distance = Math.sqrt((playerPos.x - vehiclePos.x) ** 2 +
327
344
  (playerPos.y - vehiclePos.y) ** 2 +
@@ -367,20 +384,18 @@ let Vehicles = class Vehicles {
367
384
  }
368
385
  };
369
386
  Vehicles = __decorate([
370
- injectable(),
387
+ Bind('singleton'),
371
388
  __param(0, inject(Players)),
372
389
  __param(1, inject(IEntityServer)),
373
390
  __param(2, inject(IVehicleServer)),
374
- __param(3, inject(IPlatformCapabilities)),
391
+ __param(3, inject(IVehicleLifecycleServer)),
375
392
  __param(4, inject(IHasher)),
376
- __param(5, inject(IPlayerServer)),
377
- __param(6, inject(EventsAPI)),
393
+ __param(5, inject(EventsAPI)),
378
394
  __metadata("design:paramtypes", [Players,
379
395
  IEntityServer,
380
396
  IVehicleServer,
381
- IPlatformCapabilities,
397
+ IVehicleLifecycleServer,
382
398
  IHasher,
383
- IPlayerServer,
384
399
  EventsAPI])
385
400
  ], Vehicles);
386
401
  export { Vehicles };