@open-core/framework 0.1.0-alpha.1 → 0.2.0-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 +30 -30
  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
@@ -1,25 +1,4 @@
1
1
  "use strict";
2
- /**
3
- * Database Service
4
- *
5
- * Main entry point for database operations. Acts as a factory/wrapper
6
- * that delegates to the registered database adapter.
7
- *
8
- * @example
9
- * ```typescript
10
- * import { DatabaseService } from '@open-core/framework/server'
11
- * import { inject, injectable } from 'tsyringe'
12
- *
13
- * @injectable()
14
- * class UserService {
15
- * constructor(@inject(DatabaseService) private db: DatabaseService) {}
16
- *
17
- * async getUser(id: number) {
18
- * return this.db.single<User>('SELECT * FROM users WHERE id = ?', [id])
19
- * }
20
- * }
21
- * ```
22
- */
23
2
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
24
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
25
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -37,19 +16,22 @@ exports.execute = execute;
37
16
  exports.insert = insert;
38
17
  exports.transaction = transaction;
39
18
  const tsyringe_1 = require("tsyringe");
19
+ const oxmysql_adapter_1 = require("../../../adapters/database/oxmysql.adapter");
20
+ const resource_adapter_1 = require("../../../adapters/database/resource.adapter");
21
+ const adapter_registry_1 = require("./adapter.registry");
40
22
  const database_contract_1 = require("./database.contract");
41
- const oxmysql_adapter_1 = require("./adapters/oxmysql.adapter");
42
- /**
43
- * Database Service
44
- *
45
- * Singleton service that provides database operations through
46
- * a pluggable adapter system. Uses oxmysql by default.
47
- */
23
+ let defaultFactoriesRegistered = false;
24
+ function registerDefaultDatabaseFactories() {
25
+ if (defaultFactoriesRegistered)
26
+ return;
27
+ (0, adapter_registry_1.registerDatabaseAdapterFactory)('resource', () => new resource_adapter_1.ResourceDatabaseAdapter());
28
+ (0, adapter_registry_1.registerDatabaseAdapterFactory)('oxmysql', () => new oxmysql_adapter_1.OxMySQLAdapter());
29
+ defaultFactoriesRegistered = true;
30
+ }
48
31
  let DatabaseService = class DatabaseService extends database_contract_1.DatabaseContract {
49
32
  constructor() {
50
33
  super(...arguments);
51
34
  this.adapter = null;
52
- this.config = {};
53
35
  this.isInitialized = false;
54
36
  }
55
37
  /**
@@ -58,12 +40,20 @@ let DatabaseService = class DatabaseService extends database_contract_1.Database
58
40
  * @param config - Database configuration options
59
41
  */
60
42
  initialize(config = {}) {
43
+ var _a, _b;
61
44
  if (this.isInitialized)
62
45
  return;
63
- this.config = config;
64
- // Use oxmysql by default
46
+ registerDefaultDatabaseFactories();
65
47
  if (!this.adapter) {
66
- this.adapter = new oxmysql_adapter_1.OxMySQLAdapter();
48
+ const adapterName = ((_a = config.adapter) === null || _a === void 0 ? void 0 : _a.trim()) || ((_b = globalThis.GetConvar) === null || _b === void 0 ? void 0 : _b.call(globalThis, 'opencore_db_adapter', '')) || '';
49
+ if (!adapterName) {
50
+ throw new Error("[OpenCore] Database adapter is not configured. Set 'opencore_db_adapter' (recommended: 'resource') or call initDatabase({ adapter: 'resource' }).");
51
+ }
52
+ const factory = (0, adapter_registry_1.resolveDatabaseAdapterFactory)(adapterName);
53
+ if (!factory) {
54
+ throw new Error(`[OpenCore] Unknown database adapter '${adapterName}'. Register it via registerDatabaseAdapterFactory('${adapterName}', factory).`);
55
+ }
56
+ this.adapter = factory();
67
57
  }
68
58
  this.isInitialized = true;
69
59
  }
@@ -94,59 +84,55 @@ let DatabaseService = class DatabaseService extends database_contract_1.Database
94
84
  * Get the current adapter
95
85
  */
96
86
  getAdapter() {
97
- this.ensureInitialized();
98
- return this.adapter;
87
+ return this.getInitializedAdapter();
99
88
  }
100
89
  /**
101
- * Ensure the service is initialized before operations
90
+ * Ensure the service is initialized and return the adapter
102
91
  */
103
- ensureInitialized() {
104
- if (!this.adapter) {
105
- // Auto-initialize with defaults if not initialized
92
+ getInitializedAdapter() {
93
+ if (!this.isInitialized) {
106
94
  this.initialize();
107
95
  }
96
+ if (!this.adapter) {
97
+ throw new Error('[OpenCore] Database adapter not initialized');
98
+ }
99
+ return this.adapter;
108
100
  }
109
101
  /**
110
102
  * Execute a query and return all matching rows
111
103
  */
112
104
  async query(sql, params) {
113
- this.ensureInitialized();
114
- return this.adapter.query(sql, params);
105
+ return this.getInitializedAdapter().query(sql, params);
115
106
  }
116
107
  /**
117
108
  * Execute a query and return a single row
118
109
  */
119
110
  async single(sql, params) {
120
- this.ensureInitialized();
121
- return this.adapter.single(sql, params);
111
+ return this.getInitializedAdapter().single(sql, params);
122
112
  }
123
113
  /**
124
114
  * Execute a query and return a single scalar value
125
115
  */
126
116
  async scalar(sql, params) {
127
- this.ensureInitialized();
128
- return this.adapter.scalar(sql, params);
117
+ return this.getInitializedAdapter().scalar(sql, params);
129
118
  }
130
119
  /**
131
120
  * Execute an UPDATE or DELETE statement
132
121
  */
133
122
  async execute(sql, params) {
134
- this.ensureInitialized();
135
- return this.adapter.execute(sql, params);
123
+ return this.getInitializedAdapter().execute(sql, params);
136
124
  }
137
125
  /**
138
126
  * Execute an INSERT statement
139
127
  */
140
128
  async insert(sql, params) {
141
- this.ensureInitialized();
142
- return this.adapter.insert(sql, params);
129
+ return this.getInitializedAdapter().insert(sql, params);
143
130
  }
144
131
  /**
145
132
  * Execute multiple queries within a transaction
146
133
  */
147
134
  async transaction(queries, sharedParams) {
148
- this.ensureInitialized();
149
- return this.adapter.transaction(queries, sharedParams);
135
+ return this.getInitializedAdapter().transaction(queries, sharedParams);
150
136
  }
151
137
  };
152
138
  exports.DatabaseService = DatabaseService;
@@ -0,0 +1,5 @@
1
+ export { ResourceDatabaseAdapter } from '../../../adapters/database/resource.adapter';
2
+ export { registerDatabaseAdapterFactory, resolveDatabaseAdapterFactory } from './adapter.registry';
3
+ export { DatabaseContract } from './database.contract';
4
+ export { DatabaseService, execute, getDatabaseService, initDatabase, insert, query, scalar, single, transaction, } from './database.service';
5
+ export type { DatabaseAdapterFactory, DatabaseConfig, ExecuteResult, InsertResult, TransactionInput, TransactionQuery, TransactionQueryTuple, TransactionSharedParams, } from './types';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ // Types
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.transaction = exports.single = exports.scalar = exports.query = exports.insert = exports.initDatabase = exports.getDatabaseService = exports.execute = exports.DatabaseService = exports.DatabaseContract = exports.resolveDatabaseAdapterFactory = exports.registerDatabaseAdapterFactory = exports.ResourceDatabaseAdapter = void 0;
5
+ // Adapters
6
+ var resource_adapter_1 = require("../../../adapters/database/resource.adapter");
7
+ Object.defineProperty(exports, "ResourceDatabaseAdapter", { enumerable: true, get: function () { return resource_adapter_1.ResourceDatabaseAdapter; } });
8
+ var adapter_registry_1 = require("./adapter.registry");
9
+ Object.defineProperty(exports, "registerDatabaseAdapterFactory", { enumerable: true, get: function () { return adapter_registry_1.registerDatabaseAdapterFactory; } });
10
+ Object.defineProperty(exports, "resolveDatabaseAdapterFactory", { enumerable: true, get: function () { return adapter_registry_1.resolveDatabaseAdapterFactory; } });
11
+ // Contract
12
+ var database_contract_1 = require("./database.contract");
13
+ Object.defineProperty(exports, "DatabaseContract", { enumerable: true, get: function () { return database_contract_1.DatabaseContract; } });
14
+ // Service
15
+ // Standalone functions
16
+ var database_service_1 = require("./database.service");
17
+ Object.defineProperty(exports, "DatabaseService", { enumerable: true, get: function () { return database_service_1.DatabaseService; } });
18
+ Object.defineProperty(exports, "execute", { enumerable: true, get: function () { return database_service_1.execute; } });
19
+ Object.defineProperty(exports, "getDatabaseService", { enumerable: true, get: function () { return database_service_1.getDatabaseService; } });
20
+ Object.defineProperty(exports, "initDatabase", { enumerable: true, get: function () { return database_service_1.initDatabase; } });
21
+ Object.defineProperty(exports, "insert", { enumerable: true, get: function () { return database_service_1.insert; } });
22
+ Object.defineProperty(exports, "query", { enumerable: true, get: function () { return database_service_1.query; } });
23
+ Object.defineProperty(exports, "scalar", { enumerable: true, get: function () { return database_service_1.scalar; } });
24
+ Object.defineProperty(exports, "single", { enumerable: true, get: function () { return database_service_1.single; } });
25
+ Object.defineProperty(exports, "transaction", { enumerable: true, get: function () { return database_service_1.transaction; } });
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Supported binding scopes for {@link Bind}.
3
+ */
4
+ export type BindingScope = 'singleton' | 'transient';
5
+ /**
6
+ * Marks a class as injectable and binds it into the framework DI container.
7
+ *
8
+ * @remarks
9
+ * - This decorator is a small wrapper around tsyringe's `@injectable()` plus a lifecycle binding.
10
+ * - Use `singleton` for shared stateless/stateful services.
11
+ * - Use `transient` when you want a new instance per resolution scope.
12
+ *
13
+ * @param scope - Binding scope. Defaults to `singleton`.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * @Server.Bind('singleton')
18
+ * export class InventoryService {}
19
+ * ```
20
+ */
21
+ export declare function Bind(scope?: BindingScope): (target: any) => void;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Bind = Bind;
4
+ const tsyringe_1 = require("tsyringe");
5
+ /**
6
+ * Marks a class as injectable and binds it into the framework DI container.
7
+ *
8
+ * @remarks
9
+ * - This decorator is a small wrapper around tsyringe's `@injectable()` plus a lifecycle binding.
10
+ * - Use `singleton` for shared stateless/stateful services.
11
+ * - Use `transient` when you want a new instance per resolution scope.
12
+ *
13
+ * @param scope - Binding scope. Defaults to `singleton`.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * @Server.Bind('singleton')
18
+ * export class InventoryService {}
19
+ * ```
20
+ */
21
+ function Bind(scope = 'singleton') {
22
+ return (target) => {
23
+ (0, tsyringe_1.injectable)()(target);
24
+ if (scope === 'singleton') {
25
+ (0, tsyringe_1.singleton)()(target);
26
+ }
27
+ else {
28
+ (0, tsyringe_1.scoped)(tsyringe_1.Lifecycle.ResolutionScoped)(target);
29
+ }
30
+ };
31
+ }
@@ -0,0 +1,81 @@
1
+ import { z } from 'zod';
2
+ import { ClassConstructor } from '../../../kernel/di/class-constructor';
3
+ import { SecurityMetadata } from '../types/core-exports';
4
+ export interface CommandConfig {
5
+ /**
6
+ * The command name (e.g. "revive", "deposit"), used in chat "/revive"
7
+ */
8
+ command: string;
9
+ /**
10
+ * The command description, maybe "/help revive"
11
+ */
12
+ description?: string;
13
+ /**
14
+ * The command usage, maybe "/revive <player>"
15
+ */
16
+ usage?: string;
17
+ /**
18
+ * Optional Zod schema for command argument validation.
19
+ *
20
+ * - `z.tuple([...])`: positional args validation.
21
+ * - `z.object({...})`: named args validation (maps args to parameter names).
22
+ *
23
+ * If omitted, the framework auto-validates only primitive arg types (`string|number|boolean|any[]`).
24
+ */
25
+ schema?: z.ZodType;
26
+ }
27
+ export interface CommandMetadata extends CommandConfig {
28
+ methodName: string;
29
+ target: ClassConstructor;
30
+ paramTypes: any;
31
+ paramNames: string[];
32
+ expectsPlayer: boolean;
33
+ isPublic?: boolean;
34
+ /** Security metadata for remote validation */
35
+ security?: SecurityMetadata;
36
+ }
37
+ /**
38
+ * Registers a method as a chat command.
39
+ *
40
+ * @remarks
41
+ * Handler rules:
42
+ * - If the handler has parameters, the first parameter must be `Player`.
43
+ *
44
+ * Validation rules:
45
+ * - If schema is provided:
46
+ * - `z.tuple([...])` validates positional args.
47
+ * - `z.object({...})` validates named args by mapping chat args to parameter names.
48
+ * - If schema is omitted, the framework can only auto-validate primitive types
49
+ * (`string|number|boolean|any[]`). Complex payloads should use an explicit Zod schema.
50
+ *
51
+ * @param configOrName - Command name, full config, or just command name with schema as second arg.
52
+ * @param schema - Optional Zod schema when using short form @Command("name", schema).
53
+ *
54
+ * @throws Error - If applied to a method without a valid descriptor.
55
+ * @throws Error - If the method has parameters but does not declare `Player` as the first parameter.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * import { z, Infer } from '@open-core/framework'
60
+ *
61
+ * const AmountSchema = z.object({ amount: z.number() })
62
+ *
63
+ * @Server.Controller()
64
+ * export class BankController {
65
+ * // Simple command (no schema)
66
+ * @Server.Command('help')
67
+ * help(player: Player) { }
68
+ *
69
+ * // With schema directly (recommended)
70
+ * @Server.Command('deposit', AmountSchema)
71
+ * deposit(player: Player, data: Infer<typeof AmountSchema>) { }
72
+ *
73
+ * // With full config object (for description, usage, etc.)
74
+ * @Server.Command({ command: 'withdraw', schema: AmountSchema, usage: '/withdraw <amount>' })
75
+ * withdraw(player: Player, data: Infer<typeof AmountSchema>) { }
76
+ * }
77
+ * ```
78
+ */
79
+ export declare function Command(name: string, schema: z.ZodType): MethodDecorator;
80
+ export declare function Command(name: string): MethodDecorator;
81
+ export declare function Command(config: CommandConfig): MethodDecorator;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Command = Command;
4
+ const player_1 = require("../entities/player");
5
+ const function_helper_1 = require("../helpers/function-helper");
6
+ const metadata_server_keys_1 = require("../system/metadata-server.keys");
7
+ // Implementation
8
+ function Command(configOrName, schema) {
9
+ return (target, propertyKey, descriptor) => {
10
+ var _a;
11
+ if (!descriptor.value)
12
+ throw new Error(`@Command(): descriptor.value is undefined for method '${propertyKey}'`);
13
+ // Build config from various input forms
14
+ let config;
15
+ if (typeof configOrName === 'string') {
16
+ config = { command: configOrName, schema };
17
+ }
18
+ else {
19
+ config = configOrName;
20
+ }
21
+ const paramTypes = (_a = Reflect.getMetadata('design:paramtypes', target, propertyKey)) !== null && _a !== void 0 ? _a : [];
22
+ const expectsPlayer = paramTypes.length > 0 && paramTypes[0] === player_1.Player;
23
+ if (paramTypes.length > 0 && !expectsPlayer) {
24
+ throw new Error(`@Command '${config.command}': first parameter must be Player if parameters are present`);
25
+ }
26
+ const paramNames = (0, function_helper_1.getParameterNames)(descriptor.value);
27
+ const metadata = Object.assign(Object.assign({}, config), { methodName: propertyKey, target: target.constructor, paramTypes,
28
+ paramNames,
29
+ expectsPlayer });
30
+ Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.COMMAND, metadata, target, propertyKey);
31
+ };
32
+ }
@@ -1,12 +1,13 @@
1
- import type { ClassConstructor } from '../../system/class-constructor';
2
- export declare const serverControllerRegistry: ClassConstructor[];
1
+ import { ClassConstructor } from '../../../kernel/di/class-constructor';
2
+ export declare const _serverControllerRegistryByResource: Map<string, Set<ClassConstructor>>;
3
+ export declare function getServerControllerRegistry(resourceName?: string): ClassConstructor[];
3
4
  /**
4
5
  * Class decorator used to mark a class as a Server Controller.
5
6
  *
6
7
  * This decorator performs the following actions:
7
8
  * 1. Marks the class as `@injectable` (via tsyringe) for dependency injection.
8
9
  * 2. Defines metadata identifying the class as a 'server' type controller.
9
- * 3. Automatically adds the class constructor to the `serverControllerRegistry`.
10
+ * 3. Automatically adds the class constructor to the `_serverControllerRegistryByResource`.
10
11
  *
11
12
  * @returns The decorator function to apply to the class.
12
13
  *
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._serverControllerRegistryByResource = void 0;
4
+ exports.getServerControllerRegistry = getServerControllerRegistry;
5
+ exports.Controller = Controller;
6
+ const tsyringe_1 = require("tsyringe");
7
+ const metadata_server_keys_1 = require("../system/metadata-server.keys");
8
+ exports._serverControllerRegistryByResource = new Map();
9
+ function getCurrentResourceNameSafe() {
10
+ const fn = globalThis.GetCurrentResourceName;
11
+ if (typeof fn === 'function') {
12
+ const name = fn();
13
+ if (typeof name === 'string' && name.trim())
14
+ return name;
15
+ }
16
+ return 'default';
17
+ }
18
+ function getServerControllerRegistry(resourceName) {
19
+ const key = resourceName !== null && resourceName !== void 0 ? resourceName : getCurrentResourceNameSafe();
20
+ let registry = exports._serverControllerRegistryByResource.get(key);
21
+ if (!registry) {
22
+ registry = new Set();
23
+ exports._serverControllerRegistryByResource.set(key, registry);
24
+ }
25
+ return Array.from(registry);
26
+ }
27
+ /**
28
+ * Class decorator used to mark a class as a Server Controller.
29
+ *
30
+ * This decorator performs the following actions:
31
+ * 1. Marks the class as `@injectable` (via tsyringe) for dependency injection.
32
+ * 2. Defines metadata identifying the class as a 'server' type controller.
33
+ * 3. Automatically adds the class constructor to the `_serverControllerRegistryByResource`.
34
+ *
35
+ * @returns The decorator function to apply to the class.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * import { Controller } from '@core/server/decorators'
40
+ *
41
+ * @Server.Controller()
42
+ * export class PlayerController {
43
+ * constructor(private playerService: PlayerService) {
44
+ * // Dependency injection works automatically here
45
+ * }
46
+ * }
47
+ * ```
48
+ */
49
+ function Controller() {
50
+ return (target) => {
51
+ (0, tsyringe_1.injectable)()(target);
52
+ Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.CONTROLLER, { type: 'server' }, target);
53
+ const key = getCurrentResourceNameSafe();
54
+ let registry = exports._serverControllerRegistryByResource.get(key);
55
+ if (!registry) {
56
+ registry = new Set();
57
+ exports._serverControllerRegistryByResource.set(key, registry);
58
+ }
59
+ registry.add(target);
60
+ };
61
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Exposes a method as a FiveM server export.
3
+ *
4
+ * @remarks
5
+ * This decorator only stores metadata. During bootstrap, the framework registers the export so that
6
+ * other resources can call it via `exports['resourceName'][exportName](...)`.
7
+ *
8
+ * @param name - Optional export name. If omitted, the method name is used.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * @Server.Controller()
13
+ * export class AccountController {
14
+ * @Server.Export('getAccountById')
15
+ * getAccountById(id: string) {
16
+ * return this.accountService.find(id)
17
+ * }
18
+ * }
19
+ *
20
+ * // From another resource:
21
+ * // const result = exports['core-resource'].getAccountById('1234')
22
+ * ```
23
+ */
24
+ export declare function Export(name?: string): (target: any, propertyKey: string) => void;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Export = Export;
4
+ const metadata_server_keys_1 = require("../system/metadata-server.keys");
5
+ /**
6
+ * Exposes a method as a FiveM server export.
7
+ *
8
+ * @remarks
9
+ * This decorator only stores metadata. During bootstrap, the framework registers the export so that
10
+ * other resources can call it via `exports['resourceName'][exportName](...)`.
11
+ *
12
+ * @param name - Optional export name. If omitted, the method name is used.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * @Server.Controller()
17
+ * export class AccountController {
18
+ * @Server.Export('getAccountById')
19
+ * getAccountById(id: string) {
20
+ * return this.accountService.find(id)
21
+ * }
22
+ * }
23
+ *
24
+ * // From another resource:
25
+ * // const result = exports['core-resource'].getAccountById('1234')
26
+ * ```
27
+ */
28
+ function Export(name) {
29
+ return (target, propertyKey) => {
30
+ Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.EXPORT, { exportName: name || propertyKey }, target, propertyKey);
31
+ };
32
+ }
@@ -0,0 +1,49 @@
1
+ export interface GuardOptions {
2
+ /**
3
+ * Minimum rank required to execute the method.
4
+ * Permissions and Role/Ranks are defined by your Principal Controller
5
+ */
6
+ rank?: number;
7
+ /**
8
+ * Permission required to execute the method.
9
+ * Permissions and Role/Ranks are defined by your Principal Controller
10
+ */
11
+ permission?: string;
12
+ }
13
+ /**
14
+ * Declarative access-control decorator for controller methods.
15
+ *
16
+ * @remarks
17
+ * `@Guard()` protects a method by enforcing rank and/or permission requirements before executing it.
18
+ *
19
+ * Requirements are evaluated through {@link PrincipalPort}, which determines whether the
20
+ * player (first argument of the method) is authorized to perform the action.
21
+ *
22
+ * Notes:
23
+ * - The decorated method must receive a `Server.Player` instance as its first argument.
24
+ * - In stripped decorator builds (e.g. benchmarks), the `PropertyDescriptor` may be missing.
25
+ * In that case the decorator stores metadata only and does not wrap the method.
26
+ *
27
+ * @param options - Guard options.
28
+ * @param options.rank - Minimum rank required.
29
+ * @param options.permission - Permission required.
30
+ *
31
+ * @throws Error - If the method is invoked without a valid `Player` as the first argument.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * @Server.Controller()
36
+ * export class FactionController {
37
+ * @Server.Guard({ permission: 'factions.manage' })
38
+ * async createFaction(player: Server.Player, dto: CreateFactionDTO) {
39
+ * return this.service.create(dto)
40
+ * }
41
+ *
42
+ * @Server.Guard({ rank: 3 })
43
+ * async promoteMember(player: Server.Player, memberID: string) {
44
+ * return this.service.promote(player, memberID)
45
+ * }
46
+ * }
47
+ * ```
48
+ */
49
+ export declare function Guard(options: GuardOptions): (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => PropertyDescriptor | undefined;
@@ -1,54 +1,48 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Guard = Guard;
4
- const container_1 = require("../container");
5
- const services_1 = require("../services");
6
- const logger_1 = require("../../shared/logger");
4
+ const kernel_1 = require("../../../kernel");
5
+ const container_1 = require("../../../kernel/di/container");
6
+ const logger_1 = require("../../../kernel/shared/logger");
7
+ const principal_port_1 = require("../services/ports/principal.port");
7
8
  /**
8
- * Guard
9
- * ------------------------------------------------------------
10
9
  * Declarative access-control decorator for controller methods.
11
10
  *
12
- * `@Guard()` protects a method by enforcing rank and/or
13
- * permission requirements before executing it.
11
+ * @remarks
12
+ * `@Guard()` protects a method by enforcing rank and/or permission requirements before executing it.
14
13
  *
15
- * Requirements are evaluated through the AccessControlService,
16
- * which determines whether the player (first argument of the
17
- * method) is authorized to perform the action.
14
+ * Requirements are evaluated through {@link PrincipalPort}, which determines whether the
15
+ * player (first argument of the method) is authorized to perform the action.
18
16
  *
19
- * Usage of this decorator allows you to express authorization
20
- * rules directly at the controller level, promoting a clean
21
- * and explicit security model.
17
+ * Notes:
18
+ * - The decorated method must receive a `Server.Player` instance as its first argument.
19
+ * - In stripped decorator builds (e.g. benchmarks), the `PropertyDescriptor` may be missing.
20
+ * In that case the decorator stores metadata only and does not wrap the method.
22
21
  *
23
- * @param options GuardOptions
24
- * - rank: minimum rank required to execute the method.
25
- * - permission: specific permission required.
22
+ * @param options - Guard options.
23
+ * @param options.rank - Minimum rank required.
24
+ * @param options.permission - Permission required.
26
25
  *
27
- * Notes:
28
- * - The decorated method must receive a `Server.Player`
29
- * instance as its first argument.
30
- * - When compiling improperly (e.g., benchmarks, stripped
31
- * decorators), the PropertyDescriptor may be missing.
32
- * In that case, only metadata is recorded and execution
33
- * fallback is disabled. This should *never* occur in a
34
- * production environment.
26
+ * @throws Error - If the method is invoked without a valid `Player` as the first argument.
35
27
  *
28
+ * @example
36
29
  * ```ts
30
+ * @Server.Controller()
37
31
  * export class FactionController {
38
32
  * @Server.Guard({ permission: 'factions.manage' })
39
- * async createFaction(player: Player, dto: CreateFactionDTO) {
33
+ * async createFaction(player: Server.Player, dto: CreateFactionDTO) {
40
34
  * return this.service.create(dto)
41
35
  * }
42
36
  *
43
37
  * @Server.Guard({ rank: 3 })
44
- * async promoteMember(player: Player, memberID: string) {
38
+ * async promoteMember(player: Server.Player, memberID: string) {
45
39
  * return this.service.promote(player, memberID)
46
40
  * }
47
41
  * }
48
42
  * ```
49
43
  */
50
44
  function Guard(options) {
51
- return function (target, propertyKey, descriptor) {
45
+ return (target, propertyKey, descriptor) => {
52
46
  var _a;
53
47
  if (!descriptor) {
54
48
  // In benchmarks or edge cases, only register metadata without method wrapping
@@ -68,11 +62,18 @@ function Guard(options) {
68
62
  });
69
63
  throw new Error('Guard Security Error: Context is not a player');
70
64
  }
71
- const accessControl = container_1.di.resolve(services_1.AccessControlService);
72
- await accessControl.enforce(player, {
73
- minRank: options.rank,
74
- permission: options.permission,
75
- });
65
+ const principal = container_1.di.resolve(principal_port_1.PrincipalPort);
66
+ try {
67
+ await principal.enforce(player, options);
68
+ }
69
+ catch (error) {
70
+ // Send user-friendly error message for authorization failures
71
+ if (error instanceof kernel_1.AppError && error.code === 'AUTH:PERMISSION_DENIED') {
72
+ player.send(error.message, 'error');
73
+ return;
74
+ }
75
+ throw error;
76
+ }
76
77
  return originalMethod.apply(this, args);
77
78
  };
78
79
  // no need a defined metadata key, as we won't read it later
@@ -1,10 +1,13 @@
1
1
  export * from './bind';
2
- export * from './utils';
3
2
  export { Command, CommandConfig } from './command';
3
+ export { Controller } from './controller';
4
+ export * from './export';
5
+ export * from './guard';
6
+ export * from './onFiveMEvent';
4
7
  export * from './onFrameworkEvent';
5
8
  export * from './onNet';
6
9
  export * from './onTick';
7
- export { Controller } from './controller';
8
- export * from './throttle';
9
- export * from './guard';
10
+ export * from './public';
10
11
  export * from './requiresState';
12
+ export * from './throttle';
13
+ export * from './utils';