@open-core/framework 0.2.9 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) 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 +84 -108
  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 +94 -28
  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 +4 -0
  153. package/dist/runtime/server/controllers/ready.controller.js +32 -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 +79 -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/command-validation.helper.d.ts +0 -3
  183. package/dist/runtime/server/helpers/command-validation.helper.js +3 -7
  184. package/dist/runtime/server/helpers/normalize-app-error.d.ts +9 -0
  185. package/dist/runtime/server/helpers/normalize-app-error.js +20 -0
  186. package/dist/runtime/server/helpers/process-tuple-schema.d.ts +20 -0
  187. package/dist/runtime/server/helpers/process-tuple-schema.js +51 -0
  188. package/dist/runtime/server/helpers/resolve-method.js +3 -3
  189. package/dist/runtime/server/index.d.ts +1 -13
  190. package/dist/runtime/server/index.js +25 -23
  191. package/dist/runtime/server/runtime.d.ts +32 -281
  192. package/dist/runtime/server/runtime.js +46 -60
  193. package/dist/runtime/server/services/appearance.service.d.ts +5 -5
  194. package/dist/runtime/server/services/appearance.service.js +5 -5
  195. package/dist/runtime/server/services/chat.service.d.ts +5 -3
  196. package/dist/runtime/server/services/chat.service.js +17 -12
  197. package/dist/runtime/server/services/core/command.service.d.ts +9 -1
  198. package/dist/runtime/server/services/core/command.service.js +16 -7
  199. package/dist/runtime/server/services/core/player.service.d.ts +12 -16
  200. package/dist/runtime/server/services/core/player.service.js +42 -47
  201. package/dist/runtime/server/services/core/principal.service.js +5 -5
  202. package/dist/runtime/server/services/core/session-recovery.service.d.ts +1 -1
  203. package/dist/runtime/server/services/core/session-recovery.service.js +2 -2
  204. package/dist/runtime/server/services/default/default-command-error-observer.d.ts +14 -0
  205. package/dist/runtime/server/services/default/default-command-error-observer.js +43 -0
  206. package/dist/runtime/server/services/default/default-principal.provider.d.ts +13 -0
  207. package/dist/runtime/server/services/default/default-principal.provider.js +38 -0
  208. package/dist/runtime/server/services/default/default-security.handler.d.ts +1 -1
  209. package/dist/runtime/server/services/default/default-security.handler.js +1 -1
  210. package/dist/runtime/server/services/index.d.ts +0 -3
  211. package/dist/runtime/server/services/index.js +1 -6
  212. package/dist/runtime/server/services/persistence.service.js +3 -3
  213. package/dist/runtime/server/services/ports/command-execution.port.d.ts +7 -0
  214. package/dist/runtime/server/services/ports/principal.port.d.ts +1 -1
  215. package/dist/runtime/server/services/remote/remote-command.service.d.ts +1 -0
  216. package/dist/runtime/server/services/remote/remote-command.service.js +30 -11
  217. package/dist/runtime/server/services/remote/remote-player.service.d.ts +2 -2
  218. package/dist/runtime/server/services/remote/remote-player.service.js +3 -3
  219. package/dist/runtime/server/services/remote/server-bridge.js +2 -2
  220. package/dist/runtime/server/services/services.register.d.ts +2 -5
  221. package/dist/runtime/server/services/services.register.js +29 -41
  222. package/dist/runtime/server/services/vehicle-modification.service.js +1 -1
  223. package/dist/runtime/server/services/vehicle.service.d.ts +3 -3
  224. package/dist/runtime/server/services/vehicle.service.js +5 -5
  225. package/dist/runtime/server/setup.d.ts +2 -3
  226. package/dist/runtime/server/setup.js +10 -11
  227. package/dist/runtime/server/system/metadata-server.keys.d.ts +1 -1
  228. package/dist/runtime/server/system/metadata-server.keys.js +1 -1
  229. package/dist/runtime/server/system/processors/command.processor.js +4 -0
  230. package/dist/runtime/server/system/processors/export.processor.js +1 -1
  231. package/dist/runtime/server/system/processors/internalEvent.processor.js +1 -1
  232. package/dist/runtime/server/system/processors/netEvent.processor.js +11 -10
  233. package/dist/runtime/server/system/processors/{fivemEvent.processor.d.ts → runtimeEvent.processor.d.ts} +1 -1
  234. package/dist/runtime/server/system/processors/{fivemEvent.processor.js → runtimeEvent.processor.js} +8 -8
  235. package/dist/runtime/server/system/processors/tick.processor.js +1 -1
  236. package/dist/runtime/server/system/processors.register.js +16 -11
  237. package/dist/runtime/server/system/schema-generator.js +5 -3
  238. package/dist/runtime/server/types/core-exports.d.ts +6 -6
  239. package/dist/runtime/server/types/index.d.ts +1 -1
  240. package/dist/runtime/server/types/index.js +1 -1
  241. package/dist/runtime/server/types/internal-events.d.ts +1 -1
  242. package/dist/runtime/server/types/vehicle.types.d.ts +1 -1
  243. package/package.json +7 -15
  244. package/dist/adapters/contracts/IEntityServer.d.ts +0 -88
  245. package/dist/adapters/contracts/IEntityServer.js +0 -13
  246. package/dist/adapters/contracts/IPlayerServer.js +0 -13
  247. package/dist/adapters/database/oxmysql.adapter.d.ts +0 -89
  248. package/dist/adapters/database/oxmysql.adapter.js +0 -149
  249. package/dist/adapters/database/resource.adapter.d.ts +0 -12
  250. package/dist/adapters/database/resource.adapter.js +0 -68
  251. package/dist/kernel/shared/appearance/index.d.ts +0 -1
  252. package/dist/runtime/index.d.ts +0 -2
  253. package/dist/runtime/index.js +0 -39
  254. package/dist/runtime/server/bootstrap.validation.d.ts +0 -12
  255. package/dist/runtime/server/bootstrap.validation.js +0 -104
  256. package/dist/runtime/server/contracts/auth-provider.contract.d.ts +0 -58
  257. package/dist/runtime/server/contracts/auth-provider.contract.js +0 -23
  258. package/dist/runtime/server/contracts/repository/index.d.ts +0 -57
  259. package/dist/runtime/server/contracts/repository/index.js +0 -61
  260. package/dist/runtime/server/contracts/repository/repository.contract.d.ts +0 -224
  261. package/dist/runtime/server/contracts/repository/repository.contract.js +0 -341
  262. package/dist/runtime/server/contracts/repository/repository.types.d.ts +0 -51
  263. package/dist/runtime/server/contracts/repository/repository.types.js +0 -7
  264. package/dist/runtime/server/database/adapter.registry.d.ts +0 -4
  265. package/dist/runtime/server/database/adapter.registry.js +0 -14
  266. package/dist/runtime/server/database/database.contract.d.ts +0 -128
  267. package/dist/runtime/server/database/database.contract.js +0 -29
  268. package/dist/runtime/server/database/database.service.d.ts +0 -188
  269. package/dist/runtime/server/database/database.service.js +0 -287
  270. package/dist/runtime/server/database/index.d.ts +0 -5
  271. package/dist/runtime/server/database/index.js +0 -25
  272. package/dist/runtime/server/database/types.d.ts +0 -67
  273. package/dist/runtime/server/database/types.js +0 -7
  274. package/dist/runtime/server/database.d.ts +0 -7
  275. package/dist/runtime/server/devmode/hot-reload.server.d.ts +0 -74
  276. package/dist/runtime/server/devmode/hot-reload.server.js +0 -261
  277. package/dist/runtime/server/services/config.service.d.ts +0 -75
  278. package/dist/runtime/server/services/config.service.js +0 -116
  279. package/dist/runtime/server/services/http/http.service.d.ts +0 -50
  280. package/dist/runtime/server/services/http/http.service.js +0 -126
  281. /package/dist/adapters/contracts/{IPedAppearanceClient.js → client/IPedAppearanceClient.js} +0 -0
  282. /package/dist/adapters/contracts/{IPedAppearanceServer.d.ts → server/IPedAppearanceServer.d.ts} +0 -0
  283. /package/dist/adapters/contracts/{IPedAppearanceServer.js → server/IPedAppearanceServer.js} +0 -0
  284. /package/dist/adapters/contracts/{IVehicleServer.d.ts → server/IVehicleServer.d.ts} +0 -0
  285. /package/dist/adapters/contracts/{IVehicleServer.js → server/IVehicleServer.js} +0 -0
  286. /package/dist/kernel/{utils/error → error}/app.error.js +0 -0
  287. /package/dist/kernel/{shared/logger/transports/transport.interface.js → error/common.error-codes.js} +0 -0
  288. /package/dist/{runtime/server/types/security.types.js → kernel/error/framework.error-codes.js} +0 -0
  289. /package/dist/kernel/{utils/error → error}/security.error.js +0 -0
  290. /package/dist/{runtime/server/types → kernel/error}/security.types.d.ts +0 -0
  291. /package/dist/kernel/{shared/logger → logger}/index.d.ts +0 -0
  292. /package/dist/kernel/{shared/logger → logger}/index.js +0 -0
  293. /package/dist/kernel/{shared/logger → logger}/logger.config.d.ts +0 -0
  294. /package/dist/kernel/{shared/logger → logger}/logger.config.js +0 -0
  295. /package/dist/kernel/{shared/logger → logger}/logger.types.d.ts +0 -0
  296. /package/dist/kernel/{shared/logger → logger}/logger.types.js +0 -0
  297. /package/dist/kernel/{shared/logger → logger}/transports/buffered.transport.d.ts +0 -0
  298. /package/dist/kernel/{shared/logger → logger}/transports/buffered.transport.js +0 -0
  299. /package/dist/kernel/{shared/logger → logger}/transports/console.transport.d.ts +0 -0
  300. /package/dist/kernel/{shared/logger → logger}/transports/console.transport.js +0 -0
  301. /package/dist/kernel/{shared/logger → logger}/transports/dev-transport.factory.d.ts +0 -0
  302. /package/dist/kernel/{shared/logger → logger}/transports/dev-transport.factory.js +0 -0
  303. /package/dist/kernel/{shared/logger → logger}/transports/http.transport.d.ts +0 -0
  304. /package/dist/kernel/{shared/logger → logger}/transports/http.transport.js +0 -0
  305. /package/dist/kernel/{shared/logger → logger}/transports/index.d.ts +0 -0
  306. /package/dist/kernel/{shared/logger → logger}/transports/index.js +0 -0
  307. /package/dist/kernel/{shared/logger → logger}/transports/simple-console.transport.d.ts +0 -0
  308. /package/dist/kernel/{shared/logger → logger}/transports/simple-console.transport.js +0 -0
  309. /package/dist/kernel/{shared/logger → logger}/transports/transport.interface.d.ts +0 -0
  310. /package/dist/kernel/{shared/logger → logger}/transports/websocket.transport.d.ts +0 -0
  311. /package/dist/kernel/{shared/logger → logger}/transports/websocket.transport.js +0 -0
  312. /package/dist/kernel/shared/{appearance/appearance.interface.d.ts → player-appearance.types.d.ts} +0 -0
  313. /package/dist/kernel/shared/{appearance/appearance.interface.js → player-appearance.types.js} +0 -0
@@ -1,17 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Player = void 0;
4
+ const entity_1 = require("../../core/entity");
4
5
  /**
5
6
  * Core-level representation of a connected player on the server.
6
7
  *
7
- * This class wraps FiveM natives and session information.
8
+ * @remarks
9
+ * This class wraps platform natives and session information.
8
10
  * It serves as an abstraction layer to interact with the connected client
9
11
  * (kicking, teleporting, emitting events) without dealing with raw IDs everywhere.
10
12
  *
11
- * ⚠️ **Design Note:** This class does NOT contain gameplay logic (money, jobs, inventory).
13
+ * **Design Note:** This class does NOT contain gameplay logic (money, jobs, inventory).
12
14
  * Domain logic should live in your modules' services/models (e.g., `EconomyService`, `JobModel`).
15
+ *
16
+ * This class is platform-agnostic and works across different game engines
17
+ * (FiveM, RageMP, alt:V, etc.) through the adapter pattern.
13
18
  */
14
- class Player {
19
+ class Player extends entity_1.BaseEntity {
15
20
  /**
16
21
  * Creates a new Player entity instance.
17
22
  * This is typically instantiated by the `PlayerService` upon connection.
@@ -20,25 +25,18 @@ class Player {
20
25
  * @param adapters - Platform adapters for player operations.
21
26
  */
22
27
  constructor(session, adapters) {
28
+ super(`player:${session.clientID}`);
23
29
  this.session = session;
24
30
  this.adapters = adapters;
25
- this.states = new Set();
26
31
  this.position = adapters.playerInfo.getPlayerPosition(session.clientID);
27
32
  }
28
33
  /**
29
- * The numeric FiveM Server ID (Source) of the player.
30
- * Useful for internal logic and array indexing.
34
+ * The numeric client/server ID of the player.
35
+ * This is the platform-specific player identifier used for native calls.
31
36
  */
32
37
  get clientID() {
33
38
  return this.session.clientID;
34
39
  }
35
- /**
36
- * The FiveM Server ID as a string.
37
- * Required by most FiveM native functions (e.g., `GetPlayerName`, `DropPlayer`).
38
- */
39
- get clientIDStr() {
40
- return this.session.clientID.toString();
41
- }
42
40
  /**
43
41
  * The persistent Account ID linked to this session, if the player is authenticated.
44
42
  * Returns `undefined` if the player has not logged in yet.
@@ -48,37 +46,69 @@ class Player {
48
46
  return (_a = this.session.accountID) === null || _a === void 0 ? void 0 : _a.toString();
49
47
  }
50
48
  /**
51
- * The display name of the player (Steam name or FiveM username).
49
+ * The display name of the player.
52
50
  */
53
51
  get name() {
54
52
  var _a;
55
53
  return (_a = this.adapters.playerInfo.getPlayerName(this.clientID)) !== null && _a !== void 0 ? _a : `Player#${this.clientID}`;
56
54
  }
55
+ // ─────────────────────────────────────────────────────────────────
56
+ // Position / Spatial
57
+ // ─────────────────────────────────────────────────────────────────
57
58
  getPosition() {
58
- // re-set last position
59
59
  this.position = this.adapters.playerInfo.getPlayerPosition(this.clientID);
60
60
  return this.position;
61
61
  }
62
62
  /**
63
- * Retrieves all platform identifiers associated with the player (steam, license, discord, ip, etc.).
63
+ * Sets the player position using the platform-agnostic API.
64
+ *
65
+ * @param vector - The target coordinates (x, y, z).
66
+ */
67
+ setPosition(vector) {
68
+ const ped = this.adapters.playerServer.getPed(this.clientID.toString());
69
+ this.adapters.entityServer.setPosition(ped, vector, { clearArea: true });
70
+ }
71
+ // ─────────────────────────────────────────────────────────────────
72
+ // Identifiers
73
+ // ─────────────────────────────────────────────────────────────────
74
+ /**
75
+ * Retrieves all platform identifiers associated with the player.
64
76
  *
77
+ * @deprecated Use getPlayerIdentifiers() for structured identifier data.
65
78
  * @returns An array of identifier strings (e.g., `['steam:11000...', 'license:2332...']`).
66
79
  */
67
80
  getIdentifiers() {
68
- return this.adapters.playerServer.getIdentifiers(this.clientIDStr);
81
+ return this.adapters.playerServer.getIdentifiers(this.clientID.toString());
69
82
  }
70
83
  /**
71
- * FiveM license
84
+ * Retrieves all identifiers as structured objects.
85
+ *
86
+ * @returns An array of PlayerIdentifier objects with type, value, and raw fields.
72
87
  */
73
- getLicense() {
74
- return this.adapters.playerServer.getIdentifier(this.clientIDStr, 'license');
88
+ getPlayerIdentifiers() {
89
+ return this.adapters.playerServer.getPlayerIdentifiers(this.clientID.toString());
75
90
  }
76
- getIdentifier(identifier) {
77
- return this.adapters.playerServer.getIdentifier(this.clientIDStr, identifier);
91
+ /**
92
+ * Gets a specific identifier by type.
93
+ *
94
+ * @param identifierType - The type of identifier (e.g., 'steam', 'license', 'discord')
95
+ * @returns The identifier string or undefined if not found
96
+ */
97
+ getIdentifier(identifierType) {
98
+ return this.adapters.playerServer.getIdentifier(this.clientID.toString(), identifierType);
78
99
  }
79
100
  /**
80
- * Sends a network event exclusively to this specific player (Client-side).
81
- * Wrapper for `emitNet` ensuring the correct target Source ID is used.
101
+ * Gets the player's license identifier.
102
+ * @deprecated Use getIdentifier('license') for cross-platform compatibility.
103
+ */
104
+ getLicense() {
105
+ return this.getIdentifier('license');
106
+ }
107
+ // ─────────────────────────────────────────────────────────────────
108
+ // Network Communication
109
+ // ─────────────────────────────────────────────────────────────────
110
+ /**
111
+ * Sends a network event exclusively to this specific player (client-side).
82
112
  *
83
113
  * @param eventName - The name of the event to trigger on the client.
84
114
  * @param args - Data to send to the client.
@@ -86,53 +116,84 @@ class Player {
86
116
  emit(eventName, ...args) {
87
117
  this.adapters.netTransport.emitNet(eventName, this.clientID, ...args);
88
118
  }
89
- /** used to send a private message to the player */
90
- send(message, type = 'chat') {
91
- this.adapters.netTransport.emitNet('core:chat:send', this.clientID, message, type);
92
- }
93
119
  /**
94
- * Teleports the player to a given position using Server-Side natives.
95
- *
96
- * **Note:** This forces the entity position on the server. For smoother gameplay transitions
97
- * (e.g., inside interiors or across the map), consider using `teleportClient`.
120
+ * Sends a private message to the player.
98
121
  *
99
- * @param vector - The target coordinates (x, y, z).
122
+ * @param message - The message text
123
+ * @param type - Message type for styling
100
124
  */
101
- teleport(vector) {
102
- const ped = this.adapters.playerServer.getPed(this.clientIDStr);
103
- this.adapters.entityServer.setCoords(ped, vector.x, vector.y, vector.z, false, false, false, true);
125
+ send(message, type = 'chat') {
126
+ this.emit('core:chat:send', message, type);
104
127
  }
128
+ // ─────────────────────────────────────────────────────────────────
129
+ // Spawning / Teleporting
130
+ // ─────────────────────────────────────────────────────────────────
105
131
  /**
106
- * Requests the Client to teleport itself via the Core Spawner system.
132
+ * Requests the client to teleport via the spawner system.
107
133
  *
134
+ * @remarks
108
135
  * This method is preferred for gameplay logic as it allows the client to handle
109
136
  * loading screens, fading, and collision loading gracefully.
110
137
  *
111
138
  * @param vector - The target coordinates (x, y, z).
112
139
  */
113
- teleportClient(vector) {
140
+ teleport(vector) {
114
141
  this.emit('opencore:spawner:teleport', vector);
115
142
  }
143
+ /**
144
+ * Spawns the player at a position with a specific model.
145
+ *
146
+ * @param vector - The spawn coordinates
147
+ * @param model - The ped model to use (default: 'mp_m_freemode_01')
148
+ */
116
149
  spawn(vector, model = 'mp_m_freemode_01') {
117
150
  this.emit('opencore:spawner:spawn', { position: vector, model });
118
151
  }
152
+ // ─────────────────────────────────────────────────────────────────
153
+ // Connection Management
154
+ // ─────────────────────────────────────────────────────────────────
119
155
  /**
120
156
  * Disconnects the player from the server.
121
157
  *
122
158
  * @param reason - The message displayed to the player upon disconnection.
123
159
  */
124
160
  kick(reason = 'Kicked from server') {
125
- this.adapters.playerServer.drop(this.clientIDStr, reason);
161
+ this.adapters.playerServer.drop(this.clientID.toString(), reason);
126
162
  }
163
+ // ─────────────────────────────────────────────────────────────────
164
+ // Dimension / Routing Bucket
165
+ // ─────────────────────────────────────────────────────────────────
127
166
  /**
128
- * Sets the routing bucket (virtual world / dimension) for the player.
167
+ * Sets the routing bucket (virtual world/dimension) for the player.
129
168
  * Players in different buckets cannot see or interact with each other.
130
169
  *
131
170
  * @param bucket - The bucket ID (0 is the default shared world).
132
171
  */
133
172
  setRoutingBucket(bucket) {
134
- this.adapters.playerServer.setRoutingBucket(this.clientIDStr, bucket);
173
+ this.adapters.playerServer.setRoutingBucket(this.clientID.toString(), bucket);
174
+ this._dimension = bucket;
135
175
  }
176
+ /**
177
+ * Gets the current routing bucket.
178
+ */
179
+ getRoutingBucket() {
180
+ return this.adapters.playerServer.getRoutingBucket(this.clientID.toString());
181
+ }
182
+ /**
183
+ * Sets the player dimension (alias for setRoutingBucket).
184
+ */
185
+ set dimension(value) {
186
+ this.setRoutingBucket(value);
187
+ }
188
+ /**
189
+ * Gets the player dimension (alias for getRoutingBucket).
190
+ */
191
+ get dimension() {
192
+ return this.getRoutingBucket();
193
+ }
194
+ // ─────────────────────────────────────────────────────────────────
195
+ // Session Metadata (Transient)
196
+ // ─────────────────────────────────────────────────────────────────
136
197
  /**
137
198
  * Stores arbitrary transient metadata for this player's session.
138
199
  * Useful for flags like `isDead`, `isInRaid`, `lastLocation`, etc.
@@ -146,46 +207,48 @@ class Player {
146
207
  /**
147
208
  * Retrieves metadata previously stored in the session.
148
209
  *
149
- * @template T - The expected type of the value.
150
210
  * @param key - The metadata key.
151
211
  * @returns The value cast to T, or `undefined` if not set.
152
212
  */
153
213
  getMeta(key) {
154
214
  return this.session.meta[key];
155
215
  }
216
+ // ─────────────────────────────────────────────────────────────────
217
+ // Account Linking
218
+ // ─────────────────────────────────────────────────────────────────
156
219
  /**
157
220
  * Links a persistent Account ID to the current session.
158
221
  * Should be called after successful authentication.
159
222
  *
160
- * @param accountID - The unique ID from the database.
223
+ * @param accountID - The unique ID from the persistent storage.
161
224
  */
162
225
  linkAccount(accountID) {
163
226
  this.session.accountID = accountID;
164
227
  }
228
+ /**
229
+ * Unlinks the account from the current session.
230
+ */
165
231
  unlinkAccount() {
166
232
  this.session.accountID = undefined;
167
233
  }
234
+ // ─────────────────────────────────────────────────────────────────
235
+ // State Flags
236
+ // ─────────────────────────────────────────────────────────────────
168
237
  /**
169
238
  * Checks if the player currently possesses a specific state flag.
170
239
  *
171
240
  * @param state - The unique string identifier of the state (e.g., 'dead', 'cuffed').
172
- * @returns `true` if the state is active, `false` otherwise.
173
241
  */
174
242
  hasState(state) {
175
- return this.states.has(state);
243
+ return super.has(state);
176
244
  }
177
245
  /**
178
246
  * Applies a state flag to the player.
179
247
  *
180
- * @remarks
181
- * Since states are stored in a `Set`, adding an existing state has no effect (idempotent).
182
- * Ideally, this should trigger a sync event to the client if needed.
183
- *
184
248
  * @param state - The state key to add.
185
249
  */
186
250
  addState(state) {
187
- this.states.add(state);
188
- // this.emit('core:state:add', state) // ? optional !!
251
+ super.add(state);
189
252
  }
190
253
  /**
191
254
  * Removes a specific state flag from the player.
@@ -193,82 +256,57 @@ class Player {
193
256
  * @param state - The state key to remove.
194
257
  */
195
258
  removeState(state) {
196
- this.states.delete(state);
197
- // this.emit('core:state:remove', state) // ? optional !!
259
+ super.delete(state);
198
260
  }
199
261
  /**
200
262
  * Toggles the presence of a state flag.
201
263
  *
202
264
  * @param state - The state key to toggle.
203
- * @param force - If provided, forces the state to be added (`true`) or removed (`false`) regardless of its current status.
204
- *
205
- * @returns The final status of the state (`true` if active, `false` if inactive).
206
- *
207
- * @example
208
- * ```ts
209
- * // Standard toggle
210
- * player.toggleState('duty'); // turns on if off, off if on
211
- *
212
- * // Force enable (equivalent to addState but returns boolean)
213
- * player.toggleState('duty', true); // always results in true
214
- * ```
265
+ * @param force - If provided, forces the state to be added or removed.
266
+ * @returns The final status of the state.
215
267
  */
216
268
  toggleState(state, force) {
217
- if (force !== undefined) {
218
- force ? this.addState(state) : this.removeState(state);
219
- return force;
220
- }
221
- if (this.hasState(state)) {
222
- this.removeState(state);
223
- return false;
224
- }
225
- else {
226
- this.addState(state);
227
- return true;
228
- }
229
- }
230
- /**
231
- * Retrieves a snapshot of all currently active state flags for this player.
232
- *
233
- * @returns An array containing all active state keys.
269
+ return super.toggle(state, force);
270
+ }
271
+ /**
272
+ * Retrieves all currently active state flags.
234
273
  */
235
274
  getStates() {
236
- return Array.from(this.states);
275
+ return super.all();
237
276
  }
277
+ // ─────────────────────────────────────────────────────────────────
278
+ // Health & Armor
279
+ // ─────────────────────────────────────────────────────────────────
238
280
  /**
239
281
  * Gets the current health of the player's ped.
240
- *
241
- * @returns Current health value (0-200, where 100 is dead).
242
282
  */
243
283
  getHealth() {
244
- const ped = this.adapters.playerServer.getPed(this.clientIDStr);
284
+ const ped = this.adapters.playerServer.getPed(this.clientID.toString());
245
285
  return this.adapters.entityServer.getHealth(ped);
246
286
  }
247
287
  /**
248
288
  * Sets the health of the player's ped.
249
289
  *
250
- * @param health - Health value to set (0-200).
290
+ * @param health - Health value to set (platform-specific range).
251
291
  */
252
292
  setHealth(health) {
253
- const ped = this.adapters.playerServer.getPed(this.clientIDStr);
293
+ const ped = this.adapters.playerServer.getPed(this.clientID.toString());
254
294
  this.adapters.entityServer.setHealth(ped, health);
255
295
  }
256
296
  /**
257
297
  * Gets the current armor of the player's ped.
258
- *
259
- * @returns Current armor value (0-100).
260
298
  */
261
299
  getArmor() {
262
- const ped = this.adapters.playerServer.getPed(this.clientIDStr);
300
+ const ped = this.adapters.playerServer.getPed(this.clientID.toString());
263
301
  return this.adapters.entityServer.getArmor(ped);
264
302
  }
265
303
  /**
266
304
  * Sets the armor of the player's ped.
267
305
  *
268
- * @param armor - Armor value to set (0-100).
306
+ * @param armor - Armor value to set (typically 0-100).
269
307
  */
270
308
  setArmor(armor) {
271
- const ped = this.adapters.playerServer.getPed(this.clientIDStr);
309
+ const ped = this.adapters.playerServer.getPed(this.clientID.toString());
272
310
  this.adapters.entityServer.setArmor(ped, armor);
273
311
  }
274
312
  /**
@@ -280,18 +318,19 @@ class Player {
280
318
  /**
281
319
  * Checks if the player is alive.
282
320
  *
283
- * @returns `true` if health is above 100 (dead threshold), `false` otherwise.
321
+ * @remarks
322
+ * The threshold (100) is platform-specific. In GTA V-based platforms,
323
+ * health below 100 means dead.
284
324
  */
285
325
  isAlive() {
286
326
  return this.getHealth() > 100;
287
327
  }
328
+ // ─────────────────────────────────────────────────────────────────
329
+ // Serialization
330
+ // ─────────────────────────────────────────────────────────────────
288
331
  /**
289
332
  * Serializes the player data for cross-resource transfer.
290
333
  *
291
- * @remarks
292
- * Creates a plain object representation of the player session that can be
293
- * safely transferred between resources via FiveM exports.
294
- *
295
334
  * @returns Serialized player data DTO
296
335
  */
297
336
  serialize() {
@@ -1,6 +1,6 @@
1
- import { IEntityServer } from '../../../adapters/contracts/IEntityServer';
2
- import { IVehicleServer } from '../../../adapters/contracts/IVehicleServer';
3
- import { Vector3 } from '../../../kernel/utils';
1
+ import { IEntityServer } from '../../../adapters/contracts/server/IEntityServer';
2
+ import { IVehicleServer } from '../../../adapters/contracts/server/IVehicleServer';
3
+ import { Vector3 } from '../../../kernel/utils/vector3';
4
4
  import { SerializedVehicleData, VehicleMetadata, VehicleMods, VehicleOwnership } from '../types/vehicle.types';
5
5
  /**
6
6
  * Adapter bundle for vehicle operations.
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handleCommandError = handleCommandError;
4
- const logger_1 = require("../../kernel/shared/logger");
5
- const utils_1 = require("../../kernel/utils");
4
+ const app_error_1 = require("../../kernel/error/app.error");
5
+ const logger_1 = require("../../kernel/logger");
6
6
  function normalizeError(error, origin) {
7
- if ((0, utils_1.isAppError)(error)) {
7
+ if ((0, app_error_1.isAppError)(error)) {
8
8
  return error;
9
9
  }
10
10
  if (error instanceof Error) {
11
- return new utils_1.AppError('COMMON:UNKNOWN', error.message, origin, { stack: error.stack });
11
+ return new app_error_1.AppError('COMMON:UNKNOWN', error.message, origin, { stack: error.stack });
12
12
  }
13
- return new utils_1.AppError('COMMON:UNKNOWN', String(error), origin, { raw: error });
13
+ return new app_error_1.AppError('COMMON:UNKNOWN', String(error), origin, { raw: error });
14
14
  }
15
15
  function handleCommandError(error, meta, playerId) {
16
16
  const appError = normalizeError(error, 'server');
@@ -1,6 +1,3 @@
1
1
  import { CommandMetadata } from '../decorators/command';
2
2
  import { Player } from '../entities';
3
- /**
4
- * Centraliza validación de argumentos de comandos.
5
- */
6
3
  export declare function validateAndExecuteCommand(meta: CommandMetadata, player: Player, args: string[], handler: (...args: any[]) => any): Promise<any>;
@@ -7,13 +7,10 @@ exports.validateAndExecuteCommand = validateAndExecuteCommand;
7
7
  const zod_1 = __importDefault(require("zod"));
8
8
  const kernel_1 = require("../../../kernel");
9
9
  const schema_generator_1 = require("../system/schema-generator");
10
- /**
11
- * Centraliza validación de argumentos de comandos.
12
- */
10
+ const process_tuple_schema_1 = require("./process-tuple-schema");
13
11
  async function validateAndExecuteCommand(meta, player, args, handler) {
14
12
  const paramNames = meta.expectsPlayer ? meta.paramNames.slice(1) : meta.paramNames;
15
13
  let schema = meta.schema;
16
- // Caso: comando sin player → no espera argumentos
17
14
  if (!meta.expectsPlayer) {
18
15
  if (args.length > 0) {
19
16
  throw new kernel_1.AppError('GAME:BAD_REQUEST', `Incorrect usage, use: ${meta.usage}`, 'client', {
@@ -22,7 +19,6 @@ async function validateAndExecuteCommand(meta, player, args, handler) {
22
19
  }
23
20
  return await handler();
24
21
  }
25
- // Autogenerar esquema si no lo definieron
26
22
  if (!schema) {
27
23
  schema = (0, schema_generator_1.generateSchemaFromTypes)(meta.paramTypes);
28
24
  if (!schema) {
@@ -32,7 +28,6 @@ async function validateAndExecuteCommand(meta, player, args, handler) {
32
28
  return await handler(player);
33
29
  }
34
30
  }
35
- // OBJETO schema
36
31
  if (schema instanceof zod_1.default.ZodObject) {
37
32
  const keys = Object.keys(schema.shape);
38
33
  for (const p of paramNames) {
@@ -60,7 +55,8 @@ async function validateAndExecuteCommand(meta, player, args, handler) {
60
55
  }
61
56
  // TUPLA schema
62
57
  if (schema instanceof zod_1.default.ZodTuple) {
63
- const validated = await schema.parseAsync(args).catch(() => {
58
+ const processedArgs = (0, process_tuple_schema_1.processTupleSchema)(schema, args);
59
+ const validated = await schema.parseAsync(processedArgs).catch(() => {
64
60
  throw new kernel_1.AppError('GAME:BAD_REQUEST', `Incorrect usage, use: ${meta.usage}`, 'client', {
65
61
  usage: meta.usage,
66
62
  });
@@ -0,0 +1,9 @@
1
+ import { AppError, type ErrorOrigin } from '../../../kernel/error';
2
+ /**
3
+ * Normalizes unknown thrown values into a consistent {@link AppError}.
4
+ *
5
+ * @remarks
6
+ * Command and event pipelines should never leak raw errors.
7
+ * This helper ensures observers always receive an AppError.
8
+ */
9
+ export declare function normalizeToAppError(error: unknown, origin: ErrorOrigin): AppError;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeToAppError = normalizeToAppError;
4
+ const error_1 = require("../../../kernel/error");
5
+ /**
6
+ * Normalizes unknown thrown values into a consistent {@link AppError}.
7
+ *
8
+ * @remarks
9
+ * Command and event pipelines should never leak raw errors.
10
+ * This helper ensures observers always receive an AppError.
11
+ */
12
+ function normalizeToAppError(error, origin) {
13
+ if ((0, error_1.isAppError)(error)) {
14
+ return error;
15
+ }
16
+ if (error instanceof Error) {
17
+ return new error_1.AppError('COMMON:UNKNOWN', error.message, origin, { stack: error.stack });
18
+ }
19
+ return new error_1.AppError('COMMON:UNKNOWN', String(error), origin, { raw: error });
20
+ }
@@ -0,0 +1,20 @@
1
+ import z from 'zod';
2
+ /**
3
+ * Processes tuple schema validation with greedy handling for rest parameters.
4
+ *
5
+ * This function handles two cases:
6
+ * 1. If last parameter is ZodArray and there are MORE args than schema items,
7
+ * collect the extra args into the array position.
8
+ * 2. If last parameter is ZodString and there are MORE args than schema items,
9
+ * join the extra args into a single string.
10
+ *
11
+ * Examples:
12
+ * - handler(player, action: string, ...rest: string[]) with args ["hello", "world", "!"]
13
+ * → schema is [z.string(), z.array(z.string())] (2 items)
14
+ * → args has 3 items, so we group extra: ["hello", ["world", "!"]]
15
+ *
16
+ * - handler(player, command: string, args: string[]) with args ["vida", ["arg1"]]
17
+ * → schema is [z.string(), z.array(z.string())] (2 items)
18
+ * → args has 2 items, matches schema, no processing needed
19
+ */
20
+ export declare function processTupleSchema(schema: z.ZodTuple, args: any[]): any[];
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.processTupleSchema = processTupleSchema;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ /**
9
+ * Processes tuple schema validation with greedy handling for rest parameters.
10
+ *
11
+ * This function handles two cases:
12
+ * 1. If last parameter is ZodArray and there are MORE args than schema items,
13
+ * collect the extra args into the array position.
14
+ * 2. If last parameter is ZodString and there are MORE args than schema items,
15
+ * join the extra args into a single string.
16
+ *
17
+ * Examples:
18
+ * - handler(player, action: string, ...rest: string[]) with args ["hello", "world", "!"]
19
+ * → schema is [z.string(), z.array(z.string())] (2 items)
20
+ * → args has 3 items, so we group extra: ["hello", ["world", "!"]]
21
+ *
22
+ * - handler(player, command: string, args: string[]) with args ["vida", ["arg1"]]
23
+ * → schema is [z.string(), z.array(z.string())] (2 items)
24
+ * → args has 2 items, matches schema, no processing needed
25
+ */
26
+ function processTupleSchema(schema, args) {
27
+ const items = schema.description ? [] : schema._def.items;
28
+ if (items.length === 0) {
29
+ return args;
30
+ }
31
+ // Only process if we have MORE args than schema expects
32
+ // This means we need to group extra args into the last position
33
+ if (args.length <= items.length) {
34
+ return args;
35
+ }
36
+ const lastItem = items[items.length - 1];
37
+ const positionalCount = items.length - 1;
38
+ // If last parameter is an array type, collect extra args into it
39
+ if (lastItem instanceof zod_1.default.ZodArray) {
40
+ const positional = args.slice(0, positionalCount);
41
+ const restArray = args.slice(positionalCount);
42
+ return [...positional, restArray];
43
+ }
44
+ // If last parameter is a string, join extra args with space
45
+ if (lastItem instanceof zod_1.default.ZodString) {
46
+ const positional = args.slice(0, positionalCount);
47
+ const restString = args.slice(positionalCount).join(' ');
48
+ return [...positional, restString];
49
+ }
50
+ return args;
51
+ }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveMethod = resolveMethod;
4
- const logger_1 = require("../../../kernel/shared/logger");
5
- const utils_1 = require("../../../kernel/utils");
4
+ const app_error_1 = require("../../../kernel/error/app.error");
5
+ const logger_1 = require("../../../kernel/logger");
6
6
  function resolveMethod(instance, methodName, errorMessage) {
7
7
  try {
8
8
  const proto = Object.getPrototypeOf(instance);
@@ -20,7 +20,7 @@ function resolveMethod(instance, methodName, errorMessage) {
20
20
  }
21
21
  catch (error) {
22
22
  if (error instanceof Error) {
23
- throw new utils_1.AppError('COMMON:UNKNOWN', `[${error.name}] ${error.message}`, 'server', error.stack);
23
+ throw new app_error_1.AppError('COMMON:UNKNOWN', `[${error.name}] ${error.message}`, 'server', error.stack);
24
24
  }
25
25
  else
26
26
  throw error;
@@ -1,13 +1 @@
1
- export * from './bootstrap.validation';
2
- export { onFrameworkEvent } from './bus/internal-event.bus';
3
- export * from './configs';
4
- export * from './contracts/index';
5
- export { init } from './core';
6
- export * from './decorators';
7
- export * from './devmode';
8
- export * from './entities';
9
- export * from './runtime';
10
- export * from './services';
11
- export * from './setup';
12
- export * from './templates';
13
- export type * from './types/internal-events';
1
+ export * as Server from './api';