@open-core/framework 0.1.0-alpha.1 → 0.2.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (569) hide show
  1. package/README.md +217 -360
  2. package/dist/adapters/contracts/IEngineEvents.d.ts +20 -0
  3. package/dist/adapters/contracts/IEngineEvents.js +6 -0
  4. package/dist/adapters/contracts/IEntityServer.d.ts +88 -0
  5. package/dist/adapters/contracts/IEntityServer.js +13 -0
  6. package/dist/adapters/contracts/IExports.d.ts +4 -0
  7. package/dist/adapters/contracts/IExports.js +6 -0
  8. package/dist/adapters/contracts/IHasher.d.ts +15 -0
  9. package/dist/adapters/contracts/IHasher.js +12 -0
  10. package/dist/adapters/contracts/INetTransport.d.ts +8 -0
  11. package/dist/adapters/contracts/INetTransport.js +6 -0
  12. package/dist/adapters/contracts/IPedAppearanceClient.d.ts +206 -0
  13. package/dist/adapters/contracts/IPedAppearanceClient.js +16 -0
  14. package/dist/adapters/contracts/IPedAppearanceServer.d.ts +45 -0
  15. package/dist/adapters/contracts/IPedAppearanceServer.js +16 -0
  16. package/dist/adapters/contracts/IPlayerInfo.d.ts +5 -0
  17. package/dist/adapters/contracts/IPlayerInfo.js +6 -0
  18. package/dist/adapters/contracts/IPlayerServer.d.ts +73 -0
  19. package/dist/adapters/contracts/IPlayerServer.js +13 -0
  20. package/dist/adapters/contracts/IResourceInfo.d.ts +3 -0
  21. package/dist/adapters/contracts/IResourceInfo.js +6 -0
  22. package/dist/adapters/contracts/ITick.d.ts +10 -0
  23. package/dist/adapters/contracts/ITick.js +9 -0
  24. package/dist/adapters/contracts/IVehicleServer.d.ts +55 -0
  25. package/dist/adapters/contracts/IVehicleServer.js +13 -0
  26. package/dist/{server/database/adapters → adapters/database}/oxmysql.adapter.d.ts +2 -2
  27. package/dist/{server/database/adapters → adapters/database}/oxmysql.adapter.js +2 -2
  28. package/dist/adapters/database/resource.adapter.d.ts +12 -0
  29. package/dist/adapters/database/resource.adapter.js +68 -0
  30. package/dist/adapters/fivem/fivem-engine-events.d.ts +5 -0
  31. package/dist/adapters/fivem/fivem-engine-events.js +13 -0
  32. package/dist/adapters/fivem/fivem-entity-server.d.ts +22 -0
  33. package/dist/adapters/fivem/fivem-entity-server.js +80 -0
  34. package/dist/adapters/fivem/fivem-exports.d.ts +5 -0
  35. package/dist/adapters/fivem/fivem-exports.js +14 -0
  36. package/dist/adapters/fivem/fivem-hasher.d.ts +7 -0
  37. package/dist/adapters/fivem/fivem-hasher.js +23 -0
  38. package/dist/adapters/fivem/fivem-net-transport.d.ts +5 -0
  39. package/dist/adapters/fivem/fivem-net-transport.js +24 -0
  40. package/dist/adapters/fivem/fivem-ped-appearance-client.d.ts +34 -0
  41. package/dist/adapters/fivem/fivem-ped-appearance-client.js +84 -0
  42. package/dist/adapters/fivem/fivem-ped-appearance-server.d.ts +14 -0
  43. package/dist/adapters/fivem/fivem-ped-appearance-server.js +26 -0
  44. package/dist/adapters/fivem/fivem-player-server.d.ts +15 -0
  45. package/dist/adapters/fivem/fivem-player-server.js +63 -0
  46. package/dist/adapters/fivem/fivem-playerinfo.d.ts +6 -0
  47. package/dist/adapters/fivem/fivem-playerinfo.js +14 -0
  48. package/dist/adapters/fivem/fivem-resourceinfo.d.ts +4 -0
  49. package/dist/adapters/fivem/fivem-resourceinfo.js +16 -0
  50. package/dist/adapters/fivem/fivem-tick.d.ts +7 -0
  51. package/dist/adapters/fivem/fivem-tick.js +22 -0
  52. package/dist/adapters/fivem/fivem-vehicle-server.d.ts +15 -0
  53. package/dist/adapters/fivem/fivem-vehicle-server.js +47 -0
  54. package/dist/adapters/index.d.ts +15 -0
  55. package/dist/adapters/index.js +40 -0
  56. package/dist/adapters/node/index.d.ts +8 -0
  57. package/dist/adapters/node/index.js +19 -0
  58. package/dist/adapters/node/node-engine-events.d.ts +20 -0
  59. package/dist/adapters/node/node-engine-events.js +42 -0
  60. package/dist/adapters/node/node-entity-server.d.ts +26 -0
  61. package/dist/adapters/node/node-entity-server.js +101 -0
  62. package/dist/adapters/node/node-exports.d.ts +26 -0
  63. package/dist/adapters/node/node-exports.js +63 -0
  64. package/dist/adapters/node/node-hasher.d.ts +12 -0
  65. package/dist/adapters/node/node-hasher.js +39 -0
  66. package/dist/adapters/node/node-net-transport.d.ts +18 -0
  67. package/dist/adapters/node/node-net-transport.js +57 -0
  68. package/dist/adapters/node/node-ped-appearance-client.d.ts +34 -0
  69. package/dist/adapters/node/node-ped-appearance-client.js +59 -0
  70. package/dist/adapters/node/node-ped-appearance-server.d.ts +14 -0
  71. package/dist/adapters/node/node-ped-appearance-server.js +18 -0
  72. package/dist/adapters/node/node-player-server.d.ts +27 -0
  73. package/dist/adapters/node/node-player-server.js +82 -0
  74. package/dist/adapters/node/node-playerinfo.d.ts +6 -0
  75. package/dist/adapters/node/node-playerinfo.js +12 -0
  76. package/dist/adapters/node/node-resourceinfo.d.ts +12 -0
  77. package/dist/adapters/node/node-resourceinfo.js +27 -0
  78. package/dist/adapters/node/node-tick.d.ts +10 -0
  79. package/dist/{server/system/processors/command.processor.js → adapters/node/node-tick.js} +27 -14
  80. package/dist/adapters/node/node-vehicle-server.d.ts +21 -0
  81. package/dist/adapters/node/node-vehicle-server.js +93 -0
  82. package/dist/adapters/register-capabilities.d.ts +11 -0
  83. package/dist/adapters/register-capabilities.js +148 -0
  84. package/dist/adapters/register-client-capabilities.d.ts +8 -0
  85. package/dist/adapters/register-client-capabilities.js +56 -0
  86. package/dist/index.d.ts +5 -4
  87. package/dist/index.js +9 -5
  88. package/dist/kernel/di/index.d.ts +4 -0
  89. package/dist/kernel/di/index.js +20 -0
  90. package/dist/{system → kernel/di}/metadata.scanner.d.ts +1 -2
  91. package/dist/kernel/di/tokens.d.ts +30 -0
  92. package/dist/kernel/di/tokens.js +38 -0
  93. package/dist/kernel/index.d.ts +7 -0
  94. package/dist/kernel/index.js +30 -0
  95. package/dist/kernel/schema/index.d.ts +32 -0
  96. package/dist/kernel/schema/index.js +5 -0
  97. package/dist/kernel/shared/appearance/appearance.interface.d.ts +276 -0
  98. package/dist/kernel/shared/appearance/appearance.interface.js +77 -0
  99. package/dist/kernel/shared/appearance/index.d.ts +1 -0
  100. package/dist/kernel/shared/appearance/index.js +17 -0
  101. package/dist/kernel/shared/index.d.ts +2 -0
  102. package/dist/{shared → kernel/shared}/index.js +1 -0
  103. package/dist/{shared → kernel/shared}/logger/core-logger.d.ts +13 -0
  104. package/dist/{shared → kernel/shared}/logger/core-logger.js +38 -9
  105. package/dist/{shared → kernel/shared}/logger/index.d.ts +12 -9
  106. package/dist/{shared → kernel/shared}/logger/index.js +24 -15
  107. package/dist/{shared → kernel/shared}/logger/logger.config.d.ts +1 -1
  108. package/dist/kernel/shared/logger/logger.env.d.ts +28 -0
  109. package/dist/kernel/shared/logger/logger.env.js +51 -0
  110. package/dist/{shared → kernel/shared}/logger/logger.service.d.ts +2 -2
  111. package/dist/{shared → kernel/shared}/logger/transports/buffered.transport.d.ts +2 -2
  112. package/dist/{shared → kernel/shared}/logger/transports/buffered.transport.js +1 -1
  113. package/dist/{shared → kernel/shared}/logger/transports/console.transport.d.ts +2 -2
  114. package/dist/{shared → kernel/shared}/logger/transports/console.transport.js +1 -0
  115. package/dist/kernel/shared/logger/transports/dev-transport.factory.d.ts +75 -0
  116. package/dist/kernel/shared/logger/transports/dev-transport.factory.js +111 -0
  117. package/dist/kernel/shared/logger/transports/http.transport.d.ts +67 -0
  118. package/dist/kernel/shared/logger/transports/http.transport.js +170 -0
  119. package/dist/kernel/shared/logger/transports/index.d.ts +7 -0
  120. package/dist/kernel/shared/logger/transports/index.js +34 -0
  121. package/dist/kernel/shared/logger/transports/simple-console.transport.d.ts +38 -0
  122. package/dist/kernel/shared/logger/transports/simple-console.transport.js +93 -0
  123. package/dist/{shared → kernel/shared}/logger/transports/transport.interface.d.ts +1 -1
  124. package/dist/kernel/shared/logger/transports/websocket.transport.d.ts +69 -0
  125. package/dist/kernel/shared/logger/transports/websocket.transport.js +169 -0
  126. package/dist/kernel/utils/error/app.error.d.ts +9 -0
  127. package/dist/{utils/errors.js → kernel/utils/error/app.error.js} +1 -9
  128. package/dist/kernel/utils/error/security.error.d.ts +6 -0
  129. package/dist/kernel/utils/error/security.error.js +12 -0
  130. package/dist/{utils → kernel/utils}/index.d.ts +3 -2
  131. package/dist/{utils → kernel/utils}/index.js +3 -2
  132. package/dist/{utils → kernel/utils}/result.d.ts +1 -1
  133. package/dist/runtime/client/client-bootstrap.d.ts +7 -0
  134. package/dist/runtime/client/client-bootstrap.js +180 -0
  135. package/dist/runtime/client/client-core.d.ts +19 -0
  136. package/dist/runtime/client/client-core.js +24 -0
  137. package/dist/runtime/client/client-runtime.d.ts +58 -0
  138. package/dist/runtime/client/client-runtime.js +32 -0
  139. package/dist/runtime/client/controllers/appearance.controller.d.ts +8 -0
  140. package/dist/runtime/client/controllers/appearance.controller.js +50 -0
  141. package/dist/runtime/client/controllers/player-sync.controller.d.ts +11 -0
  142. package/dist/runtime/client/controllers/player-sync.controller.js +54 -0
  143. package/dist/{client → runtime/client}/controllers/spawner.controller.d.ts +1 -1
  144. package/dist/runtime/client/decorators/controller.d.ts +20 -0
  145. package/dist/runtime/client/decorators/controller.js +55 -0
  146. package/dist/runtime/client/decorators/export.d.ts +21 -0
  147. package/dist/runtime/client/decorators/export.js +29 -0
  148. package/dist/{client → runtime/client}/decorators/gameEvent.d.ts +2 -2
  149. package/dist/runtime/client/decorators/interval.d.ts +23 -0
  150. package/dist/runtime/client/decorators/interval.js +31 -0
  151. package/dist/runtime/client/decorators/key.d.ts +23 -0
  152. package/dist/runtime/client/decorators/key.js +31 -0
  153. package/dist/runtime/client/decorators/localEvent.d.ts +21 -0
  154. package/dist/runtime/client/decorators/localEvent.js +29 -0
  155. package/dist/runtime/client/decorators/nui.d.ts +21 -0
  156. package/dist/runtime/client/decorators/nui.js +29 -0
  157. package/dist/runtime/client/decorators/onNet.d.ts +21 -0
  158. package/dist/runtime/client/decorators/onNet.js +29 -0
  159. package/dist/runtime/client/decorators/resourceLifecycle.d.ts +40 -0
  160. package/dist/runtime/client/decorators/resourceLifecycle.js +53 -0
  161. package/dist/runtime/client/decorators/tick.d.ts +21 -0
  162. package/dist/runtime/client/decorators/tick.js +29 -0
  163. package/dist/{client → runtime/client}/index.d.ts +2 -2
  164. package/dist/{client → runtime/client}/index.js +4 -2
  165. package/dist/runtime/client/interfaces/appearance.interface.d.ts +25 -0
  166. package/dist/runtime/client/interfaces/appearance.interface.js +2 -0
  167. package/dist/{client → runtime/client}/player/player.d.ts +1 -1
  168. package/dist/{client → runtime/client}/player/player.js +5 -6
  169. package/dist/{client → runtime/client}/player/player.loader.js +2 -2
  170. package/dist/runtime/client/services/appearance.service.d.ts +132 -0
  171. package/dist/runtime/client/services/appearance.service.js +328 -0
  172. package/dist/{client → runtime/client}/services/blip.service.d.ts +1 -1
  173. package/dist/{client → runtime/client}/services/index.d.ts +6 -5
  174. package/dist/{client → runtime/client}/services/index.js +6 -5
  175. package/dist/{client → runtime/client}/services/marker.service.d.ts +1 -1
  176. package/dist/{client → runtime/client}/services/ped.service.d.ts +1 -1
  177. package/dist/{client → runtime/client}/services/ped.service.js +3 -2
  178. package/dist/{client → runtime/client}/services/spawn.service.d.ts +2 -2
  179. package/dist/{client → runtime/client}/services/spawn.service.js +4 -8
  180. package/dist/{client → runtime/client}/services/textui.service.d.ts +1 -1
  181. package/dist/runtime/client/services/vehicle-client.service.d.ts +180 -0
  182. package/dist/runtime/client/services/vehicle-client.service.js +485 -0
  183. package/dist/{client → runtime/client}/services/vehicle.service.d.ts +2 -2
  184. package/dist/{client → runtime/client}/services/vehicle.service.js +1 -1
  185. package/dist/{client → runtime/client}/system/processors/export.processor.d.ts +1 -1
  186. package/dist/{client → runtime/client}/system/processors/export.processor.js +1 -1
  187. package/dist/{client → runtime/client}/system/processors/gameEvent.processor.d.ts +1 -1
  188. package/dist/{client → runtime/client}/system/processors/gameEvent.processor.js +2 -2
  189. package/dist/{client → runtime/client}/system/processors/interval.processor.d.ts +1 -1
  190. package/dist/{client → runtime/client}/system/processors/interval.processor.js +1 -1
  191. package/dist/{client → runtime/client}/system/processors/key.processor.d.ts +1 -1
  192. package/dist/{client → runtime/client}/system/processors/localEvent.processor.d.ts +1 -1
  193. package/dist/{client → runtime/client}/system/processors/localEvent.processor.js +1 -1
  194. package/dist/{client → runtime/client}/system/processors/netEvent.processor.d.ts +1 -1
  195. package/dist/{client → runtime/client}/system/processors/netEvent.processor.js +1 -1
  196. package/dist/{client → runtime/client}/system/processors/nui.processor.d.ts +1 -1
  197. package/dist/{client → runtime/client}/system/processors/nui.processor.js +1 -1
  198. package/dist/{client → runtime/client}/system/processors/resourceLifecycle.processor.d.ts +1 -1
  199. package/dist/{client → runtime/client}/system/processors/resourceLifecycle.processor.js +1 -1
  200. package/dist/{client → runtime/client}/system/processors/tick.processor.d.ts +1 -1
  201. package/dist/{client → runtime/client}/system/processors/tick.processor.js +1 -1
  202. package/dist/{client → runtime/client}/types/game-events.js +0 -8
  203. package/dist/{client → runtime/client}/ui-bridge.js +1 -1
  204. package/dist/runtime/index.d.ts +2 -0
  205. package/dist/runtime/index.js +39 -0
  206. package/dist/{server → runtime/server}/bootstrap.d.ts +2 -1
  207. package/dist/runtime/server/bootstrap.js +234 -0
  208. package/dist/runtime/server/bootstrap.validation.d.ts +12 -0
  209. package/dist/runtime/server/bootstrap.validation.js +102 -0
  210. package/dist/runtime/server/bus/core-event-bus.d.ts +6 -0
  211. package/dist/{server → runtime/server}/bus/core-event-bus.js +5 -5
  212. package/dist/{server → runtime/server}/configs/api.config.d.ts +1 -1
  213. package/dist/{server/templates/auth → runtime/server/contracts}/auth-provider.contract.d.ts +2 -2
  214. package/dist/runtime/server/contracts/index.d.ts +7 -0
  215. package/dist/{server/templates → runtime/server/contracts}/index.js +8 -4
  216. package/dist/{server/templates/persistence → runtime/server/contracts}/player-persistence.contract.d.ts +1 -1
  217. package/dist/{server/templates → runtime/server/contracts}/repository/index.d.ts +2 -2
  218. package/dist/{server/templates → runtime/server/contracts}/repository/index.js +1 -1
  219. package/dist/{server/templates → runtime/server/contracts}/repository/repository.contract.d.ts +2 -2
  220. package/dist/{server/templates → runtime/server/contracts}/repository/repository.contract.js +0 -1
  221. package/dist/runtime/server/contracts/security/net-event-security-observer.contract.d.ts +15 -0
  222. package/dist/runtime/server/contracts/security/net-event-security-observer.contract.js +6 -0
  223. package/dist/{server/templates → runtime/server/contracts}/security/principal-provider.contract.d.ts +3 -3
  224. package/dist/{server/templates → runtime/server/contracts}/security/security-handler.contract.d.ts +2 -2
  225. package/dist/runtime/server/controllers/chat.controller.d.ts +11 -0
  226. package/dist/{server → runtime/server}/controllers/chat.controller.js +23 -11
  227. package/dist/runtime/server/controllers/command-export.controller.d.ts +74 -0
  228. package/dist/runtime/server/controllers/command-export.controller.js +260 -0
  229. package/dist/runtime/server/controllers/command.controller.d.ts +15 -0
  230. package/dist/runtime/server/controllers/command.controller.js +100 -0
  231. package/dist/runtime/server/controllers/player-export.controller.d.ts +29 -0
  232. package/dist/runtime/server/controllers/player-export.controller.js +173 -0
  233. package/dist/runtime/server/controllers/principal-export.controller.d.ts +79 -0
  234. package/dist/runtime/server/controllers/principal-export.controller.js +296 -0
  235. package/dist/runtime/server/controllers/remote-command-execution.controller.d.ts +43 -0
  236. package/dist/runtime/server/controllers/remote-command-execution.controller.js +104 -0
  237. package/dist/runtime/server/controllers/session.controller.d.ts +11 -0
  238. package/dist/{server → runtime/server}/controllers/session.controller.js +15 -12
  239. package/dist/runtime/server/controllers/vehicle.controller.d.ts +55 -0
  240. package/dist/runtime/server/controllers/vehicle.controller.js +216 -0
  241. package/dist/runtime/server/core.d.ts +3 -0
  242. package/dist/runtime/server/core.js +11 -0
  243. package/dist/runtime/server/database/adapter.registry.d.ts +4 -0
  244. package/dist/runtime/server/database/adapter.registry.js +14 -0
  245. package/dist/{server → runtime/server}/database/database.contract.d.ts +1 -1
  246. package/dist/{server → runtime/server}/database/database.service.d.ts +3 -31
  247. package/dist/{server → runtime/server}/database/database.service.js +36 -50
  248. package/dist/runtime/server/database/index.d.ts +5 -0
  249. package/dist/runtime/server/database/index.js +25 -0
  250. package/dist/runtime/server/decorators/bind.d.ts +21 -0
  251. package/dist/runtime/server/decorators/bind.js +31 -0
  252. package/dist/runtime/server/decorators/command.d.ts +81 -0
  253. package/dist/runtime/server/decorators/command.js +32 -0
  254. package/dist/{server → runtime/server}/decorators/controller.d.ts +4 -3
  255. package/dist/runtime/server/decorators/controller.js +61 -0
  256. package/dist/runtime/server/decorators/export.d.ts +24 -0
  257. package/dist/runtime/server/decorators/export.js +32 -0
  258. package/dist/runtime/server/decorators/guard.d.ts +49 -0
  259. package/dist/{server → runtime/server}/decorators/guard.js +33 -32
  260. package/dist/{server → runtime/server}/decorators/index.d.ts +7 -4
  261. package/dist/{server → runtime/server}/decorators/index.js +8 -5
  262. package/dist/runtime/server/decorators/onFiveMEvent.d.ts +24 -0
  263. package/dist/runtime/server/decorators/onFiveMEvent.js +32 -0
  264. package/dist/runtime/server/decorators/onFrameworkEvent.d.ts +22 -0
  265. package/dist/{server → runtime/server}/decorators/onFrameworkEvent.js +9 -9
  266. package/dist/runtime/server/decorators/onNet.d.ts +62 -0
  267. package/dist/runtime/server/decorators/onNet.js +15 -0
  268. package/dist/runtime/server/decorators/onTick.d.ts +21 -0
  269. package/dist/runtime/server/decorators/onTick.js +29 -0
  270. package/dist/runtime/server/decorators/public.d.ts +26 -0
  271. package/dist/{server → runtime/server}/decorators/public.js +15 -16
  272. package/dist/{server → runtime/server}/decorators/requiresState.d.ts +29 -22
  273. package/dist/runtime/server/decorators/requiresState.js +73 -0
  274. package/dist/runtime/server/decorators/throttle.d.ts +56 -0
  275. package/dist/{server → runtime/server}/decorators/throttle.js +31 -19
  276. package/dist/runtime/server/decorators/utils.d.ts +54 -0
  277. package/dist/runtime/server/decorators/utils.js +60 -0
  278. package/dist/runtime/server/devmode/contracts/IDevModeBridge.d.ts +36 -0
  279. package/dist/runtime/server/devmode/contracts/IDevModeBridge.js +12 -0
  280. package/dist/runtime/server/devmode/contracts/IDevModeInspector.d.ts +52 -0
  281. package/dist/runtime/server/devmode/contracts/IDevModeInspector.js +12 -0
  282. package/dist/runtime/server/devmode/contracts/IDevModeInterceptor.d.ts +41 -0
  283. package/dist/runtime/server/devmode/contracts/IDevModeInterceptor.js +11 -0
  284. package/dist/runtime/server/devmode/contracts/index.d.ts +3 -0
  285. package/dist/runtime/server/devmode/contracts/index.js +9 -0
  286. package/dist/runtime/server/devmode/dev-mode.service.d.ts +110 -0
  287. package/dist/runtime/server/devmode/dev-mode.service.js +324 -0
  288. package/dist/runtime/server/devmode/event-interceptor.service.d.ts +80 -0
  289. package/dist/runtime/server/devmode/event-interceptor.service.js +232 -0
  290. package/dist/runtime/server/devmode/hot-reload.server.d.ts +74 -0
  291. package/dist/runtime/server/devmode/hot-reload.server.js +261 -0
  292. package/dist/runtime/server/devmode/index.d.ts +8 -0
  293. package/dist/runtime/server/devmode/index.js +32 -0
  294. package/dist/runtime/server/devmode/player-simulator.service.d.ts +66 -0
  295. package/dist/runtime/server/devmode/player-simulator.service.js +202 -0
  296. package/dist/runtime/server/devmode/state-inspector.service.d.ts +57 -0
  297. package/dist/runtime/server/devmode/state-inspector.service.js +183 -0
  298. package/dist/runtime/server/devmode/types.d.ts +161 -0
  299. package/dist/runtime/server/devmode/types.js +28 -0
  300. package/dist/runtime/server/entities/index.d.ts +2 -0
  301. package/dist/{server → runtime/server}/entities/index.js +1 -0
  302. package/dist/{server → runtime/server}/entities/player.d.ts +70 -3
  303. package/dist/{server → runtime/server}/entities/player.js +92 -14
  304. package/dist/runtime/server/entities/vehicle.d.ts +160 -0
  305. package/dist/runtime/server/entities/vehicle.js +261 -0
  306. package/dist/{server → runtime/server}/error-handler.d.ts +1 -1
  307. package/dist/{server → runtime/server}/error-handler.js +7 -8
  308. package/dist/runtime/server/helpers/command-validation.helper.d.ts +6 -0
  309. package/dist/runtime/server/helpers/command-validation.helper.js +72 -0
  310. package/dist/runtime/server/helpers/function-helper.d.ts +1 -0
  311. package/dist/runtime/server/helpers/function-helper.js +15 -0
  312. package/dist/{server → runtime/server}/helpers/resolve-method.d.ts +1 -1
  313. package/dist/runtime/server/helpers/resolve-method.js +28 -0
  314. package/dist/{server → runtime/server}/index.d.ts +8 -6
  315. package/dist/{server → runtime/server}/index.js +14 -10
  316. package/dist/runtime/server/runtime.d.ts +408 -0
  317. package/dist/runtime/server/runtime.js +234 -0
  318. package/dist/runtime/server/services/access-control.service.d.ts +59 -0
  319. package/dist/runtime/server/services/access-control.service.js +127 -0
  320. package/dist/runtime/server/services/appearance.service.d.ts +99 -0
  321. package/dist/runtime/server/services/appearance.service.js +307 -0
  322. package/dist/runtime/server/services/chat.service.d.ts +33 -0
  323. package/dist/{server → runtime/server}/services/chat.service.js +26 -0
  324. package/dist/{server → runtime/server}/services/config.service.js +1 -1
  325. package/dist/runtime/server/services/core/command.service.d.ts +49 -0
  326. package/dist/runtime/server/services/core/command.service.js +112 -0
  327. package/dist/{server/services → runtime/server/services/core}/player.service.d.ts +48 -22
  328. package/dist/{server/services → runtime/server/services/core}/player.service.js +98 -14
  329. package/dist/runtime/server/services/core/principal.service.d.ts +28 -0
  330. package/dist/runtime/server/services/core/principal.service.js +126 -0
  331. package/dist/runtime/server/services/core/vehicle-modification.service.d.ts +104 -0
  332. package/dist/runtime/server/services/core/vehicle-modification.service.js +330 -0
  333. package/dist/runtime/server/services/core/vehicle.service.d.ts +128 -0
  334. package/dist/runtime/server/services/core/vehicle.service.js +391 -0
  335. package/dist/runtime/server/services/default/default-net-event-security-observer.d.ts +15 -0
  336. package/dist/runtime/server/services/default/default-net-event-security-observer.js +28 -0
  337. package/dist/runtime/server/services/default/default-security.handler.d.ts +19 -0
  338. package/dist/{server → runtime/server}/services/default/default-security.handler.js +15 -2
  339. package/dist/{server → runtime/server}/services/http/http.service.js +5 -5
  340. package/dist/runtime/server/services/index.d.ts +16 -0
  341. package/dist/runtime/server/services/index.js +39 -0
  342. package/dist/{server → runtime/server}/services/parallel/index.d.ts +2 -4
  343. package/dist/{server → runtime/server}/services/parallel/index.js +13 -15
  344. package/dist/{server → runtime/server}/services/parallel/parallel-compute.service.d.ts +1 -1
  345. package/dist/{server → runtime/server}/services/parallel/parallel-compute.service.js +2 -1
  346. package/dist/{server → runtime/server}/services/parallel/worker-pool.d.ts +1 -1
  347. package/dist/{server → runtime/server}/services/parallel/worker.d.ts +1 -1
  348. package/dist/{server → runtime/server}/services/persistence.service.d.ts +1 -1
  349. package/dist/{server → runtime/server}/services/persistence.service.js +13 -9
  350. package/dist/runtime/server/services/ports/command-execution.port.d.ts +41 -0
  351. package/dist/runtime/server/services/ports/command-execution.port.js +15 -0
  352. package/dist/runtime/server/services/ports/player-directory.port.d.ts +107 -0
  353. package/dist/runtime/server/services/ports/player-directory.port.js +23 -0
  354. package/dist/runtime/server/services/ports/player-session-lifecycle.port.d.ts +49 -0
  355. package/dist/runtime/server/services/ports/player-session-lifecycle.port.js +16 -0
  356. package/dist/runtime/server/services/ports/principal.port.d.ts +149 -0
  357. package/dist/runtime/server/services/ports/principal.port.js +32 -0
  358. package/dist/runtime/server/services/rate-limiter.service.d.ts +23 -0
  359. package/dist/{server → runtime/server}/services/rate-limiter.service.js +18 -0
  360. package/dist/runtime/server/services/remote/remote-command.service.d.ts +63 -0
  361. package/dist/runtime/server/services/remote/remote-command.service.js +139 -0
  362. package/dist/runtime/server/services/remote/remote-player.service.d.ts +62 -0
  363. package/dist/runtime/server/services/remote/remote-player.service.js +191 -0
  364. package/dist/runtime/server/services/remote/remote-principal.provider.d.ts +55 -0
  365. package/dist/runtime/server/services/remote/remote-principal.provider.js +130 -0
  366. package/dist/runtime/server/services/remote/remote-principal.service.d.ts +33 -0
  367. package/dist/runtime/server/services/remote/remote-principal.service.js +99 -0
  368. package/dist/runtime/server/services/remote/server-bridge.d.ts +34 -0
  369. package/dist/runtime/server/services/remote/server-bridge.js +94 -0
  370. package/dist/runtime/server/services/services.register.d.ts +14 -0
  371. package/dist/runtime/server/services/services.register.js +98 -0
  372. package/dist/runtime/server/services/types/linked-id.d.ts +6 -0
  373. package/dist/runtime/server/services/types/player-session.object.d.ts +11 -0
  374. package/dist/runtime/server/services/vehicle-modification.service.d.ts +94 -0
  375. package/dist/runtime/server/services/vehicle-modification.service.js +310 -0
  376. package/dist/runtime/server/services/vehicle.service.d.ts +138 -0
  377. package/dist/runtime/server/services/vehicle.service.js +361 -0
  378. package/dist/runtime/server/setup.d.ts +10 -0
  379. package/dist/runtime/server/setup.js +33 -0
  380. package/dist/{server → runtime/server}/system/metadata-server.keys.d.ts +2 -0
  381. package/dist/{server → runtime/server}/system/metadata-server.keys.js +2 -0
  382. package/dist/runtime/server/system/processors/command.processor.d.ts +16 -0
  383. package/dist/runtime/server/system/processors/command.processor.js +54 -0
  384. package/dist/{server → runtime/server}/system/processors/coreEvent.processor.d.ts +1 -1
  385. package/dist/{server → runtime/server}/system/processors/coreEvent.processor.js +3 -3
  386. package/dist/runtime/server/system/processors/export.processor.d.ts +10 -0
  387. package/dist/{server → runtime/server}/system/processors/export.processor.js +15 -5
  388. package/dist/runtime/server/system/processors/fivemEvent.processor.d.ts +10 -0
  389. package/dist/{server → runtime/server}/system/processors/fivemEvent.processor.js +15 -5
  390. package/dist/runtime/server/system/processors/netEvent.processor.d.ts +23 -0
  391. package/dist/runtime/server/system/processors/netEvent.processor.js +240 -0
  392. package/dist/runtime/server/system/processors/tick.processor.d.ts +8 -0
  393. package/dist/{server → runtime/server}/system/processors/tick.processor.js +14 -4
  394. package/dist/runtime/server/system/processors.register.d.ts +2 -0
  395. package/dist/runtime/server/system/processors.register.js +37 -0
  396. package/dist/{server → runtime/server}/system/schema-generator.d.ts +1 -1
  397. package/dist/{server → runtime/server}/system/schema-generator.js +17 -8
  398. package/dist/{server/templates/admin → runtime/server/templates}/admin.controller-template.d.ts +1 -1
  399. package/dist/runtime/server/templates/index.d.ts +1 -0
  400. package/dist/runtime/server/templates/index.js +17 -0
  401. package/dist/runtime/server/types/core-exports.d.ts +285 -0
  402. package/dist/runtime/server/types/core-exports.js +2 -0
  403. package/dist/runtime/server/types/index.d.ts +4 -0
  404. package/dist/runtime/server/types/index.js +20 -0
  405. package/dist/runtime/server/types/security.types.js +2 -0
  406. package/dist/runtime/server/types/vehicle.types.d.ts +152 -0
  407. package/dist/runtime/server/types/vehicle.types.js +2 -0
  408. package/package.json +98 -98
  409. package/dist/client/client-bootstrap.d.ts +0 -1
  410. package/dist/client/client-bootstrap.js +0 -50
  411. package/dist/client/client-core.d.ts +0 -1
  412. package/dist/client/client-core.js +0 -7
  413. package/dist/client/decorators/controller.d.ts +0 -3
  414. package/dist/client/decorators/controller.js +0 -14
  415. package/dist/client/decorators/export.d.ts +0 -7
  416. package/dist/client/decorators/export.js +0 -15
  417. package/dist/client/decorators/interval.d.ts +0 -7
  418. package/dist/client/decorators/interval.js +0 -15
  419. package/dist/client/decorators/key.d.ts +0 -2
  420. package/dist/client/decorators/key.js +0 -10
  421. package/dist/client/decorators/localEvent.d.ts +0 -7
  422. package/dist/client/decorators/localEvent.js +0 -15
  423. package/dist/client/decorators/nui.d.ts +0 -1
  424. package/dist/client/decorators/nui.js +0 -9
  425. package/dist/client/decorators/onNet.d.ts +0 -1
  426. package/dist/client/decorators/onNet.js +0 -9
  427. package/dist/client/decorators/resourceLifecycle.d.ts +0 -11
  428. package/dist/client/decorators/resourceLifecycle.js +0 -24
  429. package/dist/client/decorators/tick.d.ts +0 -1
  430. package/dist/client/decorators/tick.js +0 -9
  431. package/dist/client/interfaces/appearance.interface.d.ts +0 -19
  432. package/dist/client/services/appearance.service.d.ts +0 -6
  433. package/dist/client/services/appearance.service.js +0 -89
  434. package/dist/server/bootstrap.js +0 -57
  435. package/dist/server/bus/core-event-bus.d.ts +0 -6
  436. package/dist/server/controllers/chat.controller.d.ts +0 -10
  437. package/dist/server/controllers/command.controller.d.ts +0 -7
  438. package/dist/server/controllers/command.controller.js +0 -47
  439. package/dist/server/controllers/session.controller.d.ts +0 -9
  440. package/dist/server/core.d.ts +0 -1
  441. package/dist/server/core.js +0 -7
  442. package/dist/server/database/index.d.ts +0 -53
  443. package/dist/server/database/index.js +0 -70
  444. package/dist/server/decorators/bind.d.ts +0 -2
  445. package/dist/server/decorators/bind.js +0 -15
  446. package/dist/server/decorators/command.d.ts +0 -49
  447. package/dist/server/decorators/command.js +0 -23
  448. package/dist/server/decorators/controller.js +0 -36
  449. package/dist/server/decorators/export.d.ts +0 -39
  450. package/dist/server/decorators/export.js +0 -47
  451. package/dist/server/decorators/guard.d.ts +0 -56
  452. package/dist/server/decorators/onFiveMEvent.d.ts +0 -6
  453. package/dist/server/decorators/onFiveMEvent.js +0 -14
  454. package/dist/server/decorators/onFrameworkEvent.d.ts +0 -22
  455. package/dist/server/decorators/onNet.d.ts +0 -58
  456. package/dist/server/decorators/onNet.js +0 -57
  457. package/dist/server/decorators/onTick.d.ts +0 -32
  458. package/dist/server/decorators/onTick.js +0 -40
  459. package/dist/server/decorators/public.d.ts +0 -27
  460. package/dist/server/decorators/requiresState.js +0 -63
  461. package/dist/server/decorators/throttle.d.ts +0 -48
  462. package/dist/server/decorators/utils.d.ts +0 -57
  463. package/dist/server/decorators/utils.js +0 -63
  464. package/dist/server/entities/index.d.ts +0 -1
  465. package/dist/server/helpers/resolve-method.js +0 -18
  466. package/dist/server/loaders/exports.loader.d.ts +0 -0
  467. package/dist/server/loaders/exports.loader.js +0 -23
  468. package/dist/server/loaders/playerSession.loader.d.ts +0 -1
  469. package/dist/server/loaders/playerSession.loader.js +0 -51
  470. package/dist/server/services/access-control.service.d.ts +0 -56
  471. package/dist/server/services/access-control.service.js +0 -99
  472. package/dist/server/services/chat.service.d.ts +0 -7
  473. package/dist/server/services/command.service.d.ts +0 -15
  474. package/dist/server/services/command.service.js +0 -77
  475. package/dist/server/services/default/default-security.handler.d.ts +0 -6
  476. package/dist/server/services/index.d.ts +0 -10
  477. package/dist/server/services/index.js +0 -26
  478. package/dist/server/services/rate-limiter.service.d.ts +0 -5
  479. package/dist/server/services/registers.d.ts +0 -1
  480. package/dist/server/services/registers.js +0 -18
  481. package/dist/server/setup.d.ts +0 -9
  482. package/dist/server/setup.js +0 -28
  483. package/dist/server/system/processors/command.processor.d.ts +0 -9
  484. package/dist/server/system/processors/export.processor.d.ts +0 -7
  485. package/dist/server/system/processors/fivemEvent.processor.d.ts +0 -7
  486. package/dist/server/system/processors/netEvent.processor.d.ts +0 -11
  487. package/dist/server/system/processors/netEvent.processor.js +0 -103
  488. package/dist/server/system/processors/tick.processor.d.ts +0 -5
  489. package/dist/server/system/processors.register.d.ts +0 -1
  490. package/dist/server/system/processors.register.js +0 -23
  491. package/dist/server/templates/index.d.ts +0 -8
  492. package/dist/server/templates/persistence/index.d.ts +0 -30
  493. package/dist/server/templates/persistence/index.js +0 -34
  494. package/dist/shared/index.d.ts +0 -1
  495. package/dist/shared/logger/transports/index.d.ts +0 -3
  496. package/dist/shared/logger/transports/index.js +0 -19
  497. package/dist/utils/errors.d.ts +0 -14
  498. package/dist/{system → kernel/di}/class-constructor.d.ts +0 -0
  499. package/dist/{system → kernel/di}/class-constructor.js +0 -0
  500. package/dist/{server → kernel/di}/container.d.ts +0 -0
  501. package/dist/{server → kernel/di}/container.js +0 -0
  502. package/dist/{system → kernel/di}/decorator-processor.d.ts +0 -0
  503. package/dist/{system → kernel/di}/decorator-processor.js +0 -0
  504. package/dist/{system → kernel/di}/metadata.scanner.js +0 -0
  505. package/dist/{shared → kernel/shared}/logger/logger.config.js +0 -0
  506. package/dist/{shared → kernel/shared}/logger/logger.service.js +0 -0
  507. package/dist/{shared → kernel/shared}/logger/logger.types.d.ts +0 -0
  508. package/dist/{shared → kernel/shared}/logger/logger.types.js +0 -0
  509. package/dist/{shared → kernel/shared}/logger/transports/transport.interface.js +0 -0
  510. package/dist/{utils → kernel/utils}/result.js +0 -0
  511. package/dist/{utils → kernel/utils}/rgb.d.ts +0 -0
  512. package/dist/{utils → kernel/utils}/rgb.js +0 -0
  513. package/dist/{utils → kernel/utils}/vector3.d.ts +0 -0
  514. package/dist/{utils → kernel/utils}/vector3.js +0 -0
  515. package/dist/{client → runtime/client}/client-container.d.ts +0 -0
  516. package/dist/{client → runtime/client}/client-container.js +0 -0
  517. package/dist/{client → runtime/client}/controllers/spawner.controller.js +0 -0
  518. package/dist/{client → runtime/client}/decorators/gameEvent.js +0 -0
  519. package/dist/{client → runtime/client}/decorators/index.d.ts +5 -5
  520. package/dist/{client → runtime/client}/decorators/index.js +5 -5
  521. package/dist/{client → runtime/client}/player/player.loader.d.ts +0 -0
  522. package/dist/{client → runtime/client}/services/blip.service.js +0 -0
  523. package/dist/{client → runtime/client}/services/marker.service.js +0 -0
  524. package/dist/{client → runtime/client}/services/notification.service.d.ts +0 -0
  525. package/dist/{client → runtime/client}/services/notification.service.js +0 -0
  526. package/dist/{client → runtime/client}/services/progress.service.d.ts +0 -0
  527. package/dist/{client → runtime/client}/services/progress.service.js +0 -0
  528. package/dist/{client → runtime/client}/services/streaming.service.d.ts +0 -0
  529. package/dist/{client → runtime/client}/services/streaming.service.js +0 -0
  530. package/dist/{client → runtime/client}/services/textui.service.js +0 -0
  531. package/dist/{client → runtime/client}/system/metadata-client.keys.d.ts +0 -0
  532. package/dist/{client → runtime/client}/system/metadata-client.keys.js +0 -0
  533. package/dist/{client → runtime/client}/system/processors/key.processor.js +0 -0
  534. package/dist/{client → runtime/client}/system/processors.register.d.ts +0 -0
  535. package/dist/{client → runtime/client}/system/processors.register.js +6 -6
  536. /package/dist/{client → runtime/client}/types/game-events.d.ts +0 -0
  537. /package/dist/{client → runtime/client}/types/index.d.ts +0 -0
  538. /package/dist/{client → runtime/client}/types/index.js +0 -0
  539. /package/dist/{client → runtime/client}/ui-bridge.d.ts +0 -0
  540. /package/dist/{server → runtime/server}/configs/api.config.js +0 -0
  541. /package/dist/{server → runtime/server}/configs/config.base.d.ts +0 -0
  542. /package/dist/{server → runtime/server}/configs/config.base.js +0 -0
  543. /package/dist/{server → runtime/server}/configs/index.d.ts +0 -0
  544. /package/dist/{server → runtime/server}/configs/index.js +0 -0
  545. /package/dist/{server/templates/auth → runtime/server/contracts}/auth-provider.contract.js +0 -0
  546. /package/dist/{server/templates/persistence → runtime/server/contracts}/player-persistence.contract.js +0 -0
  547. /package/dist/{server/templates → runtime/server/contracts}/repository/repository.types.d.ts +0 -0
  548. /package/dist/{server/templates → runtime/server/contracts}/repository/repository.types.js +0 -0
  549. /package/dist/{server/templates → runtime/server/contracts}/security/permission.types.d.ts +0 -0
  550. /package/dist/{server/templates → runtime/server/contracts}/security/permission.types.js +0 -0
  551. /package/dist/{server/templates → runtime/server/contracts}/security/principal-provider.contract.js +0 -0
  552. /package/dist/{server/templates → runtime/server/contracts}/security/security-handler.contract.js +0 -0
  553. /package/dist/{server → runtime/server}/database/database.contract.js +0 -0
  554. /package/dist/{server → runtime/server}/database/types.d.ts +0 -0
  555. /package/dist/{server → runtime/server}/database/types.js +0 -0
  556. /package/dist/{server → runtime/server}/database.d.ts +0 -0
  557. /package/dist/{server → runtime/server}/database.js +0 -0
  558. /package/dist/{server → runtime/server}/services/config.service.d.ts +0 -0
  559. /package/dist/{server → runtime/server}/services/http/http.service.d.ts +0 -0
  560. /package/dist/{server → runtime/server}/services/parallel/types.d.ts +0 -0
  561. /package/dist/{server → runtime/server}/services/parallel/types.js +0 -0
  562. /package/dist/{server → runtime/server}/services/parallel/worker-pool.js +0 -0
  563. /package/dist/{server → runtime/server}/services/parallel/worker.js +0 -0
  564. /package/dist/{client/interfaces/appearance.interface.js → runtime/server/services/types/linked-id.js} +0 -0
  565. /package/dist/{server/templates/admin/admin.controller-template.js → runtime/server/services/types/player-session.object.js} +0 -0
  566. /package/dist/{server/types/core-events.js → runtime/server/templates/admin.controller-template.js} +0 -0
  567. /package/dist/{server → runtime/server}/types/core-events.d.ts +0 -0
  568. /package/dist/{server/types/security.types.js → runtime/server/types/core-events.js} +0 -0
  569. /package/dist/{server → runtime/server}/types/security.types.d.ts +0 -0
package/README.md CHANGED
@@ -1,360 +1,217 @@
1
- # OpenCore Framework - Unstable beta
2
-
3
- > **The robust TypeScript Engine for FiveM.**
4
- > Built on strong OOP principles, Layered Architecture, and Security-first design.
5
- > _Stop writing scripts; start engineering gameplay._
6
-
7
- [![License: MPL 2.0](https://img.shields.io/badge/License-MPL_2.0-brightgreen.svg)](https://opensource.org/licenses/MPL-2.0)
8
- [![Version](https://img.shields.io/badge/beta-1.0.3-orange.svg)](https://github.com/newcore-network/opencore)
9
- ![Tests](https://img.shields.io/badge/tests-265%20passing-brightgreen)
10
- ![Coverage](https://img.shields.io/badge/coverage-43%25-yellow)
11
- ![Core Decorators](https://img.shields.io/badge/core%20decorators-100%25-brightgreen)
12
-
13
- ## 📋 Table of Contents
14
-
15
- - [Why OpenCore?](#-why-opencore)
16
- - [Installation](#-installation)
17
- - [Quick Start](#-quick-start)
18
- - [Security System](#️-security-system)
19
- - [Architecture](#️-architecture)
20
- - [Testing](#-testing)
21
- - [Performance](#-performance--benchmarks)
22
- - [Project Structure](#-project-structure)
23
- - [Scripts](#-available-scripts)
24
- - [License](#-license)
25
-
26
- ---
27
-
28
- ## 🚀 Why OpenCore?
29
-
30
- OpenCore transforms FiveM development from chaotic scripting into professional software engineering. Inspired by enterprise frameworks like **Spring Boot** and **NestJS**, it brings structure, security, and strict typing to your server.
31
-
32
- ### Key Features
33
-
34
- - **🛡️ Security by Design:** Built-in Input Validation (**Zod**), Rate Limiting (`@Throttle`), and Access Control (`@Guard`).
35
- - **🏗️ Decoupled Architecture:** Logic is separated into **Controllers**, **Services**, and **Entities**.
36
- - **💉 Dependency Injection:** Full IoC container powered by `tsyringe`.
37
- - **📝 Type-Safe:** No more guessing `source` types or argument structures.
38
- - **📡 Event-Driven:** Powerful Event Bus for internal and network communication.
39
- - **⚡ High Performance:** Sub-microsecond latencies, millions of ops/sec.
40
- - **🧪 Fully Tested:** Comprehensive unit, integration, and load tests.
41
-
42
- ---
43
-
44
- ## 📦 Installation
45
-
46
- ```bash
47
- pnpm add @open-core/framework reflect-metadata tsyringe zod uuid
48
- ```
49
-
50
- > **Note:** Ensure you have `experimentalDecorators` and `emitDecoratorMetadata` enabled in your `tsconfig.json`.
51
-
52
- ---
53
-
54
- ## Quick Start
55
-
56
- Define a Controller, validate inputs with Zod, and protect it with a Guard. Zero boilerplate.
57
-
58
- **Server-side:**
59
-
60
- ```ts
61
- import { Server } from '@open-core/framework/server'
62
- import { z } from 'zod'
63
-
64
- // 1. Define your Input Schema
65
- const TransferSchema = z.tuple([
66
- z.coerce.number().positive(), // Target ID
67
- z.coerce.number().min(1).max(50000), // Amount
68
- ])
69
-
70
- @Server.Controller()
71
- export class BankController {
72
- constructor(private readonly bankService: BankService) {}
73
-
74
- @Server.Command({
75
- name: 'transfer',
76
- schema: TransferSchema,
77
- usage: '/transfer [id] [amount]',
78
- })
79
- @Server.Guard({ rank: 1 }) // Must be at least Rank 1 (User)
80
- @Server.Throttle(1, 2000) // Max 1 request per 2 seconds
81
- async handleTransfer(player: Server.Player, args: z.infer<typeof TransferSchema>) {
82
- const [targetId, amount] = args
83
-
84
- // Logic is pure and type-safe
85
- await this.bankService.transfer(player, targetId, amount)
86
-
87
- player.emit('chat:message', `Successfully transferred $${amount}`)
88
- }
89
- }
90
- ```
91
-
92
- ---
93
-
94
- ## 🛡️ Security System
95
-
96
- OpenCore handles the dirty work so you can focus on gameplay.
97
-
98
- ### 1. Input Validation (`@Command`, `@OnNet`)
99
-
100
- All network inputs are validated against Zod schemas before they reach your logic. Malformed packets are rejected automatically.
101
-
102
- ### 2. Access Control (`@Guard`)
103
-
104
- Protect methods with granular permissions or hierarchical ranks:
105
-
106
- ```ts
107
- @Server.Guard({ permission: 'admin.ban' })
108
- @Server.Guard({ rank: 10 }) // Admin level
109
- ```
110
-
111
- ### 3. Rate Limiting (`@Throttle`)
112
-
113
- Prevent abuse with configurable rate limits:
114
-
115
- ```ts
116
- @Server.Throttle(5, 10000) // 5 requests per 10 seconds
117
- ```
118
-
119
- ### 4. State Management (`@RequiresState`)
120
-
121
- Avoid "dead player exploits" or interaction glitches:
122
-
123
- ```ts
124
- @Server.RequiresState({ missing: ['dead', 'cuffed'] })
125
- openInventory(player: Server.Player) { ... }
126
- ```
127
-
128
- ---
129
-
130
- ## 🏗️ Architecture
131
-
132
- OpenCore follows a clean, layered architecture:
133
-
134
- | Layer | Responsibility | Example |
135
- | --------------- | ------------------------------------------------------------ | ---------------- |
136
- | **Controllers** | Handle entry points (Commands, Events, NUI). Keep them thin. | `BankController` |
137
- | **Services** | Contain business logic. Singletons injectable anywhere. | `BankService` |
138
- | **Entities** | Wrappers around FiveM objects with rich APIs. | `Player` |
139
-
140
- ```
141
- ┌─────────────────────────────────────────────────────────┐
142
- │ Client / FiveM │
143
- └─────────────────────────┬───────────────────────────────┘
144
-
145
- ┌─────────────────────────▼───────────────────────────────┐
146
- │ Controllers │
147
- │ @Command @OnNet @NUI @GameEvent @OnTick │
148
- └─────────────────────────┬───────────────────────────────┘
149
-
150
- ┌─────────────────────────▼───────────────────────────────┐
151
- │ Security Layer (Middleware) │
152
- │ @Guard @Throttle @RequiresState Zod Validation │
153
- └─────────────────────────┬───────────────────────────────┘
154
-
155
- ┌─────────────────────────▼───────────────────────────────┐
156
- │ Services │
157
- │ Business Logic • PlayerService • BankService │
158
- └─────────────────────────┬───────────────────────────────┘
159
-
160
- ┌─────────────────────────▼───────────────────────────────┐
161
- │ Core Event Bus │
162
- │ Internal Events • Cross-Service Communication │
163
- └─────────────────────────────────────────────────────────┘
164
- ```
165
-
166
- ---
167
-
168
- ## 🧪 Testing
169
-
170
- OpenCore has a comprehensive testing suite using **Vitest**.
171
-
172
- ### Test Categories
173
-
174
- | Category | Description | Command |
175
- | --------------- | --------------------------------------- | ----------------------- |
176
- | **Unit** | Individual components and decorators | `pnpm test:unit` |
177
- | **Integration** | Component interactions and bootstrap | `pnpm test:integration` |
178
- | **Load** | Performance under simulated player load | `pnpm bench:load` |
179
- | **All Tests** | Run everything | `pnpm test` |
180
-
181
- ### Running Tests
182
-
183
- ```bash
184
- # Run all tests
185
- pnpm test
186
-
187
- # Run specific test suites
188
- pnpm test:unit
189
- pnpm test:integration
190
-
191
- # Watch mode for development
192
- pnpm test:watch
193
-
194
- # Generate coverage report
195
- pnpm test:coverage
196
- ```
197
-
198
- ### Test Structure
199
-
200
- ```
201
- tests/
202
- ├── unit/ # Unit tests
203
- │ ├── server/
204
- │ │ └── decorators/
205
- │ │ ├── command.test.ts
206
- │ │ ├── guard.test.ts
207
- │ │ ├── throttle.test.ts
208
- │ │ └── ...
209
- │ └── utils/
210
- ├── integration/ # Integration tests
211
- │ ├── client/
212
- │ └── server/
213
- ├── mocks/ # FiveM mocks
214
- │ └── citizenfx.ts
215
- └── helpers/ # Test utilities
216
- ```
217
-
218
- ### Coverage
219
-
220
- All core decorators are **100% tested**:
221
-
222
- - `@Command`, `@Guard`, `@Throttle`, `@OnNet`, `@OnTick`
223
- - `@Controller`, `@Public`, `@Export`, `@CoreEvent`, `@Bind`
224
-
225
- ---
226
-
227
- ## ⚡ Performance & Benchmarks
228
-
229
- OpenCore is built for performance. Our benchmark suite validates that the framework can handle production workloads with ease.
230
-
231
- ### Run Benchmarks
232
-
233
- ```bash
234
- # Core component benchmarks (Tinybench)
235
- pnpm bench:core
236
-
237
- # Load benchmarks with player simulation (Vitest)
238
- pnpm bench:load
239
-
240
- # Full benchmark suite with reports
241
- pnpm bench:all
242
- ```
243
-
244
- ### Latest Results (v0.6.0-beta.1)
245
-
246
- #### Core Components
247
-
248
- | Component | Operation | Throughput | Latency |
249
- | ----------------- | ------------------ | ------------- | ------- |
250
- | **DI Container** | Resolve service | 1.65M ops/sec | 0.61μs |
251
- | **Zod** | Simple validation | 1.99M ops/sec | 0.50μs |
252
- | **Zod** | Complex validation | 1.00M ops/sec | 1.00μs |
253
- | **RateLimiter** | Key check | 2.56M ops/sec | 0.39μs |
254
- | **AccessControl** | Permission check | 2.76M ops/sec | 0.36μs |
255
- | **EventBus** | Emit event | 3.22M ops/sec | 0.31μs |
256
- | **Decorators** | Define metadata | 5.48M ops/sec | 0.18μs |
257
-
258
- #### Load Tests (500 Concurrent Players)
259
-
260
- | Scenario | Throughput | p95 Latency | Error Rate |
261
- | --------------------------- | --------------- | ----------- | ---------- |
262
- | **Net Events (Simple)** | 92.59M ops/sec | 0.80μs | 0.00% |
263
- | **Net Events (Validated)** | 11.47M ops/sec | 2.70μs | 0.00% |
264
- | **Net Events (Concurrent)** | 1.61M ops/sec | 294.22μs | 0.00% |
265
- | **Serialization (Large)** | 146.53K ops/sec | 951.11μs | 0.00% |
266
-
267
- #### Key Performance Highlights
268
-
269
- - ✅ **Zero error rate** across all load scenarios (10 → 500 players)
270
- - ✅ **Sub-microsecond latency** for core operations
271
- - ✅ **Excellent scalability** - handles 500+ concurrent players
272
- - ✅ **Consistent p95/p99** - predictable latency behavior
273
-
274
- > Full benchmark details available in [`benchmark/README.md`](./benchmark/README.md)
275
-
276
- ---
277
-
278
- ## 📁 Project Structure
279
-
280
- ```
281
- opencore/
282
- ├── src/
283
- │ ├── client/ # Client-side framework
284
- │ │ ├── decorators/ # @OnNet, @Key, @Tick, @NUI, etc.
285
- │ │ ├── services/ # Streaming, UI, World services
286
- │ │ └── system/ # Processors and metadata
287
- │ ├── server/ # Server-side framework
288
- │ │ ├── decorators/ # @Command, @Guard, @Throttle, etc.
289
- │ │ ├── services/ # Player, Command, RateLimiter, etc.
290
- │ │ ├── entities/ # Player entity
291
- │ │ └── bus/ # Core Event Bus
292
- │ ├── shared/ # Shared utilities
293
- │ │ └── logger/ # Logging system
294
- │ └── system/ # Core system (MetadataScanner, DI)
295
- ├── tests/ # Test suites
296
- │ ├── unit/
297
- │ ├── integration/
298
- │ └── mocks/
299
- ├── benchmark/ # Performance benchmarks
300
- │ ├── core/ # Tinybench benchmarks
301
- │ ├── load/ # Vitest load tests
302
- │ └── reports/ # Generated reports
303
- └── dist/ # Compiled output
304
- ```
305
-
306
- ---
307
-
308
- ## 📜 Available Scripts
309
-
310
- | Script | Description |
311
- | ----------------------- | -------------------------------- |
312
- | `pnpm build` | Compile TypeScript to JavaScript |
313
- | `pnpm watch` | Watch mode for development |
314
- | `pnpm lint` | Run ESLint |
315
- | `pnpm lint:fix` | Fix ESLint issues |
316
- | `pnpm format` | Format code with Prettier |
317
- | `pnpm test` | Run all tests |
318
- | `pnpm test:unit` | Run unit tests only |
319
- | `pnpm test:integration` | Run integration tests only |
320
- | `pnpm test:coverage` | Generate coverage report |
321
- | `pnpm bench` | Show benchmark options |
322
- | `pnpm bench:core` | Run core benchmarks |
323
- | `pnpm bench:load` | Run load benchmarks |
324
- | `pnpm bench:all` | Run all benchmarks with reports |
325
-
326
- ---
327
-
328
- ## Available Modules
329
-
330
- A module is a library belonging to the OpenCore family, where you can take advantage of its functionality if you wish, and where we provide the foundation for building a specific system.
331
-
332
- - [Open-core Identity](https://github.com/newcore-network/opencore-identity): Flexible identity and permission system for OpenCore. Provides multiple authentication strategies, role management, and permission-based authorization through the framework's Principal system. [NPM](https://www.npmjs.com/package/@open-core/identity).
333
-
334
- ```bash
335
- pnpm add @open-core/identity
336
- ```
337
-
338
- ## 🤝 Contributing
339
-
340
- Contributions are welcome! Please ensure:
341
-
342
- 1. All tests pass (`pnpm test`)
343
- 2. Code is formatted (`pnpm format`)
344
- 3. No linting errors (`pnpm lint`)
345
- 4. New features include tests
346
-
347
- ---
348
-
349
- ## 📄 License
350
-
351
- OpenCore is licensed under the **MPL-2.0**.
352
-
353
- See [LICENSE](./LICENSE) for details.
354
-
355
- ---
356
-
357
- <p align="center">
358
- <strong>OpenCore Framework</strong><br>
359
- <em>Stop scripting. Start engineering.</em>
360
- </p>
1
+ # OpenCore Framework (v0.2.1-beta.1)
2
+
3
+ OpenCore is a TypeScript multiplayer runtime framework targeting FiveM via an adapter.
4
+
5
+ It is not a gamemode or RP framework. It provides:
6
+
7
+ - A stable execution model (server and client)
8
+ - Dependency Injection and metadata-driven wiring
9
+ - An event/command system
10
+ - Security primitives (validation, access control, rate limiting)
11
+
12
+ License: MPL-2.0
13
+
14
+ ## Scope
15
+
16
+ This package (`@open-core/framework`) contains transversal infrastructure only.
17
+
18
+ - Controllers, services, decorators, and processors
19
+ - Session/lifecycle primitives and contracts
20
+ - Adapters and capability registration
21
+
22
+ Gameplay logic must live in separate resources/modules.
23
+
24
+ ## Installation
25
+
26
+ ```bash
27
+ pnpm add @open-core/framework reflect-metadata tsyringe zod uuid
28
+ ```
29
+
30
+ This framework uses TypeScript decorators. Ensure your project has decorators enabled.
31
+
32
+ ## Imports and entry points
33
+
34
+ The package exposes subpath entry points:
35
+
36
+ - `@open-core/framework` (root)
37
+ - `@open-core/framework/server`
38
+ - `@open-core/framework/client`
39
+ - `@open-core/framework/shared`
40
+ - `@open-core/framework/utils`
41
+
42
+ Most projects will import the `Server`/`Client` namespaces:
43
+
44
+ ```ts
45
+ import { Server } from '@open-core/framework'
46
+ ```
47
+
48
+ ## Architecture
49
+
50
+ OpenCore follows a Ports & Adapters (Hexagonal) architecture.
51
+
52
+ - Kernel (`src/kernel`): engine-agnostic infrastructure (DI, logger, metadata scanning)
53
+ - Runtime (`src/runtime`): multiplayer execution model (controllers, processors, security, lifecycle)
54
+ - Adapters (`src/adapters`): platform integration (FiveM, Node testing)
55
+
56
+ The runtime never auto-detects the platform. Adapters are selected explicitly at bootstrap time.
57
+
58
+ ## Operating modes
59
+
60
+ Each instance runs in exactly one mode configured via `Server.init()`:
61
+
62
+ - `CORE`: authoritative runtime. Typically provides identity/auth/players via exports.
63
+ - `RESOURCE`: a normal FiveM resource using CORE as provider for some features.
64
+ - `STANDALONE`: a self-contained runtime (useful for tooling, simulations, or small servers).
65
+
66
+ ## Server bootstrap
67
+
68
+ Initialize the server runtime:
69
+
70
+ ```ts
71
+ import { Server } from '@open-core/framework/server'
72
+
73
+ await Server.init({
74
+ mode: 'STANDALONE',
75
+ features: {
76
+ commands: { enabled: true },
77
+ netEvents: { enabled: true },
78
+ },
79
+ })
80
+ ```
81
+
82
+ Some features require providers (depending on your mode and configuration). Configure them before calling `init()`:
83
+
84
+ ```ts
85
+ import { Server } from '@open-core/framework/server'
86
+
87
+ Server.setPrincipalProvider(MyPrincipalProvider)
88
+ Server.setAuthProvider(MyAuthProvider)
89
+ Server.setSecurityHandler(MySecurityHandler)
90
+ Server.setPersistenceProvider(MyPlayerPersistence)
91
+ Server.setNetEventSecurityObserver(MyNetEventSecurityObserver)
92
+ ```
93
+
94
+ ## Controllers and decorators
95
+
96
+ OpenCore uses a decorator + processor pattern.
97
+
98
+ Decorators store metadata with `Reflect.defineMetadata()`. During bootstrap, the `MetadataScanner` reads metadata and processors register handlers.
99
+
100
+ ### Commands
101
+
102
+ ```ts
103
+ import { Server } from '@open-core/framework/server'
104
+ import { z } from 'zod'
105
+
106
+ const TransferSchema = z.tuple([z.coerce.number().int().positive(), z.coerce.number().min(1)])
107
+
108
+ @Server.Controller()
109
+ export class BankController {
110
+ @Server.Command({
111
+ command: 'transfer',
112
+ usage: '/transfer <id> <amount>',
113
+ schema: TransferSchema,
114
+ })
115
+ @Server.Guard({ rank: 1 })
116
+ @Server.Throttle(1, 2000)
117
+ async transfer(player: Server.Player, args: z.infer<typeof TransferSchema>) {
118
+ const [targetId, amount] = args
119
+ player.emit('chat:message', `transfer -> ${targetId} (${amount})`)
120
+ }
121
+ }
122
+ ```
123
+
124
+ ### Network events
125
+
126
+ `@OnNet()` handlers always receive `Player` as the first parameter.
127
+
128
+ ```ts
129
+ import { Server } from '@open-core/framework/server'
130
+ import { z } from 'zod'
131
+
132
+ const PayloadSchema = z.object({ action: z.string(), amount: z.number().int().positive() })
133
+
134
+ @Server.Controller()
135
+ export class ExampleNetController {
136
+ @Server.OnNet('bank:action', { schema: PayloadSchema })
137
+ async onBankAction(player: Server.Player, payload: z.infer<typeof PayloadSchema>) {
138
+ player.emit('chat:message', `action=${payload.action} amount=${payload.amount}`)
139
+ }
140
+ }
141
+ ```
142
+
143
+ ### Security decorators
144
+
145
+ - `@Guard({ rank })` or `@Guard({ permission })`
146
+ - `@Throttle(limit, windowMs)`
147
+ - `@RequiresState({ missing: [...] })`
148
+
149
+ ## Testing
150
+
151
+ Tests run with Vitest.
152
+
153
+ ```bash
154
+ pnpm test
155
+ pnpm test:unit
156
+ pnpm test:integration
157
+ pnpm test:coverage
158
+ ```
159
+
160
+ Note: `pnpm test` does not run benchmarks.
161
+
162
+ ## Benchmarks
163
+
164
+ There are two benchmark suites:
165
+
166
+ - Core benchmarks (Tinybench)
167
+ - Load benchmarks (Vitest project `benchmark`)
168
+
169
+ ```bash
170
+ pnpm bench:core
171
+ pnpm bench:load
172
+ pnpm bench:all
173
+ ```
174
+
175
+ ### Snapshot (latest local run)
176
+
177
+ These values are a small extract from a recent local run (Dec 22, 2025). Results vary by machine.
178
+
179
+ - **Core**
180
+ - Decorators - Define metadata (Command): `~5.72M ops/sec` (mean `0.17μs`)
181
+ - EventBus - Multiple event types: `~2.01M ops/sec` (mean `0.50μs`)
182
+ - Dependency Injection (simple resolve): `~1.7M ops/sec`
183
+ - **Load**
184
+ - Net Events - Simple (10 players): `~28.85K ops/sec` (p95 `0.25ms`)
185
+ - Net Events - Concurrent (500 players): `~1.18M ops/sec` (p95 `0.40ms`)
186
+ - Commands (validated, ~500 players): `~14M ops/sec`
187
+
188
+ Full reports and methodology are available in benchmark/README.md.
189
+
190
+ ### Reports
191
+
192
+ Benchmark reports are generated under `benchmark/reports/`.
193
+
194
+ - `pnpm bench:all` generates aggregated reports (text/json/html)
195
+ - Load metrics used by load benchmarks are persisted in `benchmark/reports/.load-metrics.json`
196
+
197
+ For details about the benchmark system, see `benchmark/README.md`.
198
+
199
+ ## Development scripts
200
+
201
+ ```bash
202
+ pnpm build
203
+ pnpm watch
204
+ pnpm lint
205
+ pnpm lint:fix
206
+ pnpm format
207
+ ```
208
+
209
+ ## Ecosystem
210
+
211
+ OpenCore is designed to be extended via separate packages/resources.
212
+
213
+ - `@open-core/identity`: identity and permission system
214
+
215
+ ## License
216
+
217
+ MPL-2.0. See `LICENSE`.
@@ -0,0 +1,20 @@
1
+ export declare abstract class IEngineEvents {
2
+ /**
3
+ * Registers a handler for a local (server-side) event.
4
+ *
5
+ * @param eventName - The event name to listen for
6
+ * @param handler - The callback to invoke when the event is emitted
7
+ */
8
+ abstract on(eventName: string, handler: (...args: any[]) => void): void;
9
+ /**
10
+ * Emits a local (server-side) event.
11
+ *
12
+ * @remarks
13
+ * This is for server-to-server communication (between resources).
14
+ * For client-server communication, use INetTransport instead.
15
+ *
16
+ * @param eventName - The event name to emit
17
+ * @param args - Arguments to pass to event handlers
18
+ */
19
+ abstract emit(eventName: string, ...args: any[]): void;
20
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IEngineEvents = void 0;
4
+ class IEngineEvents {
5
+ }
6
+ exports.IEngineEvents = IEngineEvents;