@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
@@ -8,9 +8,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.ChatService = void 0;
13
16
  const tsyringe_1 = require("tsyringe");
17
+ const INetTransport_1 = require("../../../adapters/contracts/INetTransport");
14
18
  const player_directory_port_1 = require("./ports/player-directory.port");
15
19
  /**
16
20
  * Service for sending chat messages to players.
@@ -19,8 +23,9 @@ const player_directory_port_1 = require("./ports/player-directory.port");
19
23
  * This service emits framework chat events over the network.
20
24
  */
21
25
  let ChatService = class ChatService {
22
- constructor(playerDirectory) {
26
+ constructor(playerDirectory, netTransport) {
23
27
  this.playerDirectory = playerDirectory;
28
+ this.netTransport = netTransport;
24
29
  }
25
30
  /**
26
31
  * Broadcast a chat message to all connected players.
@@ -30,7 +35,7 @@ let ChatService = class ChatService {
30
35
  * @param color - Message color (RGB). Defaults to white.
31
36
  */
32
37
  broadcast(message, author = 'SYSTEM', color = { r: 255, g: 255, b: 255 }) {
33
- emitNet('core:chat:message', -1, {
38
+ this.netTransport.emitNet('core:chat:message', 'all', {
34
39
  args: [author, message],
35
40
  color: color,
36
41
  });
@@ -44,7 +49,7 @@ let ChatService = class ChatService {
44
49
  * @param color - Message color (RGB).
45
50
  */
46
51
  sendPrivate(player, message, author = 'Private', color = { r: 200, g: 200, b: 200 }) {
47
- emitNet('core:chat:addMessage', player.clientID, {
52
+ this.netTransport.emitNet('core:chat:addMessage', player.clientID, {
48
53
  args: [author, message],
49
54
  color: color,
50
55
  });
@@ -55,7 +60,7 @@ let ChatService = class ChatService {
55
60
  * @param player - Target player.
56
61
  */
57
62
  clearChat(player) {
58
- emitNet('core:chat:clear', player.clientID);
63
+ this.netTransport.emitNet('core:chat:clear', player.clientID);
59
64
  }
60
65
  /**
61
66
  * Send a chat message to multiple players.
@@ -66,12 +71,10 @@ let ChatService = class ChatService {
66
71
  * @param color - Message color (RGB).
67
72
  */
68
73
  sendMany(players, message, author = 'SYSTEM', color = { r: 255, g: 255, b: 255 }) {
69
- players.forEach((p) => {
70
- const targetId = typeof p === 'number' ? p : p.clientID;
71
- emitNet('core:chat:addMessage', targetId, {
72
- args: [author, message],
73
- color: color,
74
- });
74
+ const targetIds = players.map((p) => (typeof p === 'number' ? p : p.clientID));
75
+ this.netTransport.emitNet('core:chat:addMessage', targetIds, {
76
+ args: [author, message],
77
+ color: color,
75
78
  });
76
79
  }
77
80
  /**
@@ -113,11 +116,13 @@ let ChatService = class ChatService {
113
116
  * Clear chat for all connected players.
114
117
  */
115
118
  clearChatAll() {
116
- emitNet('core:chat:clear', -1);
119
+ this.netTransport.emitNet('core:chat:clear', 'all');
117
120
  }
118
121
  };
119
122
  exports.ChatService = ChatService;
120
123
  exports.ChatService = ChatService = __decorate([
121
124
  (0, tsyringe_1.injectable)(),
122
- __metadata("design:paramtypes", [player_directory_port_1.PlayerDirectoryPort])
125
+ __param(1, (0, tsyringe_1.inject)(INetTransport_1.INetTransport)),
126
+ __metadata("design:paramtypes", [player_directory_port_1.PlayerDirectoryPort,
127
+ INetTransport_1.INetTransport])
123
128
  ], ChatService);
@@ -16,6 +16,13 @@ import { CommandExecutionPort, type CommandInfo } from '../ports/command-executi
16
16
  */
17
17
  export declare class CommandService extends CommandExecutionPort {
18
18
  private commands;
19
+ /**
20
+ * Returns decorator metadata for a registered command.
21
+ *
22
+ * @remarks
23
+ * Mainly used by controllers to enrich error observation (usage/description/etc.).
24
+ */
25
+ getCommandMeta(commandName: string): CommandMetadata | undefined;
19
26
  /**
20
27
  * Registers a command handler.
21
28
  *
@@ -28,7 +35,8 @@ export declare class CommandService extends CommandExecutionPort {
28
35
  *
29
36
  * @remarks
30
37
  * **Security**: Commands require authentication by default unless marked with @Public().
31
- * Unauthenticated attempts are blocked gracefully with player notification.
38
+ * Unauthenticated attempts are blocked by throwing an {@link AppError}.
39
+ * Higher-level controllers can observe the failure and decide how to notify the player.
32
40
  *
33
41
  * Argument parsing behavior depends on the schema:
34
42
  * - Zod object schema: maps raw args to parameter names.
@@ -8,8 +8,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.CommandService = void 0;
10
10
  const tsyringe_1 = require("tsyringe");
11
- const logger_1 = require("../../../../kernel/shared/logger");
12
- const utils_1 = require("../../../../kernel/utils");
11
+ const app_error_1 = require("../../../../kernel/error/app.error");
12
+ const logger_1 = require("../../../../kernel/logger");
13
13
  const command_validation_helper_1 = require("../../helpers/command-validation.helper");
14
14
  const command_execution_port_1 = require("../ports/command-execution.port");
15
15
  /**
@@ -30,6 +30,16 @@ let CommandService = class CommandService extends command_execution_port_1.Comma
30
30
  super(...arguments);
31
31
  this.commands = new Map();
32
32
  }
33
+ /**
34
+ * Returns decorator metadata for a registered command.
35
+ *
36
+ * @remarks
37
+ * Mainly used by controllers to enrich error observation (usage/description/etc.).
38
+ */
39
+ getCommandMeta(commandName) {
40
+ var _a;
41
+ return (_a = this.commands.get(commandName.toLowerCase())) === null || _a === void 0 ? void 0 : _a.meta;
42
+ }
33
43
  /**
34
44
  * Registers a command handler.
35
45
  *
@@ -57,7 +67,8 @@ let CommandService = class CommandService extends command_execution_port_1.Comma
57
67
  *
58
68
  * @remarks
59
69
  * **Security**: Commands require authentication by default unless marked with @Public().
60
- * Unauthenticated attempts are blocked gracefully with player notification.
70
+ * Unauthenticated attempts are blocked by throwing an {@link AppError}.
71
+ * Higher-level controllers can observe the failure and decide how to notify the player.
61
72
  *
62
73
  * Argument parsing behavior depends on the schema:
63
74
  * - Zod object schema: maps raw args to parameter names.
@@ -73,7 +84,7 @@ let CommandService = class CommandService extends command_execution_port_1.Comma
73
84
  async execute(player, commandName, args) {
74
85
  const entry = this.commands.get(commandName.toLowerCase());
75
86
  if (!entry)
76
- throw new utils_1.AppError('COMMAND:NOT_FOUND', `Command not found: ${commandName}`, 'client');
87
+ throw new app_error_1.AppError('COMMAND:NOT_FOUND', `Command not found: ${commandName}`, 'client');
77
88
  const { meta, handler, isPublic } = entry;
78
89
  // ═══════════════════════════════════════════════════════════════
79
90
  // SECURE BY DEFAULT: Require authentication unless @Public()
@@ -84,9 +95,7 @@ let CommandService = class CommandService extends command_execution_port_1.Comma
84
95
  command: commandName,
85
96
  clientId: player.clientID,
86
97
  });
87
- player.emit('core:auth:required', { command: commandName });
88
- player.send('You must be authenticated to use this command', 'error');
89
- return;
98
+ throw new app_error_1.AppError('AUTH:UNAUTHORIZED', 'You must be authenticated to use this command', 'client');
90
99
  }
91
100
  }
92
101
  return await (0, command_validation_helper_1.validateAndExecuteCommand)(meta, player, args, handler);
@@ -1,7 +1,8 @@
1
1
  import { IPlayerInfo } from '../../../../adapters';
2
- import { IEntityServer } from '../../../../adapters/contracts/IEntityServer';
3
2
  import { INetTransport } from '../../../../adapters/contracts/INetTransport';
4
- import { IPlayerServer } from '../../../../adapters/contracts/IPlayerServer';
3
+ import { IEntityServer } from '../../../../adapters/contracts/server/IEntityServer';
4
+ import { IPlayerServer } from '../../../../adapters/contracts/server/IPlayerServer';
5
+ import { WorldContext } from '../../../core/world';
5
6
  import { Player } from '../../entities';
6
7
  import { PlayerDirectoryPort } from '../ports/player-directory.port';
7
8
  import { PlayerSessionLifecyclePort } from '../ports/player-session-lifecycle.port';
@@ -16,19 +17,14 @@ import { PlayerSession } from '../types/player-session.object';
16
17
  * It exposes the operations defined by {@link PlayerDirectoryPort} and {@link PlayerSessionLifecyclePort}.
17
18
  */
18
19
  export declare class PlayerService implements PlayerDirectoryPort, PlayerSessionLifecyclePort {
20
+ private readonly world;
19
21
  private readonly playerInfo;
20
22
  private readonly playerServer;
21
23
  private readonly entityServer;
22
24
  private readonly netTransport;
23
- /**
24
- * Internal map storing active player sessions indexed by their FiveM client ID (source).
25
- */
26
- private playersByClient;
27
- /**
28
- * Cached adapters bundle for Player instances
29
- */
30
25
  private readonly playerAdapters;
31
- constructor(playerInfo: IPlayerInfo, playerServer: IPlayerServer, entityServer: IEntityServer, netTransport: INetTransport);
26
+ constructor(world: WorldContext, playerInfo: IPlayerInfo, playerServer: IPlayerServer, entityServer: IEntityServer, netTransport: INetTransport);
27
+ private isPlayer;
32
28
  /**
33
29
  * Initializes a new player session for a connecting client.
34
30
  *
@@ -57,6 +53,12 @@ export declare class PlayerService implements PlayerDirectoryPort, PlayerSession
57
53
  */
58
54
  getByClient(clientID: number): Player | undefined;
59
55
  getMany(clientIds: number[]): Player[];
56
+ /**
57
+ * Returns a list of all currently active `Player` entities.
58
+ *
59
+ * @returns An array containing all connected players managed by this service.
60
+ */
61
+ getAll(): Player[];
60
62
  /**
61
63
  * Helper to retrieve the authenticated Account ID for a given client.
62
64
  *
@@ -82,12 +84,6 @@ export declare class PlayerService implements PlayerDirectoryPort, PlayerSession
82
84
  * @returns The value cast to type `T`, or `undefined` if the key or player doesn't exist.
83
85
  */
84
86
  getMeta<T = unknown>(clientID: number, key: string): Promise<T | undefined>;
85
- /**
86
- * Returns a list of all currently active `Player` entities.
87
- *
88
- * @returns An array containing all connected players managed by this service.
89
- */
90
- getAll(): Player[];
91
87
  /**
92
88
  * Retrieves a Player by their persistent account ID.
93
89
  *
@@ -15,10 +15,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.PlayerService = void 0;
16
16
  const tsyringe_1 = require("tsyringe");
17
17
  const adapters_1 = require("../../../../adapters");
18
- const IEntityServer_1 = require("../../../../adapters/contracts/IEntityServer");
19
18
  const INetTransport_1 = require("../../../../adapters/contracts/INetTransport");
20
- const IPlayerServer_1 = require("../../../../adapters/contracts/IPlayerServer");
21
- const logger_1 = require("../../../../kernel/shared/logger");
19
+ const IEntityServer_1 = require("../../../../adapters/contracts/server/IEntityServer");
20
+ const IPlayerServer_1 = require("../../../../adapters/contracts/server/IPlayerServer");
21
+ const logger_1 = require("../../../../kernel/logger");
22
+ const world_1 = require("../../../core/world");
22
23
  const entities_1 = require("../../entities");
23
24
  /**
24
25
  * Service responsible for managing the lifecycle of player sessions.
@@ -30,15 +31,12 @@ const entities_1 = require("../../entities");
30
31
  * It exposes the operations defined by {@link PlayerDirectoryPort} and {@link PlayerSessionLifecyclePort}.
31
32
  */
32
33
  let PlayerService = class PlayerService {
33
- constructor(playerInfo, playerServer, entityServer, netTransport) {
34
+ constructor(world, playerInfo, playerServer, entityServer, netTransport) {
35
+ this.world = world;
34
36
  this.playerInfo = playerInfo;
35
37
  this.playerServer = playerServer;
36
38
  this.entityServer = entityServer;
37
39
  this.netTransport = netTransport;
38
- /**
39
- * Internal map storing active player sessions indexed by their FiveM client ID (source).
40
- */
41
- this.playersByClient = new Map();
42
40
  this.playerAdapters = {
43
41
  playerInfo: this.playerInfo,
44
42
  playerServer: this.playerServer,
@@ -46,6 +44,9 @@ let PlayerService = class PlayerService {
46
44
  netTransport: this.netTransport,
47
45
  };
48
46
  }
47
+ isPlayer(e) {
48
+ return e.id.startsWith('player:');
49
+ }
49
50
  /**
50
51
  * Initializes a new player session for a connecting client.
51
52
  *
@@ -63,10 +64,10 @@ let PlayerService = class PlayerService {
63
64
  meta: {},
64
65
  };
65
66
  const player = new entities_1.Player(session, this.playerAdapters);
66
- this.playersByClient.set(clientID, player);
67
+ this.world.add(player);
67
68
  logger_1.loggers.session.debug('Player session bound', {
68
69
  clientID,
69
- totalPlayers: this.playersByClient.size,
70
+ totalPlayers: this.world.sizeBy('player'),
70
71
  });
71
72
  return player;
72
73
  }
@@ -79,10 +80,12 @@ let PlayerService = class PlayerService {
79
80
  * @param clientID - The FiveM server ID of the player disconnecting.
80
81
  */
81
82
  unbind(clientID) {
82
- this.playersByClient.delete(clientID);
83
+ const player = this.getByClient(clientID);
84
+ if (player)
85
+ this.world.remove(player.id);
83
86
  logger_1.loggers.session.debug('Player session unbound', {
84
87
  clientID,
85
- totalPlayers: this.playersByClient.size,
88
+ totalPlayers: this.world.sizeBy('player'),
86
89
  });
87
90
  }
88
91
  /**
@@ -92,17 +95,25 @@ let PlayerService = class PlayerService {
92
95
  * @returns The `Player` instance if found, or `null` if the session does not exist.
93
96
  */
94
97
  getByClient(clientID) {
95
- return this.playersByClient.get(clientID);
98
+ return this.world.get(`player:${clientID}`);
96
99
  }
97
100
  getMany(clientIds) {
98
101
  const result = [];
99
102
  for (const id of clientIds) {
100
- const player = this.playersByClient.get(id);
101
- if (player)
102
- result.push(player);
103
+ const p = this.getByClient(id);
104
+ if (p)
105
+ result.push(p);
103
106
  }
104
107
  return result;
105
108
  }
109
+ /**
110
+ * Returns a list of all currently active `Player` entities.
111
+ *
112
+ * @returns An array containing all connected players managed by this service.
113
+ */
114
+ getAll() {
115
+ return this.world.find(this.isPlayer);
116
+ }
106
117
  /**
107
118
  * Helper to retrieve the authenticated Account ID for a given client.
108
119
  *
@@ -110,8 +121,8 @@ let PlayerService = class PlayerService {
110
121
  * @returns The bound Account ID (string/UUID) if the player is logged in, or `null` otherwise.
111
122
  */
112
123
  getPlayerId(clientID) {
113
- const player = this.playersByClient.get(clientID);
114
- return player === null || player === void 0 ? void 0 : player.accountID;
124
+ var _a;
125
+ return (_a = this.getByClient(clientID)) === null || _a === void 0 ? void 0 : _a.accountID;
115
126
  }
116
127
  /**
117
128
  * Stores arbitrary metadata in the player's session.
@@ -122,7 +133,7 @@ let PlayerService = class PlayerService {
122
133
  * @param value - The value to store.
123
134
  */
124
135
  setMeta(clientID, key, value) {
125
- const player = this.playersByClient.get(clientID);
136
+ const player = this.getByClient(clientID);
126
137
  if (!player)
127
138
  return;
128
139
  player.setMeta(key, value);
@@ -136,16 +147,8 @@ let PlayerService = class PlayerService {
136
147
  * @returns The value cast to type `T`, or `undefined` if the key or player doesn't exist.
137
148
  */
138
149
  async getMeta(clientID, key) {
139
- const player = this.playersByClient.get(clientID);
140
- return await (player === null || player === void 0 ? void 0 : player.getMeta(key));
141
- }
142
- /**
143
- * Returns a list of all currently active `Player` entities.
144
- *
145
- * @returns An array containing all connected players managed by this service.
146
- */
147
- getAll() {
148
- return Array.from(this.playersByClient.values());
150
+ var _a;
151
+ return (_a = this.getByClient(clientID)) === null || _a === void 0 ? void 0 : _a.getMeta(key);
149
152
  }
150
153
  // ═══════════════════════════════════════════════════════════════
151
154
  // Extended Query Methods
@@ -157,12 +160,7 @@ let PlayerService = class PlayerService {
157
160
  * @returns The Player if found, or `undefined` if not online.
158
161
  */
159
162
  getByAccountId(accountId) {
160
- for (const player of this.playersByClient.values()) {
161
- if (player.accountID === accountId) {
162
- return player;
163
- }
164
- }
165
- return undefined;
163
+ return this.world.find(this.isPlayer).find((p) => p.accountID === accountId);
166
164
  }
167
165
  /**
168
166
  * Returns the current number of connected players.
@@ -170,7 +168,7 @@ let PlayerService = class PlayerService {
170
168
  * @returns Player count.
171
169
  */
172
170
  getPlayerCount() {
173
- return this.playersByClient.size;
171
+ return this.world.sizeBy('player');
174
172
  }
175
173
  /**
176
174
  * Checks if a player with the given account ID is currently online.
@@ -179,22 +177,19 @@ let PlayerService = class PlayerService {
179
177
  * @returns `true` if online, `false` otherwise.
180
178
  */
181
179
  isOnline(accountId) {
182
- for (const player of this.playersByClient.values()) {
183
- if (player.accountID === accountId) {
184
- return true;
185
- }
186
- }
187
- return false;
180
+ return !!this.getByAccountId(accountId);
188
181
  }
189
182
  };
190
183
  exports.PlayerService = PlayerService;
191
184
  exports.PlayerService = PlayerService = __decorate([
192
185
  (0, tsyringe_1.injectable)(),
193
- __param(0, (0, tsyringe_1.inject)(adapters_1.IPlayerInfo)),
194
- __param(1, (0, tsyringe_1.inject)(IPlayerServer_1.IPlayerServer)),
195
- __param(2, (0, tsyringe_1.inject)(IEntityServer_1.IEntityServer)),
196
- __param(3, (0, tsyringe_1.inject)(INetTransport_1.INetTransport)),
197
- __metadata("design:paramtypes", [adapters_1.IPlayerInfo,
186
+ __param(0, (0, tsyringe_1.inject)(world_1.WorldContext)),
187
+ __param(1, (0, tsyringe_1.inject)(adapters_1.IPlayerInfo)),
188
+ __param(2, (0, tsyringe_1.inject)(IPlayerServer_1.IPlayerServer)),
189
+ __param(3, (0, tsyringe_1.inject)(IEntityServer_1.IEntityServer)),
190
+ __param(4, (0, tsyringe_1.inject)(INetTransport_1.INetTransport)),
191
+ __metadata("design:paramtypes", [world_1.WorldContext,
192
+ adapters_1.IPlayerInfo,
198
193
  IPlayerServer_1.IPlayerServer,
199
194
  IEntityServer_1.IEntityServer,
200
195
  INetTransport_1.INetTransport])
@@ -11,7 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.LocalPrincipalService = void 0;
13
13
  const tsyringe_1 = require("tsyringe");
14
- const utils_1 = require("../../../../kernel/utils");
14
+ const app_error_1 = require("../../../../kernel/error/app.error");
15
15
  const contracts_1 = require("../../contracts");
16
16
  const principal_port_1 = require("../ports/principal.port");
17
17
  /**
@@ -102,19 +102,19 @@ let LocalPrincipalService = class LocalPrincipalService extends principal_port_1
102
102
  if (requirements.rank !== undefined) {
103
103
  const principal = await this.provider.getPrincipal(player);
104
104
  if (!principal) {
105
- throw new utils_1.AppError('AUTH:UNAUTHORIZED', 'No principal found', 'core');
105
+ throw new app_error_1.AppError('AUTH:UNAUTHORIZED', 'No principal found', 'core');
106
106
  }
107
107
  if (principal.rank === undefined) {
108
- throw new utils_1.AppError('GAME:NO_RANK_IN_PRINCIPAL', "You're trying to compare a Principal rank, but there's no defined rank!", 'core');
108
+ throw new app_error_1.AppError('GAME:NO_RANK_IN_PRINCIPAL', "You're trying to compare a Principal rank, but there's no defined rank!", 'core');
109
109
  }
110
110
  if (principal.rank < requirements.rank) {
111
- throw new utils_1.AppError('AUTH:PERMISSION_DENIED', `Access Denied: Requires minimum rank level ${requirements.rank}`, 'core');
111
+ throw new app_error_1.AppError('AUTH:PERMISSION_DENIED', `Access Denied: Requires minimum rank level ${requirements.rank}`, 'core');
112
112
  }
113
113
  }
114
114
  if (requirements.permission) {
115
115
  const hasPerm = await this.hasPermission(player, requirements.permission);
116
116
  if (!hasPerm) {
117
- throw new utils_1.AppError('AUTH:PERMISSION_DENIED', `Access Denied: Missing required permission '${requirements.permission}'`, 'core');
117
+ throw new app_error_1.AppError('AUTH:PERMISSION_DENIED', `Access Denied: Missing required permission '${requirements.permission}'`, 'core');
118
118
  }
119
119
  }
120
120
  }
@@ -1,4 +1,4 @@
1
- import { IPlayerServer } from '../../../../adapters/contracts/IPlayerServer';
1
+ import { IPlayerServer } from '../../../../adapters/contracts/server/IPlayerServer';
2
2
  import { PlayerDirectoryPort } from '../ports/player-directory.port';
3
3
  import { PlayerSessionLifecyclePort } from '../ports/player-session-lifecycle.port';
4
4
  /**
@@ -11,8 +11,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.SessionRecoveryService = void 0;
13
13
  const tsyringe_1 = require("tsyringe");
14
- const IPlayerServer_1 = require("../../../../adapters/contracts/IPlayerServer");
15
- const logger_1 = require("../../../../kernel/shared/logger");
14
+ const IPlayerServer_1 = require("../../../../adapters/contracts/server/IPlayerServer");
15
+ const logger_1 = require("../../../../kernel/logger");
16
16
  const internal_event_bus_1 = require("../../bus/internal-event.bus");
17
17
  const player_directory_port_1 = require("../ports/player-directory.port");
18
18
  const player_session_lifecycle_port_1 = require("../ports/player-session-lifecycle.port");
@@ -0,0 +1,14 @@
1
+ import { type CommandErrorContext, CommandErrorObserverContract } from '../../contracts/security/command-error-observer.contract';
2
+ /**
3
+ * Default implementation for {@link CommandErrorObserverContract}.
4
+ *
5
+ * @remarks
6
+ * The framework ships with a safe default that only logs.
7
+ * Projects can override this by registering their own observer in the DI container.
8
+ */
9
+ export declare class DefaultCommandErrorObserver extends CommandErrorObserverContract {
10
+ /**
11
+ * Logs the error context using the command logger.
12
+ */
13
+ onError(ctx: CommandErrorContext): Promise<void>;
14
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DefaultCommandErrorObserver = void 0;
10
+ const tsyringe_1 = require("tsyringe");
11
+ const logger_1 = require("../../../../kernel/logger");
12
+ const command_error_observer_contract_1 = require("../../contracts/security/command-error-observer.contract");
13
+ /**
14
+ * Default implementation for {@link CommandErrorObserverContract}.
15
+ *
16
+ * @remarks
17
+ * The framework ships with a safe default that only logs.
18
+ * Projects can override this by registering their own observer in the DI container.
19
+ */
20
+ let DefaultCommandErrorObserver = class DefaultCommandErrorObserver extends command_error_observer_contract_1.CommandErrorObserverContract {
21
+ /**
22
+ * Logs the error context using the command logger.
23
+ */
24
+ async onError(ctx) {
25
+ logger_1.loggers.command.error(`Command error`, {
26
+ mode: ctx.mode,
27
+ scope: ctx.scope,
28
+ stage: ctx.stage,
29
+ command: ctx.commandName,
30
+ ownerResourceName: ctx.ownerResourceName,
31
+ playerId: ctx.player.clientId,
32
+ accountId: ctx.player.accountId,
33
+ code: ctx.error.code,
34
+ origin: ctx.error.origin,
35
+ message: ctx.error.message,
36
+ details: ctx.error.details,
37
+ });
38
+ }
39
+ };
40
+ exports.DefaultCommandErrorObserver = DefaultCommandErrorObserver;
41
+ exports.DefaultCommandErrorObserver = DefaultCommandErrorObserver = __decorate([
42
+ (0, tsyringe_1.injectable)()
43
+ ], DefaultCommandErrorObserver);
@@ -0,0 +1,13 @@
1
+ import { Server } from '../..';
2
+ import { Principal } from '../../contracts/security/permission.types';
3
+ import { PrincipalProviderContract } from '../../contracts/security/principal-provider.contract';
4
+ import { LinkedID } from '../types/linked-id';
5
+ /**
6
+ * Default principal provider that grants no permissions.
7
+ * Used when no custom principal provider is configured.
8
+ */
9
+ export declare class DefaultPrincipalProvider extends PrincipalProviderContract {
10
+ getPrincipal(player: Server.Player): Promise<Principal | null>;
11
+ refreshPrincipal(_player: Server.Player): Promise<void>;
12
+ getPrincipalByLinkedID(linkedID: LinkedID): Promise<Principal | null>;
13
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DefaultPrincipalProvider = void 0;
10
+ const tsyringe_1 = require("tsyringe");
11
+ const principal_provider_contract_1 = require("../../contracts/security/principal-provider.contract");
12
+ /**
13
+ * Default principal provider that grants no permissions.
14
+ * Used when no custom principal provider is configured.
15
+ */
16
+ let DefaultPrincipalProvider = class DefaultPrincipalProvider extends principal_provider_contract_1.PrincipalProviderContract {
17
+ async getPrincipal(player) {
18
+ return {
19
+ id: player.accountID || player.clientID.toString(),
20
+ permissions: [],
21
+ rank: 0,
22
+ };
23
+ }
24
+ async refreshPrincipal(_player) {
25
+ // No-op
26
+ }
27
+ async getPrincipalByLinkedID(linkedID) {
28
+ return {
29
+ id: String(linkedID),
30
+ permissions: [],
31
+ rank: 0,
32
+ };
33
+ }
34
+ };
35
+ exports.DefaultPrincipalProvider = DefaultPrincipalProvider;
36
+ exports.DefaultPrincipalProvider = DefaultPrincipalProvider = __decorate([
37
+ (0, tsyringe_1.injectable)()
38
+ ], DefaultPrincipalProvider);
@@ -1,4 +1,4 @@
1
- import { SecurityError } from '../../../../kernel/utils/error/security.error';
1
+ import { SecurityError } from '../../../../kernel/error/security.error';
2
2
  import { SecurityHandlerContract } from '../../contracts/security/security-handler.contract';
3
3
  import { Player } from '../../entities';
4
4
  /**
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.DefaultSecurityHandler = void 0;
10
10
  const tsyringe_1 = require("tsyringe");
11
- const logger_1 = require("../../../../kernel/shared/logger");
11
+ const logger_1 = require("../../../../kernel/logger");
12
12
  const security_handler_contract_1 = require("../../contracts/security/security-handler.contract");
13
13
  /**
14
14
  * Default implementation of the security handler.
@@ -1,9 +1,6 @@
1
- export * from '../database';
2
1
  export * from './appearance.service';
3
2
  export { ChatService } from './chat.service';
4
- export { ConfigService } from './config.service';
5
3
  export { SessionRecoveryService } from './core/session-recovery.service';
6
- export { type HttpOptions, HttpService } from './http/http.service';
7
4
  export * from './parallel';
8
5
  export { PlayerPersistenceService } from './persistence.service';
9
6
  export * from './ports/command-execution.port';
@@ -15,17 +15,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
16
  };
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.RateLimiterService = exports.PlayerPersistenceService = exports.HttpService = exports.SessionRecoveryService = exports.ConfigService = exports.ChatService = void 0;
19
- __exportStar(require("../database"), exports);
18
+ exports.RateLimiterService = exports.PlayerPersistenceService = exports.SessionRecoveryService = exports.ChatService = void 0;
20
19
  __exportStar(require("./appearance.service"), exports);
21
20
  var chat_service_1 = require("./chat.service");
22
21
  Object.defineProperty(exports, "ChatService", { enumerable: true, get: function () { return chat_service_1.ChatService; } });
23
- var config_service_1 = require("./config.service");
24
- Object.defineProperty(exports, "ConfigService", { enumerable: true, get: function () { return config_service_1.ConfigService; } });
25
22
  var session_recovery_service_1 = require("./core/session-recovery.service");
26
23
  Object.defineProperty(exports, "SessionRecoveryService", { enumerable: true, get: function () { return session_recovery_service_1.SessionRecoveryService; } });
27
- var http_service_1 = require("./http/http.service");
28
- Object.defineProperty(exports, "HttpService", { enumerable: true, get: function () { return http_service_1.HttpService; } });
29
24
  __exportStar(require("./parallel"), exports);
30
25
  var persistence_service_1 = require("./persistence.service");
31
26
  Object.defineProperty(exports, "PlayerPersistenceService", { enumerable: true, get: function () { return persistence_service_1.PlayerPersistenceService; } });