@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
@@ -5,7 +5,6 @@
5
5
  * Tasks are executed in `node:worker_threads` and communicated through
6
6
  * structured-cloned messages.
7
7
  */
8
- import * as path from 'node:path';
9
8
  import { Worker } from 'node:worker_threads';
10
9
  const DEFAULT_CONFIG = {
11
10
  minWorkers: 0,
@@ -56,9 +55,9 @@ class NativeWorker {
56
55
  currentTask = null;
57
56
  worker;
58
57
  pendingResponses = new Map();
59
- constructor(id, workerScriptPath, callbacks) {
58
+ constructor(id, workerSource, callbacks) {
60
59
  this.id = id;
61
- this.worker = new Worker(workerScriptPath);
60
+ this.worker = new Worker(workerSource, { eval: true });
62
61
  this.worker.on('message', (response) => {
63
62
  const handlers = this.pendingResponses.get(response.id);
64
63
  if (handlers) {
@@ -149,11 +148,44 @@ export class WorkerPool extends SimpleEventEmitter {
149
148
  workerIdCounter = 0;
150
149
  cleanupInterval = null;
151
150
  isShuttingDown = false;
152
- workerScriptPath;
151
+ workerSource;
153
152
  constructor(config = {}) {
154
153
  super();
155
154
  this.config = { ...DEFAULT_CONFIG, ...config };
156
- this.workerScriptPath = path.join(__dirname, 'native-worker.entry.js');
155
+ this.workerSource = `
156
+ const { parentPort } = require('worker_threads')
157
+ const { performance } = require('perf_hooks')
158
+
159
+ if (!parentPort) {
160
+ throw new Error('native worker must be executed inside a Worker thread')
161
+ }
162
+
163
+ function executeCompute(functionBody, input) {
164
+ const fn = new Function('input', 'return (' + functionBody + ')(input)')
165
+ return fn(input)
166
+ }
167
+
168
+ parentPort.on('message', (message) => {
169
+ const startTime = performance.now()
170
+
171
+ try {
172
+ const result = executeCompute(message.functionBody, message.input)
173
+ parentPort.postMessage({
174
+ id: message.id,
175
+ success: true,
176
+ result,
177
+ executionTime: performance.now() - startTime,
178
+ })
179
+ } catch (error) {
180
+ parentPort.postMessage({
181
+ id: message.id,
182
+ success: false,
183
+ error: error instanceof Error ? error.message : String(error),
184
+ executionTime: performance.now() - startTime,
185
+ })
186
+ }
187
+ })
188
+ `;
157
189
  // Start cleanup interval
158
190
  this.cleanupInterval = setInterval(() => this.cleanupIdleWorkers(), 10000);
159
191
  // Spawn minimum workers
@@ -261,7 +293,7 @@ export class WorkerPool extends SimpleEventEmitter {
261
293
  spawnWorker() {
262
294
  try {
263
295
  const id = this.workerIdCounter++;
264
- const worker = new NativeWorker(id, this.workerScriptPath, {
296
+ const worker = new NativeWorker(id, this.workerSource, {
265
297
  onExit: (workerId, code) => {
266
298
  const existing = this.workers.get(workerId);
267
299
  if (!existing)
@@ -11,6 +11,7 @@
11
11
  * - Inputs/outputs must be structured-cloneable.
12
12
  * - Do not pass untrusted code as compute functions.
13
13
  */
14
+ import { performance } from 'node:perf_hooks';
14
15
  /**
15
16
  * Execute a compute function from its string body
16
17
  */
@@ -40,26 +40,40 @@ export function registerServicesServer(ctx) {
40
40
  }
41
41
  if (features.players.enabled) {
42
42
  if (features.players.provider === 'local' || mode === 'CORE') {
43
- GLOBAL_CONTAINER.registerSingleton(LocalPlayerImplementation);
44
- GLOBAL_CONTAINER.register(Players, { useToken: LocalPlayerImplementation });
45
- GLOBAL_CONTAINER.register(PlayerSessionLifecyclePort, {
46
- useToken: LocalPlayerImplementation,
47
- });
43
+ if (!GLOBAL_CONTAINER.isRegistered(LocalPlayerImplementation)) {
44
+ GLOBAL_CONTAINER.registerSingleton(LocalPlayerImplementation);
45
+ }
46
+ if (!GLOBAL_CONTAINER.isRegistered(Players)) {
47
+ GLOBAL_CONTAINER.register(Players, { useToken: LocalPlayerImplementation });
48
+ }
49
+ if (!GLOBAL_CONTAINER.isRegistered(PlayerSessionLifecyclePort)) {
50
+ GLOBAL_CONTAINER.register(PlayerSessionLifecyclePort, {
51
+ useToken: LocalPlayerImplementation,
52
+ });
53
+ }
48
54
  }
49
55
  else {
50
- GLOBAL_CONTAINER.registerSingleton(Players, RemotePlayerImplementation);
56
+ if (!GLOBAL_CONTAINER.isRegistered(Players)) {
57
+ GLOBAL_CONTAINER.registerSingleton(Players, RemotePlayerImplementation);
58
+ }
51
59
  }
52
60
  }
53
61
  if (mode === 'RESOURCE' && features.players.enabled) {
54
- GLOBAL_CONTAINER.register(PlayerSessionLifecyclePort, {
55
- useFactory: () => {
56
- throw new Error('[OpenCore] PlayerSessionLifecyclePort is not available in RESOURCE mode');
57
- },
58
- });
62
+ if (!GLOBAL_CONTAINER.isRegistered(PlayerSessionLifecyclePort)) {
63
+ GLOBAL_CONTAINER.register(PlayerSessionLifecyclePort, {
64
+ useFactory: () => {
65
+ throw new Error('[OpenCore] PlayerSessionLifecyclePort is not available in RESOURCE mode');
66
+ },
67
+ });
68
+ }
59
69
  }
60
70
  if (features.sessionLifecycle.enabled && mode !== 'RESOURCE') {
61
- GLOBAL_CONTAINER.registerSingleton(PlayerPersistenceService, PlayerPersistenceService);
62
- GLOBAL_CONTAINER.registerSingleton(SessionRecoveryService, SessionRecoveryService);
71
+ if (!GLOBAL_CONTAINER.isRegistered(PlayerPersistenceService)) {
72
+ GLOBAL_CONTAINER.registerSingleton(PlayerPersistenceService, PlayerPersistenceService);
73
+ }
74
+ if (!GLOBAL_CONTAINER.isRegistered(SessionRecoveryService)) {
75
+ GLOBAL_CONTAINER.registerSingleton(SessionRecoveryService, SessionRecoveryService);
76
+ }
63
77
  }
64
78
  if (features.principal.enabled) {
65
79
  if (features.principal.provider === 'local' || mode === 'CORE' || mode === 'STANDALONE') {
@@ -67,37 +81,55 @@ export function registerServicesServer(ctx) {
67
81
  if (!GLOBAL_CONTAINER.isRegistered(PrincipalProviderContract)) {
68
82
  GLOBAL_CONTAINER.registerSingleton(PrincipalProviderContract, DefaultPrincipalProvider);
69
83
  }
70
- GLOBAL_CONTAINER.registerSingleton(LocalPrincipalService);
71
- GLOBAL_CONTAINER.register(Authorization, { useToken: LocalPrincipalService });
84
+ if (!GLOBAL_CONTAINER.isRegistered(LocalPrincipalService)) {
85
+ GLOBAL_CONTAINER.registerSingleton(LocalPrincipalService);
86
+ }
87
+ if (!GLOBAL_CONTAINER.isRegistered(Authorization)) {
88
+ GLOBAL_CONTAINER.register(Authorization, { useToken: LocalPrincipalService });
89
+ }
72
90
  }
73
91
  else {
74
92
  // RESOURCE: Remote principal service delegates to CORE
75
- GLOBAL_CONTAINER.registerSingleton(Authorization, RemotePrincipalImplementation);
93
+ if (!GLOBAL_CONTAINER.isRegistered(Authorization)) {
94
+ GLOBAL_CONTAINER.registerSingleton(Authorization, RemotePrincipalImplementation);
95
+ }
76
96
  }
77
97
  }
78
98
  if (features.commands.enabled) {
79
99
  if (features.commands.provider === 'local' || mode === 'CORE') {
80
100
  // CORE/STANDALONE: local command execution
81
- GLOBAL_CONTAINER.registerSingleton(LocalCommandImplementation);
82
- GLOBAL_CONTAINER.register(CommandExecutionPort, {
83
- useToken: LocalCommandImplementation,
84
- });
101
+ if (!GLOBAL_CONTAINER.isRegistered(LocalCommandImplementation)) {
102
+ GLOBAL_CONTAINER.registerSingleton(LocalCommandImplementation);
103
+ }
104
+ if (!GLOBAL_CONTAINER.isRegistered(CommandExecutionPort)) {
105
+ GLOBAL_CONTAINER.register(CommandExecutionPort, {
106
+ useToken: LocalCommandImplementation,
107
+ });
108
+ }
85
109
  }
86
110
  else {
87
111
  // RESOURCE: remote command execution (delegates to CORE)
88
- GLOBAL_CONTAINER.registerSingleton(CommandExecutionPort, RemoteCommandImplementation);
112
+ if (!GLOBAL_CONTAINER.isRegistered(CommandExecutionPort)) {
113
+ GLOBAL_CONTAINER.registerSingleton(CommandExecutionPort, RemoteCommandImplementation);
114
+ }
89
115
  }
90
116
  }
91
117
  if (features.chat.enabled) {
92
118
  if (mode === 'RESOURCE') {
93
119
  // RESOURCE: remote channel management (delegates to CORE)
94
- GLOBAL_CONTAINER.registerSingleton(Channels, RemoteChannelImplementation);
120
+ if (!GLOBAL_CONTAINER.isRegistered(Channels)) {
121
+ GLOBAL_CONTAINER.registerSingleton(Channels, RemoteChannelImplementation);
122
+ }
95
123
  }
96
124
  else {
97
125
  // CORE/STANDALONE: local channel management
98
- GLOBAL_CONTAINER.registerSingleton(Channels, LocalChannelImplementation);
126
+ if (!GLOBAL_CONTAINER.isRegistered(Channels)) {
127
+ GLOBAL_CONTAINER.registerSingleton(Channels, LocalChannelImplementation);
128
+ }
129
+ }
130
+ if (!GLOBAL_CONTAINER.isRegistered(Chat)) {
131
+ GLOBAL_CONTAINER.registerSingleton(Chat);
99
132
  }
100
- GLOBAL_CONTAINER.registerSingleton(Chat);
101
133
  }
102
134
  if (!GLOBAL_CONTAINER.isRegistered(Npcs)) {
103
135
  GLOBAL_CONTAINER.registerSingleton(Npcs);
@@ -17,7 +17,7 @@ import { EventsAPI } from '../../../../adapters/contracts/transport/events.api';
17
17
  import { coreLogger, loggers } from '../../../../kernel/logger';
18
18
  import { NetEventSecurityObserverContract, } from '../../contracts/security/net-event-security-observer.contract';
19
19
  import { SecurityHandlerContract } from '../../contracts/security/security-handler.contract';
20
- import { processTupleSchema } from '../../helpers/process-tuple-schema';
20
+ import { processTupleSchema } from '../../../shared/helpers/process-tuple-schema';
21
21
  import { resolveMethod } from '../../helpers/resolve-method';
22
22
  import { Players } from '../../ports/players.api-port';
23
23
  import { METADATA_KEYS } from '../metadata-server.keys';
@@ -16,7 +16,7 @@ import { AppError } from '../../../../';
16
16
  import { RpcAPI } from '../../../../adapters/contracts/transport/rpc.api';
17
17
  import { loggers } from '../../../../kernel/logger';
18
18
  import { Player } from '../../entities/player';
19
- import { processTupleSchema } from '../../helpers/process-tuple-schema';
19
+ import { processTupleSchema } from '../../../shared/helpers/process-tuple-schema';
20
20
  import { resolveMethod } from '../../helpers/resolve-method';
21
21
  import { Players } from '../../ports/players.api-port';
22
22
  import { METADATA_KEYS } from '../metadata-server.keys';
@@ -1,10 +1,11 @@
1
1
  import { IEngineEvents } from '../../../../adapters/contracts/IEngineEvents';
2
+ import type { RuntimeEventName } from '../../../../adapters/contracts/runtime';
2
3
  import { type DecoratorProcessor } from '../../../../kernel/di/index';
3
4
  export declare class RuntimeEventProcessor implements DecoratorProcessor {
4
5
  private readonly engineEvents;
5
6
  readonly metadataKey: string;
6
7
  constructor(engineEvents: IEngineEvents);
7
8
  process(instance: any, methodName: string, metadata: {
8
- event: string;
9
+ event: RuntimeEventName;
9
10
  }): void;
10
11
  }
@@ -26,7 +26,7 @@ let RuntimeEventProcessor = class RuntimeEventProcessor {
26
26
  if (!result)
27
27
  return;
28
28
  const { handler, handlerName } = result;
29
- this.engineEvents.on(metadata.event, (...args) => {
29
+ this.engineEvents.onRuntime(metadata.event, (...args) => {
30
30
  try {
31
31
  handler(...args);
32
32
  }
@@ -1,2 +1,2 @@
1
1
  import z from 'zod';
2
- export declare function generateSchemaFromTypes(paramTypes: any[]): z.ZodTuple | undefined;
2
+ export declare function generateSchemaFromTypes(paramTypes: any[], defaultParams?: boolean[]): z.ZodTuple | undefined;
@@ -19,7 +19,10 @@ function typeToZodSchema(type) {
19
19
  return undefined;
20
20
  }
21
21
  }
22
- export function generateSchemaFromTypes(paramTypes) {
22
+ function applyOptional(schema, optional) {
23
+ return optional ? schema.optional() : schema;
24
+ }
25
+ export function generateSchemaFromTypes(paramTypes, defaultParams = []) {
23
26
  if (!paramTypes || paramTypes.length === 0)
24
27
  return z.tuple([]);
25
28
  if (paramTypes[0] !== Player) {
@@ -28,11 +31,11 @@ export function generateSchemaFromTypes(paramTypes) {
28
31
  if (paramTypes.length === 1)
29
32
  return z.tuple([]);
30
33
  const argSchemas = [];
31
- for (const t of paramTypes.slice(1)) {
34
+ for (const [index, t] of paramTypes.slice(1).entries()) {
32
35
  const s = typeToZodSchema(t);
33
36
  if (!s)
34
37
  return undefined;
35
- argSchemas.push(s);
38
+ argSchemas.push(applyOptional(s, defaultParams[index + 1] ?? false));
36
39
  }
37
40
  return z.tuple(argSchemas);
38
41
  }
@@ -27,6 +27,11 @@ export interface SerializedPlayerData {
27
27
  meta: Record<string, unknown>;
28
28
  /** Active state flags (dead, cuffed, etc.) */
29
29
  states: string[];
30
+ /** Optional adapter-owned payload used to hydrate extended Player instances. */
31
+ adapter?: {
32
+ name: string;
33
+ payload?: Record<string, unknown>;
34
+ };
30
35
  }
31
36
  /**
32
37
  * Security metadata collected from decorators for remote validation.
@@ -0,0 +1,2 @@
1
+ import z from 'zod';
2
+ export declare function processTupleSchema(schema: z.ZodTuple, args: unknown[]): unknown[];
@@ -0,0 +1,32 @@
1
+ import z from 'zod';
2
+ export function processTupleSchema(schema, args) {
3
+ const tupleDef = schema._def;
4
+ const items = schema.description ? [] : [...(tupleDef.items ?? [])];
5
+ if (items.length === 0) {
6
+ return args;
7
+ }
8
+ const lastItem = items[items.length - 1];
9
+ const positionalCount = items.length - 1;
10
+ if (args.length > items.length) {
11
+ if (lastItem instanceof z.ZodString) {
12
+ const positional = args.slice(0, positionalCount);
13
+ const restString = args.slice(positionalCount).map(String).join(' ');
14
+ return [...positional, restString];
15
+ }
16
+ if (lastItem instanceof z.ZodArray) {
17
+ const positional = args.slice(0, positionalCount);
18
+ const restArray = args.slice(positionalCount);
19
+ return [...positional, restArray];
20
+ }
21
+ }
22
+ if (args.length === items.length) {
23
+ if (lastItem instanceof z.ZodArray && !Array.isArray(args[positionalCount])) {
24
+ const positional = args.slice(0, positionalCount);
25
+ return [...positional, [args[positionalCount]]];
26
+ }
27
+ }
28
+ if (args.length < items.length) {
29
+ return [...args, ...Array.from({ length: items.length - args.length }, () => undefined)];
30
+ }
31
+ return args;
32
+ }
@@ -0,0 +1,55 @@
1
+ type ValueOf<T> = T[keyof T];
2
+ declare const SYSTEM_EVENT_NAMESPACE = "opencore";
3
+ export type RemoteCommandExecuteEventName = `${typeof SYSTEM_EVENT_NAMESPACE}:command:execute:${string}`;
4
+ export declare const buildRemoteCommandExecuteEventName: (resourceName: string) => RemoteCommandExecuteEventName;
5
+ export declare const SYSTEM_EVENTS: {
6
+ readonly core: {
7
+ readonly ready: `_systemcore:${string}`;
8
+ readonly requestReady: `_systemcore:${string}`;
9
+ };
10
+ readonly chat: {
11
+ readonly message: `opencore:${string}:${string}`;
12
+ readonly addMessage: `opencore:${string}:${string}`;
13
+ readonly send: `opencore:${string}:${string}`;
14
+ readonly clear: `opencore:${string}:${string}`;
15
+ };
16
+ readonly command: {
17
+ readonly execute: `opencore:${string}:${string}`;
18
+ };
19
+ readonly spawner: {
20
+ readonly spawn: `opencore:${string}:${string}`;
21
+ readonly teleport: `opencore:${string}:${string}`;
22
+ readonly respawn: `opencore:${string}:${string}`;
23
+ };
24
+ readonly appearance: {
25
+ readonly apply: `opencore:${string}:${string}`;
26
+ readonly reset: `opencore:${string}:${string}`;
27
+ };
28
+ readonly vehicle: {
29
+ readonly create: `opencore:${string}:${string}`;
30
+ readonly createResult: `opencore:${string}:${string}`;
31
+ readonly delete: `opencore:${string}:${string}`;
32
+ readonly deleteResult: `opencore:${string}:${string}`;
33
+ readonly repair: `opencore:${string}:${string}`;
34
+ readonly repairResult: `opencore:${string}:${string}`;
35
+ readonly repaired: `opencore:${string}:${string}`;
36
+ readonly setLocked: `opencore:${string}:${string}`;
37
+ readonly getData: `opencore:${string}:${string}`;
38
+ readonly dataResult: `opencore:${string}:${string}`;
39
+ readonly getPlayerVehicles: `opencore:${string}:${string}`;
40
+ readonly playerVehiclesResult: `opencore:${string}:${string}`;
41
+ readonly created: `opencore:${string}:${string}`;
42
+ readonly deleted: `opencore:${string}:${string}`;
43
+ readonly modified: `opencore:${string}:${string}`;
44
+ readonly warpInto: `opencore:${string}:${string}`;
45
+ };
46
+ readonly npc: {
47
+ readonly deleted: `opencore:${string}:${string}`;
48
+ };
49
+ readonly session: {
50
+ readonly playerInit: `opencore:${string}:${string}`;
51
+ readonly teleportTo: `opencore:${string}:${string}`;
52
+ };
53
+ };
54
+ export type SystemEventName = ValueOf<ValueOf<typeof SYSTEM_EVENTS>>;
55
+ export {};
@@ -0,0 +1,54 @@
1
+ const SYSTEM_EVENT_NAMESPACE = 'opencore';
2
+ const SYSTEM_CORE_EVENT_NAMESPACE = '_systemcore';
3
+ const systemEvent = (scope, action) => `${SYSTEM_EVENT_NAMESPACE}:${scope}:${action}`;
4
+ const systemCoreEvent = (action) => `${SYSTEM_CORE_EVENT_NAMESPACE}:${action}`;
5
+ export const buildRemoteCommandExecuteEventName = (resourceName) => `${SYSTEM_EVENTS.command.execute}:${resourceName}`;
6
+ export const SYSTEM_EVENTS = {
7
+ core: {
8
+ ready: systemCoreEvent('ready'),
9
+ requestReady: systemCoreEvent('request-ready'),
10
+ },
11
+ chat: {
12
+ message: systemEvent('chat', 'message'),
13
+ addMessage: systemEvent('chat', 'addMessage'),
14
+ send: systemEvent('chat', 'send'),
15
+ clear: systemEvent('chat', 'clear'),
16
+ },
17
+ command: {
18
+ execute: systemEvent('command', 'execute'),
19
+ },
20
+ spawner: {
21
+ spawn: systemEvent('spawner', 'spawn'),
22
+ teleport: systemEvent('spawner', 'teleport'),
23
+ respawn: systemEvent('spawner', 'respawn'),
24
+ },
25
+ appearance: {
26
+ apply: systemEvent('appearance', 'apply'),
27
+ reset: systemEvent('appearance', 'reset'),
28
+ },
29
+ vehicle: {
30
+ create: systemEvent('vehicle', 'create'),
31
+ createResult: systemEvent('vehicle', 'createResult'),
32
+ delete: systemEvent('vehicle', 'delete'),
33
+ deleteResult: systemEvent('vehicle', 'deleteResult'),
34
+ repair: systemEvent('vehicle', 'repair'),
35
+ repairResult: systemEvent('vehicle', 'repairResult'),
36
+ repaired: systemEvent('vehicle', 'repaired'),
37
+ setLocked: systemEvent('vehicle', 'setLocked'),
38
+ getData: systemEvent('vehicle', 'getData'),
39
+ dataResult: systemEvent('vehicle', 'dataResult'),
40
+ getPlayerVehicles: systemEvent('vehicle', 'getPlayerVehicles'),
41
+ playerVehiclesResult: systemEvent('vehicle', 'playerVehiclesResult'),
42
+ created: systemEvent('vehicle', 'created'),
43
+ deleted: systemEvent('vehicle', 'deleted'),
44
+ modified: systemEvent('vehicle', 'modified'),
45
+ warpInto: systemEvent('vehicle', 'warpInto'),
46
+ },
47
+ npc: {
48
+ deleted: systemEvent('npc', 'deleted'),
49
+ },
50
+ session: {
51
+ playerInit: systemEvent('player', 'sessionInit'),
52
+ teleportTo: systemEvent('player', 'teleportTo'),
53
+ },
54
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-core/framework",
3
- "version": "1.0.5-beta.1",
3
+ "version": "1.0.5",
4
4
  "description": "Secure, event-driven TypeScript Framework & Runtime engine for CitizenFX (Cfx).",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -34,6 +34,26 @@
34
34
  "import": "./dist/runtime/client/index.js",
35
35
  "require": "./dist/runtime/client/index.js"
36
36
  },
37
+ "./contracts": {
38
+ "types": "./dist/contracts.d.ts",
39
+ "import": "./dist/contracts.js",
40
+ "require": "./dist/contracts.js"
41
+ },
42
+ "./contracts/client": {
43
+ "types": "./dist/contracts/client.d.ts",
44
+ "import": "./dist/contracts/client.js",
45
+ "require": "./dist/contracts/client.js"
46
+ },
47
+ "./contracts/server": {
48
+ "types": "./dist/contracts/server.d.ts",
49
+ "import": "./dist/contracts/server.js",
50
+ "require": "./dist/contracts/server.js"
51
+ },
52
+ "./kernel": {
53
+ "types": "./dist/kernel-public.d.ts",
54
+ "import": "./dist/kernel-public.js",
55
+ "require": "./dist/kernel-public.js"
56
+ },
37
57
  "./package.json": "./package.json"
38
58
  },
39
59
  "scripts": {
@@ -55,12 +75,15 @@
55
75
  "bench": "npx tsx benchmark/index.ts",
56
76
  "bench:core": "npx tsx benchmark/index.ts --core",
57
77
  "bench:load": "npx vitest run --project benchmark",
58
- "bench:all": "npx tsx benchmark/index.ts --all"
78
+ "bench:all": "npx tsx benchmark/index.ts --all",
79
+ "validate": "pnpm check && pnpm typecheck && pnpm test",
80
+ "lint-staged": "lint-staged",
81
+ "prepare": "husky"
59
82
  },
60
83
  "keywords": [
61
84
  "framework",
62
85
  "opencore",
63
- "cfx",
86
+ "ragemp",
64
87
  "citizenfx",
65
88
  "redm",
66
89
  "typescript",
@@ -68,7 +91,7 @@
68
91
  ],
69
92
  "author": "OpenCore Team",
70
93
  "license": "MPL-2.0",
71
- "packageManager": "pnpm@10.13.1",
94
+ "packageManager": "pnpm@10.33.0",
72
95
  "peerDependencies": {
73
96
  "reflect-metadata": "^0.2.2",
74
97
  "tsyringe": "^4.10.0",
@@ -78,18 +101,23 @@
78
101
  "uuid": "^13.0.0"
79
102
  },
80
103
  "devDependencies": {
81
- "@biomejs/biome": "^2.3.11",
82
- "@citizenfx/client": "2.0.22443-1",
83
- "@citizenfx/server": "2.0.22443-1",
84
- "@types/node": "^25.0.3",
85
- "@vitest/coverage-v8": "^4.0.16",
86
- "dependency-cruiser": "^17.3.6",
104
+ "@biomejs/biome": "^2.4.8",
105
+ "@types/node": "^25.5.0",
106
+ "@vitest/coverage-v8": "^4.1.1",
107
+ "dependency-cruiser": "^17.3.9",
87
108
  "eslint-config-prettier": "^10.1.8",
88
109
  "eslint-plugin-import": "^2.32.0",
89
110
  "graphviz": "^0.0.9",
90
- "tinybench": "^2.9.0",
111
+ "husky": "^9.1.7",
112
+ "lint-staged": "^16.2.6",
113
+ "tinybench": "^6.0.0",
91
114
  "tsx": "^4.21.0",
92
- "typescript": "^5.9.3",
93
- "vitest": "^4.0.16"
115
+ "typescript": "^6.0.2",
116
+ "vitest": "^4.1.1"
117
+ },
118
+ "lint-staged": {
119
+ "*.{js,cjs,mjs,ts,tsx,json,md}": [
120
+ "biome check --write --no-errors-on-unmatched"
121
+ ]
94
122
  }
95
123
  }
@@ -1,16 +0,0 @@
1
- import { IPlatformCapabilities } from '../contracts/IPlatformCapabilities';
2
- export declare class CfxCapabilities extends IPlatformCapabilities {
3
- readonly platformName = "cfx";
4
- readonly displayName = "CitizenFX";
5
- private readonly gameProfile;
6
- readonly supportsRoutingBuckets = true;
7
- readonly supportsStateBags = true;
8
- readonly supportsVoiceChat = true;
9
- readonly supportsServerEntities = true;
10
- readonly identifierTypes: readonly ["steam", "license", "license2", "discord", "fivem", "xbl", "live", "ip", "rockstar"];
11
- readonly maxPlayers = 1024;
12
- private readonly supportedFeatures;
13
- private readonly config;
14
- isFeatureSupported(feature: string): boolean;
15
- getConfig<T = unknown>(key: string): T | undefined;
16
- }
@@ -1,70 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { injectable } from 'tsyringe';
8
- import { IPlatformCapabilities, PlatformFeatures } from '../contracts/IPlatformCapabilities';
9
- import { IdentifierTypes } from '../contracts/types/identifier';
10
- import { detectCfxGameProfile } from './runtime-profile';
11
- let CfxCapabilities = class CfxCapabilities extends IPlatformCapabilities {
12
- platformName = 'cfx';
13
- displayName = 'CitizenFX';
14
- gameProfile = detectCfxGameProfile();
15
- supportsRoutingBuckets = true;
16
- supportsStateBags = true;
17
- supportsVoiceChat = true;
18
- supportsServerEntities = true;
19
- identifierTypes = [
20
- IdentifierTypes.STEAM,
21
- IdentifierTypes.LICENSE,
22
- IdentifierTypes.LICENSE2,
23
- IdentifierTypes.DISCORD,
24
- IdentifierTypes.FIVEM,
25
- IdentifierTypes.XBL,
26
- IdentifierTypes.LIVE,
27
- IdentifierTypes.IP,
28
- IdentifierTypes.ROCKSTAR,
29
- ];
30
- maxPlayers = 1024;
31
- supportedFeatures = new Set([
32
- PlatformFeatures.ROUTING_BUCKETS,
33
- PlatformFeatures.STATE_BAGS,
34
- PlatformFeatures.VOICE_CHAT,
35
- PlatformFeatures.SERVER_ENTITIES,
36
- PlatformFeatures.BLIPS,
37
- PlatformFeatures.MARKERS,
38
- PlatformFeatures.TEXT_LABELS,
39
- PlatformFeatures.CHECKPOINTS,
40
- PlatformFeatures.COLSHAPES,
41
- ...(this.gameProfile === 'gta5'
42
- ? [
43
- PlatformFeatures.VEHICLE_MODS,
44
- PlatformFeatures.PED_APPEARANCE,
45
- PlatformFeatures.WEAPON_COMPONENTS,
46
- ]
47
- : []),
48
- ]);
49
- config = {
50
- runtime: 'cfx',
51
- gameProfile: this.gameProfile,
52
- defaultRoutingBucket: 0,
53
- maxRoutingBuckets: 63,
54
- tickRate: 64,
55
- syncRate: 10,
56
- defaultSpawnModel: this.gameProfile === 'rdr3' ? 'mp_male' : 'mp_m_freemode_01',
57
- enableServerVehicleCreation: this.gameProfile !== 'rdr3',
58
- defaultVehicleType: this.gameProfile === 'rdr3' ? 'automobile' : 'automobile',
59
- };
60
- isFeatureSupported(feature) {
61
- return this.supportedFeatures.has(feature);
62
- }
63
- getConfig(key) {
64
- return this.config[key];
65
- }
66
- };
67
- CfxCapabilities = __decorate([
68
- injectable()
69
- ], CfxCapabilities);
70
- export { CfxCapabilities };
@@ -1,2 +0,0 @@
1
- import type { PlatformAdapter } from '../platform/platform-registry';
2
- export declare const CfxPlatform: PlatformAdapter;