@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,4 @@
1
+ export * from './core';
2
+ export * from './ui';
3
+ export * from './world';
4
+ export * from './streaming';
@@ -0,0 +1,24 @@
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
+ // Core services
18
+ __exportStar(require("./core"), exports);
19
+ // UI services
20
+ __exportStar(require("./ui"), exports);
21
+ // World services
22
+ __exportStar(require("./world"), exports);
23
+ // Streaming services
24
+ __exportStar(require("./streaming"), exports);
@@ -0,0 +1 @@
1
+ export * from './streaming.service';
@@ -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("./streaming.service"), exports);
@@ -0,0 +1,165 @@
1
+ export interface StreamingRequest {
2
+ type: 'model' | 'animDict' | 'ptfx' | 'texture' | 'audio';
3
+ asset: string;
4
+ loaded: boolean;
5
+ hash?: number;
6
+ }
7
+ /**
8
+ * Service for managing asset streaming (models, animations, particles, etc.).
9
+ */
10
+ export declare class StreamingService {
11
+ private loadedAssets;
12
+ /**
13
+ * Request and load a model.
14
+ *
15
+ * @param model - Model name or hash
16
+ * @param timeout - Maximum wait time in ms
17
+ * @returns Whether the model was loaded successfully
18
+ */
19
+ requestModel(model: string | number, timeout?: number): Promise<boolean>;
20
+ /**
21
+ * Check if a model is loaded.
22
+ *
23
+ * @param model - Model name or hash
24
+ */
25
+ isModelLoaded(model: string | number): boolean;
26
+ /**
27
+ * Release a loaded model.
28
+ *
29
+ * @param model - Model name or hash
30
+ */
31
+ releaseModel(model: string | number): void;
32
+ /**
33
+ * Check if a model is valid and exists in the game files.
34
+ *
35
+ * @param model - Model name or hash
36
+ */
37
+ isModelValid(model: string | number): boolean;
38
+ /**
39
+ * Check if a model is a vehicle.
40
+ *
41
+ * @param model - Model name or hash
42
+ */
43
+ isModelVehicle(model: string | number): boolean;
44
+ /**
45
+ * Check if a model is a ped.
46
+ *
47
+ * @param model - Model name or hash
48
+ */
49
+ isModelPed(model: string | number): boolean;
50
+ /**
51
+ * Request and load an animation dictionary.
52
+ *
53
+ * @param dict - Animation dictionary name
54
+ * @param timeout - Maximum wait time in ms
55
+ * @returns Whether the dictionary was loaded successfully
56
+ */
57
+ requestAnimDict(dict: string, timeout?: number): Promise<boolean>;
58
+ /**
59
+ * Check if an animation dictionary is loaded.
60
+ *
61
+ * @param dict - Animation dictionary name
62
+ */
63
+ isAnimDictLoaded(dict: string): boolean;
64
+ /**
65
+ * Release a loaded animation dictionary.
66
+ *
67
+ * @param dict - Animation dictionary name
68
+ */
69
+ releaseAnimDict(dict: string): void;
70
+ /**
71
+ * Request and load a particle effect asset.
72
+ *
73
+ * @param asset - PTFX asset name
74
+ * @param timeout - Maximum wait time in ms
75
+ * @returns Whether the asset was loaded successfully
76
+ */
77
+ requestPtfxAsset(asset: string, timeout?: number): Promise<boolean>;
78
+ /**
79
+ * Check if a PTFX asset is loaded.
80
+ *
81
+ * @param asset - PTFX asset name
82
+ */
83
+ isPtfxAssetLoaded(asset: string): boolean;
84
+ /**
85
+ * Release a loaded PTFX asset.
86
+ *
87
+ * @param asset - PTFX asset name
88
+ */
89
+ releasePtfxAsset(asset: string): void;
90
+ /**
91
+ * Start a particle effect at a position.
92
+ *
93
+ * @param asset - PTFX asset name
94
+ * @param effectName - Effect name within the asset
95
+ * @param position - World position
96
+ * @param rotation - Rotation
97
+ * @param scale - Scale
98
+ * @param looped - Whether to loop
99
+ * @returns The particle effect handle
100
+ */
101
+ startParticleEffect(asset: string, effectName: string, position: {
102
+ x: number;
103
+ y: number;
104
+ z: number;
105
+ }, rotation?: {
106
+ x: number;
107
+ y: number;
108
+ z: number;
109
+ }, scale?: number, looped?: boolean): Promise<number>;
110
+ /**
111
+ * Stop a looped particle effect.
112
+ *
113
+ * @param handle - Particle effect handle
114
+ */
115
+ stopParticleEffect(handle: number): void;
116
+ /**
117
+ * Request and load a texture dictionary.
118
+ *
119
+ * @param dict - Texture dictionary name
120
+ * @param timeout - Maximum wait time in ms
121
+ * @returns Whether the dictionary was loaded successfully
122
+ */
123
+ requestTextureDict(dict: string, timeout?: number): Promise<boolean>;
124
+ /**
125
+ * Check if a texture dictionary is loaded.
126
+ *
127
+ * @param dict - Texture dictionary name
128
+ */
129
+ isTextureDictLoaded(dict: string): boolean;
130
+ /**
131
+ * Release a loaded texture dictionary.
132
+ *
133
+ * @param dict - Texture dictionary name
134
+ */
135
+ releaseTextureDict(dict: string): void;
136
+ /**
137
+ * Request and load a script audio bank.
138
+ *
139
+ * @param audioBank - Audio bank name
140
+ * @param networked - Whether the audio should be networked
141
+ * @param timeout - Maximum wait time in ms
142
+ * @returns Whether the audio bank was loaded successfully
143
+ */
144
+ requestAudioBank(audioBank: string, networked?: boolean, _timeout?: number): Promise<boolean>;
145
+ /**
146
+ * Release a loaded audio bank.
147
+ *
148
+ * @param audioBank - Audio bank name
149
+ */
150
+ releaseAudioBank(audioBank: string): void;
151
+ /**
152
+ * Get all currently loaded assets.
153
+ */
154
+ getLoadedAssets(): StreamingRequest[];
155
+ /**
156
+ * Release all loaded assets.
157
+ */
158
+ releaseAll(): void;
159
+ /**
160
+ * Get hash key for a string.
161
+ *
162
+ * @param str - String to hash
163
+ */
164
+ getHash(str: string): number;
165
+ }
@@ -0,0 +1,341 @@
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.StreamingService = void 0;
10
+ const tsyringe_1 = require("tsyringe");
11
+ /**
12
+ * Service for managing asset streaming (models, animations, particles, etc.).
13
+ */
14
+ let StreamingService = class StreamingService {
15
+ constructor() {
16
+ this.loadedAssets = new Map();
17
+ }
18
+ // ─────────────────────────────────────────────────────────────────────────────
19
+ // Model Loading
20
+ // ─────────────────────────────────────────────────────────────────────────────
21
+ /**
22
+ * Request and load a model.
23
+ *
24
+ * @param model - Model name or hash
25
+ * @param timeout - Maximum wait time in ms
26
+ * @returns Whether the model was loaded successfully
27
+ */
28
+ async requestModel(model, timeout = 10000) {
29
+ var _a;
30
+ const hash = typeof model === 'string' ? GetHashKey(model) : model;
31
+ const key = `model:${hash}`;
32
+ // Already loaded
33
+ if ((_a = this.loadedAssets.get(key)) === null || _a === void 0 ? void 0 : _a.loaded) {
34
+ return true;
35
+ }
36
+ // Check if valid
37
+ if (!IsModelInCdimage(hash) || !IsModelValid(hash)) {
38
+ return false;
39
+ }
40
+ RequestModel(hash);
41
+ const startTime = GetGameTimer();
42
+ while (!HasModelLoaded(hash)) {
43
+ if (GetGameTimer() - startTime > timeout) {
44
+ return false;
45
+ }
46
+ await new Promise((r) => setTimeout(r, 0));
47
+ }
48
+ this.loadedAssets.set(key, { type: 'model', asset: String(model), loaded: true, hash });
49
+ return true;
50
+ }
51
+ /**
52
+ * Check if a model is loaded.
53
+ *
54
+ * @param model - Model name or hash
55
+ */
56
+ isModelLoaded(model) {
57
+ const hash = typeof model === 'string' ? GetHashKey(model) : model;
58
+ return HasModelLoaded(hash);
59
+ }
60
+ /**
61
+ * Release a loaded model.
62
+ *
63
+ * @param model - Model name or hash
64
+ */
65
+ releaseModel(model) {
66
+ const hash = typeof model === 'string' ? GetHashKey(model) : model;
67
+ SetModelAsNoLongerNeeded(hash);
68
+ this.loadedAssets.delete(`model:${hash}`);
69
+ }
70
+ /**
71
+ * Check if a model is valid and exists in the game files.
72
+ *
73
+ * @param model - Model name or hash
74
+ */
75
+ isModelValid(model) {
76
+ const hash = typeof model === 'string' ? GetHashKey(model) : model;
77
+ return IsModelInCdimage(hash) && IsModelValid(hash);
78
+ }
79
+ /**
80
+ * Check if a model is a vehicle.
81
+ *
82
+ * @param model - Model name or hash
83
+ */
84
+ isModelVehicle(model) {
85
+ const hash = typeof model === 'string' ? GetHashKey(model) : model;
86
+ return IsModelAVehicle(hash);
87
+ }
88
+ /**
89
+ * Check if a model is a ped.
90
+ *
91
+ * @param model - Model name or hash
92
+ */
93
+ isModelPed(model) {
94
+ const hash = typeof model === 'string' ? GetHashKey(model) : model;
95
+ return IsModelAPed(hash);
96
+ }
97
+ // ─────────────────────────────────────────────────────────────────────────────
98
+ // Animation Dictionary Loading
99
+ // ─────────────────────────────────────────────────────────────────────────────
100
+ /**
101
+ * Request and load an animation dictionary.
102
+ *
103
+ * @param dict - Animation dictionary name
104
+ * @param timeout - Maximum wait time in ms
105
+ * @returns Whether the dictionary was loaded successfully
106
+ */
107
+ async requestAnimDict(dict, timeout = 10000) {
108
+ var _a;
109
+ const key = `anim:${dict}`;
110
+ // Already loaded
111
+ if ((_a = this.loadedAssets.get(key)) === null || _a === void 0 ? void 0 : _a.loaded) {
112
+ return true;
113
+ }
114
+ RequestAnimDict(dict);
115
+ const startTime = GetGameTimer();
116
+ while (!HasAnimDictLoaded(dict)) {
117
+ if (GetGameTimer() - startTime > timeout) {
118
+ return false;
119
+ }
120
+ await new Promise((r) => setTimeout(r, 0));
121
+ }
122
+ this.loadedAssets.set(key, { type: 'animDict', asset: dict, loaded: true });
123
+ return true;
124
+ }
125
+ /**
126
+ * Check if an animation dictionary is loaded.
127
+ *
128
+ * @param dict - Animation dictionary name
129
+ */
130
+ isAnimDictLoaded(dict) {
131
+ return HasAnimDictLoaded(dict);
132
+ }
133
+ /**
134
+ * Release a loaded animation dictionary.
135
+ *
136
+ * @param dict - Animation dictionary name
137
+ */
138
+ releaseAnimDict(dict) {
139
+ RemoveAnimDict(dict);
140
+ this.loadedAssets.delete(`anim:${dict}`);
141
+ }
142
+ // ─────────────────────────────────────────────────────────────────────────────
143
+ // Particle Effects (PTFX) Loading
144
+ // ─────────────────────────────────────────────────────────────────────────────
145
+ /**
146
+ * Request and load a particle effect asset.
147
+ *
148
+ * @param asset - PTFX asset name
149
+ * @param timeout - Maximum wait time in ms
150
+ * @returns Whether the asset was loaded successfully
151
+ */
152
+ async requestPtfxAsset(asset, timeout = 10000) {
153
+ var _a;
154
+ const key = `ptfx:${asset}`;
155
+ // Already loaded
156
+ if ((_a = this.loadedAssets.get(key)) === null || _a === void 0 ? void 0 : _a.loaded) {
157
+ return true;
158
+ }
159
+ RequestNamedPtfxAsset(asset);
160
+ const startTime = GetGameTimer();
161
+ while (!HasNamedPtfxAssetLoaded(asset)) {
162
+ if (GetGameTimer() - startTime > timeout) {
163
+ return false;
164
+ }
165
+ await new Promise((r) => setTimeout(r, 0));
166
+ }
167
+ this.loadedAssets.set(key, { type: 'ptfx', asset, loaded: true });
168
+ return true;
169
+ }
170
+ /**
171
+ * Check if a PTFX asset is loaded.
172
+ *
173
+ * @param asset - PTFX asset name
174
+ */
175
+ isPtfxAssetLoaded(asset) {
176
+ return HasNamedPtfxAssetLoaded(asset);
177
+ }
178
+ /**
179
+ * Release a loaded PTFX asset.
180
+ *
181
+ * @param asset - PTFX asset name
182
+ */
183
+ releasePtfxAsset(asset) {
184
+ RemoveNamedPtfxAsset(asset);
185
+ this.loadedAssets.delete(`ptfx:${asset}`);
186
+ }
187
+ /**
188
+ * Start a particle effect at a position.
189
+ *
190
+ * @param asset - PTFX asset name
191
+ * @param effectName - Effect name within the asset
192
+ * @param position - World position
193
+ * @param rotation - Rotation
194
+ * @param scale - Scale
195
+ * @param looped - Whether to loop
196
+ * @returns The particle effect handle
197
+ */
198
+ async startParticleEffect(asset, effectName, position, rotation = { x: 0, y: 0, z: 0 }, scale = 1.0, looped = false) {
199
+ await this.requestPtfxAsset(asset);
200
+ UseParticleFxAssetNextCall(asset);
201
+ if (looped) {
202
+ return StartParticleFxLoopedAtCoord(effectName, position.x, position.y, position.z, rotation.x, rotation.y, rotation.z, scale, false, false, false, false);
203
+ }
204
+ else {
205
+ return StartParticleFxNonLoopedAtCoord(effectName, position.x, position.y, position.z, rotation.x, rotation.y, rotation.z, scale, false, false, false);
206
+ }
207
+ }
208
+ /**
209
+ * Stop a looped particle effect.
210
+ *
211
+ * @param handle - Particle effect handle
212
+ */
213
+ stopParticleEffect(handle) {
214
+ StopParticleFxLooped(handle, false);
215
+ }
216
+ // ─────────────────────────────────────────────────────────────────────────────
217
+ // Texture Dictionary Loading
218
+ // ─────────────────────────────────────────────────────────────────────────────
219
+ /**
220
+ * Request and load a texture dictionary.
221
+ *
222
+ * @param dict - Texture dictionary name
223
+ * @param timeout - Maximum wait time in ms
224
+ * @returns Whether the dictionary was loaded successfully
225
+ */
226
+ async requestTextureDict(dict, timeout = 10000) {
227
+ var _a;
228
+ const key = `texture:${dict}`;
229
+ // Already loaded
230
+ if ((_a = this.loadedAssets.get(key)) === null || _a === void 0 ? void 0 : _a.loaded) {
231
+ return true;
232
+ }
233
+ RequestStreamedTextureDict(dict, true);
234
+ const startTime = GetGameTimer();
235
+ while (!HasStreamedTextureDictLoaded(dict)) {
236
+ if (GetGameTimer() - startTime > timeout) {
237
+ return false;
238
+ }
239
+ await new Promise((r) => setTimeout(r, 0));
240
+ }
241
+ this.loadedAssets.set(key, { type: 'texture', asset: dict, loaded: true });
242
+ return true;
243
+ }
244
+ /**
245
+ * Check if a texture dictionary is loaded.
246
+ *
247
+ * @param dict - Texture dictionary name
248
+ */
249
+ isTextureDictLoaded(dict) {
250
+ return HasStreamedTextureDictLoaded(dict);
251
+ }
252
+ /**
253
+ * Release a loaded texture dictionary.
254
+ *
255
+ * @param dict - Texture dictionary name
256
+ */
257
+ releaseTextureDict(dict) {
258
+ SetStreamedTextureDictAsNoLongerNeeded(dict);
259
+ this.loadedAssets.delete(`texture:${dict}`);
260
+ }
261
+ // ─────────────────────────────────────────────────────────────────────────────
262
+ // Audio Loading
263
+ // ─────────────────────────────────────────────────────────────────────────────
264
+ /**
265
+ * Request and load a script audio bank.
266
+ *
267
+ * @param audioBank - Audio bank name
268
+ * @param networked - Whether the audio should be networked
269
+ * @param timeout - Maximum wait time in ms
270
+ * @returns Whether the audio bank was loaded successfully
271
+ */
272
+ async requestAudioBank(audioBank, networked = false, _timeout = 10000) {
273
+ var _a;
274
+ const key = `audio:${audioBank}`;
275
+ // Already loaded
276
+ if ((_a = this.loadedAssets.get(key)) === null || _a === void 0 ? void 0 : _a.loaded) {
277
+ return true;
278
+ }
279
+ const success = RequestScriptAudioBank(audioBank, networked);
280
+ if (!success)
281
+ return false;
282
+ this.loadedAssets.set(key, { type: 'audio', asset: audioBank, loaded: true });
283
+ return true;
284
+ }
285
+ /**
286
+ * Release a loaded audio bank.
287
+ *
288
+ * @param audioBank - Audio bank name
289
+ */
290
+ releaseAudioBank(audioBank) {
291
+ ReleaseScriptAudioBank();
292
+ this.loadedAssets.delete(`audio:${audioBank}`);
293
+ }
294
+ // ─────────────────────────────────────────────────────────────────────────────
295
+ // Utility Methods
296
+ // ─────────────────────────────────────────────────────────────────────────────
297
+ /**
298
+ * Get all currently loaded assets.
299
+ */
300
+ getLoadedAssets() {
301
+ return Array.from(this.loadedAssets.values());
302
+ }
303
+ /**
304
+ * Release all loaded assets.
305
+ */
306
+ releaseAll() {
307
+ for (const asset of this.loadedAssets.values()) {
308
+ switch (asset.type) {
309
+ case 'model':
310
+ if (asset.hash)
311
+ SetModelAsNoLongerNeeded(asset.hash);
312
+ break;
313
+ case 'animDict':
314
+ RemoveAnimDict(asset.asset);
315
+ break;
316
+ case 'ptfx':
317
+ RemoveNamedPtfxAsset(asset.asset);
318
+ break;
319
+ case 'texture':
320
+ SetStreamedTextureDictAsNoLongerNeeded(asset.asset);
321
+ break;
322
+ case 'audio':
323
+ ReleaseScriptAudioBank();
324
+ break;
325
+ }
326
+ }
327
+ this.loadedAssets.clear();
328
+ }
329
+ /**
330
+ * Get hash key for a string.
331
+ *
332
+ * @param str - String to hash
333
+ */
334
+ getHash(str) {
335
+ return GetHashKey(str);
336
+ }
337
+ };
338
+ exports.StreamingService = StreamingService;
339
+ exports.StreamingService = StreamingService = __decorate([
340
+ (0, tsyringe_1.injectable)()
341
+ ], StreamingService);
@@ -0,0 +1,3 @@
1
+ export * from './notification.service';
2
+ export * from './textui.service';
3
+ export * from './progress.service';
@@ -0,0 +1,19 @@
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("./notification.service"), exports);
18
+ __exportStar(require("./textui.service"), exports);
19
+ __exportStar(require("./progress.service"), exports);
@@ -0,0 +1,76 @@
1
+ export type NotificationType = 'info' | 'success' | 'warning' | 'error';
2
+ export interface AdvancedNotificationOptions {
3
+ /** Notification title */
4
+ title: string;
5
+ /** Notification subtitle */
6
+ subtitle?: string;
7
+ /** Message text */
8
+ message: string;
9
+ /** Texture dictionary for the icon */
10
+ textureDict?: string;
11
+ /** Texture name for the icon */
12
+ textureName?: string;
13
+ /** Icon type (1-7) */
14
+ iconType?: number;
15
+ /** Flash the notification */
16
+ flash?: boolean;
17
+ /** Save to brief (map menu) */
18
+ saveToBrief?: boolean;
19
+ /** Background color index */
20
+ backgroundColor?: number;
21
+ }
22
+ /**
23
+ * Service for displaying native GTA V notifications.
24
+ */
25
+ export declare class NotificationService {
26
+ /**
27
+ * Show a simple notification on screen.
28
+ *
29
+ * @param message - The message to display
30
+ * @param blink - Whether the notification should blink
31
+ */
32
+ show(message: string, blink?: boolean): void;
33
+ /**
34
+ * Show a notification with a type indicator using throbber icons.
35
+ *
36
+ * @param message - The message to display
37
+ * @param type - The notification type
38
+ */
39
+ showWithType(message: string, type?: NotificationType): void;
40
+ /**
41
+ * Show an advanced notification with picture/icon.
42
+ *
43
+ * @param options - Advanced notification options
44
+ */
45
+ showAdvanced(options: AdvancedNotificationOptions): void;
46
+ /**
47
+ * Show a help notification (appears at top-left).
48
+ *
49
+ * @param message - The help message
50
+ * @param duration - How long to show in milliseconds (-1 for indefinite)
51
+ * @param beep - Play a beep sound
52
+ * @param looped - Keep showing until cleared
53
+ */
54
+ showHelp(message: string, duration?: number, beep?: boolean, looped?: boolean): void;
55
+ /**
56
+ * Clear all help messages.
57
+ */
58
+ clearHelp(): void;
59
+ /**
60
+ * Show a subtitle (centered at bottom of screen).
61
+ *
62
+ * @param message - The subtitle text
63
+ * @param duration - Duration in milliseconds
64
+ */
65
+ showSubtitle(message: string, duration?: number): void;
66
+ /**
67
+ * Clear the current subtitle.
68
+ */
69
+ clearSubtitle(): void;
70
+ /**
71
+ * Show a floating help text above the player's head.
72
+ *
73
+ * @param message - The message to display
74
+ */
75
+ showFloatingHelp(message: string): void;
76
+ }