@open-core/framework 0.2.9 → 0.3.0

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 (309) hide show
  1. package/dist/adapters/contracts/IPlatformCapabilities.d.ts +79 -0
  2. package/dist/adapters/contracts/IPlatformCapabilities.js +31 -0
  3. package/dist/adapters/contracts/IPlayerInfo.d.ts +1 -1
  4. package/dist/adapters/contracts/{IPedAppearanceClient.d.ts → client/IPedAppearanceClient.d.ts} +1 -1
  5. package/dist/adapters/contracts/server/IEntityServer.d.ts +188 -0
  6. package/dist/adapters/contracts/server/IEntityServer.js +39 -0
  7. package/dist/adapters/contracts/{IPlayerServer.d.ts → server/IPlayerServer.d.ts} +52 -9
  8. package/dist/adapters/contracts/server/IPlayerServer.js +39 -0
  9. package/dist/adapters/contracts/types/identifier.d.ts +67 -0
  10. package/dist/adapters/contracts/types/identifier.js +64 -0
  11. package/dist/adapters/contracts/types/index.d.ts +1 -0
  12. package/dist/{kernel/shared/appearance → adapters/contracts/types}/index.js +1 -1
  13. package/dist/adapters/fivem/fivem-capabilities.d.ts +18 -0
  14. package/dist/adapters/fivem/fivem-capabilities.js +67 -0
  15. package/dist/adapters/fivem/fivem-engine-events.js +17 -4
  16. package/dist/adapters/fivem/fivem-entity-server.d.ts +6 -2
  17. package/dist/adapters/fivem/fivem-entity-server.js +14 -1
  18. package/dist/adapters/fivem/fivem-ped-appearance-client.d.ts +1 -1
  19. package/dist/adapters/fivem/fivem-ped-appearance-client.js +1 -1
  20. package/dist/adapters/fivem/fivem-ped-appearance-server.d.ts +1 -1
  21. package/dist/adapters/fivem/fivem-ped-appearance-server.js +1 -1
  22. package/dist/adapters/fivem/fivem-platform.d.ts +5 -0
  23. package/dist/adapters/fivem/fivem-platform.js +100 -0
  24. package/dist/adapters/fivem/fivem-player-server.d.ts +7 -1
  25. package/dist/adapters/fivem/fivem-player-server.js +19 -1
  26. package/dist/adapters/fivem/fivem-playerinfo.d.ts +1 -1
  27. package/dist/adapters/fivem/fivem-vehicle-server.d.ts +1 -1
  28. package/dist/adapters/fivem/fivem-vehicle-server.js +1 -1
  29. package/dist/adapters/fivem/index.d.ts +13 -0
  30. package/dist/adapters/fivem/index.js +31 -0
  31. package/dist/adapters/index.d.ts +8 -7
  32. package/dist/adapters/index.js +13 -12
  33. package/dist/adapters/node/index.d.ts +5 -0
  34. package/dist/adapters/node/index.js +13 -1
  35. package/dist/adapters/node/node-capabilities.d.ts +19 -0
  36. package/dist/adapters/node/node-capabilities.js +54 -0
  37. package/dist/adapters/node/node-entity-server.d.ts +17 -6
  38. package/dist/adapters/node/node-entity-server.js +41 -15
  39. package/dist/adapters/node/node-net-transport.js +2 -2
  40. package/dist/adapters/node/node-ped-appearance-client.d.ts +1 -1
  41. package/dist/adapters/node/node-ped-appearance-client.js +1 -1
  42. package/dist/adapters/node/node-ped-appearance-server.d.ts +1 -1
  43. package/dist/adapters/node/node-ped-appearance-server.js +1 -1
  44. package/dist/adapters/node/node-platform.d.ts +5 -0
  45. package/dist/adapters/node/node-platform.js +103 -0
  46. package/dist/adapters/node/node-player-server.d.ts +19 -3
  47. package/dist/adapters/node/node-player-server.js +43 -9
  48. package/dist/adapters/node/node-playerinfo.d.ts +2 -2
  49. package/dist/adapters/node/node-playerinfo.js +14 -3
  50. package/dist/adapters/node/node-vehicle-server.d.ts +1 -1
  51. package/dist/adapters/node/node-vehicle-server.js +1 -1
  52. package/dist/adapters/platform/index.d.ts +1 -0
  53. package/dist/{runtime/server/database.js → adapters/platform/index.js} +1 -7
  54. package/dist/adapters/platform/platform-registry.d.ts +101 -0
  55. package/dist/adapters/platform/platform-registry.js +122 -0
  56. package/dist/adapters/register-capabilities.d.ts +52 -2
  57. package/dist/adapters/register-capabilities.js +69 -130
  58. package/dist/adapters/register-client-capabilities.js +1 -1
  59. package/dist/index.d.ts +2 -5
  60. package/dist/index.js +5 -31
  61. package/dist/kernel/di/container.d.ts +4 -2
  62. package/dist/kernel/di/container.js +5 -3
  63. package/dist/kernel/di/metadata.scanner.d.ts +2 -1
  64. package/dist/kernel/di/metadata.scanner.js +3 -2
  65. package/dist/kernel/{utils/error → error}/app.error.d.ts +2 -2
  66. package/dist/kernel/error/common.error-codes.d.ts +1 -0
  67. package/dist/kernel/error/framework.error-codes.d.ts +12 -0
  68. package/dist/kernel/error/index.d.ts +4 -0
  69. package/dist/kernel/error/index.js +18 -0
  70. package/dist/kernel/{utils/error → error}/security.error.d.ts +1 -1
  71. package/dist/kernel/error/security.types.js +2 -0
  72. package/dist/kernel/index.d.ts +4 -5
  73. package/dist/kernel/index.js +6 -11
  74. package/dist/kernel/{shared/logger → logger}/core-logger.d.ts +0 -19
  75. package/dist/kernel/{shared/logger → logger}/core-logger.js +10 -24
  76. package/dist/kernel/{shared/logger → logger}/logger.env.d.ts +12 -5
  77. package/dist/kernel/{shared/logger → logger}/logger.env.js +29 -13
  78. package/dist/kernel/{shared/logger → logger}/logger.service.d.ts +14 -0
  79. package/dist/kernel/{shared/logger → logger}/logger.service.js +20 -2
  80. package/dist/kernel/logger/transports/transport.interface.js +2 -0
  81. package/dist/kernel/shared/index.d.ts +1 -2
  82. package/dist/kernel/shared/index.js +1 -2
  83. package/dist/kernel/utils/index.d.ts +0 -2
  84. package/dist/kernel/utils/index.js +0 -2
  85. package/dist/kernel/utils/result.d.ts +1 -1
  86. package/dist/runtime/client/api.d.ts +7 -0
  87. package/dist/runtime/client/api.js +23 -0
  88. package/dist/runtime/client/client-bootstrap.js +1 -1
  89. package/dist/runtime/client/controllers/spawner.controller.d.ts +1 -1
  90. package/dist/runtime/client/decorators/index.d.ts +2 -2
  91. package/dist/runtime/client/decorators/index.js +2 -2
  92. package/dist/runtime/client/decorators/key.d.ts +2 -2
  93. package/dist/runtime/client/decorators/key.js +3 -3
  94. package/dist/runtime/client/decorators/localEvent.d.ts +1 -1
  95. package/dist/runtime/client/decorators/localEvent.js +1 -1
  96. package/dist/runtime/client/decorators/{tick.d.ts → onTick.d.ts} +1 -1
  97. package/dist/runtime/client/decorators/{tick.js → onTick.js} +2 -2
  98. package/dist/runtime/client/decorators/{nui.d.ts → onView.d.ts} +4 -4
  99. package/dist/runtime/client/decorators/{nui.js → onView.js} +5 -5
  100. package/dist/runtime/client/index.d.ts +1 -7
  101. package/dist/runtime/client/index.js +26 -12
  102. package/dist/runtime/client/player/player.d.ts +1 -1
  103. package/dist/runtime/client/player/player.loader.js +3 -3
  104. package/dist/runtime/client/services/appearance.service.d.ts +1 -1
  105. package/dist/runtime/client/services/appearance.service.js +1 -1
  106. package/dist/runtime/client/services/blip.service.d.ts +1 -1
  107. package/dist/runtime/client/services/marker.service.d.ts +1 -1
  108. package/dist/runtime/client/services/ped.service.d.ts +1 -1
  109. package/dist/runtime/client/services/spawn.service.d.ts +2 -2
  110. package/dist/runtime/client/services/spawn.service.js +12 -12
  111. package/dist/runtime/client/services/textui.service.d.ts +1 -1
  112. package/dist/runtime/client/services/vehicle-client.service.d.ts +1 -1
  113. package/dist/runtime/client/services/vehicle.service.d.ts +1 -1
  114. package/dist/runtime/client/system/processors/export.processor.js +1 -1
  115. package/dist/runtime/client/system/processors/gameEvent.processor.js +1 -1
  116. package/dist/runtime/client/system/processors/interval.processor.js +1 -1
  117. package/dist/runtime/client/system/processors/localEvent.processor.js +1 -1
  118. package/dist/runtime/client/system/processors/netEvent.processor.js +1 -1
  119. package/dist/runtime/client/system/processors/nui.processor.js +1 -1
  120. package/dist/runtime/client/system/processors/resourceLifecycle.processor.js +1 -1
  121. package/dist/runtime/client/system/processors/tick.processor.js +1 -1
  122. package/dist/runtime/client/ui-bridge.js +1 -1
  123. package/dist/runtime/core/entity.d.ts +168 -0
  124. package/dist/runtime/core/entity.js +226 -0
  125. package/dist/runtime/core/index.d.ts +3 -0
  126. package/dist/runtime/core/index.js +19 -0
  127. package/dist/runtime/core/spatial.d.ts +5 -0
  128. package/dist/runtime/core/spatial.js +2 -0
  129. package/dist/runtime/core/world.d.ts +13 -0
  130. package/dist/runtime/core/world.js +64 -0
  131. package/dist/runtime/server/api.d.ts +12 -0
  132. package/dist/runtime/server/api.js +34 -0
  133. package/dist/runtime/server/bootstrap.js +58 -103
  134. package/dist/runtime/server/bus/internal-event.bus.js +1 -1
  135. package/dist/runtime/server/contracts/index.d.ts +1 -2
  136. package/dist/runtime/server/contracts/index.js +2 -3
  137. package/dist/runtime/server/contracts/player-persistence.contract.d.ts +16 -18
  138. package/dist/runtime/server/contracts/player-persistence.contract.js +16 -18
  139. package/dist/runtime/server/contracts/security/command-error-observer.contract.d.ts +73 -0
  140. package/dist/runtime/server/contracts/security/command-error-observer.contract.js +9 -0
  141. package/dist/runtime/server/contracts/security/permission.types.d.ts +2 -2
  142. package/dist/runtime/server/contracts/security/principal-provider.contract.d.ts +3 -3
  143. package/dist/runtime/server/contracts/security/principal-provider.contract.js +2 -2
  144. package/dist/runtime/server/contracts/security/security-handler.contract.d.ts +2 -2
  145. package/dist/runtime/server/controllers/chat.controller.d.ts +1 -1
  146. package/dist/runtime/server/controllers/chat.controller.js +5 -0
  147. package/dist/runtime/server/controllers/command-export.controller.d.ts +12 -3
  148. package/dist/runtime/server/controllers/command-export.controller.js +81 -25
  149. package/dist/runtime/server/controllers/player-export.controller.d.ts +2 -2
  150. package/dist/runtime/server/controllers/player-export.controller.js +5 -0
  151. package/dist/runtime/server/controllers/principal-export.controller.js +8 -7
  152. package/dist/runtime/server/controllers/ready.controller.d.ts +5 -0
  153. package/dist/runtime/server/controllers/ready.controller.js +37 -0
  154. package/dist/runtime/server/controllers/remote-command-execution.controller.d.ts +10 -1
  155. package/dist/runtime/server/controllers/remote-command-execution.controller.js +65 -13
  156. package/dist/runtime/server/controllers/session.controller.d.ts +2 -2
  157. package/dist/runtime/server/controllers/session.controller.js +25 -17
  158. package/dist/runtime/server/controllers/vehicle.controller.d.ts +3 -38
  159. package/dist/runtime/server/controllers/vehicle.controller.js +6 -152
  160. package/dist/runtime/server/decorators/guard.js +2 -2
  161. package/dist/runtime/server/decorators/index.d.ts +1 -1
  162. package/dist/runtime/server/decorators/index.js +1 -1
  163. package/dist/runtime/server/decorators/{onFiveMEvent.d.ts → onRuntimeEvent.d.ts} +5 -4
  164. package/dist/runtime/server/decorators/{onFiveMEvent.js → onRuntimeEvent.js} +7 -6
  165. package/dist/runtime/server/decorators/requiresState.js +3 -3
  166. package/dist/runtime/server/decorators/throttle.d.ts +1 -1
  167. package/dist/runtime/server/decorators/throttle.js +1 -1
  168. package/dist/runtime/server/decorators/utils.d.ts +1 -1
  169. package/dist/runtime/server/decorators/utils.js +1 -1
  170. package/dist/runtime/server/devmode/dev-mode.service.d.ts +7 -8
  171. package/dist/runtime/server/devmode/dev-mode.service.js +18 -46
  172. package/dist/runtime/server/devmode/index.d.ts +1 -3
  173. package/dist/runtime/server/devmode/index.js +1 -18
  174. package/dist/runtime/server/devmode/player-simulator.service.js +3 -3
  175. package/dist/runtime/server/devmode/state-inspector.service.js +2 -2
  176. package/dist/runtime/server/devmode/types.d.ts +67 -31
  177. package/dist/runtime/server/devmode/types.js +1 -4
  178. package/dist/runtime/server/entities/player.d.ts +80 -66
  179. package/dist/runtime/server/entities/player.js +137 -98
  180. package/dist/runtime/server/entities/vehicle.d.ts +3 -3
  181. package/dist/runtime/server/error-handler.js +5 -5
  182. package/dist/runtime/server/helpers/normalize-app-error.d.ts +9 -0
  183. package/dist/runtime/server/helpers/normalize-app-error.js +20 -0
  184. package/dist/runtime/server/helpers/resolve-method.js +3 -3
  185. package/dist/runtime/server/index.d.ts +1 -13
  186. package/dist/runtime/server/index.js +25 -23
  187. package/dist/runtime/server/runtime.d.ts +32 -281
  188. package/dist/runtime/server/runtime.js +46 -60
  189. package/dist/runtime/server/services/appearance.service.d.ts +5 -5
  190. package/dist/runtime/server/services/appearance.service.js +5 -5
  191. package/dist/runtime/server/services/chat.service.d.ts +5 -3
  192. package/dist/runtime/server/services/chat.service.js +17 -12
  193. package/dist/runtime/server/services/core/command.service.d.ts +9 -1
  194. package/dist/runtime/server/services/core/command.service.js +16 -7
  195. package/dist/runtime/server/services/core/player.service.d.ts +12 -16
  196. package/dist/runtime/server/services/core/player.service.js +42 -47
  197. package/dist/runtime/server/services/core/principal.service.js +5 -5
  198. package/dist/runtime/server/services/core/session-recovery.service.d.ts +1 -1
  199. package/dist/runtime/server/services/core/session-recovery.service.js +2 -2
  200. package/dist/runtime/server/services/default/default-command-error-observer.d.ts +14 -0
  201. package/dist/runtime/server/services/default/default-command-error-observer.js +43 -0
  202. package/dist/runtime/server/services/default/default-principal.provider.d.ts +13 -0
  203. package/dist/runtime/server/services/default/default-principal.provider.js +38 -0
  204. package/dist/runtime/server/services/default/default-security.handler.d.ts +1 -1
  205. package/dist/runtime/server/services/default/default-security.handler.js +1 -1
  206. package/dist/runtime/server/services/index.d.ts +0 -3
  207. package/dist/runtime/server/services/index.js +1 -6
  208. package/dist/runtime/server/services/persistence.service.js +3 -3
  209. package/dist/runtime/server/services/ports/command-execution.port.d.ts +7 -0
  210. package/dist/runtime/server/services/ports/principal.port.d.ts +1 -1
  211. package/dist/runtime/server/services/remote/remote-command.service.d.ts +1 -0
  212. package/dist/runtime/server/services/remote/remote-command.service.js +7 -3
  213. package/dist/runtime/server/services/remote/remote-player.service.d.ts +2 -2
  214. package/dist/runtime/server/services/remote/remote-player.service.js +3 -3
  215. package/dist/runtime/server/services/remote/server-bridge.js +2 -2
  216. package/dist/runtime/server/services/services.register.d.ts +2 -5
  217. package/dist/runtime/server/services/services.register.js +29 -41
  218. package/dist/runtime/server/services/vehicle-modification.service.js +1 -1
  219. package/dist/runtime/server/services/vehicle.service.d.ts +3 -3
  220. package/dist/runtime/server/services/vehicle.service.js +5 -5
  221. package/dist/runtime/server/setup.d.ts +2 -3
  222. package/dist/runtime/server/setup.js +10 -11
  223. package/dist/runtime/server/system/metadata-server.keys.d.ts +1 -1
  224. package/dist/runtime/server/system/metadata-server.keys.js +1 -1
  225. package/dist/runtime/server/system/processors/command.processor.js +4 -0
  226. package/dist/runtime/server/system/processors/export.processor.js +1 -1
  227. package/dist/runtime/server/system/processors/internalEvent.processor.js +1 -1
  228. package/dist/runtime/server/system/processors/netEvent.processor.js +8 -9
  229. package/dist/runtime/server/system/processors/{fivemEvent.processor.d.ts → runtimeEvent.processor.d.ts} +1 -1
  230. package/dist/runtime/server/system/processors/{fivemEvent.processor.js → runtimeEvent.processor.js} +8 -8
  231. package/dist/runtime/server/system/processors/tick.processor.js +1 -1
  232. package/dist/runtime/server/system/processors.register.js +16 -11
  233. package/dist/runtime/server/system/schema-generator.js +2 -2
  234. package/dist/runtime/server/types/core-exports.d.ts +6 -6
  235. package/dist/runtime/server/types/index.d.ts +1 -1
  236. package/dist/runtime/server/types/index.js +1 -1
  237. package/dist/runtime/server/types/internal-events.d.ts +1 -1
  238. package/dist/runtime/server/types/vehicle.types.d.ts +1 -1
  239. package/package.json +7 -15
  240. package/dist/adapters/contracts/IEntityServer.d.ts +0 -88
  241. package/dist/adapters/contracts/IEntityServer.js +0 -13
  242. package/dist/adapters/contracts/IPlayerServer.js +0 -13
  243. package/dist/adapters/database/oxmysql.adapter.d.ts +0 -89
  244. package/dist/adapters/database/oxmysql.adapter.js +0 -149
  245. package/dist/adapters/database/resource.adapter.d.ts +0 -12
  246. package/dist/adapters/database/resource.adapter.js +0 -68
  247. package/dist/kernel/shared/appearance/index.d.ts +0 -1
  248. package/dist/runtime/index.d.ts +0 -2
  249. package/dist/runtime/index.js +0 -39
  250. package/dist/runtime/server/bootstrap.validation.d.ts +0 -12
  251. package/dist/runtime/server/bootstrap.validation.js +0 -104
  252. package/dist/runtime/server/contracts/auth-provider.contract.d.ts +0 -58
  253. package/dist/runtime/server/contracts/auth-provider.contract.js +0 -23
  254. package/dist/runtime/server/contracts/repository/index.d.ts +0 -57
  255. package/dist/runtime/server/contracts/repository/index.js +0 -61
  256. package/dist/runtime/server/contracts/repository/repository.contract.d.ts +0 -224
  257. package/dist/runtime/server/contracts/repository/repository.contract.js +0 -341
  258. package/dist/runtime/server/contracts/repository/repository.types.d.ts +0 -51
  259. package/dist/runtime/server/contracts/repository/repository.types.js +0 -7
  260. package/dist/runtime/server/database/adapter.registry.d.ts +0 -4
  261. package/dist/runtime/server/database/adapter.registry.js +0 -14
  262. package/dist/runtime/server/database/database.contract.d.ts +0 -128
  263. package/dist/runtime/server/database/database.contract.js +0 -29
  264. package/dist/runtime/server/database/database.service.d.ts +0 -188
  265. package/dist/runtime/server/database/database.service.js +0 -287
  266. package/dist/runtime/server/database/index.d.ts +0 -5
  267. package/dist/runtime/server/database/index.js +0 -25
  268. package/dist/runtime/server/database/types.d.ts +0 -67
  269. package/dist/runtime/server/database/types.js +0 -7
  270. package/dist/runtime/server/database.d.ts +0 -7
  271. package/dist/runtime/server/devmode/hot-reload.server.d.ts +0 -74
  272. package/dist/runtime/server/devmode/hot-reload.server.js +0 -261
  273. package/dist/runtime/server/services/config.service.d.ts +0 -75
  274. package/dist/runtime/server/services/config.service.js +0 -116
  275. package/dist/runtime/server/services/http/http.service.d.ts +0 -50
  276. package/dist/runtime/server/services/http/http.service.js +0 -126
  277. /package/dist/adapters/contracts/{IPedAppearanceClient.js → client/IPedAppearanceClient.js} +0 -0
  278. /package/dist/adapters/contracts/{IPedAppearanceServer.d.ts → server/IPedAppearanceServer.d.ts} +0 -0
  279. /package/dist/adapters/contracts/{IPedAppearanceServer.js → server/IPedAppearanceServer.js} +0 -0
  280. /package/dist/adapters/contracts/{IVehicleServer.d.ts → server/IVehicleServer.d.ts} +0 -0
  281. /package/dist/adapters/contracts/{IVehicleServer.js → server/IVehicleServer.js} +0 -0
  282. /package/dist/kernel/{utils/error → error}/app.error.js +0 -0
  283. /package/dist/kernel/{shared/logger/transports/transport.interface.js → error/common.error-codes.js} +0 -0
  284. /package/dist/{runtime/server/types/security.types.js → kernel/error/framework.error-codes.js} +0 -0
  285. /package/dist/kernel/{utils/error → error}/security.error.js +0 -0
  286. /package/dist/{runtime/server/types → kernel/error}/security.types.d.ts +0 -0
  287. /package/dist/kernel/{shared/logger → logger}/index.d.ts +0 -0
  288. /package/dist/kernel/{shared/logger → logger}/index.js +0 -0
  289. /package/dist/kernel/{shared/logger → logger}/logger.config.d.ts +0 -0
  290. /package/dist/kernel/{shared/logger → logger}/logger.config.js +0 -0
  291. /package/dist/kernel/{shared/logger → logger}/logger.types.d.ts +0 -0
  292. /package/dist/kernel/{shared/logger → logger}/logger.types.js +0 -0
  293. /package/dist/kernel/{shared/logger → logger}/transports/buffered.transport.d.ts +0 -0
  294. /package/dist/kernel/{shared/logger → logger}/transports/buffered.transport.js +0 -0
  295. /package/dist/kernel/{shared/logger → logger}/transports/console.transport.d.ts +0 -0
  296. /package/dist/kernel/{shared/logger → logger}/transports/console.transport.js +0 -0
  297. /package/dist/kernel/{shared/logger → logger}/transports/dev-transport.factory.d.ts +0 -0
  298. /package/dist/kernel/{shared/logger → logger}/transports/dev-transport.factory.js +0 -0
  299. /package/dist/kernel/{shared/logger → logger}/transports/http.transport.d.ts +0 -0
  300. /package/dist/kernel/{shared/logger → logger}/transports/http.transport.js +0 -0
  301. /package/dist/kernel/{shared/logger → logger}/transports/index.d.ts +0 -0
  302. /package/dist/kernel/{shared/logger → logger}/transports/index.js +0 -0
  303. /package/dist/kernel/{shared/logger → logger}/transports/simple-console.transport.d.ts +0 -0
  304. /package/dist/kernel/{shared/logger → logger}/transports/simple-console.transport.js +0 -0
  305. /package/dist/kernel/{shared/logger → logger}/transports/transport.interface.d.ts +0 -0
  306. /package/dist/kernel/{shared/logger → logger}/transports/websocket.transport.d.ts +0 -0
  307. /package/dist/kernel/{shared/logger → logger}/transports/websocket.transport.js +0 -0
  308. /package/dist/kernel/shared/{appearance/appearance.interface.d.ts → player-appearance.types.d.ts} +0 -0
  309. /package/dist/kernel/shared/{appearance/appearance.interface.js → player-appearance.types.js} +0 -0
@@ -11,7 +11,7 @@ export type FrameworkMode = 'CORE' | 'RESOURCE' | 'STANDALONE';
11
11
  *
12
12
  * - `'local'`: Feature implemented locally in current resource
13
13
  * - Used in CORE/STANDALONE for all features
14
- * - Used in RESOURCE for: netEvents, fiveMEvents, exports, http, chat, database
14
+ * - Used in RESOURCE for: netEvents, fiveMEvents, exports, http, chat
15
15
  * - Triggers local service implementations
16
16
  *
17
17
  * @example
@@ -25,239 +25,17 @@ export type FrameworkMode = 'CORE' | 'RESOURCE' | 'STANDALONE';
25
25
  */
26
26
  export type FeatureProvider = 'core' | 'local';
27
27
  export type FeatureScope = 'core' | 'resource' | 'standalone';
28
- export type FeatureName = 'players' | 'netEvents' | 'fiveMEvents' | 'commands' | 'exports' | 'http' | 'chat' | 'database' | 'principal' | 'auth' | 'sessionLifecycle';
29
- /**
30
- * Base feature configuration (all features support this).
31
- */
32
- export interface BaseFeatureConfig {
33
- /**
34
- * Enable or disable this feature.
35
- *
36
- * @defaultValue Varies by feature and mode (see specific feature docs)
37
- */
38
- enabled?: boolean;
39
- }
40
- /**
41
- * Feature configuration with configurable provider.
42
- *
43
- * @remarks
44
- * Only applies to: `players`, `commands`, `principal`, `auth`
45
- *
46
- * For these features, you can choose:
47
- * - `'core'`: Use CORE's implementation (RESOURCE mode)
48
- * - `'local'`: Use local implementation (STANDALONE mode)
49
- *
50
- * **Defaults by mode:**
51
- * - CORE: `'core'`
52
- * - RESOURCE: `'core'` (delegates to CORE)
53
- * - STANDALONE: `'local'`
54
- */
55
- export interface ProviderFeatureConfig extends BaseFeatureConfig {
56
- /**
57
- * Provider source for this feature.
58
- *
59
- * @remarks
60
- * - RESOURCE mode: Use `'core'` to delegate to CORE (default)
61
- * - STANDALONE mode: Must use `'local'` (default)
62
- */
63
- provider?: FeatureProvider;
64
- }
65
- /**
66
- * Feature configuration with export option (CORE mode only).
67
- *
68
- * @remarks
69
- * Only applies to: `players`, `principal`, `chat` in CORE mode
70
- *
71
- * When `export: true`, the feature exposes FiveM exports for RESOURCE mode access.
72
- */
73
- export interface ExportableFeatureConfig extends BaseFeatureConfig {
74
- /**
75
- * Whether to expose this feature via FiveM exports.
76
- *
77
- * @remarks
78
- * - Only valid in CORE mode
79
- * - Requires `exports` feature to be enabled
80
- * - Used by RESOURCE mode to access CORE functionality
81
- *
82
- * @defaultValue false
83
- */
84
- export?: boolean;
85
- }
28
+ export type FeatureName = 'players' | 'netEvents' | 'fiveMEvents' | 'commands' | 'exports' | 'chat' | 'principal' | 'sessionLifecycle';
86
29
  /**
87
30
  * User-facing feature configuration.
88
31
  *
89
32
  * @remarks
90
- * This is what users configure in `Server.init({ features: {...} })`.
91
- * Internal fields like `scope` and `required` are auto-managed by the framework.
33
+ * Most features are enabled by default and providers are auto-inferred.
34
+ * Use this config only if you need to explicitly disable a feature.
92
35
  */
93
36
  export interface UserFeatureConfig {
94
- /**
95
- * Player management and directory.
96
- *
97
- * @remarks
98
- * **Dependencies**: None
99
- * **Provider**: Configurable
100
- * - CORE/STANDALONE: Local player management
101
- * - RESOURCE: Delegates to CORE
102
- *
103
- * **Export** (CORE only): When true, exposes player APIs to RESOURCE mode
104
- *
105
- * @defaultValue
106
- * - enabled: true
107
- * - provider: 'core' (RESOURCE), 'core' (CORE), 'local' (STANDALONE)
108
- * - export: false
109
- */
110
- players?: ProviderFeatureConfig & ExportableFeatureConfig;
111
- /**
112
- * Command registration and execution.
113
- *
114
- * @remarks
115
- * **Dependencies**: Requires `players` to be enabled
116
- * **Provider**: Configurable
117
- * - CORE/STANDALONE: Local command execution
118
- * - RESOURCE: Commands register with CORE for centralized security validation
119
- *
120
- * **Export** (CORE only): Always exported when enabled (for RESOURCE mode access)
121
- *
122
- * @defaultValue
123
- * - enabled: false
124
- * - provider: 'core' (RESOURCE), 'local' (CORE/STANDALONE)
125
- * - export: true (CORE only, automatic)
126
- */
127
- commands?: ProviderFeatureConfig;
128
- /**
129
- * Principal (identity) provider for permissions.
130
- *
131
- * @remarks
132
- * **Dependencies**: None
133
- * **Provider**: Configurable
134
- * - CORE: User-provided PrincipalProvider implementation
135
- * - RESOURCE: Delegates to CORE
136
- * - STANDALONE: User-provided PrincipalProvider implementation
137
- *
138
- * **Export** (CORE only): When true, exposes principal APIs to RESOURCE mode
139
- *
140
- * @defaultValue
141
- * - enabled: false
142
- * - provider: 'core' (RESOURCE), 'core' (CORE), 'local' (STANDALONE)
143
- * - export: false
144
- */
145
- principal?: ProviderFeatureConfig & ExportableFeatureConfig;
146
- /**
147
- * Authentication provider for login/logout.
148
- *
149
- * @remarks
150
- * **Dependencies**: None
151
- * **Provider**: Configurable
152
- * - CORE: User-provided AuthProvider implementation
153
- * - RESOURCE: Delegates to CORE
154
- * - STANDALONE: User-provided AuthProvider implementation
155
- *
156
- * @defaultValue
157
- * - enabled: false
158
- * - provider: 'core' (RESOURCE), 'core' (CORE), 'local' (STANDALONE)
159
- */
160
- auth?: ProviderFeatureConfig;
161
- /**
162
- * Network events (`onNet` decorator support).
163
- *
164
- * @remarks
165
- * **Dependencies**: Requires `players` to be enabled
166
- * **Provider**: Auto-determined (not configurable)
167
- * - Always `'local'` (events are handled locally in each resource)
168
- *
169
- * @defaultValue enabled: true
170
- */
171
- netEvents?: BaseFeatureConfig;
172
- /**
173
- * FiveM lifecycle events (`onServer`, `onClient`, etc.).
174
- *
175
- * @remarks
176
- * **Dependencies**: None
177
- * **Provider**: Auto-determined (not configurable)
178
- * - Always `'local'`
179
- * - Disabled in RESOURCE mode (only CORE/STANDALONE need lifecycle management)
180
- *
181
- * @defaultValue
182
- * - enabled: true (CORE/STANDALONE), false (RESOURCE)
183
- */
184
- fiveMEvents?: BaseFeatureConfig;
185
- /**
186
- * FiveM exports support (`@Export` decorator).
187
- *
188
- * @remarks
189
- * **Dependencies**: None
190
- * **Provider**: Auto-determined (not configurable)
191
- * - Always `'local'`
192
- *
193
- * @defaultValue enabled: false
194
- */
195
- exports?: BaseFeatureConfig;
196
- /**
197
- * HTTP server and endpoints.
198
- *
199
- * @remarks
200
- * **Dependencies**: None
201
- * **Provider**: Auto-determined (not configurable)
202
- * - Always `'local'`
203
- *
204
- * @defaultValue enabled: false
205
- */
206
- http?: BaseFeatureConfig;
207
- /**
208
- * Chat message handling.
209
- *
210
- * @remarks
211
- * **Dependencies**: Requires `players` to be enabled
212
- * **Provider**: Auto-determined (not configurable)
213
- * - Always `'local'`
214
- *
215
- * **Export** (CORE only): When true, exposes chat APIs to RESOURCE mode
216
- *
217
- * @defaultValue
218
- * - enabled: false
219
- * - export: false
220
- */
221
- chat?: BaseFeatureConfig & ExportableFeatureConfig;
222
- /**
223
- * Database access.
224
- *
225
- * @remarks
226
- * **Dependencies**: None
227
- * **Provider**: Auto-determined (not configurable)
228
- * - Always `'local'`
229
- *
230
- * @defaultValue enabled: false
231
- */
232
- database?: BaseFeatureConfig;
233
- /**
234
- * Session lifecycle management (internal).
235
- *
236
- * @remarks
237
- * **Dependencies**: None
238
- * **Provider**: Auto-determined (not configurable)
239
- * - Disabled in RESOURCE mode (CORE manages sessions)
240
- *
241
- * @defaultValue
242
- * - enabled: true (CORE/STANDALONE), false (RESOURCE)
243
- * - recoveryOnRestart: true
244
- */
245
- sessionLifecycle?: BaseFeatureConfig & {
246
- /**
247
- * Automatically recover sessions for players already connected when the resource restarts.
248
- *
249
- * @remarks
250
- * When enabled, the framework will scan for connected players on startup and
251
- * create sessions for any players that don't have an active session.
252
- * This is useful during development when hot-reloading resources.
253
- *
254
- * **Note**: Only basic session data (clientID, identifiers) is recovered.
255
- * Players will need to re-authenticate to restore accountID and other auth-related data.
256
- *
257
- * @defaultValue true
258
- */
259
- recoveryOnRestart?: boolean;
260
- };
37
+ /** Disable specific features if needed */
38
+ disabled?: FeatureName[];
261
39
  }
262
40
  /**
263
41
  * Internal feature contract with all fields resolved.
@@ -313,34 +91,42 @@ export interface FeatureContract {
313
91
  recoveryOnRestart?: boolean;
314
92
  }
315
93
  export type FrameworkFeatures = Record<FeatureName, FeatureContract>;
316
- export interface ResourceGrants {
317
- database?: boolean;
318
- principal?: boolean;
319
- auth?: boolean;
320
- }
321
94
  export interface DevModeConfig {
322
- /** Enable dev mode */
95
+ /**
96
+ * Master switch for development mode.
97
+ * If false, no dev tools will be loaded.
98
+ */
323
99
  enabled: boolean;
324
- /** Hot reload configuration */
325
- hotReload?: {
326
- enabled: boolean;
327
- port: number;
328
- allowedResources?: string[];
329
- };
330
- /** CLI bridge configuration */
100
+ /**
101
+ * CLI bridge configuration for telemetry and logs.
102
+ * The bridge allows the OpenCore CLI to stream logs and inspect the framework state.
103
+ */
331
104
  bridge?: {
105
+ /** WebSocket URL of the bridge */
332
106
  url: string;
107
+ /** Whether to connect automatically on startup */
333
108
  autoConnect: boolean;
334
109
  };
335
- /** Event interceptor configuration */
110
+ /**
111
+ * Event interceptor configuration for debugging.
112
+ * Captures and records incoming/outgoing network events and commands.
113
+ */
336
114
  interceptor?: {
115
+ /** Enable event interception */
337
116
  enabled: boolean;
117
+ /** Whether to record a history of events in memory */
338
118
  recordHistory: boolean;
119
+ /** Maximum number of events to keep in the history buffer */
339
120
  maxHistorySize: number;
340
121
  };
341
- /** Player simulator configuration */
122
+ /**
123
+ * Player simulator configuration.
124
+ * Allows creating virtual players for testing logic without game clients.
125
+ */
342
126
  simulator?: {
127
+ /** Enable player simulation features */
343
128
  enabled: boolean;
129
+ /** Number of virtual players to connect automatically on startup */
344
130
  autoConnectPlayers: number;
345
131
  };
346
132
  }
@@ -352,7 +138,6 @@ export interface ServerRuntimeOptions {
352
138
  mode: FrameworkMode;
353
139
  features: FrameworkFeatures;
354
140
  coreResourceName: string;
355
- resourceGrants?: ResourceGrants;
356
141
  /** Development mode configuration (disabled in production) */
357
142
  devMode?: DevModeConfig;
358
143
  onDependency?: Hooks;
@@ -367,36 +152,10 @@ export declare function getFrameworkModeScope(mode: FrameworkMode): FeatureScope
367
152
  * @remarks
368
153
  * Defines the runtime mode and feature configuration for OpenCore.
369
154
  *
370
- * @example Minimal CORE Mode
371
- * ```typescript
372
- * Server.init({
373
- * mode: 'CORE',
374
- * features: {
375
- * commands: { enabled: true },
376
- * principal: { enabled: true },
377
- * }
378
- * })
379
- * ```
380
- *
381
- * @example Minimal RESOURCE Mode
155
+ * @example Minimal Mode
382
156
  * ```typescript
383
157
  * Server.init({
384
- * mode: 'RESOURCE',
385
- * coreResourceName: 'my-core',
386
- * features: {
387
- * commands: { enabled: true }, // Auto-uses 'core' provider
388
- * }
389
- * })
390
- * ```
391
- *
392
- * @example STANDALONE Mode
393
- * ```typescript
394
- * Server.init({
395
- * mode: 'STANDALONE',
396
- * features: {
397
- * players: { enabled: true },
398
- * commands: { enabled: true },
399
- * }
158
+ * mode: 'CORE'
400
159
  * })
401
160
  * ```
402
161
  */
@@ -407,13 +166,7 @@ export interface ServerInitOptions {
407
166
  * Feature configuration.
408
167
  *
409
168
  * @remarks
410
- * All features have sensible defaults. You only need to configure:
411
- * - `enabled: true` to enable a feature
412
- * - `provider` (optional, only for players/commands/principal/auth if you want non-default)
413
- * - `export: true` (optional, CORE mode only, for players/principal/chat)
414
- *
415
- * **Most features auto-determine their provider based on mode.**
416
- * Only configure `provider` if you need to override defaults.
169
+ * Most features are enabled by default. Use this only to disable specific ones.
417
170
  */
418
171
  features?: UserFeatureConfig;
419
172
  /**
@@ -426,8 +179,6 @@ export interface ServerInitOptions {
426
179
  * @defaultValue 'core'
427
180
  */
428
181
  coreResourceName?: string;
429
- /** Resource grants configuration (CORE mode only) */
430
- resourceGrants?: ResourceGrants;
431
182
  /** Development mode configuration (disabled in production) */
432
183
  devMode?: DevModeConfig;
433
184
  /** If you want to wait for a dependency promise, or when ready do something (By default, the core server will emit a "ready" when it is ready to all resources.) */
@@ -12,11 +12,8 @@ const FEATURE_NAMES = [
12
12
  'fiveMEvents',
13
13
  'commands',
14
14
  'exports',
15
- 'http',
16
15
  'chat',
17
- 'database',
18
16
  'principal',
19
- 'auth',
20
17
  'sessionLifecycle',
21
18
  ];
22
19
  const FEATURE_ALLOWED_SCOPES = {
@@ -25,11 +22,8 @@ const FEATURE_ALLOWED_SCOPES = {
25
22
  fiveMEvents: ['core', 'resource', 'standalone'],
26
23
  commands: ['core', 'resource', 'standalone'],
27
24
  exports: ['core', 'resource', 'standalone'],
28
- http: ['core', 'resource', 'standalone'],
29
25
  chat: ['core', 'resource', 'standalone'],
30
- database: ['core', 'resource', 'standalone'],
31
26
  principal: ['core', 'resource', 'standalone'],
32
- auth: ['core', 'resource', 'standalone'],
33
27
  sessionLifecycle: ['core', 'standalone'],
34
28
  };
35
29
  let runtimeContext = null;
@@ -53,68 +47,63 @@ function createDefaultFeatures(mode) {
53
47
  const scope = getFrameworkModeScope(mode);
54
48
  // Provider logic:
55
49
  // - CORE/STANDALONE: All features use 'local' (run locally)
56
- // - RESOURCE: Some features delegate to CORE ('core'), others run locally ('local')
57
- const playersProvider = mode === 'RESOURCE' ? 'core' : 'local';
58
- const commandsProvider = mode === 'RESOURCE' ? 'core' : 'local';
59
- const principalProvider = mode === 'RESOURCE' ? 'core' : 'local';
60
- const authProvider = mode === 'RESOURCE' ? 'core' : 'local';
61
- // These always use 'local' regardless of mode
62
- const netEventsProvider = 'local';
63
- const fiveMEventsProvider = 'local';
64
- const exportsProvider = 'local';
65
- const httpProvider = 'local';
66
- const chatProvider = 'local';
67
- const databaseProvider = 'local';
68
- const sessionLifecycleProvider = 'local';
69
- const sessionLifecycleEnabled = mode !== 'RESOURCE';
70
- // Features that should auto-export in CORE mode for RESOURCE access
71
- const commandsExport = mode === 'CORE';
72
- const playersExport = mode === 'CORE';
73
- const principalExport = mode === 'CORE';
50
+ // - RESOURCE: Identity/Command features delegate to CORE ('core'), others run locally ('local')
51
+ const remoteProvider = mode === 'RESOURCE' ? 'core' : 'local';
52
+ const isResource = mode === 'RESOURCE';
53
+ const isCore = mode === 'CORE';
74
54
  return {
75
55
  players: {
76
56
  enabled: true,
77
- provider: playersProvider,
78
- export: playersExport,
57
+ provider: remoteProvider,
58
+ export: isCore,
79
59
  scope,
80
- required: false,
60
+ required: true,
81
61
  },
82
62
  netEvents: {
83
63
  enabled: true,
84
- provider: netEventsProvider,
64
+ provider: 'local',
85
65
  export: false,
86
66
  scope,
87
- required: false,
67
+ required: true,
88
68
  },
89
69
  fiveMEvents: {
90
- enabled: sessionLifecycleEnabled,
91
- provider: fiveMEventsProvider,
70
+ enabled: true,
71
+ provider: 'local',
92
72
  export: false,
93
73
  scope,
94
74
  required: false,
95
75
  },
96
76
  commands: {
97
- enabled: false,
98
- provider: commandsProvider,
99
- export: commandsExport,
77
+ enabled: true,
78
+ provider: remoteProvider,
79
+ export: isCore,
80
+ scope,
81
+ required: true,
82
+ },
83
+ exports: {
84
+ enabled: true,
85
+ provider: 'local',
86
+ export: false,
87
+ scope,
88
+ required: isCore,
89
+ },
90
+ chat: {
91
+ enabled: true,
92
+ provider: 'local',
93
+ export: isCore,
100
94
  scope,
101
95
  required: false,
102
96
  },
103
- exports: { enabled: false, provider: exportsProvider, export: false, scope, required: false },
104
- http: { enabled: false, provider: httpProvider, export: false, scope, required: false },
105
- chat: { enabled: false, provider: chatProvider, export: false, scope, required: false },
106
- database: { enabled: false, provider: databaseProvider, export: false, scope, required: false },
107
97
  principal: {
108
- enabled: false,
109
- provider: principalProvider,
110
- export: principalExport,
98
+ enabled: true,
99
+ provider: remoteProvider,
100
+ export: isCore,
111
101
  scope,
112
102
  required: false,
113
103
  },
114
- auth: { enabled: false, provider: authProvider, export: false, scope, required: false },
115
104
  sessionLifecycle: {
116
- enabled: sessionLifecycleEnabled,
117
- provider: sessionLifecycleProvider,
105
+ enabled: !isResource,
106
+ provider: 'local',
118
107
  export: false,
119
108
  scope,
120
109
  required: false,
@@ -123,26 +112,27 @@ function createDefaultFeatures(mode) {
123
112
  };
124
113
  }
125
114
  function resolveRuntimeOptions(options) {
126
- var _a;
127
- const defaults = createDefaultFeatures(options.mode);
128
- const features = Object.assign({}, defaults);
129
- if (options.features) {
130
- for (const name of FEATURE_NAMES) {
131
- const override = options.features[name];
132
- if (!override)
133
- continue;
134
- features[name] = Object.assign(Object.assign({}, defaults[name]), override);
115
+ var _a, _b;
116
+ const features = createDefaultFeatures(options.mode);
117
+ if ((_a = options.features) === null || _a === void 0 ? void 0 : _a.disabled) {
118
+ for (const name of options.features.disabled) {
119
+ if (features[name]) {
120
+ features[name].enabled = false;
121
+ }
135
122
  }
136
123
  }
137
124
  return {
138
125
  mode: options.mode,
139
126
  features,
140
- coreResourceName: (_a = options.coreResourceName) !== null && _a !== void 0 ? _a : 'core',
141
- resourceGrants: options.resourceGrants,
127
+ coreResourceName: (_b = options.coreResourceName) !== null && _b !== void 0 ? _b : 'core',
142
128
  devMode: options.devMode,
129
+ onDependency: options.onDependency,
143
130
  };
144
131
  }
145
132
  function assertFeatureKeys(features) {
133
+ if (!features) {
134
+ throw new Error('[OpenCore] Runtime options are missing features configuration');
135
+ }
146
136
  const keys = Object.keys(features);
147
137
  for (const key of keys) {
148
138
  if (!FEATURE_NAMES.includes(key)) {
@@ -162,8 +152,7 @@ function validateRuntimeOptions(options) {
162
152
  const needsCoreExports = mode === 'RESOURCE' &&
163
153
  (features.players.provider === 'core' ||
164
154
  features.commands.provider === 'core' ||
165
- features.principal.provider === 'core' ||
166
- features.auth.provider === 'core');
155
+ features.principal.provider === 'core');
167
156
  // Validate coreResourceName exists if needed
168
157
  if (mode === 'RESOURCE') {
169
158
  const { coreResourceName } = options;
@@ -208,9 +197,6 @@ function validateRuntimeOptions(options) {
208
197
  if (features.principal.enabled && mode === 'RESOURCE' && features.principal.provider !== 'core') {
209
198
  throw new Error(`[OpenCore] Feature 'principal' must use provider 'core' in RESOURCE mode`);
210
199
  }
211
- if (features.auth.enabled && mode === 'RESOURCE' && features.auth.provider !== 'core') {
212
- throw new Error(`[OpenCore] Feature 'auth' must use provider 'core' in RESOURCE mode`);
213
- }
214
200
  if (features.commands.enabled && mode === 'RESOURCE' && features.commands.provider !== 'core') {
215
201
  throw new Error(`[OpenCore] Feature 'commands' must use provider 'core' in RESOURCE mode`);
216
202
  }
@@ -1,6 +1,6 @@
1
1
  import { INetTransport } from '../../../adapters/contracts/INetTransport';
2
- import { IPedAppearanceServer } from '../../../adapters/contracts/IPedAppearanceServer';
3
- import { IPlayerServer } from '../../../adapters/contracts/IPlayerServer';
2
+ import { IPedAppearanceServer } from '../../../adapters/contracts/server/IPedAppearanceServer';
3
+ import { IPlayerServer } from '../../../adapters/contracts/server/IPlayerServer';
4
4
  import { AppearanceValidationResult, PlayerAppearance } from '../../../kernel/shared';
5
5
  /**
6
6
  * Server-side appearance management service.
@@ -18,15 +18,15 @@ import { AppearanceValidationResult, PlayerAppearance } from '../../../kernel/sh
18
18
  * **Persistence:**
19
19
  * The framework does NOT handle persistence internally.
20
20
  * After calling `applyAppearance`, you receive the validated data back.
21
- * You decide when and where to save it (database, file, etc.).
21
+ * You decide when and where to save it (persistent storage, file, etc.).
22
22
  *
23
23
  * @example
24
24
  * ```typescript
25
25
  * // Apply appearance to a player
26
26
  * const result = await appearanceService.applyAppearance(playerSrc, appearanceData)
27
27
  * if (result.success) {
28
- * // Save to your database
29
- * await myDatabase.saveAppearance(playerId, result.appearance)
28
+ * // Save to your storage
29
+ * await myStorage.saveAppearance(playerId, result.appearance)
30
30
  * }
31
31
  *
32
32
  * // Validate appearance without applying
@@ -15,8 +15,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.AppearanceService = void 0;
16
16
  const tsyringe_1 = require("tsyringe");
17
17
  const INetTransport_1 = require("../../../adapters/contracts/INetTransport");
18
- const IPedAppearanceServer_1 = require("../../../adapters/contracts/IPedAppearanceServer");
19
- const IPlayerServer_1 = require("../../../adapters/contracts/IPlayerServer");
18
+ const IPedAppearanceServer_1 = require("../../../adapters/contracts/server/IPedAppearanceServer");
19
+ const IPlayerServer_1 = require("../../../adapters/contracts/server/IPlayerServer");
20
20
  /**
21
21
  * Server-side appearance management service.
22
22
  *
@@ -33,15 +33,15 @@ const IPlayerServer_1 = require("../../../adapters/contracts/IPlayerServer");
33
33
  * **Persistence:**
34
34
  * The framework does NOT handle persistence internally.
35
35
  * After calling `applyAppearance`, you receive the validated data back.
36
- * You decide when and where to save it (database, file, etc.).
36
+ * You decide when and where to save it (persistent storage, file, etc.).
37
37
  *
38
38
  * @example
39
39
  * ```typescript
40
40
  * // Apply appearance to a player
41
41
  * const result = await appearanceService.applyAppearance(playerSrc, appearanceData)
42
42
  * if (result.success) {
43
- * // Save to your database
44
- * await myDatabase.saveAppearance(playerId, result.appearance)
43
+ * // Save to your storage
44
+ * await myStorage.saveAppearance(playerId, result.appearance)
45
45
  * }
46
46
  *
47
47
  * // Validate appearance without applying
@@ -1,5 +1,6 @@
1
- import { Server } from '../../..';
2
- import { RGB } from '../../../kernel/utils';
1
+ import { INetTransport } from '../../../adapters/contracts/INetTransport';
2
+ import { RGB } from '../../../kernel/utils/rgb';
3
+ import { Server } from '..';
3
4
  import { PlayerDirectoryPort } from './ports/player-directory.port';
4
5
  /**
5
6
  * Service for sending chat messages to players.
@@ -9,7 +10,8 @@ import { PlayerDirectoryPort } from './ports/player-directory.port';
9
10
  */
10
11
  export declare class ChatService {
11
12
  private readonly playerDirectory;
12
- constructor(playerDirectory: PlayerDirectoryPort);
13
+ private readonly netTransport;
14
+ constructor(playerDirectory: PlayerDirectoryPort, netTransport: INetTransport);
13
15
  /**
14
16
  * Broadcast a chat message to all connected players.
15
17
  *