@open-core/framework 1.0.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +350 -0
  3. package/dist/client/client-bootstrap.d.ts +1 -0
  4. package/dist/client/client-bootstrap.js +53 -0
  5. package/dist/client/client-container.d.ts +2 -0
  6. package/dist/client/client-container.js +6 -0
  7. package/dist/client/client-core.d.ts +18 -0
  8. package/dist/client/client-core.js +52 -0
  9. package/dist/client/decorators/controller.d.ts +3 -0
  10. package/dist/client/decorators/controller.js +14 -0
  11. package/dist/client/decorators/export.d.ts +7 -0
  12. package/dist/client/decorators/export.js +15 -0
  13. package/dist/client/decorators/gameEvent.d.ts +47 -0
  14. package/dist/client/decorators/gameEvent.js +54 -0
  15. package/dist/client/decorators/index.d.ts +10 -0
  16. package/dist/client/decorators/index.js +26 -0
  17. package/dist/client/decorators/interval.d.ts +7 -0
  18. package/dist/client/decorators/interval.js +15 -0
  19. package/dist/client/decorators/key.d.ts +2 -0
  20. package/dist/client/decorators/key.js +10 -0
  21. package/dist/client/decorators/localEvent.d.ts +7 -0
  22. package/dist/client/decorators/localEvent.js +15 -0
  23. package/dist/client/decorators/nui.d.ts +1 -0
  24. package/dist/client/decorators/nui.js +9 -0
  25. package/dist/client/decorators/onNet.d.ts +1 -0
  26. package/dist/client/decorators/onNet.js +9 -0
  27. package/dist/client/decorators/resourceLifecycle.d.ts +11 -0
  28. package/dist/client/decorators/resourceLifecycle.js +24 -0
  29. package/dist/client/decorators/tick.d.ts +1 -0
  30. package/dist/client/decorators/tick.js +9 -0
  31. package/dist/client/index.d.ts +6 -0
  32. package/dist/client/index.js +22 -0
  33. package/dist/client/loaders/exports.loader.d.ts +1 -0
  34. package/dist/client/loaders/exports.loader.js +13 -0
  35. package/dist/client/player/player.d.ts +262 -0
  36. package/dist/client/player/player.js +480 -0
  37. package/dist/client/player/player.loader.d.ts +1 -0
  38. package/dist/client/player/player.loader.js +22 -0
  39. package/dist/client/services/core/index.d.ts +1 -0
  40. package/dist/client/services/core/index.js +17 -0
  41. package/dist/client/services/core/spawn.service.d.ts +20 -0
  42. package/dist/client/services/core/spawn.service.js +143 -0
  43. package/dist/client/services/index.d.ts +4 -0
  44. package/dist/client/services/index.js +24 -0
  45. package/dist/client/services/streaming/index.d.ts +1 -0
  46. package/dist/client/services/streaming/index.js +17 -0
  47. package/dist/client/services/streaming/streaming.service.d.ts +165 -0
  48. package/dist/client/services/streaming/streaming.service.js +341 -0
  49. package/dist/client/services/ui/index.d.ts +3 -0
  50. package/dist/client/services/ui/index.js +19 -0
  51. package/dist/client/services/ui/notification.service.d.ts +76 -0
  52. package/dist/client/services/ui/notification.service.js +111 -0
  53. package/dist/client/services/ui/progress.service.d.ts +82 -0
  54. package/dist/client/services/ui/progress.service.js +210 -0
  55. package/dist/client/services/ui/textui.service.d.ts +82 -0
  56. package/dist/client/services/ui/textui.service.js +156 -0
  57. package/dist/client/services/world/blip.service.d.ts +112 -0
  58. package/dist/client/services/world/blip.service.js +215 -0
  59. package/dist/client/services/world/index.d.ts +4 -0
  60. package/dist/client/services/world/index.js +20 -0
  61. package/dist/client/services/world/marker.service.d.ts +94 -0
  62. package/dist/client/services/world/marker.service.js +153 -0
  63. package/dist/client/services/world/ped.service.d.ts +182 -0
  64. package/dist/client/services/world/ped.service.js +302 -0
  65. package/dist/client/services/world/vehicle.service.d.ts +168 -0
  66. package/dist/client/services/world/vehicle.service.js +296 -0
  67. package/dist/client/system/metadata-client.keys.d.ts +13 -0
  68. package/dist/client/system/metadata-client.keys.js +16 -0
  69. package/dist/client/system/processors/export.processor.d.ts +7 -0
  70. package/dist/client/system/processors/export.processor.js +39 -0
  71. package/dist/client/system/processors/gameEvent.processor.d.ts +10 -0
  72. package/dist/client/system/processors/gameEvent.processor.js +58 -0
  73. package/dist/client/system/processors/interval.processor.d.ts +7 -0
  74. package/dist/client/system/processors/interval.processor.js +43 -0
  75. package/dist/client/system/processors/key.processor.d.ts +8 -0
  76. package/dist/client/system/processors/key.processor.js +27 -0
  77. package/dist/client/system/processors/localEvent.processor.d.ts +7 -0
  78. package/dist/client/system/processors/localEvent.processor.js +38 -0
  79. package/dist/client/system/processors/netEvent.processor.d.ts +7 -0
  80. package/dist/client/system/processors/netEvent.processor.js +38 -0
  81. package/dist/client/system/processors/nui.processor.d.ts +7 -0
  82. package/dist/client/system/processors/nui.processor.js +40 -0
  83. package/dist/client/system/processors/resourceLifecycle.processor.d.ts +9 -0
  84. package/dist/client/system/processors/resourceLifecycle.processor.js +69 -0
  85. package/dist/client/system/processors/tick.processor.d.ts +5 -0
  86. package/dist/client/system/processors/tick.processor.js +37 -0
  87. package/dist/client/system/processors.register.d.ts +1 -0
  88. package/dist/client/system/processors.register.js +27 -0
  89. package/dist/client/types/game-events.d.ts +126 -0
  90. package/dist/client/types/game-events.js +83 -0
  91. package/dist/client/types/index.d.ts +1 -0
  92. package/dist/client/types/index.js +17 -0
  93. package/dist/client/ui-bridge.d.ts +116 -0
  94. package/dist/client/ui-bridge.js +201 -0
  95. package/dist/index.d.ts +7 -0
  96. package/dist/index.js +46 -0
  97. package/dist/server/bootstrap.d.ts +16 -0
  98. package/dist/server/bootstrap.js +57 -0
  99. package/dist/server/bus/core-event-bus.d.ts +6 -0
  100. package/dist/server/bus/core-event-bus.js +31 -0
  101. package/dist/server/configs/api.config.d.ts +71 -0
  102. package/dist/server/configs/api.config.js +81 -0
  103. package/dist/server/configs/config.base.d.ts +63 -0
  104. package/dist/server/configs/config.base.js +64 -0
  105. package/dist/server/configs/index.d.ts +2 -0
  106. package/dist/server/configs/index.js +18 -0
  107. package/dist/server/container.d.ts +2 -0
  108. package/dist/server/container.js +6 -0
  109. package/dist/server/controllers/chat.controller.d.ts +10 -0
  110. package/dist/server/controllers/chat.controller.js +50 -0
  111. package/dist/server/controllers/command.controller.d.ts +7 -0
  112. package/dist/server/controllers/command.controller.js +47 -0
  113. package/dist/server/core.d.ts +1 -0
  114. package/dist/server/core.js +7 -0
  115. package/dist/server/database/adapters/oxmysql.adapter.d.ts +89 -0
  116. package/dist/server/database/adapters/oxmysql.adapter.js +149 -0
  117. package/dist/server/database/database.contract.d.ts +128 -0
  118. package/dist/server/database/database.contract.js +29 -0
  119. package/dist/server/database/database.service.d.ts +216 -0
  120. package/dist/server/database/database.service.js +301 -0
  121. package/dist/server/database/index.d.ts +53 -0
  122. package/dist/server/database/index.js +70 -0
  123. package/dist/server/database/types.d.ts +67 -0
  124. package/dist/server/database/types.js +7 -0
  125. package/dist/server/database.d.ts +7 -0
  126. package/dist/server/database.js +23 -0
  127. package/dist/server/decorators/bind.d.ts +2 -0
  128. package/dist/server/decorators/bind.js +15 -0
  129. package/dist/server/decorators/command.d.ts +19 -0
  130. package/dist/server/decorators/command.js +18 -0
  131. package/dist/server/decorators/controller.d.ts +3 -0
  132. package/dist/server/decorators/controller.js +14 -0
  133. package/dist/server/decorators/coreEvent.d.ts +2 -0
  134. package/dist/server/decorators/coreEvent.js +9 -0
  135. package/dist/server/decorators/export.d.ts +1 -0
  136. package/dist/server/decorators/export.js +9 -0
  137. package/dist/server/decorators/guard.d.ts +5 -0
  138. package/dist/server/decorators/guard.js +39 -0
  139. package/dist/server/decorators/index.d.ts +10 -0
  140. package/dist/server/decorators/index.js +26 -0
  141. package/dist/server/decorators/netEvent.d.ts +36 -0
  142. package/dist/server/decorators/netEvent.js +40 -0
  143. package/dist/server/decorators/onTick.d.ts +1 -0
  144. package/dist/server/decorators/onTick.js +9 -0
  145. package/dist/server/decorators/public.d.ts +16 -0
  146. package/dist/server/decorators/public.js +25 -0
  147. package/dist/server/decorators/requiresState.d.ts +55 -0
  148. package/dist/server/decorators/requiresState.js +62 -0
  149. package/dist/server/decorators/throttle.d.ts +9 -0
  150. package/dist/server/decorators/throttle.js +36 -0
  151. package/dist/server/decorators/utils.d.ts +7 -0
  152. package/dist/server/decorators/utils.js +13 -0
  153. package/dist/server/entities/index.d.ts +1 -0
  154. package/dist/server/entities/index.js +17 -0
  155. package/dist/server/entities/player.d.ts +157 -0
  156. package/dist/server/entities/player.js +217 -0
  157. package/dist/server/error-handler.d.ts +2 -0
  158. package/dist/server/error-handler.js +43 -0
  159. package/dist/server/index.d.ts +10 -0
  160. package/dist/server/index.js +29 -0
  161. package/dist/server/loaders/exports.loader.d.ts +0 -0
  162. package/dist/server/loaders/exports.loader.js +23 -0
  163. package/dist/server/loaders/playerSession.loader.d.ts +1 -0
  164. package/dist/server/loaders/playerSession.loader.js +42 -0
  165. package/dist/server/services/access-control.service.d.ts +56 -0
  166. package/dist/server/services/access-control.service.js +99 -0
  167. package/dist/server/services/chat.service.d.ts +7 -0
  168. package/dist/server/services/chat.service.js +31 -0
  169. package/dist/server/services/command.service.d.ts +15 -0
  170. package/dist/server/services/command.service.js +74 -0
  171. package/dist/server/services/config.service.d.ts +75 -0
  172. package/dist/server/services/config.service.js +116 -0
  173. package/dist/server/services/default/default-security.handler.d.ts +6 -0
  174. package/dist/server/services/default/default-security.handler.js +26 -0
  175. package/dist/server/services/http/http.service.d.ts +50 -0
  176. package/dist/server/services/http/http.service.js +126 -0
  177. package/dist/server/services/index.d.ts +10 -0
  178. package/dist/server/services/index.js +26 -0
  179. package/dist/server/services/parallel/index.d.ts +49 -0
  180. package/dist/server/services/parallel/index.js +67 -0
  181. package/dist/server/services/parallel/parallel-compute.service.d.ts +132 -0
  182. package/dist/server/services/parallel/parallel-compute.service.js +449 -0
  183. package/dist/server/services/parallel/types.d.ts +188 -0
  184. package/dist/server/services/parallel/types.js +7 -0
  185. package/dist/server/services/parallel/worker-pool.d.ts +83 -0
  186. package/dist/server/services/parallel/worker-pool.js +350 -0
  187. package/dist/server/services/parallel/worker.d.ts +19 -0
  188. package/dist/server/services/parallel/worker.js +49 -0
  189. package/dist/server/services/persistence.service.d.ts +59 -0
  190. package/dist/server/services/persistence.service.js +166 -0
  191. package/dist/server/services/player.service.d.ts +96 -0
  192. package/dist/server/services/player.service.js +132 -0
  193. package/dist/server/services/rate-limiter.service.d.ts +5 -0
  194. package/dist/server/services/rate-limiter.service.js +39 -0
  195. package/dist/server/services/registers.d.ts +1 -0
  196. package/dist/server/services/registers.js +18 -0
  197. package/dist/server/setup.d.ts +9 -0
  198. package/dist/server/setup.js +28 -0
  199. package/dist/server/system/metadata-server.keys.d.ts +9 -0
  200. package/dist/server/system/metadata-server.keys.js +12 -0
  201. package/dist/server/system/processors/command.processor.d.ts +9 -0
  202. package/dist/server/system/processors/command.processor.js +31 -0
  203. package/dist/server/system/processors/coreEvent.processor.d.ts +7 -0
  204. package/dist/server/system/processors/coreEvent.processor.js +38 -0
  205. package/dist/server/system/processors/export.processor.d.ts +7 -0
  206. package/dist/server/system/processors/export.processor.js +26 -0
  207. package/dist/server/system/processors/netEvent.processor.d.ts +11 -0
  208. package/dist/server/system/processors/netEvent.processor.js +100 -0
  209. package/dist/server/system/processors/tick.processor.d.ts +5 -0
  210. package/dist/server/system/processors/tick.processor.js +36 -0
  211. package/dist/server/system/processors.register.d.ts +1 -0
  212. package/dist/server/system/processors.register.js +21 -0
  213. package/dist/server/templates/admin/admin.controller-template.d.ts +10 -0
  214. package/dist/server/templates/admin/admin.controller-template.js +2 -0
  215. package/dist/server/templates/auth/auth-provider.contract.d.ts +58 -0
  216. package/dist/server/templates/auth/auth-provider.contract.js +23 -0
  217. package/dist/server/templates/index.d.ts +8 -0
  218. package/dist/server/templates/index.js +21 -0
  219. package/dist/server/templates/persistence/index.d.ts +30 -0
  220. package/dist/server/templates/persistence/index.js +34 -0
  221. package/dist/server/templates/persistence/player-persistence.contract.d.ts +86 -0
  222. package/dist/server/templates/persistence/player-persistence.contract.js +52 -0
  223. package/dist/server/templates/repository/index.d.ts +57 -0
  224. package/dist/server/templates/repository/index.js +61 -0
  225. package/dist/server/templates/repository/repository.contract.d.ts +224 -0
  226. package/dist/server/templates/repository/repository.contract.js +342 -0
  227. package/dist/server/templates/repository/repository.types.d.ts +51 -0
  228. package/dist/server/templates/repository/repository.types.js +7 -0
  229. package/dist/server/templates/security/permission.types.d.ts +32 -0
  230. package/dist/server/templates/security/permission.types.js +2 -0
  231. package/dist/server/templates/security/principal-provider.contract.d.ts +43 -0
  232. package/dist/server/templates/security/principal-provider.contract.js +19 -0
  233. package/dist/server/templates/security/security-handler.contract.d.ts +5 -0
  234. package/dist/server/templates/security/security-handler.contract.js +6 -0
  235. package/dist/server/types/core-events.d.ts +17 -0
  236. package/dist/server/types/core-events.js +2 -0
  237. package/dist/server/types/security.types.d.ts +7 -0
  238. package/dist/server/types/security.types.js +2 -0
  239. package/dist/shared/index.d.ts +1 -0
  240. package/dist/shared/index.js +17 -0
  241. package/dist/shared/logger/core-logger.d.ts +35 -0
  242. package/dist/shared/logger/core-logger.js +52 -0
  243. package/dist/shared/logger/index.d.ts +11 -0
  244. package/dist/shared/logger/index.js +26 -0
  245. package/dist/shared/logger/logger.config.d.ts +47 -0
  246. package/dist/shared/logger/logger.config.js +33 -0
  247. package/dist/shared/logger/logger.service.d.ts +161 -0
  248. package/dist/shared/logger/logger.service.js +279 -0
  249. package/dist/shared/logger/logger.types.d.ts +85 -0
  250. package/dist/shared/logger/logger.types.js +74 -0
  251. package/dist/shared/logger/transports/buffered.transport.d.ts +88 -0
  252. package/dist/shared/logger/transports/buffered.transport.js +174 -0
  253. package/dist/shared/logger/transports/console.transport.d.ts +37 -0
  254. package/dist/shared/logger/transports/console.transport.js +134 -0
  255. package/dist/shared/logger/transports/index.d.ts +3 -0
  256. package/dist/shared/logger/transports/index.js +19 -0
  257. package/dist/shared/logger/transports/transport.interface.d.ts +40 -0
  258. package/dist/shared/logger/transports/transport.interface.js +2 -0
  259. package/dist/system/class-constructor.d.ts +1 -0
  260. package/dist/system/class-constructor.js +2 -0
  261. package/dist/system/decorator-processor.d.ts +4 -0
  262. package/dist/system/decorator-processor.js +2 -0
  263. package/dist/system/metadata.scanner.d.ts +7 -0
  264. package/dist/system/metadata.scanner.js +45 -0
  265. package/dist/utils/errors.d.ts +14 -0
  266. package/dist/utils/errors.js +25 -0
  267. package/dist/utils/index.d.ts +4 -0
  268. package/dist/utils/index.js +20 -0
  269. package/dist/utils/result.d.ts +12 -0
  270. package/dist/utils/result.js +10 -0
  271. package/dist/utils/rgb.d.ts +5 -0
  272. package/dist/utils/rgb.js +2 -0
  273. package/dist/utils/vector3.d.ts +13 -0
  274. package/dist/utils/vector3.js +27 -0
  275. package/package.json +70 -0
@@ -0,0 +1,40 @@
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.NuiProcessor = void 0;
10
+ const tsyringe_1 = require("tsyringe");
11
+ const metadata_client_keys_1 = require("../metadata-client.keys");
12
+ const logger_1 = require("../../../shared/logger");
13
+ let NuiProcessor = class NuiProcessor {
14
+ constructor() {
15
+ this.metadataKey = metadata_client_keys_1.METADATA_KEYS.NUI;
16
+ }
17
+ process(target, methodName, metadata) {
18
+ const handler = target[methodName].bind(target);
19
+ const handlerName = `${target.constructor.name}.${methodName}`;
20
+ RegisterNuiCallbackType(metadata.eventName);
21
+ on(`__cfx_nui:${metadata.eventName}`, async (data, cb) => {
22
+ try {
23
+ await handler(data);
24
+ cb({ ok: true });
25
+ }
26
+ catch (error) {
27
+ logger_1.loggers.nui.error(`NUI callback error`, {
28
+ event: metadata.eventName,
29
+ handler: handlerName,
30
+ }, error);
31
+ cb({ ok: false, error: String(error) });
32
+ }
33
+ });
34
+ logger_1.loggers.nui.debug(`Registered: ${metadata.eventName} -> ${handlerName}`);
35
+ }
36
+ };
37
+ exports.NuiProcessor = NuiProcessor;
38
+ exports.NuiProcessor = NuiProcessor = __decorate([
39
+ (0, tsyringe_1.injectable)()
40
+ ], NuiProcessor);
@@ -0,0 +1,9 @@
1
+ import { DecoratorProcessor } from '../../../system/decorator-processor';
2
+ export declare class ResourceStartProcessor implements DecoratorProcessor {
3
+ readonly metadataKey: string;
4
+ process(target: any, methodName: string): void;
5
+ }
6
+ export declare class ResourceStopProcessor implements DecoratorProcessor {
7
+ readonly metadataKey: string;
8
+ process(target: any, methodName: string): void;
9
+ }
@@ -0,0 +1,69 @@
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.ResourceStopProcessor = exports.ResourceStartProcessor = void 0;
10
+ const tsyringe_1 = require("tsyringe");
11
+ const metadata_client_keys_1 = require("../metadata-client.keys");
12
+ const logger_1 = require("../../../shared/logger");
13
+ const clientLifecycle = logger_1.coreLogger.child('Lifecycle', logger_1.LogDomain.CLIENT);
14
+ let ResourceStartProcessor = class ResourceStartProcessor {
15
+ constructor() {
16
+ this.metadataKey = metadata_client_keys_1.METADATA_KEYS.RESOURCE_START;
17
+ }
18
+ process(target, methodName) {
19
+ const handler = target[methodName].bind(target);
20
+ const handlerName = `${target.constructor.name}.${methodName}`;
21
+ const currentResource = GetCurrentResourceName();
22
+ on('onClientResourceStart', async (resourceName) => {
23
+ if (resourceName !== currentResource)
24
+ return;
25
+ try {
26
+ await handler(resourceName);
27
+ }
28
+ catch (error) {
29
+ clientLifecycle.error(`Resource start handler error`, {
30
+ handler: handlerName,
31
+ resource: resourceName,
32
+ }, error);
33
+ }
34
+ });
35
+ clientLifecycle.debug(`Registered resource start handler: ${handlerName}`);
36
+ }
37
+ };
38
+ exports.ResourceStartProcessor = ResourceStartProcessor;
39
+ exports.ResourceStartProcessor = ResourceStartProcessor = __decorate([
40
+ (0, tsyringe_1.injectable)()
41
+ ], ResourceStartProcessor);
42
+ let ResourceStopProcessor = class ResourceStopProcessor {
43
+ constructor() {
44
+ this.metadataKey = metadata_client_keys_1.METADATA_KEYS.RESOURCE_STOP;
45
+ }
46
+ process(target, methodName) {
47
+ const handler = target[methodName].bind(target);
48
+ const handlerName = `${target.constructor.name}.${methodName}`;
49
+ const currentResource = GetCurrentResourceName();
50
+ on('onClientResourceStop', async (resourceName) => {
51
+ if (resourceName !== currentResource)
52
+ return;
53
+ try {
54
+ await handler(resourceName);
55
+ }
56
+ catch (error) {
57
+ clientLifecycle.error(`Resource stop handler error`, {
58
+ handler: handlerName,
59
+ resource: resourceName,
60
+ }, error);
61
+ }
62
+ });
63
+ clientLifecycle.debug(`Registered resource stop handler: ${handlerName}`);
64
+ }
65
+ };
66
+ exports.ResourceStopProcessor = ResourceStopProcessor;
67
+ exports.ResourceStopProcessor = ResourceStopProcessor = __decorate([
68
+ (0, tsyringe_1.injectable)()
69
+ ], ResourceStopProcessor);
@@ -0,0 +1,5 @@
1
+ import { DecoratorProcessor } from '../../../system/decorator-processor';
2
+ export declare class TickProcessor implements DecoratorProcessor {
3
+ readonly metadataKey: string;
4
+ process(target: any, methodName: string): void;
5
+ }
@@ -0,0 +1,37 @@
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.TickProcessor = void 0;
10
+ const tsyringe_1 = require("tsyringe");
11
+ const metadata_client_keys_1 = require("../metadata-client.keys");
12
+ const logger_1 = require("../../../shared/logger");
13
+ const clientTick = logger_1.coreLogger.child('Tick', logger_1.LogDomain.CLIENT);
14
+ let TickProcessor = class TickProcessor {
15
+ constructor() {
16
+ this.metadataKey = metadata_client_keys_1.METADATA_KEYS.TICK;
17
+ }
18
+ process(target, methodName) {
19
+ const handler = target[methodName].bind(target);
20
+ const handlerName = `${target.constructor.name}.${methodName}`;
21
+ setTick(async () => {
22
+ try {
23
+ await handler();
24
+ }
25
+ catch (error) {
26
+ clientTick.error(`Tick handler error`, {
27
+ handler: handlerName,
28
+ }, error);
29
+ }
30
+ });
31
+ clientTick.debug(`Registered: ${handlerName}`);
32
+ }
33
+ };
34
+ exports.TickProcessor = TickProcessor;
35
+ exports.TickProcessor = TickProcessor = __decorate([
36
+ (0, tsyringe_1.injectable)()
37
+ ], TickProcessor);
@@ -0,0 +1 @@
1
+ export declare function registerSystemClient(): void;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerSystemClient = registerSystemClient;
4
+ const client_container_1 = require("../client-container");
5
+ const key_processor_1 = require("./processors/key.processor");
6
+ const tick_processor_1 = require("./processors/tick.processor");
7
+ const nui_processor_1 = require("./processors/nui.processor");
8
+ const netEvent_processor_1 = require("./processors/netEvent.processor");
9
+ const localEvent_processor_1 = require("./processors/localEvent.processor");
10
+ const interval_processor_1 = require("./processors/interval.processor");
11
+ const export_processor_1 = require("./processors/export.processor");
12
+ const resourceLifecycle_processor_1 = require("./processors/resourceLifecycle.processor");
13
+ const gameEvent_processor_1 = require("./processors/gameEvent.processor");
14
+ function registerSystemClient() {
15
+ // Core processors
16
+ client_container_1.di.register('DecoratorProcessor', { useClass: key_processor_1.KeyMappingProcessor });
17
+ client_container_1.di.register('DecoratorProcessor', { useClass: tick_processor_1.TickProcessor });
18
+ client_container_1.di.register('DecoratorProcessor', { useClass: nui_processor_1.NuiProcessor });
19
+ client_container_1.di.register('DecoratorProcessor', { useClass: netEvent_processor_1.ClientNetEventProcessor });
20
+ // New processors
21
+ client_container_1.di.register('DecoratorProcessor', { useClass: localEvent_processor_1.LocalEventProcessor });
22
+ client_container_1.di.register('DecoratorProcessor', { useClass: interval_processor_1.IntervalProcessor });
23
+ client_container_1.di.register('DecoratorProcessor', { useClass: export_processor_1.ClientExportProcessor });
24
+ client_container_1.di.register('DecoratorProcessor', { useClass: resourceLifecycle_processor_1.ResourceStartProcessor });
25
+ client_container_1.di.register('DecoratorProcessor', { useClass: resourceLifecycle_processor_1.ResourceStopProcessor });
26
+ client_container_1.di.register('DecoratorProcessor', { useClass: gameEvent_processor_1.GameEventProcessor });
27
+ }
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Game Events - Native GTA V internal events captured by FiveM
3
+ *
4
+ * Documentation: https://docs.fivem.net/docs/game-references/game-events/
5
+ *
6
+ * These are low-level events from the RAGE engine. The arguments are
7
+ * passed as arrays from the native layer.
8
+ */
9
+ export type GameEventName = 'CEventNetworkEntityDamage' | 'CEventNetworkPlayerEnteredVehicle' | 'CEventNetworkPlayerLeftVehicle' | 'CEventNetworkVehicleUndrivable' | 'CEventNetworkPlayerSpawn' | 'CEventNetworkPlayerCollectedPickup' | 'CEventNetworkPlayerCollectedAmbientPickup' | 'CEventShockingSeenPedKilled' | 'CEventShockingWeaponThreat' | 'CEventShockingGunshotFired' | 'CEventShockingExplosion' | 'CEventGunShot' | 'CEventGunShotWhizzedBy' | 'CEventExplosionHeard' | 'CEventShockingCarCrash' | 'CEventShockingBicycleCrash' | 'CEventShockingSeenCarStolen' | (string & {});
10
+ /**
11
+ * CEventNetworkEntityDamage
12
+ * Fired when any networked entity takes damage
13
+ */
14
+ export interface EntityDamageEvent {
15
+ /** Entity that was damaged */
16
+ victim: number;
17
+ /** Entity that caused the damage (0 if none) */
18
+ attacker: number;
19
+ /** Unknown parameter */
20
+ arg2: number;
21
+ /** Unknown parameter */
22
+ arg3: number;
23
+ /** Unknown parameter */
24
+ arg4: number;
25
+ /** Whether the victim died from this damage */
26
+ victimDied: boolean;
27
+ /** Weapon hash used */
28
+ weaponHash: number;
29
+ /** Unknown parameter */
30
+ arg7: number;
31
+ /** Unknown parameter */
32
+ arg8: number;
33
+ /** Unknown parameter - possibly damage amount related */
34
+ arg9: number;
35
+ }
36
+ /**
37
+ * CEventNetworkPlayerEnteredVehicle
38
+ * Fired when a player enters a vehicle
39
+ */
40
+ export interface PlayerEnteredVehicleEvent {
41
+ /** Player that entered */
42
+ player: number;
43
+ /** Vehicle entered */
44
+ vehicle: number;
45
+ }
46
+ /**
47
+ * CEventNetworkPlayerLeftVehicle
48
+ * Fired when a player leaves a vehicle
49
+ */
50
+ export interface PlayerLeftVehicleEvent {
51
+ /** Player that left */
52
+ player: number;
53
+ /** Vehicle left */
54
+ vehicle: number;
55
+ }
56
+ /**
57
+ * CEventShockingSeenPedKilled
58
+ * Fired when a ped witnesses another ped being killed
59
+ */
60
+ export interface SeenPedKilledEvent {
61
+ /** Ped that witnessed the death */
62
+ witness: number;
63
+ /** Ped that was killed */
64
+ victim: number;
65
+ }
66
+ /**
67
+ * CEventGunShot
68
+ * Fired when a weapon is fired
69
+ */
70
+ export interface GunShotEvent {
71
+ /** Entity that fired */
72
+ shooter: number;
73
+ /** Target coordinates */
74
+ coords: {
75
+ x: number;
76
+ y: number;
77
+ z: number;
78
+ };
79
+ }
80
+ /**
81
+ * CEventNetworkVehicleUndrivable
82
+ * Fired when a vehicle becomes undrivable (destroyed)
83
+ */
84
+ export interface VehicleUndrivableEvent {
85
+ /** Vehicle that became undrivable */
86
+ vehicle: number;
87
+ /** Entity responsible (if any) */
88
+ attacker: number;
89
+ /** Weapon hash that caused it */
90
+ weaponHash: number;
91
+ }
92
+ export declare const GameEventParsers: {
93
+ /**
94
+ * Parse CEventNetworkEntityDamage arguments
95
+ */
96
+ parseEntityDamage(args: number[]): EntityDamageEvent;
97
+ /**
98
+ * Parse CEventNetworkPlayerEnteredVehicle arguments
99
+ */
100
+ parsePlayerEnteredVehicle(args: number[]): PlayerEnteredVehicleEvent;
101
+ /**
102
+ * Parse CEventNetworkPlayerLeftVehicle arguments
103
+ */
104
+ parsePlayerLeftVehicle(args: number[]): PlayerLeftVehicleEvent;
105
+ /**
106
+ * Parse CEventShockingSeenPedKilled arguments
107
+ */
108
+ parseSeenPedKilled(args: number[]): SeenPedKilledEvent;
109
+ /**
110
+ * Parse CEventNetworkVehicleUndrivable arguments
111
+ */
112
+ parseVehicleUndrivable(args: number[]): VehicleUndrivableEvent;
113
+ /**
114
+ * Parse CEventGunShot arguments
115
+ */
116
+ parseGunShot(args: number[]): GunShotEvent;
117
+ };
118
+ export interface GameEventMap {
119
+ CEventNetworkEntityDamage: EntityDamageEvent;
120
+ CEventNetworkPlayerEnteredVehicle: PlayerEnteredVehicleEvent;
121
+ CEventNetworkPlayerLeftVehicle: PlayerLeftVehicleEvent;
122
+ CEventShockingSeenPedKilled: SeenPedKilledEvent;
123
+ CEventNetworkVehicleUndrivable: VehicleUndrivableEvent;
124
+ CEventGunShot: GunShotEvent;
125
+ [key: string]: unknown;
126
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * Game Events - Native GTA V internal events captured by FiveM
4
+ *
5
+ * Documentation: https://docs.fivem.net/docs/game-references/game-events/
6
+ *
7
+ * These are low-level events from the RAGE engine. The arguments are
8
+ * passed as arrays from the native layer.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.GameEventParsers = void 0;
12
+ // ─────────────────────────────────────────────────────────────────────────────
13
+ // Event Parsers - Convert raw args to typed objects
14
+ // ─────────────────────────────────────────────────────────────────────────────
15
+ exports.GameEventParsers = {
16
+ /**
17
+ * Parse CEventNetworkEntityDamage arguments
18
+ */
19
+ parseEntityDamage(args) {
20
+ return {
21
+ victim: args[0],
22
+ attacker: args[1],
23
+ arg2: args[2],
24
+ arg3: args[3],
25
+ arg4: args[4],
26
+ victimDied: args[5] === 1,
27
+ weaponHash: args[6],
28
+ arg7: args[7],
29
+ arg8: args[8],
30
+ arg9: args[9],
31
+ };
32
+ },
33
+ /**
34
+ * Parse CEventNetworkPlayerEnteredVehicle arguments
35
+ */
36
+ parsePlayerEnteredVehicle(args) {
37
+ return {
38
+ player: args[0],
39
+ vehicle: args[1],
40
+ };
41
+ },
42
+ /**
43
+ * Parse CEventNetworkPlayerLeftVehicle arguments
44
+ */
45
+ parsePlayerLeftVehicle(args) {
46
+ return {
47
+ player: args[0],
48
+ vehicle: args[1],
49
+ };
50
+ },
51
+ /**
52
+ * Parse CEventShockingSeenPedKilled arguments
53
+ */
54
+ parseSeenPedKilled(args) {
55
+ return {
56
+ witness: args[0],
57
+ victim: args[1],
58
+ };
59
+ },
60
+ /**
61
+ * Parse CEventNetworkVehicleUndrivable arguments
62
+ */
63
+ parseVehicleUndrivable(args) {
64
+ return {
65
+ vehicle: args[0],
66
+ attacker: args[1],
67
+ weaponHash: args[2],
68
+ };
69
+ },
70
+ /**
71
+ * Parse CEventGunShot arguments
72
+ */
73
+ parseGunShot(args) {
74
+ return {
75
+ shooter: args[0],
76
+ coords: {
77
+ x: args[1],
78
+ y: args[2],
79
+ z: args[3],
80
+ },
81
+ };
82
+ },
83
+ };
@@ -0,0 +1 @@
1
+ export * from './game-events';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./game-events"), exports);
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Type-safe NUI (Native UI) Bridge for client-server communication.
3
+ *
4
+ * Generic types allow for full type safety when sending/receiving messages.
5
+ * Define your event maps and pass them as type parameters.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * interface ClientToUI {
10
+ * 'showMenu': { items: string[] }
11
+ * 'hideMenu': void
12
+ * }
13
+ *
14
+ * interface UIToClient {
15
+ * 'menuItemSelected': { index: number }
16
+ * 'menuClosed': void
17
+ * }
18
+ *
19
+ * const nui = new NuiBridge<ClientToUI, UIToClient>()
20
+ * nui.send('showMenu', { items: ['Option 1', 'Option 2'] })
21
+ * nui.on('menuItemSelected', async (data) => console.log(data.index))
22
+ * ```
23
+ */
24
+ export declare class NuiBridge<TSend extends Record<string, any> = Record<string, any>, TReceive extends Record<string, any> = Record<string, any>> {
25
+ private _isVisible;
26
+ private _hasFocus;
27
+ private _hasCursor;
28
+ /**
29
+ * Whether the NUI frame is currently visible
30
+ */
31
+ get isVisible(): boolean;
32
+ /**
33
+ * Whether the NUI has input focus
34
+ */
35
+ get hasFocus(): boolean;
36
+ /**
37
+ * Whether the cursor is visible
38
+ */
39
+ get hasCursor(): boolean;
40
+ /**
41
+ * Send a message to the NUI (UI frame).
42
+ *
43
+ * @param action - The action/event name
44
+ * @param data - The data payload
45
+ */
46
+ send<K extends keyof TSend & string>(action: K, data: TSend[K]): void;
47
+ /**
48
+ * Send a raw message to the NUI without type checking.
49
+ *
50
+ * @param action - The action/event name
51
+ * @param data - The data payload
52
+ */
53
+ sendRaw(action: string, data: any): void;
54
+ /**
55
+ * Register a callback for NUI events from the UI.
56
+ *
57
+ * @param action - The action/event name to listen for
58
+ * @param handler - The callback handler
59
+ * @returns Cleanup function to unregister the callback
60
+ */
61
+ on<K extends keyof TReceive & string>(action: K, handler: (data: TReceive[K]) => void | Promise<void>): void;
62
+ /**
63
+ * Register a callback that expects a return value.
64
+ *
65
+ * @param action - The action/event name to listen for
66
+ * @param handler - The callback handler that returns data
67
+ */
68
+ onWithResponse<K extends keyof TReceive & string, R = any>(action: K, handler: (data: TReceive[K]) => R | Promise<R>): void;
69
+ /**
70
+ * Set NUI focus state.
71
+ *
72
+ * @param hasFocus - Whether the NUI should have input focus
73
+ * @param hasCursor - Whether to show the cursor (defaults to hasFocus value)
74
+ */
75
+ focus(hasFocus: boolean, hasCursor?: boolean): void;
76
+ /**
77
+ * Remove NUI focus (convenience method).
78
+ */
79
+ blur(): void;
80
+ /**
81
+ * Set NUI visibility state.
82
+ * Note: This only tracks state, you need to handle actual visibility in your UI.
83
+ *
84
+ * @param visible - Whether the NUI should be visible
85
+ */
86
+ setVisible(visible: boolean): void;
87
+ /**
88
+ * Show the NUI and optionally set focus.
89
+ *
90
+ * @param withFocus - Whether to also set focus
91
+ * @param withCursor - Whether to show cursor (defaults to withFocus)
92
+ */
93
+ show(withFocus?: boolean, withCursor?: boolean): void;
94
+ /**
95
+ * Hide the NUI and remove focus.
96
+ */
97
+ hide(): void;
98
+ /**
99
+ * Toggle NUI visibility.
100
+ *
101
+ * @param withFocus - Whether to set focus when showing
102
+ */
103
+ toggle(withFocus?: boolean): void;
104
+ /**
105
+ * Keep input focus but allow game input.
106
+ * Useful for HUDs that need to capture some keys but not all.
107
+ *
108
+ * @param keepInput - Whether to keep game input enabled
109
+ */
110
+ setKeepInput(keepInput: boolean): void;
111
+ }
112
+ /**
113
+ * Default untyped NUI instance for quick usage.
114
+ * For type-safe usage, create your own instance with proper generics.
115
+ */
116
+ export declare const NUI: NuiBridge<Record<string, any>, Record<string, any>>;