@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,7 +1,9 @@
1
1
  import { IExports, IPlayerInfo } from '../../../../adapters';
2
- import { IPlatformCapabilities } from '../../../../adapters/contracts/IPlatformCapabilities';
2
+ import { IPlatformContext } from '../../../../adapters/contracts/IPlatformContext';
3
3
  import { EventsAPI } from '../../../../adapters/contracts/transport/events.api';
4
4
  import { IEntityServer } from '../../../../adapters/contracts/server/IEntityServer';
5
+ import { IPlayerLifecycleServer } from '../../../../adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer';
6
+ import { IPlayerStateSyncServer } from '../../../../adapters/contracts/server/player-state/IPlayerStateSyncServer';
5
7
  import { IPlayerServer } from '../../../../adapters/contracts/server/IPlayerServer';
6
8
  import { Player } from '../../entities';
7
9
  import { Players } from '../../ports/players.api-port';
@@ -18,25 +20,20 @@ export declare class RemotePlayerImplementation extends Players {
18
20
  private readonly playerInfo;
19
21
  private readonly exportsService;
20
22
  private readonly playerServer;
23
+ private readonly playerLifecycle;
24
+ private readonly playerStateSync;
21
25
  private readonly entityServer;
22
26
  private readonly events;
23
- private readonly platformCapabilities;
27
+ private readonly platformContext;
24
28
  /**
25
29
  * Cached adapters bundle for Player instances
26
30
  */
27
31
  private readonly playerAdapters;
28
- constructor(playerInfo: IPlayerInfo, exportsService: IExports, playerServer: IPlayerServer, entityServer: IEntityServer, events: EventsAPI<'server'>, platformCapabilities: IPlatformCapabilities);
32
+ constructor(playerInfo: IPlayerInfo, exportsService: IExports, playerServer: IPlayerServer, playerLifecycle: IPlayerLifecycleServer, playerStateSync: IPlayerStateSyncServer, entityServer: IEntityServer, events: EventsAPI<'server'>, platformContext: IPlatformContext);
29
33
  /**
30
34
  * Gets typed access to CORE resource exports.
31
35
  */
32
36
  private get core();
33
- /**
34
- * Creates a local Player instance from serialized data.
35
- *
36
- * @remarks
37
- * The returned Player is hydrated with session data from CORE,
38
- * including accountID, identifiers, metadata, and states.
39
- */
40
37
  private createPlayerFromData;
41
38
  /**
42
39
  * Returns a Player instance with real session data from CORE.
@@ -12,12 +12,14 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  };
13
13
  import { inject, injectable } from 'tsyringe';
14
14
  import { IExports, IPlayerInfo } from '../../../../adapters';
15
- import { IPlatformCapabilities } from '../../../../adapters/contracts/IPlatformCapabilities';
15
+ import { IPlatformContext } from '../../../../adapters/contracts/IPlatformContext';
16
16
  import { EventsAPI } from '../../../../adapters/contracts/transport/events.api';
17
17
  import { IEntityServer } from '../../../../adapters/contracts/server/IEntityServer';
18
+ import { IPlayerLifecycleServer } from '../../../../adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer';
19
+ import { IPlayerStateSyncServer } from '../../../../adapters/contracts/server/player-state/IPlayerStateSyncServer';
18
20
  import { IPlayerServer } from '../../../../adapters/contracts/server/IPlayerServer';
19
21
  import { loggers } from '../../../../kernel/logger';
20
- import { Player } from '../../entities';
22
+ import { createLocalServerPlayer, createRemoteServerPlayer } from '../../adapter/registry';
21
23
  import { getRuntimeContext } from '../../runtime';
22
24
  import { Players } from '../../ports/players.api-port';
23
25
  /**
@@ -32,25 +34,31 @@ let RemotePlayerImplementation = class RemotePlayerImplementation extends Player
32
34
  playerInfo;
33
35
  exportsService;
34
36
  playerServer;
37
+ playerLifecycle;
38
+ playerStateSync;
35
39
  entityServer;
36
40
  events;
37
- platformCapabilities;
41
+ platformContext;
38
42
  /**
39
43
  * Cached adapters bundle for Player instances
40
44
  */
41
45
  playerAdapters;
42
- constructor(playerInfo, exportsService, playerServer, entityServer, events, platformCapabilities) {
46
+ constructor(playerInfo, exportsService, playerServer, playerLifecycle, playerStateSync, entityServer, events, platformContext) {
43
47
  super();
44
48
  this.playerInfo = playerInfo;
45
49
  this.exportsService = exportsService;
46
50
  this.playerServer = playerServer;
51
+ this.playerLifecycle = playerLifecycle;
52
+ this.playerStateSync = playerStateSync;
47
53
  this.entityServer = entityServer;
48
54
  this.events = events;
49
- this.platformCapabilities = platformCapabilities;
50
- const defaultSpawnModel = this.platformCapabilities.getConfig('defaultSpawnModel') ?? 'mp_m_freemode_01';
55
+ this.platformContext = platformContext;
56
+ const defaultSpawnModel = this.platformContext.defaultSpawnModel;
51
57
  this.playerAdapters = {
52
58
  playerInfo: this.playerInfo,
53
59
  playerServer: this.playerServer,
60
+ playerLifecycle: this.playerLifecycle,
61
+ playerStateSync: this.playerStateSync,
54
62
  entityServer: this.entityServer,
55
63
  events: this.events,
56
64
  defaultSpawnModel,
@@ -68,25 +76,8 @@ let RemotePlayerImplementation = class RemotePlayerImplementation extends Player
68
76
  }
69
77
  return coreExports;
70
78
  }
71
- /**
72
- * Creates a local Player instance from serialized data.
73
- *
74
- * @remarks
75
- * The returned Player is hydrated with session data from CORE,
76
- * including accountID, identifiers, metadata, and states.
77
- */
78
79
  createPlayerFromData(data) {
79
- const player = new Player({
80
- clientID: data.clientID,
81
- accountID: data.accountID,
82
- identifiers: data.identifiers,
83
- meta: data.meta,
84
- }, this.playerAdapters);
85
- // Restore state flags
86
- for (const state of data.states) {
87
- player.addState(state);
88
- }
89
- return player;
80
+ return createRemoteServerPlayer(data, this.playerAdapters);
90
81
  }
91
82
  /**
92
83
  * Returns a Player instance with real session data from CORE.
@@ -104,7 +95,7 @@ let RemotePlayerImplementation = class RemotePlayerImplementation extends Player
104
95
  error: error instanceof Error ? error.message : String(error),
105
96
  });
106
97
  // Fallback to basic player
107
- return new Player({ clientID, meta: {} }, this.playerAdapters);
98
+ return createLocalServerPlayer({ clientID, meta: {} }, this.playerAdapters);
108
99
  }
109
100
  }
110
101
  getMany(clientIds) {
@@ -191,14 +182,18 @@ RemotePlayerImplementation = __decorate([
191
182
  __param(0, inject(IPlayerInfo)),
192
183
  __param(1, inject(IExports)),
193
184
  __param(2, inject(IPlayerServer)),
194
- __param(3, inject(IEntityServer)),
195
- __param(4, inject(EventsAPI)),
196
- __param(5, inject(IPlatformCapabilities)),
185
+ __param(3, inject(IPlayerLifecycleServer)),
186
+ __param(4, inject(IPlayerStateSyncServer)),
187
+ __param(5, inject(IEntityServer)),
188
+ __param(6, inject(EventsAPI)),
189
+ __param(7, inject(IPlatformContext)),
197
190
  __metadata("design:paramtypes", [IPlayerInfo,
198
191
  IExports,
199
192
  IPlayerServer,
193
+ IPlayerLifecycleServer,
194
+ IPlayerStateSyncServer,
200
195
  IEntityServer,
201
196
  EventsAPI,
202
- IPlatformCapabilities])
197
+ IPlatformContext])
203
198
  ], RemotePlayerImplementation);
204
199
  export { RemotePlayerImplementation };
@@ -1,4 +1,7 @@
1
+ import { GLOBAL_CONTAINER } from '../../../kernel/di/container';
1
2
  import { coreLogger } from '../../../kernel/logger';
3
+ import { IEngineEvents } from '../../../adapters/contracts/IEngineEvents';
4
+ import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
2
5
  import { buildLibraryEventId, createLibraryBase, createLibraryConfigAccessor, } from '../../core/library';
3
6
  import { emitLibraryEvent } from '../bus/library-event.bus';
4
7
  /**
@@ -14,6 +17,12 @@ export function createServerLibrary(name, opts) {
14
17
  const base = createLibraryBase(name, opts);
15
18
  const logger = coreLogger.server(`Library:${base.name}`);
16
19
  const emitInternal = base.emit;
20
+ const engineEvents = GLOBAL_CONTAINER.isRegistered(IEngineEvents)
21
+ ? GLOBAL_CONTAINER.resolve(IEngineEvents)
22
+ : null;
23
+ const netEvents = GLOBAL_CONTAINER.isRegistered(EventsAPI)
24
+ ? GLOBAL_CONTAINER.resolve(EventsAPI)
25
+ : null;
17
26
  return {
18
27
  ...base,
19
28
  side: 'server',
@@ -33,10 +42,16 @@ export function createServerLibrary(name, opts) {
33
42
  emitLibraryEvent(eventId, envelope);
34
43
  },
35
44
  emitExternal(eventName, payload) {
36
- emit(base.buildEventName(eventName), payload);
45
+ if (engineEvents) {
46
+ engineEvents.emit(base.buildEventName(eventName), payload);
47
+ return;
48
+ }
37
49
  },
38
50
  emitNetExternal(eventName, target, payload) {
39
- emitNet(base.buildEventName(eventName), target, payload);
51
+ if (!netEvents) {
52
+ return;
53
+ }
54
+ netEvents.emit(base.buildEventName(eventName), target, payload);
40
55
  },
41
56
  getLogger() {
42
57
  return logger;
@@ -138,6 +138,7 @@ export interface ServerRuntimeOptions {
138
138
  mode: FrameworkMode;
139
139
  features: FrameworkFeatures;
140
140
  coreResourceName: string;
141
+ adapter?: import('./adapter').OpenCoreServerAdapter;
141
142
  /** Development mode configuration (disabled in production) */
142
143
  devMode?: DevModeConfig;
143
144
  onDependency?: Hooks;
@@ -162,6 +163,8 @@ export declare function getFrameworkModeScope(mode: FrameworkMode): FeatureScope
162
163
  export interface ServerInitOptions {
163
164
  /** Runtime mode determining feature availability and provider sources */
164
165
  mode: FrameworkMode;
166
+ /** Optional runtime adapter for non-node server environments. */
167
+ adapter?: import('./adapter').OpenCoreServerAdapter;
165
168
  /**
166
169
  * Feature configuration.
167
170
  *
@@ -116,6 +116,7 @@ export function resolveRuntimeOptions(options) {
116
116
  mode: options.mode,
117
117
  features,
118
118
  coreResourceName: options.coreResourceName ?? 'core',
119
+ adapter: options.adapter,
119
120
  devMode: options.devMode,
120
121
  onDependency: options.onDependency,
121
122
  };
@@ -138,21 +139,6 @@ export function validateRuntimeOptions(options) {
138
139
  if (mode === 'RESOURCE' && !options.coreResourceName) {
139
140
  throw new Error('[OpenCore] RESOURCE mode requires coreResourceName to be specified');
140
141
  }
141
- // Determine which features need CORE exports in RESOURCE mode
142
- const needsCoreExports = mode === 'RESOURCE' &&
143
- (features.players.provider === 'core' ||
144
- features.commands.provider === 'core' ||
145
- features.principal.provider === 'core');
146
- // Validate coreResourceName exists if needed
147
- if (mode === 'RESOURCE') {
148
- const { coreResourceName } = options;
149
- if (needsCoreExports) {
150
- const core = globalThis.exports?.[coreResourceName];
151
- if (!core) {
152
- throw new Error(`[OpenCore] CORE resource '${coreResourceName}' not found. Ensure it is started before RESOURCE mode resources.`);
153
- }
154
- }
155
- }
156
142
  const scope = getFrameworkModeScope(mode);
157
143
  for (const name of FEATURE_NAMES) {
158
144
  const f = features[name];
@@ -1,99 +1,4 @@
1
- import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
2
- import { IPedAppearanceServer } from '../../../adapters/contracts/server/IPedAppearanceServer';
3
- import { IPlayerServer } from '../../../adapters/contracts/server/IPlayerServer';
4
1
  import { AppearanceValidationResult, PlayerAppearance } from '../../../kernel/shared';
5
- /**
6
- * Server-side appearance management service.
7
- *
8
- * @remarks
9
- * Handles validating and applying ped appearance data on the server.
10
- * Provides security validation and server-authoritative appearance control.
11
- *
12
- * **Security Model:**
13
- * - All appearance changes should be validated server-side
14
- * - Server applies components/props directly (available natives)
15
- * - Server emits events to client for client-only natives (headBlend, overlays, tattoos)
16
- * - Client never sends appearance data directly to other clients
17
- *
18
- * **Persistence:**
19
- * The framework does NOT handle persistence internally.
20
- * After calling `applyAppearance`, you receive the validated data back.
21
- * You decide when and where to save it (persistent storage, file, etc.).
22
- *
23
- * @example
24
- * ```typescript
25
- * // Apply appearance to a player
26
- * const result = await appearanceService.applyAppearance(playerSrc, appearanceData)
27
- * if (result.success) {
28
- * // Save to your storage
29
- * await myStorage.saveAppearance(playerId, result.appearance)
30
- * }
31
- *
32
- * // Validate appearance without applying
33
- * const validation = appearanceService.validateAppearance(appearanceData)
34
- * if (!validation.valid) {
35
- * console.log('Errors:', validation.errors)
36
- * }
37
- * ```
38
- */
39
2
  export declare class AppearanceService {
40
- private readonly pedAdapter;
41
- private readonly playerServer;
42
- private readonly events;
43
- constructor(pedAdapter: IPedAppearanceServer, playerServer: IPlayerServer, events: EventsAPI<'server'>);
44
- /**
45
- * Applies validated appearance to a player.
46
- *
47
- * @remarks
48
- * This method:
49
- * 1. Validates the appearance data
50
- * 2. Applies server-side natives (components, props)
51
- * 3. Emits event to client for client-only natives
52
- * 4. Returns the validated appearance for persistence
53
- *
54
- * @param playerSrc - Player source/client ID
55
- * @param appearance - Appearance data to apply
56
- * @returns Result with success status and validated appearance
57
- */
58
- applyAppearance(playerSrc: string, appearance: PlayerAppearance): Promise<{
59
- success: boolean;
60
- appearance?: PlayerAppearance;
61
- errors?: string[];
62
- }>;
63
- /**
64
- * Applies only components and props (server-side available natives).
65
- *
66
- * @remarks
67
- * Use this for quick clothing changes without full appearance update.
68
- *
69
- * @param playerSrc - Player source/client ID
70
- * @param appearance - Partial appearance with components/props only
71
- * @returns Success status
72
- */
73
- applyClothing(playerSrc: string, appearance: Pick<PlayerAppearance, 'components' | 'props'>): boolean;
74
- /**
75
- * Resets a player's appearance to default.
76
- *
77
- * @param playerSrc - Player source/client ID
78
- * @returns Success status
79
- */
80
- resetAppearance(playerSrc: string): boolean;
81
- /**
82
- * Validates appearance data without applying it.
83
- *
84
- * @remarks
85
- * Use this to validate appearance data before storing or applying.
86
- * All validation rules are enforced to prevent invalid/malicious data.
87
- *
88
- * @param appearance - Appearance data to validate
89
- * @returns Validation result with errors if any
90
- */
91
3
  validateAppearance(appearance: Partial<PlayerAppearance>): AppearanceValidationResult;
92
- /**
93
- * Applies server-side appearance natives (components and props only).
94
- *
95
- * @param ped - Ped entity handle
96
- * @param appearance - Appearance data
97
- */
98
- private applyServerSideAppearance;
99
4
  }
@@ -4,138 +4,13 @@ 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
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- import { inject, injectable } from 'tsyringe';
14
- import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
15
- import { IPedAppearanceServer } from '../../../adapters/contracts/server/IPedAppearanceServer';
16
- import { IPlayerServer } from '../../../adapters/contracts/server/IPlayerServer';
17
- /**
18
- * Server-side appearance management service.
19
- *
20
- * @remarks
21
- * Handles validating and applying ped appearance data on the server.
22
- * Provides security validation and server-authoritative appearance control.
23
- *
24
- * **Security Model:**
25
- * - All appearance changes should be validated server-side
26
- * - Server applies components/props directly (available natives)
27
- * - Server emits events to client for client-only natives (headBlend, overlays, tattoos)
28
- * - Client never sends appearance data directly to other clients
29
- *
30
- * **Persistence:**
31
- * The framework does NOT handle persistence internally.
32
- * After calling `applyAppearance`, you receive the validated data back.
33
- * You decide when and where to save it (persistent storage, file, etc.).
34
- *
35
- * @example
36
- * ```typescript
37
- * // Apply appearance to a player
38
- * const result = await appearanceService.applyAppearance(playerSrc, appearanceData)
39
- * if (result.success) {
40
- * // Save to your storage
41
- * await myStorage.saveAppearance(playerId, result.appearance)
42
- * }
43
- *
44
- * // Validate appearance without applying
45
- * const validation = appearanceService.validateAppearance(appearanceData)
46
- * if (!validation.valid) {
47
- * console.log('Errors:', validation.errors)
48
- * }
49
- * ```
50
- */
7
+ import { injectable } from 'tsyringe';
51
8
  let AppearanceService = class AppearanceService {
52
- pedAdapter;
53
- playerServer;
54
- events;
55
- constructor(pedAdapter, playerServer, events) {
56
- this.pedAdapter = pedAdapter;
57
- this.playerServer = playerServer;
58
- this.events = events;
59
- }
60
- /**
61
- * Applies validated appearance to a player.
62
- *
63
- * @remarks
64
- * This method:
65
- * 1. Validates the appearance data
66
- * 2. Applies server-side natives (components, props)
67
- * 3. Emits event to client for client-only natives
68
- * 4. Returns the validated appearance for persistence
69
- *
70
- * @param playerSrc - Player source/client ID
71
- * @param appearance - Appearance data to apply
72
- * @returns Result with success status and validated appearance
73
- */
74
- async applyAppearance(playerSrc, appearance) {
75
- const validation = this.validateAppearance(appearance);
76
- if (!validation.valid) {
77
- return { success: false, errors: validation.errors };
78
- }
79
- const ped = this.playerServer.getPed(playerSrc);
80
- if (ped === 0) {
81
- return { success: false, errors: ['Player ped not found'] };
82
- }
83
- // Apply server-side natives (components and props)
84
- this.applyServerSideAppearance(ped, appearance);
85
- // Emit event to client for client-only natives
86
- this.events.emit('opencore:appearance:apply', parseInt(playerSrc, 10), appearance);
87
- return { success: true, appearance };
88
- }
89
- /**
90
- * Applies only components and props (server-side available natives).
91
- *
92
- * @remarks
93
- * Use this for quick clothing changes without full appearance update.
94
- *
95
- * @param playerSrc - Player source/client ID
96
- * @param appearance - Partial appearance with components/props only
97
- * @returns Success status
98
- */
99
- applyClothing(playerSrc, appearance) {
100
- const ped = this.playerServer.getPed(playerSrc);
101
- if (ped === 0) {
102
- return false;
103
- }
104
- this.applyServerSideAppearance(ped, appearance);
105
- return true;
106
- }
107
- /**
108
- * Resets a player's appearance to default.
109
- *
110
- * @param playerSrc - Player source/client ID
111
- * @returns Success status
112
- */
113
- resetAppearance(playerSrc) {
114
- const ped = this.playerServer.getPed(playerSrc);
115
- if (ped === 0) {
116
- return false;
117
- }
118
- this.pedAdapter.setDefaultComponentVariation(ped);
119
- // Notify client to reset client-only appearance elements
120
- this.events.emit('opencore:appearance:reset', parseInt(playerSrc, 10));
121
- return true;
122
- }
123
- /**
124
- * Validates appearance data without applying it.
125
- *
126
- * @remarks
127
- * Use this to validate appearance data before storing or applying.
128
- * All validation rules are enforced to prevent invalid/malicious data.
129
- *
130
- * @param appearance - Appearance data to validate
131
- * @returns Validation result with errors if any
132
- */
133
9
  validateAppearance(appearance) {
134
10
  const errors = [];
135
11
  if (!appearance) {
136
12
  return { valid: false, errors: ['Appearance data is null or undefined'] };
137
13
  }
138
- // Validate components (0-11)
139
14
  if (appearance.components) {
140
15
  for (const [id, data] of Object.entries(appearance.components)) {
141
16
  const componentId = parseInt(id, 10);
@@ -150,7 +25,6 @@ let AppearanceService = class AppearanceService {
150
25
  }
151
26
  }
152
27
  }
153
- // Validate props (0-7)
154
28
  if (appearance.props) {
155
29
  for (const [id, data] of Object.entries(appearance.props)) {
156
30
  const propId = parseInt(id, 10);
@@ -165,7 +39,6 @@ let AppearanceService = class AppearanceService {
165
39
  }
166
40
  }
167
41
  }
168
- // Validate faceFeatures (0-19, values -1.0 to 1.0)
169
42
  if (appearance.faceFeatures) {
170
43
  for (const [id, value] of Object.entries(appearance.faceFeatures)) {
171
44
  const index = parseInt(id, 10);
@@ -177,47 +50,35 @@ let AppearanceService = class AppearanceService {
177
50
  }
178
51
  }
179
52
  }
180
- // Validate headBlend
181
53
  if (appearance.headBlend) {
182
54
  const hb = appearance.headBlend;
183
- if (typeof hb.shapeFirst !== 'number' || hb.shapeFirst < 0 || hb.shapeFirst > 45) {
55
+ if (typeof hb.shapeFirst !== 'number' || hb.shapeFirst < 0 || hb.shapeFirst > 45)
184
56
  errors.push('Invalid shapeFirst (must be 0-45)');
185
- }
186
- if (typeof hb.shapeSecond !== 'number' || hb.shapeSecond < 0 || hb.shapeSecond > 45) {
57
+ if (typeof hb.shapeSecond !== 'number' || hb.shapeSecond < 0 || hb.shapeSecond > 45)
187
58
  errors.push('Invalid shapeSecond (must be 0-45)');
188
- }
189
- if (typeof hb.skinFirst !== 'number' || hb.skinFirst < 0 || hb.skinFirst > 45) {
59
+ if (typeof hb.skinFirst !== 'number' || hb.skinFirst < 0 || hb.skinFirst > 45)
190
60
  errors.push('Invalid skinFirst (must be 0-45)');
191
- }
192
- if (typeof hb.skinSecond !== 'number' || hb.skinSecond < 0 || hb.skinSecond > 45) {
61
+ if (typeof hb.skinSecond !== 'number' || hb.skinSecond < 0 || hb.skinSecond > 45)
193
62
  errors.push('Invalid skinSecond (must be 0-45)');
194
- }
195
- if (typeof hb.shapeMix !== 'number' || hb.shapeMix < 0 || hb.shapeMix > 1) {
63
+ if (typeof hb.shapeMix !== 'number' || hb.shapeMix < 0 || hb.shapeMix > 1)
196
64
  errors.push('Invalid shapeMix (must be 0.0-1.0)');
197
- }
198
- if (typeof hb.skinMix !== 'number' || hb.skinMix < 0 || hb.skinMix > 1) {
65
+ if (typeof hb.skinMix !== 'number' || hb.skinMix < 0 || hb.skinMix > 1)
199
66
  errors.push('Invalid skinMix (must be 0.0-1.0)');
200
- }
201
- if (hb.shapeThird !== undefined && (hb.shapeThird < 0 || hb.shapeThird > 45)) {
67
+ if (hb.shapeThird !== undefined && (hb.shapeThird < 0 || hb.shapeThird > 45))
202
68
  errors.push('Invalid shapeThird (must be 0-45)');
203
- }
204
- if (hb.skinThird !== undefined && (hb.skinThird < 0 || hb.skinThird > 45)) {
69
+ if (hb.skinThird !== undefined && (hb.skinThird < 0 || hb.skinThird > 45))
205
70
  errors.push('Invalid skinThird (must be 0-45)');
206
- }
207
- if (hb.thirdMix !== undefined && (hb.thirdMix < 0 || hb.thirdMix > 1)) {
71
+ if (hb.thirdMix !== undefined && (hb.thirdMix < 0 || hb.thirdMix > 1))
208
72
  errors.push('Invalid thirdMix (must be 0.0-1.0)');
209
- }
210
73
  }
211
- // Validate headOverlays (0-12)
212
74
  if (appearance.headOverlays) {
213
75
  for (const [id, overlay] of Object.entries(appearance.headOverlays)) {
214
76
  const overlayId = parseInt(id, 10);
215
77
  if (Number.isNaN(overlayId) || overlayId < 0 || overlayId > 12) {
216
78
  errors.push(`Invalid overlay ID: ${id} (must be 0-12)`);
217
79
  }
218
- if (typeof overlay.index !== 'number' || overlay.index < 0) {
80
+ if (typeof overlay.index !== 'number' || overlay.index < 0)
219
81
  errors.push(`Invalid overlay index for ID ${id}`);
220
- }
221
82
  if (typeof overlay.opacity !== 'number' || overlay.opacity < 0 || overlay.opacity > 1) {
222
83
  errors.push(`Invalid overlay opacity for ID ${id} (must be 0.0-1.0)`);
223
84
  }
@@ -226,17 +87,14 @@ let AppearanceService = class AppearanceService {
226
87
  }
227
88
  }
228
89
  }
229
- // Validate hairColor
230
90
  if (appearance.hairColor) {
231
- if (typeof appearance.hairColor.colorId !== 'number' || appearance.hairColor.colorId < 0) {
91
+ if (typeof appearance.hairColor.colorId !== 'number' || appearance.hairColor.colorId < 0)
232
92
  errors.push('Invalid hair colorId');
233
- }
234
93
  if (typeof appearance.hairColor.highlightColorId !== 'number' ||
235
94
  appearance.hairColor.highlightColorId < 0) {
236
95
  errors.push('Invalid hair highlightColorId');
237
96
  }
238
97
  }
239
- // Validate eyeColor (0-31)
240
98
  if (appearance.eyeColor !== undefined) {
241
99
  if (typeof appearance.eyeColor !== 'number' ||
242
100
  appearance.eyeColor < 0 ||
@@ -244,7 +102,6 @@ let AppearanceService = class AppearanceService {
244
102
  errors.push(`Invalid eye color: ${appearance.eyeColor} (must be 0-31)`);
245
103
  }
246
104
  }
247
- // Validate tattoos
248
105
  if (appearance.tattoos) {
249
106
  if (!Array.isArray(appearance.tattoos)) {
250
107
  errors.push('Tattoos must be an array');
@@ -252,16 +109,13 @@ let AppearanceService = class AppearanceService {
252
109
  else {
253
110
  for (let i = 0; i < appearance.tattoos.length; i++) {
254
111
  const tattoo = appearance.tattoos[i];
255
- if (!tattoo.collection || typeof tattoo.collection !== 'string') {
112
+ if (!tattoo.collection || typeof tattoo.collection !== 'string')
256
113
  errors.push(`Invalid tattoo collection at index ${i}`);
257
- }
258
- if (!tattoo.overlay || typeof tattoo.overlay !== 'string') {
114
+ if (!tattoo.overlay || typeof tattoo.overlay !== 'string')
259
115
  errors.push(`Invalid tattoo overlay at index ${i}`);
260
- }
261
116
  }
262
117
  }
263
118
  }
264
- // Validate model
265
119
  if (appearance.model !== undefined) {
266
120
  if (typeof appearance.model !== 'string' || appearance.model.length === 0) {
267
121
  errors.push('Invalid model (must be a non-empty string)');
@@ -269,39 +123,8 @@ let AppearanceService = class AppearanceService {
269
123
  }
270
124
  return { valid: errors.length === 0, errors };
271
125
  }
272
- /**
273
- * Applies server-side appearance natives (components and props only).
274
- *
275
- * @param ped - Ped entity handle
276
- * @param appearance - Appearance data
277
- */
278
- applyServerSideAppearance(ped, appearance) {
279
- // Apply components
280
- if (appearance.components) {
281
- for (const [componentId, data] of Object.entries(appearance.components)) {
282
- this.pedAdapter.setComponentVariation(ped, parseInt(componentId, 10), data.drawable, data.texture, 2);
283
- }
284
- }
285
- // Apply props
286
- if (appearance.props) {
287
- for (const [propId, data] of Object.entries(appearance.props)) {
288
- if (data.drawable === -1) {
289
- this.pedAdapter.clearProp(ped, parseInt(propId, 10));
290
- }
291
- else {
292
- this.pedAdapter.setPropIndex(ped, parseInt(propId, 10), data.drawable, data.texture, true);
293
- }
294
- }
295
- }
296
- }
297
126
  };
298
127
  AppearanceService = __decorate([
299
- injectable(),
300
- __param(0, inject(IPedAppearanceServer)),
301
- __param(1, inject(IPlayerServer)),
302
- __param(2, inject(EventsAPI)),
303
- __metadata("design:paramtypes", [IPedAppearanceServer,
304
- IPlayerServer,
305
- EventsAPI])
128
+ injectable()
306
129
  ], AppearanceService);
307
130
  export { AppearanceService };