@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,32 @@
1
+ /**
2
+ * Represents the security identity of a user/player within the framework.
3
+ * This interface bridges the gap between the Core framework and your specific database implementation.
4
+ */
5
+ export interface Principal {
6
+ /**
7
+ * Unique identifier for the user (e.g., database role ID).
8
+ */
9
+ id: string;
10
+ /**
11
+ * Display name for the role or user, useful for Chat or UI (e.g., "Moderator", "VIP").
12
+ */
13
+ name?: string;
14
+ /**
15
+ * Numeric weight for hierarchy comparisons.
16
+ * - Used by the `@Guard({ rank: N })` decorator.
17
+ * - **Logic:** `UserRank >= RequiredRank`.
18
+ * - Higher numbers imply higher privileges.
19
+ */
20
+ rank?: number;
21
+ /**
22
+ * List of specific permission strings assigned to this principal.
23
+ * - Used by the `@Guard({ permission: 'string' })` decorator.
24
+ * - Supports the `'*'` wildcard for super-admin access.
25
+ */
26
+ permissions: string[];
27
+ /**
28
+ * Arbitrary metadata for game-specific logic (e.g., chat colors, badge IDs, staff status).
29
+ * This prevents the need to modify the Core types for visual extras.
30
+ */
31
+ meta?: Record<string, unknown>;
32
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,43 @@
1
+ import type { Server } from '../../..';
2
+ import type { LinkedID } from '../../services';
3
+ import type { Principal } from './permission.types';
4
+ /**
5
+ * **Authorization**
6
+ *
7
+ * This abstract class defines how the Security Layer retrieves user permissions.
8
+ * The Framework does not know about your database (SQL, Mongo, JSON or API); it relies on
9
+ * your implementation of this provider to resolve a `Principal`.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * // In your game resource:
14
+ * class MyAuthProvider implements PrincipalProviderContract { ... }
15
+ * ```
16
+ */
17
+ export declare abstract class PrincipalProviderContract {
18
+ /**
19
+ * Retrieves the security principal (Role/Permissions) for a connected player.
20
+ *
21
+ * **Performance Note:** This method is called frequently (on every guarded interaction).
22
+ * It is highly recommended to cache the result in memory (e.g., in `Player.session`).
23
+ *
24
+ * @param player - The active Server Player entity.
25
+ * @returns A Promise resolving to the `Principal` data, or `null` if the player is not authenticated.
26
+ */
27
+ abstract getPrincipal(player: Server.Player): Promise<Principal | null>;
28
+ /**
29
+ * Forces a refresh of the player's permissions from the persistence layer.
30
+ * Useful when a player is promoted/demoted while online.
31
+ *
32
+ * @param player - The active Server Player entity to refresh.
33
+ */
34
+ abstract refreshPrincipal(player: Server.Player): Promise<void>;
35
+ /**
36
+ * Retrieves a principal by their Account ID, even if they are offline.
37
+ * Useful for web panels, discord bots, or offline bans.
38
+ *
39
+ * @param linkedID - The unique linked ID (Account ID).
40
+ * @returns The Principal data or null.
41
+ */
42
+ abstract getPrincipalByLinkedID(linkedID: LinkedID): Promise<Principal | null>;
43
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrincipalProviderContract = void 0;
4
+ /**
5
+ * **Authorization**
6
+ *
7
+ * This abstract class defines how the Security Layer retrieves user permissions.
8
+ * The Framework does not know about your database (SQL, Mongo, JSON or API); it relies on
9
+ * your implementation of this provider to resolve a `Principal`.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * // In your game resource:
14
+ * class MyAuthProvider implements PrincipalProviderContract { ... }
15
+ * ```
16
+ */
17
+ class PrincipalProviderContract {
18
+ }
19
+ exports.PrincipalProviderContract = PrincipalProviderContract;
@@ -0,0 +1,5 @@
1
+ import type { Server } from '../../..';
2
+ import type { SecurityError } from '../../../utils';
3
+ export declare abstract class SecurityHandlerContract {
4
+ abstract handleViolation(player: Server.Player, error: SecurityError): Promise<void>;
5
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SecurityHandlerContract = void 0;
4
+ class SecurityHandlerContract {
5
+ }
6
+ exports.SecurityHandlerContract = SecurityHandlerContract;
@@ -0,0 +1,17 @@
1
+ export interface PlayerSessionCreatedPayload {
2
+ clientId: number;
3
+ license: string;
4
+ }
5
+ export interface PlayerSessionDestroyedPayload {
6
+ clientId: number;
7
+ }
8
+ export interface TransferCompletedPayload {
9
+ playerId: number;
10
+ amount: number;
11
+ targetId: number;
12
+ }
13
+ export type CoreEventMap = {
14
+ 'core:playerSessionCreated': PlayerSessionCreatedPayload;
15
+ 'core:playerSessionDestroyed': PlayerSessionDestroyedPayload;
16
+ 'core:transfer:completed': TransferCompletedPayload;
17
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ export type SecurityAction = 'LOG' | 'WARN' | 'KICK' | 'BAN';
2
+ export interface SecurityViolation {
3
+ code: string;
4
+ message: string;
5
+ action: SecurityAction;
6
+ details?: unknown;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export * from './logger';
@@ -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("./logger"), exports);
@@ -0,0 +1,35 @@
1
+ import { LoggerService } from './logger.service';
2
+ /**
3
+ * Singleton logger instance for internal OpenCore framework use.
4
+ *
5
+ * This logger is pre-configured for framework-level logging and should only
6
+ * be used by OpenCore internals. Resource developers should inject LoggerService
7
+ * via DI instead.
8
+ *
9
+ * @internal
10
+ */
11
+ export declare const coreLogger: LoggerService;
12
+ export declare const loggers: {
13
+ /** Bootstrap and initialization logs */
14
+ bootstrap: import("./logger.service").ChildLogger;
15
+ /** Metadata scanning and decorator processing */
16
+ scanner: import("./logger.service").ChildLogger;
17
+ /** Player session management */
18
+ session: import("./logger.service").ChildLogger;
19
+ /** Command registration and execution */
20
+ command: import("./logger.service").ChildLogger;
21
+ /** Network events processing */
22
+ netEvent: import("./logger.service").ChildLogger;
23
+ /** Security violations and access control */
24
+ security: import("./logger.service").ChildLogger;
25
+ /** Core event bus */
26
+ eventBus: import("./logger.service").ChildLogger;
27
+ /** Export registration */
28
+ exports: import("./logger.service").ChildLogger;
29
+ /** Tick handlers (server) */
30
+ tick: import("./logger.service").ChildLogger;
31
+ /** NUI callbacks (client) */
32
+ nui: import("./logger.service").ChildLogger;
33
+ /** Spawn service (client) */
34
+ spawn: import("./logger.service").ChildLogger;
35
+ };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loggers = exports.coreLogger = void 0;
4
+ const logger_types_1 = require("./logger.types");
5
+ const logger_service_1 = require("./logger.service");
6
+ const console_transport_1 = require("./transports/console.transport");
7
+ /**
8
+ * Singleton logger instance for internal OpenCore framework use.
9
+ *
10
+ * This logger is pre-configured for framework-level logging and should only
11
+ * be used by OpenCore internals. Resource developers should inject LoggerService
12
+ * via DI instead.
13
+ *
14
+ * @internal
15
+ */
16
+ exports.coreLogger = new logger_service_1.LoggerService({
17
+ minLevel: logger_types_1.LogLevel.DEBUG,
18
+ defaultDomain: logger_types_1.LogDomain.FRAMEWORK,
19
+ defaultSource: 'Core',
20
+ transports: [
21
+ new console_transport_1.ConsoleTransport({
22
+ minLevel: logger_types_1.LogLevel.DEBUG,
23
+ colors: true,
24
+ timestamps: true,
25
+ }),
26
+ ],
27
+ });
28
+ // Pre-configured child loggers for common framework components
29
+ exports.loggers = {
30
+ /** Bootstrap and initialization logs */
31
+ bootstrap: exports.coreLogger.framework('Bootstrap'),
32
+ /** Metadata scanning and decorator processing */
33
+ scanner: exports.coreLogger.framework('Scanner'),
34
+ /** Player session management */
35
+ session: exports.coreLogger.framework('Session'),
36
+ /** Command registration and execution */
37
+ command: exports.coreLogger.framework('Command'),
38
+ /** Network events processing */
39
+ netEvent: exports.coreLogger.framework('NetEvent'),
40
+ /** Security violations and access control */
41
+ security: exports.coreLogger.framework('Security'),
42
+ /** Core event bus */
43
+ eventBus: exports.coreLogger.framework('EventBus'),
44
+ /** Export registration */
45
+ exports: exports.coreLogger.framework('Exports'),
46
+ /** Tick handlers (server) */
47
+ tick: exports.coreLogger.framework('Tick'),
48
+ /** NUI callbacks (client) */
49
+ nui: exports.coreLogger.client('NUI'),
50
+ /** Spawn service (client) */
51
+ spawn: exports.coreLogger.client('Spawn'),
52
+ };
@@ -0,0 +1,11 @@
1
+ export { LogLevel, LogLevelLabels, LogDomain, LogDomainLabels, parseLogLevel } from './logger.types';
2
+ export type { LogContext, LogEntry } from './logger.types';
3
+ export { createLoggerConfig, DEFAULT_LOGGER_CONFIG } from './logger.config';
4
+ export type { LoggerConfig } from './logger.config';
5
+ export { LoggerService, ChildLogger } from './logger.service';
6
+ export { coreLogger, loggers } from './core-logger';
7
+ export type { LogTransport } from './transports/transport.interface';
8
+ export { ConsoleTransport } from './transports/console.transport';
9
+ export type { ConsoleTransportOptions } from './transports/console.transport';
10
+ export { BufferedTransport } from './transports/buffered.transport';
11
+ export type { BufferedTransportOptions, LogOutputFormat } from './transports/buffered.transport';
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BufferedTransport = exports.ConsoleTransport = exports.loggers = exports.coreLogger = exports.ChildLogger = exports.LoggerService = exports.DEFAULT_LOGGER_CONFIG = exports.createLoggerConfig = exports.parseLogLevel = exports.LogDomainLabels = exports.LogDomain = exports.LogLevelLabels = exports.LogLevel = void 0;
4
+ // Types
5
+ var logger_types_1 = require("./logger.types");
6
+ Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return logger_types_1.LogLevel; } });
7
+ Object.defineProperty(exports, "LogLevelLabels", { enumerable: true, get: function () { return logger_types_1.LogLevelLabels; } });
8
+ Object.defineProperty(exports, "LogDomain", { enumerable: true, get: function () { return logger_types_1.LogDomain; } });
9
+ Object.defineProperty(exports, "LogDomainLabels", { enumerable: true, get: function () { return logger_types_1.LogDomainLabels; } });
10
+ Object.defineProperty(exports, "parseLogLevel", { enumerable: true, get: function () { return logger_types_1.parseLogLevel; } });
11
+ // Config
12
+ var logger_config_1 = require("./logger.config");
13
+ Object.defineProperty(exports, "createLoggerConfig", { enumerable: true, get: function () { return logger_config_1.createLoggerConfig; } });
14
+ Object.defineProperty(exports, "DEFAULT_LOGGER_CONFIG", { enumerable: true, get: function () { return logger_config_1.DEFAULT_LOGGER_CONFIG; } });
15
+ // Service
16
+ var logger_service_1 = require("./logger.service");
17
+ Object.defineProperty(exports, "LoggerService", { enumerable: true, get: function () { return logger_service_1.LoggerService; } });
18
+ Object.defineProperty(exports, "ChildLogger", { enumerable: true, get: function () { return logger_service_1.ChildLogger; } });
19
+ // Core Logger (internal framework use)
20
+ var core_logger_1 = require("./core-logger");
21
+ Object.defineProperty(exports, "coreLogger", { enumerable: true, get: function () { return core_logger_1.coreLogger; } });
22
+ Object.defineProperty(exports, "loggers", { enumerable: true, get: function () { return core_logger_1.loggers; } });
23
+ var console_transport_1 = require("./transports/console.transport");
24
+ Object.defineProperty(exports, "ConsoleTransport", { enumerable: true, get: function () { return console_transport_1.ConsoleTransport; } });
25
+ var buffered_transport_1 = require("./transports/buffered.transport");
26
+ Object.defineProperty(exports, "BufferedTransport", { enumerable: true, get: function () { return buffered_transport_1.BufferedTransport; } });
@@ -0,0 +1,47 @@
1
+ import { LogDomain, LogLevel } from './logger.types';
2
+ import type { LogTransport } from './transports/transport.interface';
3
+ /**
4
+ * Global configuration options for the LoggerService.
5
+ */
6
+ export interface LoggerConfig {
7
+ /**
8
+ * Global minimum log level. Logs below this level will be ignored entirely.
9
+ * Individual transports can have their own minLevel that's higher than this.
10
+ * @default LogLevel.DEBUG
11
+ */
12
+ minLevel: LogLevel;
13
+ /**
14
+ * Default domain/origin for logs when none is provided.
15
+ * @default LogDomain.SERVER
16
+ */
17
+ defaultDomain: LogDomain;
18
+ /**
19
+ * Default source name to use when none is provided.
20
+ * @default 'App'
21
+ */
22
+ defaultSource: string;
23
+ /**
24
+ * Array of transports that will receive log entries.
25
+ * If empty, a default ConsoleTransport will be used.
26
+ */
27
+ transports: LogTransport[];
28
+ }
29
+ /**
30
+ * Default configuration used when no custom config is provided.
31
+ */
32
+ export declare const DEFAULT_LOGGER_CONFIG: LoggerConfig;
33
+ /**
34
+ * Creates a new logger configuration by merging with defaults.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const config = createLoggerConfig({
39
+ * minLevel: LogLevel.INFO,
40
+ * transports: [
41
+ * new ConsoleTransport({ colors: true }),
42
+ * new MyCustomFileTransport()
43
+ * ]
44
+ * })
45
+ * ```
46
+ */
47
+ export declare function createLoggerConfig(partial: Partial<LoggerConfig>): LoggerConfig;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_LOGGER_CONFIG = void 0;
4
+ exports.createLoggerConfig = createLoggerConfig;
5
+ const logger_types_1 = require("./logger.types");
6
+ const console_transport_1 = require("./transports/console.transport");
7
+ /**
8
+ * Default configuration used when no custom config is provided.
9
+ */
10
+ exports.DEFAULT_LOGGER_CONFIG = {
11
+ minLevel: logger_types_1.LogLevel.DEBUG,
12
+ defaultDomain: logger_types_1.LogDomain.SERVER,
13
+ defaultSource: 'App',
14
+ transports: [new console_transport_1.ConsoleTransport()],
15
+ };
16
+ /**
17
+ * Creates a new logger configuration by merging with defaults.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const config = createLoggerConfig({
22
+ * minLevel: LogLevel.INFO,
23
+ * transports: [
24
+ * new ConsoleTransport({ colors: true }),
25
+ * new MyCustomFileTransport()
26
+ * ]
27
+ * })
28
+ * ```
29
+ */
30
+ function createLoggerConfig(partial) {
31
+ var _a;
32
+ return Object.assign(Object.assign(Object.assign({}, exports.DEFAULT_LOGGER_CONFIG), partial), { transports: (_a = partial.transports) !== null && _a !== void 0 ? _a : exports.DEFAULT_LOGGER_CONFIG.transports });
33
+ }
@@ -0,0 +1,161 @@
1
+ import { type LoggerConfig } from './logger.config';
2
+ import { LogDomain, LogLevel, type LogContext } from './logger.types';
3
+ import type { LogTransport } from './transports/transport.interface';
4
+ /**
5
+ * Central logging service for the framework.
6
+ *
7
+ * Provides structured logging with support for multiple transports,
8
+ * log levels, and contextual metadata for traceability.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * // Using with dependency injection
13
+ * @injectable()
14
+ * class MyController {
15
+ * constructor(private logger: LoggerService) {}
16
+ *
17
+ * doSomething() {
18
+ * this.logger.info('Operation started', { source: 'MyController' })
19
+ * this.logger.debug('Processing data', { playerId: 123 })
20
+ * }
21
+ * }
22
+ * ```
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // Manual instantiation with custom config
27
+ * const logger = new LoggerService({
28
+ * minLevel: LogLevel.INFO,
29
+ * transports: [new ConsoleTransport(), new FileTransport()]
30
+ * })
31
+ * ```
32
+ */
33
+ export declare class LoggerService {
34
+ private config;
35
+ constructor(config?: Partial<LoggerConfig>);
36
+ /**
37
+ * Log a TRACE level message. Most verbose, for deep debugging.
38
+ */
39
+ trace(message: string, context?: LogContext): void;
40
+ /**
41
+ * Log a DEBUG level message. Development-time information.
42
+ */
43
+ debug(message: string, context?: LogContext): void;
44
+ /**
45
+ * Log an INFO level message. General operational information.
46
+ */
47
+ info(message: string, context?: LogContext): void;
48
+ /**
49
+ * Log a WARN level message. Something unexpected but not necessarily wrong.
50
+ */
51
+ warn(message: string, context?: LogContext): void;
52
+ /**
53
+ * Log an ERROR level message. Something went wrong but the app can continue.
54
+ */
55
+ error(message: string, context?: LogContext, error?: Error): void;
56
+ /**
57
+ * Log a FATAL level message. Critical error, the app may need to stop.
58
+ */
59
+ fatal(message: string, context?: LogContext, error?: Error): void;
60
+ /**
61
+ * Add a new transport to receive log entries.
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * logger.addTransport(new FileTransport({ path: './logs/app.log' }))
66
+ * ```
67
+ */
68
+ addTransport(transport: LogTransport): void;
69
+ /**
70
+ * Remove a transport by name.
71
+ */
72
+ removeTransport(name: string): boolean;
73
+ /**
74
+ * Get all registered transports.
75
+ */
76
+ getTransports(): readonly LogTransport[];
77
+ /**
78
+ * Clear all transports.
79
+ */
80
+ clearTransports(): void;
81
+ /**
82
+ * Update the global minimum log level.
83
+ */
84
+ setMinLevel(level: LogLevel): void;
85
+ /**
86
+ * Get the current minimum log level.
87
+ */
88
+ getMinLevel(): LogLevel;
89
+ /**
90
+ * Create a server-level logger for server-side application code.
91
+ * These logs will be tagged with [SERVER] domain.
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const authLogger = logger.server('AuthController')
96
+ * authLogger.info('User logged in') // [SERVER] INFO [AuthController] User logged in
97
+ * ```
98
+ */
99
+ server(source: string): ChildLogger;
100
+ /**
101
+ * Create a framework-level logger for internal OpenCore logging.
102
+ * These logs will be tagged with [CORE] domain.
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const coreLogger = logger.framework('Bootstrap')
107
+ * coreLogger.error('Missing config') // [CORE] ERROR [Bootstrap] Missing config
108
+ * ```
109
+ */
110
+ framework(source: string): ChildLogger;
111
+ /**
112
+ * Create a client-level logger for client-side code.
113
+ * These logs will be tagged with [CLIENT] domain.
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const hudLogger = logger.client('HUD')
118
+ * hudLogger.debug('Rendering') // [CLIENT] DEBUG [HUD] Rendering
119
+ * ```
120
+ */
121
+ client(source: string): ChildLogger;
122
+ /**
123
+ * Create an external services logger for third-party APIs, databases, etc.
124
+ * These logs will be tagged with [EXTERNAL] domain.
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const stripeLogger = logger.external('StripeAPI')
129
+ * stripeLogger.warn('Rate limit') // [EXTERNAL] WARN [StripeAPI] Rate limit
130
+ * ```
131
+ */
132
+ external(source: string): ChildLogger;
133
+ /**
134
+ * Create a child logger with custom domain.
135
+ * Use this when you need a specific domain not covered by the convenience methods.
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const customLogger = logger.child('MyModule', LogDomain.EXTERNAL)
140
+ * ```
141
+ */
142
+ child(source: string, domain?: LogDomain): ChildLogger;
143
+ private log;
144
+ }
145
+ /**
146
+ * A lightweight logger wrapper with a preset source and domain context.
147
+ * Created via LoggerService.child(), .framework(), .client(), or .external()
148
+ */
149
+ export declare class ChildLogger {
150
+ private parent;
151
+ private source;
152
+ private domain?;
153
+ constructor(parent: LoggerService, source: string, domain?: LogDomain | undefined);
154
+ private buildContext;
155
+ trace(message: string, context?: Omit<LogContext, 'source' | 'domain'>): void;
156
+ debug(message: string, context?: Omit<LogContext, 'source' | 'domain'>): void;
157
+ info(message: string, context?: Omit<LogContext, 'source' | 'domain'>): void;
158
+ warn(message: string, context?: Omit<LogContext, 'source' | 'domain'>): void;
159
+ error(message: string, context?: Omit<LogContext, 'source' | 'domain'>, error?: Error): void;
160
+ fatal(message: string, context?: Omit<LogContext, 'source' | 'domain'>, error?: Error): void;
161
+ }