@open-core/framework 1.0.5-beta.1 → 1.0.5-beta.2
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.
- package/dist/adapters/contracts/IEngineEvents.d.ts +3 -0
- package/dist/adapters/contracts/IEngineEvents.js +7 -0
- package/dist/adapters/contracts/IPlatformContext.d.ts +43 -0
- package/dist/adapters/contracts/IPlatformContext.js +8 -0
- package/dist/adapters/contracts/client/IClientLocalPlayerBridge.d.ts +4 -0
- package/dist/adapters/contracts/client/IClientLocalPlayerBridge.js +2 -0
- package/dist/adapters/contracts/client/IClientLogConsole.d.ts +13 -0
- package/dist/adapters/contracts/client/IClientLogConsole.js +2 -0
- package/dist/adapters/contracts/client/IClientPlatformBridge.d.ts +195 -0
- package/dist/adapters/contracts/client/IClientPlatformBridge.js +282 -0
- package/dist/adapters/contracts/client/IClientRuntimeBridge.d.ts +18 -0
- package/dist/adapters/contracts/client/IClientRuntimeBridge.js +14 -0
- package/dist/adapters/contracts/client/IGtaPedAppearanceBridge.d.ts +26 -0
- package/dist/adapters/contracts/client/IGtaPedAppearanceBridge.js +2 -0
- package/dist/adapters/contracts/client/index.d.ts +7 -0
- package/dist/adapters/contracts/client/index.js +7 -0
- package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.d.ts +7 -0
- package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.js +2 -0
- package/dist/adapters/contracts/client/spawn/index.d.ts +2 -0
- package/dist/adapters/contracts/client/spawn/index.js +2 -0
- package/dist/adapters/contracts/client/spawn/types.d.ts +14 -0
- package/dist/adapters/contracts/client/ui/IClientBlipBridge.d.ts +25 -0
- package/dist/adapters/contracts/client/ui/IClientBlipBridge.js +2 -0
- package/dist/adapters/contracts/client/ui/IClientMarkerBridge.d.ts +31 -0
- package/dist/adapters/contracts/client/ui/IClientMarkerBridge.js +2 -0
- package/dist/adapters/contracts/client/ui/IClientNotificationBridge.d.ts +21 -0
- package/dist/adapters/contracts/client/ui/IClientNotificationBridge.js +2 -0
- package/dist/adapters/contracts/client/ui/index.d.ts +4 -0
- package/dist/adapters/contracts/client/ui/index.js +4 -0
- package/dist/adapters/contracts/client/ui/webview/IClientWebViewBridge.d.ts +13 -0
- package/dist/adapters/contracts/client/ui/webview/IClientWebViewBridge.js +2 -0
- package/dist/adapters/contracts/client/ui/webview/index.d.ts +2 -0
- package/dist/adapters/contracts/client/ui/webview/index.js +2 -0
- package/dist/adapters/contracts/client/ui/webview/types.d.ts +25 -0
- package/dist/adapters/contracts/client/ui/webview/types.js +0 -0
- package/dist/adapters/contracts/index.d.ts +4 -2
- package/dist/adapters/contracts/index.js +4 -3
- package/dist/adapters/contracts/runtime/index.d.ts +1 -0
- package/dist/adapters/contracts/runtime/index.js +1 -0
- package/dist/adapters/contracts/runtime/runtime-events.d.ts +9 -0
- package/dist/adapters/contracts/runtime/runtime-events.js +7 -0
- package/dist/adapters/contracts/server/IEntityServer.d.ts +4 -28
- package/dist/adapters/contracts/server/IEntityServer.js +0 -26
- package/dist/adapters/contracts/server/IPlayerServer.d.ts +7 -26
- package/dist/adapters/contracts/server/IPlayerServer.js +0 -26
- package/dist/adapters/contracts/server/index.d.ts +10 -0
- package/dist/adapters/contracts/server/index.js +10 -0
- package/dist/adapters/contracts/server/npc-lifecycle/INpcLifecycleServer.d.ts +5 -0
- package/dist/adapters/contracts/server/npc-lifecycle/INpcLifecycleServer.js +2 -0
- package/dist/adapters/contracts/server/npc-lifecycle/index.d.ts +2 -0
- package/dist/adapters/contracts/server/npc-lifecycle/index.js +2 -0
- package/dist/adapters/contracts/server/npc-lifecycle/types.d.ts +17 -0
- package/dist/adapters/contracts/server/npc-lifecycle/types.js +0 -0
- package/dist/adapters/contracts/server/player-appearance/IPlayerAppearanceLifecycleServer.d.ts +11 -0
- package/dist/adapters/contracts/server/player-appearance/IPlayerAppearanceLifecycleServer.js +2 -0
- package/dist/adapters/contracts/server/player-appearance/index.d.ts +1 -0
- package/dist/adapters/contracts/server/player-appearance/index.js +1 -0
- package/dist/adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer.d.ts +6 -0
- package/dist/adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer.js +2 -0
- package/dist/adapters/contracts/server/player-lifecycle/index.d.ts +2 -0
- package/dist/adapters/contracts/server/player-lifecycle/index.js +2 -0
- package/dist/adapters/contracts/server/player-lifecycle/types.d.ts +17 -0
- package/dist/adapters/contracts/server/player-lifecycle/types.js +0 -0
- package/dist/adapters/contracts/server/player-state/IPlayerStateSyncServer.d.ts +6 -0
- package/dist/adapters/contracts/server/player-state/IPlayerStateSyncServer.js +2 -0
- package/dist/adapters/contracts/server/player-state/index.d.ts +1 -0
- package/dist/adapters/contracts/server/player-state/index.js +1 -0
- package/dist/adapters/contracts/server/vehicle-lifecycle/IVehicleLifecycleServer.d.ts +5 -0
- package/dist/adapters/contracts/server/vehicle-lifecycle/IVehicleLifecycleServer.js +2 -0
- package/dist/adapters/contracts/server/vehicle-lifecycle/index.d.ts +2 -0
- package/dist/adapters/contracts/server/vehicle-lifecycle/index.js +2 -0
- package/dist/adapters/contracts/server/vehicle-lifecycle/types.d.ts +16 -0
- package/dist/adapters/contracts/server/vehicle-lifecycle/types.js +0 -0
- package/dist/adapters/contracts/transport/index.d.ts +4 -0
- package/dist/adapters/contracts/transport/index.js +4 -0
- package/dist/adapters/index.d.ts +3 -14
- package/dist/adapters/index.js +3 -20
- package/dist/adapters/node/node-capabilities.d.ts +11 -11
- package/dist/adapters/node/node-capabilities.js +15 -27
- package/dist/adapters/node/node-engine-events.d.ts +1 -1
- package/dist/adapters/node/node-engine-events.js +2 -1
- package/dist/adapters/node/node-entity-server.d.ts +2 -2
- package/dist/adapters/node/node-entity-server.js +2 -2
- package/dist/adapters/node/node-ped-appearance-client.d.ts +2 -2
- package/dist/adapters/node/node-ped-appearance-client.js +2 -2
- package/dist/adapters/node/node-platform.js +4 -4
- package/dist/adapters/node/node-player-server.d.ts +3 -2
- package/dist/adapters/node/node-player-server.js +8 -2
- package/dist/adapters/register-capabilities.d.ts +1 -1
- package/dist/adapters/register-capabilities.js +1 -3
- package/dist/adapters/register-client-capabilities.d.ts +3 -2
- package/dist/adapters/register-client-capabilities.js +16 -41
- package/dist/contracts/client.d.ts +5 -0
- package/dist/contracts/client.js +5 -0
- package/dist/contracts/server.d.ts +19 -0
- package/dist/contracts/server.js +19 -0
- package/dist/contracts.d.ts +4 -0
- package/dist/contracts.js +4 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/kernel/logger/client-log-console.d.ts +4 -0
- package/dist/kernel/logger/client-log-console.js +43 -0
- package/dist/kernel/logger/core-logger.d.ts +3 -1
- package/dist/kernel/logger/core-logger.js +4 -2
- package/dist/kernel/logger/index.d.ts +2 -0
- package/dist/kernel/logger/index.js +1 -0
- package/dist/kernel/logger/transports/dev-transport.factory.js +1 -1
- package/dist/kernel/logger/transports/simple-console.transport.js +13 -8
- package/dist/kernel-public.d.ts +1 -0
- package/dist/kernel-public.js +1 -0
- package/dist/runtime/client/adapter/client-adapter.d.ts +25 -0
- package/dist/runtime/client/adapter/client-adapter.js +11 -0
- package/dist/runtime/client/adapter/index.d.ts +15 -0
- package/dist/runtime/client/adapter/index.js +15 -0
- package/dist/runtime/client/adapter/local-player-bridge.d.ts +1 -0
- package/dist/runtime/client/adapter/local-player-bridge.js +1 -0
- package/dist/runtime/client/adapter/node-blip-bridge.d.ts +9 -0
- package/dist/runtime/client/adapter/node-blip-bridge.js +34 -0
- package/dist/runtime/client/adapter/node-client-adapter.d.ts +5 -0
- package/dist/runtime/client/adapter/node-client-adapter.js +50 -0
- package/dist/runtime/client/adapter/node-local-player-bridge.d.ts +8 -0
- package/dist/{adapters/fivem/fivem-hasher.js → runtime/client/adapter/node-local-player-bridge.js} +7 -9
- package/dist/runtime/client/adapter/node-log-console.d.ts +11 -0
- package/dist/runtime/client/adapter/node-log-console.js +48 -0
- package/dist/runtime/client/adapter/node-marker-bridge.d.ts +10 -0
- package/dist/runtime/client/adapter/node-marker-bridge.js +35 -0
- package/dist/runtime/client/adapter/node-notification-bridge.d.ts +5 -0
- package/dist/runtime/client/adapter/node-notification-bridge.js +16 -0
- package/dist/runtime/client/adapter/node-platform-bridge.d.ts +3 -0
- package/dist/{adapters/fivem/fivem-tick.js → runtime/client/adapter/node-platform-bridge.js} +5 -10
- package/dist/runtime/client/adapter/node-runtime-bridge.d.ts +24 -0
- package/dist/runtime/client/adapter/node-runtime-bridge.js +58 -0
- package/dist/runtime/client/adapter/node-spawn-bridge.d.ts +8 -0
- package/dist/runtime/client/adapter/node-spawn-bridge.js +18 -0
- package/dist/runtime/client/adapter/node-webview-bridge.d.ts +15 -0
- package/dist/runtime/client/adapter/node-webview-bridge.js +43 -0
- package/dist/runtime/client/adapter/platform-bridge.d.ts +1 -0
- package/dist/runtime/client/adapter/platform-bridge.js +1 -0
- package/dist/runtime/client/adapter/registry.d.ts +9 -0
- package/dist/runtime/client/adapter/registry.js +85 -0
- package/dist/runtime/client/adapter/runtime-bridge.d.ts +1 -0
- package/dist/runtime/client/adapter/runtime-bridge.js +1 -0
- package/dist/runtime/client/api.d.ts +2 -1
- package/dist/runtime/client/api.js +2 -1
- package/dist/runtime/client/client-bootstrap.js +51 -44
- package/dist/runtime/client/client-core.d.ts +2 -0
- package/dist/runtime/client/client-core.js +9 -0
- package/dist/runtime/client/client-runtime.d.ts +3 -0
- package/dist/runtime/client/client-runtime.js +3 -0
- package/dist/runtime/client/controllers/appearance.controller.d.ts +3 -1
- package/dist/runtime/client/controllers/appearance.controller.js +14 -4
- package/dist/runtime/client/controllers/spawner.controller.js +2 -0
- package/dist/runtime/client/decorators/controller.js +2 -10
- package/dist/runtime/client/decorators/onView.d.ts +3 -3
- package/dist/runtime/client/decorators/onView.js +3 -3
- package/dist/runtime/client/index.d.ts +1 -0
- package/dist/runtime/client/index.js +1 -0
- package/dist/runtime/client/library/create-client-library.js +9 -1
- package/dist/runtime/client/services/appearance.service.d.ts +2 -2
- package/dist/runtime/client/services/appearance.service.js +7 -4
- package/dist/runtime/client/services/blip.service.d.ts +6 -93
- package/dist/runtime/client/services/blip.service.js +58 -153
- package/dist/runtime/client/services/camera-effects.registry.d.ts +3 -0
- package/dist/runtime/client/services/camera-effects.registry.js +20 -7
- package/dist/runtime/client/services/camera.d.ts +3 -83
- package/dist/runtime/client/services/camera.js +37 -93
- package/dist/runtime/client/services/cinematic.d.ts +5 -1
- package/dist/runtime/client/services/cinematic.js +45 -30
- package/dist/runtime/client/services/index.d.ts +1 -0
- package/dist/runtime/client/services/index.js +1 -0
- package/dist/runtime/client/services/marker.service.d.ts +12 -63
- package/dist/runtime/client/services/marker.service.js +62 -97
- package/dist/runtime/client/services/notification.service.d.ts +6 -57
- package/dist/runtime/client/services/notification.service.js +43 -81
- package/dist/runtime/client/services/ped.service.d.ts +3 -130
- package/dist/runtime/client/services/ped.service.js +66 -198
- package/dist/runtime/client/services/progress.service.d.ts +5 -30
- package/dist/runtime/client/services/progress.service.js +73 -99
- package/dist/runtime/client/services/session-bridge.service.d.ts +15 -0
- package/dist/runtime/client/services/session-bridge.service.js +61 -0
- package/dist/runtime/client/services/spawn.service.d.ts +6 -56
- package/dist/runtime/client/services/spawn.service.js +34 -191
- package/dist/runtime/client/services/streaming.service.d.ts +5 -126
- package/dist/runtime/client/services/streaming.service.js +72 -217
- package/dist/runtime/client/services/textui.service.d.ts +5 -45
- package/dist/runtime/client/services/textui.service.js +55 -88
- package/dist/runtime/client/services/vehicle-client.service.d.ts +12 -149
- package/dist/runtime/client/services/vehicle-client.service.js +180 -326
- package/dist/runtime/client/services/vehicle.service.d.ts +3 -109
- package/dist/runtime/client/services/vehicle.service.js +94 -194
- package/dist/runtime/client/system/processors/export.processor.d.ts +3 -0
- package/dist/runtime/client/system/processors/export.processor.js +16 -3
- package/dist/runtime/client/system/processors/gameEvent.processor.d.ts +3 -0
- package/dist/runtime/client/system/processors/gameEvent.processor.js +16 -3
- package/dist/runtime/client/system/processors/interval.processor.d.ts +3 -0
- package/dist/runtime/client/system/processors/interval.processor.js +17 -4
- package/dist/runtime/client/system/processors/key.processor.d.ts +3 -0
- package/dist/runtime/client/system/processors/key.processor.js +18 -5
- package/dist/runtime/client/system/processors/localEvent.processor.d.ts +3 -0
- package/dist/runtime/client/system/processors/localEvent.processor.js +16 -3
- package/dist/runtime/client/system/processors/netEvent.processor.d.ts +3 -0
- package/dist/runtime/client/system/processors/netEvent.processor.js +16 -3
- package/dist/runtime/client/system/processors/onRpc.processor.js +1 -1
- package/dist/runtime/client/system/processors/resourceLifecycle.processor.d.ts +5 -0
- package/dist/runtime/client/system/processors/resourceLifecycle.processor.js +26 -7
- package/dist/runtime/client/system/processors/tick.processor.d.ts +3 -0
- package/dist/runtime/client/system/processors/tick.processor.js +16 -3
- package/dist/runtime/client/system/processors/view.processor.d.ts +3 -0
- package/dist/runtime/client/system/processors/view.processor.js +21 -10
- package/dist/runtime/client/system/processors.register.d.ts +1 -0
- package/dist/runtime/client/system/processors.register.js +8 -0
- package/dist/runtime/client/ui-bridge.d.ts +2 -114
- package/dist/runtime/client/ui-bridge.js +2 -194
- package/dist/runtime/client/webview-bridge.d.ts +31 -0
- package/dist/runtime/client/webview-bridge.js +97 -0
- package/dist/runtime/client/webview.service.d.ts +14 -0
- package/dist/runtime/client/webview.service.js +98 -0
- package/dist/runtime/server/adapter/index.d.ts +5 -0
- package/dist/runtime/server/adapter/index.js +5 -0
- package/dist/runtime/server/adapter/node-npc-lifecycle-server.d.ts +12 -0
- package/dist/runtime/server/adapter/node-npc-lifecycle-server.js +52 -0
- package/dist/runtime/server/adapter/node-player-appearance-lifecycle-server.d.ts +22 -0
- package/dist/runtime/server/adapter/node-player-appearance-lifecycle-server.js +94 -0
- package/dist/runtime/server/adapter/node-player-lifecycle-server.d.ts +11 -0
- package/dist/runtime/server/adapter/node-player-lifecycle-server.js +55 -0
- package/dist/runtime/server/adapter/node-player-state-sync-server.d.ts +12 -0
- package/dist/runtime/server/adapter/node-player-state-sync-server.js +49 -0
- package/dist/runtime/server/adapter/node-server-adapter.d.ts +5 -0
- package/dist/runtime/server/adapter/node-server-adapter.js +67 -0
- package/dist/runtime/server/adapter/node-vehicle-lifecycle-server.d.ts +13 -0
- package/dist/runtime/server/adapter/node-vehicle-lifecycle-server.js +57 -0
- package/dist/runtime/server/adapter/player-adapter.d.ts +28 -0
- package/dist/runtime/server/adapter/player-adapter.js +28 -0
- package/dist/runtime/server/adapter/registry.d.ts +26 -0
- package/dist/runtime/server/adapter/registry.js +101 -0
- package/dist/runtime/server/adapter/serialization.d.ts +6 -0
- package/dist/runtime/server/adapter/serialization.js +9 -0
- package/dist/runtime/server/adapter/server-adapter.d.ts +28 -0
- package/dist/runtime/server/adapter/server-adapter.js +14 -0
- package/dist/runtime/server/api.d.ts +2 -1
- package/dist/runtime/server/api.js +2 -1
- package/dist/runtime/server/apis/appearance.api.d.ts +5 -3
- package/dist/runtime/server/apis/appearance.api.js +20 -7
- package/dist/runtime/server/apis/npcs.api.d.ts +3 -4
- package/dist/runtime/server/apis/npcs.api.js +26 -56
- package/dist/runtime/server/apis/vehicle-modification.api.d.ts +3 -1
- package/dist/runtime/server/apis/vehicle-modification.api.js +9 -4
- package/dist/runtime/server/apis/vehicles.api.d.ts +12 -6
- package/dist/runtime/server/apis/vehicles.api.js +48 -36
- package/dist/runtime/server/bootstrap.js +15 -7
- package/dist/runtime/server/controllers/channel.controller.js +2 -1
- package/dist/runtime/server/controllers/command-export.controller.js +1 -1
- package/dist/runtime/server/controllers/player-export.controller.js +5 -4
- package/dist/runtime/server/controllers/session.controller.js +3 -2
- package/dist/runtime/server/controllers/vehicle.controller.d.ts +3 -1
- package/dist/runtime/server/controllers/vehicle.controller.js +10 -5
- package/dist/runtime/server/core.d.ts +2 -0
- package/dist/runtime/server/core.js +9 -1
- package/dist/runtime/server/decorators/onRuntimeEvent.d.ts +2 -1
- package/dist/runtime/server/entities/npc.d.ts +2 -0
- package/dist/runtime/server/entities/npc.js +3 -3
- package/dist/runtime/server/entities/player.d.ts +8 -11
- package/dist/runtime/server/entities/player.js +39 -28
- package/dist/runtime/server/entities/vehicle.js +2 -2
- package/dist/runtime/server/error-handler.js +13 -2
- package/dist/runtime/server/helpers/command-validation.helper.js +1 -1
- package/dist/runtime/server/implementations/local/player.local.d.ts +7 -3
- package/dist/runtime/server/implementations/local/player.local.js +23 -11
- package/dist/runtime/server/implementations/remote/channel.remote.d.ts +2 -1
- package/dist/runtime/server/implementations/remote/channel.remote.js +5 -2
- package/dist/runtime/server/implementations/remote/command.remote.d.ts +3 -1
- package/dist/runtime/server/implementations/remote/command.remote.js +9 -4
- package/dist/runtime/server/implementations/remote/player.remote.d.ts +7 -10
- package/dist/runtime/server/implementations/remote/player.remote.js +24 -29
- package/dist/runtime/server/library/create-server-library.js +17 -2
- package/dist/runtime/server/runtime.d.ts +3 -0
- package/dist/runtime/server/runtime.js +1 -15
- package/dist/runtime/server/services/appearance.service.d.ts +0 -95
- package/dist/runtime/server/services/appearance.service.js +15 -192
- package/dist/runtime/server/services/services.register.js +56 -24
- package/dist/runtime/server/system/processors/netEvent.processor.js +1 -1
- package/dist/runtime/server/system/processors/onRpc.processor.js +1 -1
- package/dist/runtime/server/system/processors/runtimeEvent.processor.d.ts +2 -1
- package/dist/runtime/server/system/processors/runtimeEvent.processor.js +1 -1
- package/dist/runtime/server/types/core-exports.types.d.ts +5 -0
- package/dist/runtime/shared/helpers/process-tuple-schema.d.ts +2 -0
- package/dist/runtime/shared/helpers/process-tuple-schema.js +29 -0
- package/package.json +21 -3
- package/dist/adapters/cfx/cfx-capabilities.d.ts +0 -16
- package/dist/adapters/cfx/cfx-capabilities.js +0 -70
- package/dist/adapters/cfx/cfx-platform.d.ts +0 -2
- package/dist/adapters/cfx/cfx-platform.js +0 -85
- package/dist/adapters/cfx/index.d.ts +0 -3
- package/dist/adapters/cfx/index.js +0 -3
- package/dist/adapters/cfx/runtime-profile.d.ts +0 -3
- package/dist/adapters/cfx/runtime-profile.js +0 -37
- package/dist/adapters/contracts/IPlatformCapabilities.d.ts +0 -79
- package/dist/adapters/contracts/IPlatformCapabilities.js +0 -27
- package/dist/adapters/contracts/client/IPedAppearanceClient.d.ts +0 -206
- package/dist/adapters/contracts/client/IPedAppearanceClient.js +0 -12
- package/dist/adapters/fivem/fivem-capabilities.d.ts +0 -18
- package/dist/adapters/fivem/fivem-capabilities.js +0 -61
- package/dist/adapters/fivem/fivem-engine-events.d.ts +0 -5
- package/dist/adapters/fivem/fivem-engine-events.js +0 -24
- package/dist/adapters/fivem/fivem-entity-server.d.ts +0 -26
- package/dist/adapters/fivem/fivem-entity-server.js +0 -87
- package/dist/adapters/fivem/fivem-exports.d.ts +0 -5
- package/dist/adapters/fivem/fivem-exports.js +0 -9
- package/dist/adapters/fivem/fivem-hasher.d.ts +0 -7
- package/dist/adapters/fivem/fivem-net-transport.d.ts +0 -1
- package/dist/adapters/fivem/fivem-ped-appearance-client.d.ts +0 -34
- package/dist/adapters/fivem/fivem-ped-appearance-client.js +0 -79
- package/dist/adapters/fivem/fivem-ped-appearance-server.d.ts +0 -14
- package/dist/adapters/fivem/fivem-ped-appearance-server.js +0 -22
- package/dist/adapters/fivem/fivem-ped-server.d.ts +0 -9
- package/dist/adapters/fivem/fivem-ped-server.js +0 -30
- package/dist/adapters/fivem/fivem-platform.d.ts +0 -5
- package/dist/adapters/fivem/fivem-platform.js +0 -74
- package/dist/adapters/fivem/fivem-player-server.d.ts +0 -24
- package/dist/adapters/fivem/fivem-player-server.js +0 -83
- package/dist/adapters/fivem/fivem-playerinfo.d.ts +0 -6
- package/dist/adapters/fivem/fivem-playerinfo.js +0 -10
- package/dist/adapters/fivem/fivem-resourceinfo.d.ts +0 -5
- package/dist/adapters/fivem/fivem-resourceinfo.js +0 -24
- package/dist/adapters/fivem/fivem-tick.d.ts +0 -7
- package/dist/adapters/fivem/fivem-vehicle-server.d.ts +0 -15
- package/dist/adapters/fivem/fivem-vehicle-server.js +0 -44
- package/dist/adapters/fivem/index.d.ts +0 -14
- package/dist/adapters/fivem/index.js +0 -16
- package/dist/adapters/fivem/transport/adapter.d.ts +0 -8
- package/dist/adapters/fivem/transport/adapter.js +0 -8
- package/dist/adapters/fivem/transport/fivem.events.d.ts +0 -8
- package/dist/adapters/fivem/transport/fivem.events.js +0 -36
- package/dist/adapters/fivem/transport/fivem.rpc.d.ts +0 -28
- package/dist/adapters/fivem/transport/fivem.rpc.js +0 -183
- package/dist/runtime/client/controllers/player-sync.controller.d.ts +0 -11
- package/dist/runtime/client/controllers/player-sync.controller.js +0 -51
- package/dist/runtime/client/player/player.d.ts +0 -262
- package/dist/runtime/client/player/player.js +0 -474
- package/dist/runtime/client/player/player.loader.d.ts +0 -1
- package/dist/runtime/client/player/player.loader.js +0 -18
- package/dist/runtime/server/helpers/process-tuple-schema.d.ts +0 -20
- package/dist/runtime/server/helpers/process-tuple-schema.js +0 -56
- /package/dist/adapters/{fivem/fivem-net-transport.js → contracts/client/spawn/types.js} +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { IExports, IPlayerInfo } from '../../../../adapters';
|
|
2
|
-
import {
|
|
2
|
+
import { IPlatformContext } from '../../../../adapters/contracts/IPlatformContext';
|
|
3
3
|
import { EventsAPI } from '../../../../adapters/contracts/transport/events.api';
|
|
4
4
|
import { IEntityServer } from '../../../../adapters/contracts/server/IEntityServer';
|
|
5
|
+
import { IPlayerLifecycleServer } from '../../../../adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer';
|
|
6
|
+
import { IPlayerStateSyncServer } from '../../../../adapters/contracts/server/player-state/IPlayerStateSyncServer';
|
|
5
7
|
import { IPlayerServer } from '../../../../adapters/contracts/server/IPlayerServer';
|
|
6
8
|
import { Player } from '../../entities';
|
|
7
9
|
import { Players } from '../../ports/players.api-port';
|
|
@@ -18,25 +20,20 @@ export declare class RemotePlayerImplementation extends Players {
|
|
|
18
20
|
private readonly playerInfo;
|
|
19
21
|
private readonly exportsService;
|
|
20
22
|
private readonly playerServer;
|
|
23
|
+
private readonly playerLifecycle;
|
|
24
|
+
private readonly playerStateSync;
|
|
21
25
|
private readonly entityServer;
|
|
22
26
|
private readonly events;
|
|
23
|
-
private readonly
|
|
27
|
+
private readonly platformContext;
|
|
24
28
|
/**
|
|
25
29
|
* Cached adapters bundle for Player instances
|
|
26
30
|
*/
|
|
27
31
|
private readonly playerAdapters;
|
|
28
|
-
constructor(playerInfo: IPlayerInfo, exportsService: IExports, playerServer: IPlayerServer, entityServer: IEntityServer, events: EventsAPI<'server'>,
|
|
32
|
+
constructor(playerInfo: IPlayerInfo, exportsService: IExports, playerServer: IPlayerServer, playerLifecycle: IPlayerLifecycleServer, playerStateSync: IPlayerStateSyncServer, entityServer: IEntityServer, events: EventsAPI<'server'>, platformContext: IPlatformContext);
|
|
29
33
|
/**
|
|
30
34
|
* Gets typed access to CORE resource exports.
|
|
31
35
|
*/
|
|
32
36
|
private get core();
|
|
33
|
-
/**
|
|
34
|
-
* Creates a local Player instance from serialized data.
|
|
35
|
-
*
|
|
36
|
-
* @remarks
|
|
37
|
-
* The returned Player is hydrated with session data from CORE,
|
|
38
|
-
* including accountID, identifiers, metadata, and states.
|
|
39
|
-
*/
|
|
40
37
|
private createPlayerFromData;
|
|
41
38
|
/**
|
|
42
39
|
* Returns a Player instance with real session data from CORE.
|
|
@@ -12,12 +12,14 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
};
|
|
13
13
|
import { inject, injectable } from 'tsyringe';
|
|
14
14
|
import { IExports, IPlayerInfo } from '../../../../adapters';
|
|
15
|
-
import {
|
|
15
|
+
import { IPlatformContext } from '../../../../adapters/contracts/IPlatformContext';
|
|
16
16
|
import { EventsAPI } from '../../../../adapters/contracts/transport/events.api';
|
|
17
17
|
import { IEntityServer } from '../../../../adapters/contracts/server/IEntityServer';
|
|
18
|
+
import { IPlayerLifecycleServer } from '../../../../adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer';
|
|
19
|
+
import { IPlayerStateSyncServer } from '../../../../adapters/contracts/server/player-state/IPlayerStateSyncServer';
|
|
18
20
|
import { IPlayerServer } from '../../../../adapters/contracts/server/IPlayerServer';
|
|
19
21
|
import { loggers } from '../../../../kernel/logger';
|
|
20
|
-
import {
|
|
22
|
+
import { createLocalServerPlayer, createRemoteServerPlayer } from '../../adapter/registry';
|
|
21
23
|
import { getRuntimeContext } from '../../runtime';
|
|
22
24
|
import { Players } from '../../ports/players.api-port';
|
|
23
25
|
/**
|
|
@@ -32,25 +34,31 @@ let RemotePlayerImplementation = class RemotePlayerImplementation extends Player
|
|
|
32
34
|
playerInfo;
|
|
33
35
|
exportsService;
|
|
34
36
|
playerServer;
|
|
37
|
+
playerLifecycle;
|
|
38
|
+
playerStateSync;
|
|
35
39
|
entityServer;
|
|
36
40
|
events;
|
|
37
|
-
|
|
41
|
+
platformContext;
|
|
38
42
|
/**
|
|
39
43
|
* Cached adapters bundle for Player instances
|
|
40
44
|
*/
|
|
41
45
|
playerAdapters;
|
|
42
|
-
constructor(playerInfo, exportsService, playerServer, entityServer, events,
|
|
46
|
+
constructor(playerInfo, exportsService, playerServer, playerLifecycle, playerStateSync, entityServer, events, platformContext) {
|
|
43
47
|
super();
|
|
44
48
|
this.playerInfo = playerInfo;
|
|
45
49
|
this.exportsService = exportsService;
|
|
46
50
|
this.playerServer = playerServer;
|
|
51
|
+
this.playerLifecycle = playerLifecycle;
|
|
52
|
+
this.playerStateSync = playerStateSync;
|
|
47
53
|
this.entityServer = entityServer;
|
|
48
54
|
this.events = events;
|
|
49
|
-
this.
|
|
50
|
-
const defaultSpawnModel = this.
|
|
55
|
+
this.platformContext = platformContext;
|
|
56
|
+
const defaultSpawnModel = this.platformContext.defaultSpawnModel;
|
|
51
57
|
this.playerAdapters = {
|
|
52
58
|
playerInfo: this.playerInfo,
|
|
53
59
|
playerServer: this.playerServer,
|
|
60
|
+
playerLifecycle: this.playerLifecycle,
|
|
61
|
+
playerStateSync: this.playerStateSync,
|
|
54
62
|
entityServer: this.entityServer,
|
|
55
63
|
events: this.events,
|
|
56
64
|
defaultSpawnModel,
|
|
@@ -68,25 +76,8 @@ let RemotePlayerImplementation = class RemotePlayerImplementation extends Player
|
|
|
68
76
|
}
|
|
69
77
|
return coreExports;
|
|
70
78
|
}
|
|
71
|
-
/**
|
|
72
|
-
* Creates a local Player instance from serialized data.
|
|
73
|
-
*
|
|
74
|
-
* @remarks
|
|
75
|
-
* The returned Player is hydrated with session data from CORE,
|
|
76
|
-
* including accountID, identifiers, metadata, and states.
|
|
77
|
-
*/
|
|
78
79
|
createPlayerFromData(data) {
|
|
79
|
-
|
|
80
|
-
clientID: data.clientID,
|
|
81
|
-
accountID: data.accountID,
|
|
82
|
-
identifiers: data.identifiers,
|
|
83
|
-
meta: data.meta,
|
|
84
|
-
}, this.playerAdapters);
|
|
85
|
-
// Restore state flags
|
|
86
|
-
for (const state of data.states) {
|
|
87
|
-
player.addState(state);
|
|
88
|
-
}
|
|
89
|
-
return player;
|
|
80
|
+
return createRemoteServerPlayer(data, this.playerAdapters);
|
|
90
81
|
}
|
|
91
82
|
/**
|
|
92
83
|
* Returns a Player instance with real session data from CORE.
|
|
@@ -104,7 +95,7 @@ let RemotePlayerImplementation = class RemotePlayerImplementation extends Player
|
|
|
104
95
|
error: error instanceof Error ? error.message : String(error),
|
|
105
96
|
});
|
|
106
97
|
// Fallback to basic player
|
|
107
|
-
return
|
|
98
|
+
return createLocalServerPlayer({ clientID, meta: {} }, this.playerAdapters);
|
|
108
99
|
}
|
|
109
100
|
}
|
|
110
101
|
getMany(clientIds) {
|
|
@@ -191,14 +182,18 @@ RemotePlayerImplementation = __decorate([
|
|
|
191
182
|
__param(0, inject(IPlayerInfo)),
|
|
192
183
|
__param(1, inject(IExports)),
|
|
193
184
|
__param(2, inject(IPlayerServer)),
|
|
194
|
-
__param(3, inject(
|
|
195
|
-
__param(4, inject(
|
|
196
|
-
__param(5, inject(
|
|
185
|
+
__param(3, inject(IPlayerLifecycleServer)),
|
|
186
|
+
__param(4, inject(IPlayerStateSyncServer)),
|
|
187
|
+
__param(5, inject(IEntityServer)),
|
|
188
|
+
__param(6, inject(EventsAPI)),
|
|
189
|
+
__param(7, inject(IPlatformContext)),
|
|
197
190
|
__metadata("design:paramtypes", [IPlayerInfo,
|
|
198
191
|
IExports,
|
|
199
192
|
IPlayerServer,
|
|
193
|
+
IPlayerLifecycleServer,
|
|
194
|
+
IPlayerStateSyncServer,
|
|
200
195
|
IEntityServer,
|
|
201
196
|
EventsAPI,
|
|
202
|
-
|
|
197
|
+
IPlatformContext])
|
|
203
198
|
], RemotePlayerImplementation);
|
|
204
199
|
export { RemotePlayerImplementation };
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { GLOBAL_CONTAINER } from '../../../kernel/di/container';
|
|
1
2
|
import { coreLogger } from '../../../kernel/logger';
|
|
3
|
+
import { IEngineEvents } from '../../../adapters/contracts/IEngineEvents';
|
|
4
|
+
import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
|
|
2
5
|
import { buildLibraryEventId, createLibraryBase, createLibraryConfigAccessor, } from '../../core/library';
|
|
3
6
|
import { emitLibraryEvent } from '../bus/library-event.bus';
|
|
4
7
|
/**
|
|
@@ -14,6 +17,12 @@ export function createServerLibrary(name, opts) {
|
|
|
14
17
|
const base = createLibraryBase(name, opts);
|
|
15
18
|
const logger = coreLogger.server(`Library:${base.name}`);
|
|
16
19
|
const emitInternal = base.emit;
|
|
20
|
+
const engineEvents = GLOBAL_CONTAINER.isRegistered(IEngineEvents)
|
|
21
|
+
? GLOBAL_CONTAINER.resolve(IEngineEvents)
|
|
22
|
+
: null;
|
|
23
|
+
const netEvents = GLOBAL_CONTAINER.isRegistered(EventsAPI)
|
|
24
|
+
? GLOBAL_CONTAINER.resolve(EventsAPI)
|
|
25
|
+
: null;
|
|
17
26
|
return {
|
|
18
27
|
...base,
|
|
19
28
|
side: 'server',
|
|
@@ -33,10 +42,16 @@ export function createServerLibrary(name, opts) {
|
|
|
33
42
|
emitLibraryEvent(eventId, envelope);
|
|
34
43
|
},
|
|
35
44
|
emitExternal(eventName, payload) {
|
|
36
|
-
|
|
45
|
+
if (engineEvents) {
|
|
46
|
+
engineEvents.emit(base.buildEventName(eventName), payload);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
37
49
|
},
|
|
38
50
|
emitNetExternal(eventName, target, payload) {
|
|
39
|
-
|
|
51
|
+
if (!netEvents) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
netEvents.emit(base.buildEventName(eventName), target, payload);
|
|
40
55
|
},
|
|
41
56
|
getLogger() {
|
|
42
57
|
return logger;
|
|
@@ -138,6 +138,7 @@ export interface ServerRuntimeOptions {
|
|
|
138
138
|
mode: FrameworkMode;
|
|
139
139
|
features: FrameworkFeatures;
|
|
140
140
|
coreResourceName: string;
|
|
141
|
+
adapter?: import('./adapter').OpenCoreServerAdapter;
|
|
141
142
|
/** Development mode configuration (disabled in production) */
|
|
142
143
|
devMode?: DevModeConfig;
|
|
143
144
|
onDependency?: Hooks;
|
|
@@ -162,6 +163,8 @@ export declare function getFrameworkModeScope(mode: FrameworkMode): FeatureScope
|
|
|
162
163
|
export interface ServerInitOptions {
|
|
163
164
|
/** Runtime mode determining feature availability and provider sources */
|
|
164
165
|
mode: FrameworkMode;
|
|
166
|
+
/** Optional runtime adapter for non-node server environments. */
|
|
167
|
+
adapter?: import('./adapter').OpenCoreServerAdapter;
|
|
165
168
|
/**
|
|
166
169
|
* Feature configuration.
|
|
167
170
|
*
|
|
@@ -116,6 +116,7 @@ export function resolveRuntimeOptions(options) {
|
|
|
116
116
|
mode: options.mode,
|
|
117
117
|
features,
|
|
118
118
|
coreResourceName: options.coreResourceName ?? 'core',
|
|
119
|
+
adapter: options.adapter,
|
|
119
120
|
devMode: options.devMode,
|
|
120
121
|
onDependency: options.onDependency,
|
|
121
122
|
};
|
|
@@ -138,21 +139,6 @@ export function validateRuntimeOptions(options) {
|
|
|
138
139
|
if (mode === 'RESOURCE' && !options.coreResourceName) {
|
|
139
140
|
throw new Error('[OpenCore] RESOURCE mode requires coreResourceName to be specified');
|
|
140
141
|
}
|
|
141
|
-
// Determine which features need CORE exports in RESOURCE mode
|
|
142
|
-
const needsCoreExports = mode === 'RESOURCE' &&
|
|
143
|
-
(features.players.provider === 'core' ||
|
|
144
|
-
features.commands.provider === 'core' ||
|
|
145
|
-
features.principal.provider === 'core');
|
|
146
|
-
// Validate coreResourceName exists if needed
|
|
147
|
-
if (mode === 'RESOURCE') {
|
|
148
|
-
const { coreResourceName } = options;
|
|
149
|
-
if (needsCoreExports) {
|
|
150
|
-
const core = globalThis.exports?.[coreResourceName];
|
|
151
|
-
if (!core) {
|
|
152
|
-
throw new Error(`[OpenCore] CORE resource '${coreResourceName}' not found. Ensure it is started before RESOURCE mode resources.`);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
142
|
const scope = getFrameworkModeScope(mode);
|
|
157
143
|
for (const name of FEATURE_NAMES) {
|
|
158
144
|
const f = features[name];
|
|
@@ -1,99 +1,4 @@
|
|
|
1
|
-
import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
|
|
2
|
-
import { IPedAppearanceServer } from '../../../adapters/contracts/server/IPedAppearanceServer';
|
|
3
|
-
import { IPlayerServer } from '../../../adapters/contracts/server/IPlayerServer';
|
|
4
1
|
import { AppearanceValidationResult, PlayerAppearance } from '../../../kernel/shared';
|
|
5
|
-
/**
|
|
6
|
-
* Server-side appearance management service.
|
|
7
|
-
*
|
|
8
|
-
* @remarks
|
|
9
|
-
* Handles validating and applying ped appearance data on the server.
|
|
10
|
-
* Provides security validation and server-authoritative appearance control.
|
|
11
|
-
*
|
|
12
|
-
* **Security Model:**
|
|
13
|
-
* - All appearance changes should be validated server-side
|
|
14
|
-
* - Server applies components/props directly (available natives)
|
|
15
|
-
* - Server emits events to client for client-only natives (headBlend, overlays, tattoos)
|
|
16
|
-
* - Client never sends appearance data directly to other clients
|
|
17
|
-
*
|
|
18
|
-
* **Persistence:**
|
|
19
|
-
* The framework does NOT handle persistence internally.
|
|
20
|
-
* After calling `applyAppearance`, you receive the validated data back.
|
|
21
|
-
* You decide when and where to save it (persistent storage, file, etc.).
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```typescript
|
|
25
|
-
* // Apply appearance to a player
|
|
26
|
-
* const result = await appearanceService.applyAppearance(playerSrc, appearanceData)
|
|
27
|
-
* if (result.success) {
|
|
28
|
-
* // Save to your storage
|
|
29
|
-
* await myStorage.saveAppearance(playerId, result.appearance)
|
|
30
|
-
* }
|
|
31
|
-
*
|
|
32
|
-
* // Validate appearance without applying
|
|
33
|
-
* const validation = appearanceService.validateAppearance(appearanceData)
|
|
34
|
-
* if (!validation.valid) {
|
|
35
|
-
* console.log('Errors:', validation.errors)
|
|
36
|
-
* }
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
2
|
export declare class AppearanceService {
|
|
40
|
-
private readonly pedAdapter;
|
|
41
|
-
private readonly playerServer;
|
|
42
|
-
private readonly events;
|
|
43
|
-
constructor(pedAdapter: IPedAppearanceServer, playerServer: IPlayerServer, events: EventsAPI<'server'>);
|
|
44
|
-
/**
|
|
45
|
-
* Applies validated appearance to a player.
|
|
46
|
-
*
|
|
47
|
-
* @remarks
|
|
48
|
-
* This method:
|
|
49
|
-
* 1. Validates the appearance data
|
|
50
|
-
* 2. Applies server-side natives (components, props)
|
|
51
|
-
* 3. Emits event to client for client-only natives
|
|
52
|
-
* 4. Returns the validated appearance for persistence
|
|
53
|
-
*
|
|
54
|
-
* @param playerSrc - Player source/client ID
|
|
55
|
-
* @param appearance - Appearance data to apply
|
|
56
|
-
* @returns Result with success status and validated appearance
|
|
57
|
-
*/
|
|
58
|
-
applyAppearance(playerSrc: string, appearance: PlayerAppearance): Promise<{
|
|
59
|
-
success: boolean;
|
|
60
|
-
appearance?: PlayerAppearance;
|
|
61
|
-
errors?: string[];
|
|
62
|
-
}>;
|
|
63
|
-
/**
|
|
64
|
-
* Applies only components and props (server-side available natives).
|
|
65
|
-
*
|
|
66
|
-
* @remarks
|
|
67
|
-
* Use this for quick clothing changes without full appearance update.
|
|
68
|
-
*
|
|
69
|
-
* @param playerSrc - Player source/client ID
|
|
70
|
-
* @param appearance - Partial appearance with components/props only
|
|
71
|
-
* @returns Success status
|
|
72
|
-
*/
|
|
73
|
-
applyClothing(playerSrc: string, appearance: Pick<PlayerAppearance, 'components' | 'props'>): boolean;
|
|
74
|
-
/**
|
|
75
|
-
* Resets a player's appearance to default.
|
|
76
|
-
*
|
|
77
|
-
* @param playerSrc - Player source/client ID
|
|
78
|
-
* @returns Success status
|
|
79
|
-
*/
|
|
80
|
-
resetAppearance(playerSrc: string): boolean;
|
|
81
|
-
/**
|
|
82
|
-
* Validates appearance data without applying it.
|
|
83
|
-
*
|
|
84
|
-
* @remarks
|
|
85
|
-
* Use this to validate appearance data before storing or applying.
|
|
86
|
-
* All validation rules are enforced to prevent invalid/malicious data.
|
|
87
|
-
*
|
|
88
|
-
* @param appearance - Appearance data to validate
|
|
89
|
-
* @returns Validation result with errors if any
|
|
90
|
-
*/
|
|
91
3
|
validateAppearance(appearance: Partial<PlayerAppearance>): AppearanceValidationResult;
|
|
92
|
-
/**
|
|
93
|
-
* Applies server-side appearance natives (components and props only).
|
|
94
|
-
*
|
|
95
|
-
* @param ped - Ped entity handle
|
|
96
|
-
* @param appearance - Appearance data
|
|
97
|
-
*/
|
|
98
|
-
private applyServerSideAppearance;
|
|
99
4
|
}
|
|
@@ -4,138 +4,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
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;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
-
};
|
|
13
|
-
import { inject, injectable } from 'tsyringe';
|
|
14
|
-
import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
|
|
15
|
-
import { IPedAppearanceServer } from '../../../adapters/contracts/server/IPedAppearanceServer';
|
|
16
|
-
import { IPlayerServer } from '../../../adapters/contracts/server/IPlayerServer';
|
|
17
|
-
/**
|
|
18
|
-
* Server-side appearance management service.
|
|
19
|
-
*
|
|
20
|
-
* @remarks
|
|
21
|
-
* Handles validating and applying ped appearance data on the server.
|
|
22
|
-
* Provides security validation and server-authoritative appearance control.
|
|
23
|
-
*
|
|
24
|
-
* **Security Model:**
|
|
25
|
-
* - All appearance changes should be validated server-side
|
|
26
|
-
* - Server applies components/props directly (available natives)
|
|
27
|
-
* - Server emits events to client for client-only natives (headBlend, overlays, tattoos)
|
|
28
|
-
* - Client never sends appearance data directly to other clients
|
|
29
|
-
*
|
|
30
|
-
* **Persistence:**
|
|
31
|
-
* The framework does NOT handle persistence internally.
|
|
32
|
-
* After calling `applyAppearance`, you receive the validated data back.
|
|
33
|
-
* You decide when and where to save it (persistent storage, file, etc.).
|
|
34
|
-
*
|
|
35
|
-
* @example
|
|
36
|
-
* ```typescript
|
|
37
|
-
* // Apply appearance to a player
|
|
38
|
-
* const result = await appearanceService.applyAppearance(playerSrc, appearanceData)
|
|
39
|
-
* if (result.success) {
|
|
40
|
-
* // Save to your storage
|
|
41
|
-
* await myStorage.saveAppearance(playerId, result.appearance)
|
|
42
|
-
* }
|
|
43
|
-
*
|
|
44
|
-
* // Validate appearance without applying
|
|
45
|
-
* const validation = appearanceService.validateAppearance(appearanceData)
|
|
46
|
-
* if (!validation.valid) {
|
|
47
|
-
* console.log('Errors:', validation.errors)
|
|
48
|
-
* }
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
7
|
+
import { injectable } from 'tsyringe';
|
|
51
8
|
let AppearanceService = class AppearanceService {
|
|
52
|
-
pedAdapter;
|
|
53
|
-
playerServer;
|
|
54
|
-
events;
|
|
55
|
-
constructor(pedAdapter, playerServer, events) {
|
|
56
|
-
this.pedAdapter = pedAdapter;
|
|
57
|
-
this.playerServer = playerServer;
|
|
58
|
-
this.events = events;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Applies validated appearance to a player.
|
|
62
|
-
*
|
|
63
|
-
* @remarks
|
|
64
|
-
* This method:
|
|
65
|
-
* 1. Validates the appearance data
|
|
66
|
-
* 2. Applies server-side natives (components, props)
|
|
67
|
-
* 3. Emits event to client for client-only natives
|
|
68
|
-
* 4. Returns the validated appearance for persistence
|
|
69
|
-
*
|
|
70
|
-
* @param playerSrc - Player source/client ID
|
|
71
|
-
* @param appearance - Appearance data to apply
|
|
72
|
-
* @returns Result with success status and validated appearance
|
|
73
|
-
*/
|
|
74
|
-
async applyAppearance(playerSrc, appearance) {
|
|
75
|
-
const validation = this.validateAppearance(appearance);
|
|
76
|
-
if (!validation.valid) {
|
|
77
|
-
return { success: false, errors: validation.errors };
|
|
78
|
-
}
|
|
79
|
-
const ped = this.playerServer.getPed(playerSrc);
|
|
80
|
-
if (ped === 0) {
|
|
81
|
-
return { success: false, errors: ['Player ped not found'] };
|
|
82
|
-
}
|
|
83
|
-
// Apply server-side natives (components and props)
|
|
84
|
-
this.applyServerSideAppearance(ped, appearance);
|
|
85
|
-
// Emit event to client for client-only natives
|
|
86
|
-
this.events.emit('opencore:appearance:apply', parseInt(playerSrc, 10), appearance);
|
|
87
|
-
return { success: true, appearance };
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Applies only components and props (server-side available natives).
|
|
91
|
-
*
|
|
92
|
-
* @remarks
|
|
93
|
-
* Use this for quick clothing changes without full appearance update.
|
|
94
|
-
*
|
|
95
|
-
* @param playerSrc - Player source/client ID
|
|
96
|
-
* @param appearance - Partial appearance with components/props only
|
|
97
|
-
* @returns Success status
|
|
98
|
-
*/
|
|
99
|
-
applyClothing(playerSrc, appearance) {
|
|
100
|
-
const ped = this.playerServer.getPed(playerSrc);
|
|
101
|
-
if (ped === 0) {
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
this.applyServerSideAppearance(ped, appearance);
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Resets a player's appearance to default.
|
|
109
|
-
*
|
|
110
|
-
* @param playerSrc - Player source/client ID
|
|
111
|
-
* @returns Success status
|
|
112
|
-
*/
|
|
113
|
-
resetAppearance(playerSrc) {
|
|
114
|
-
const ped = this.playerServer.getPed(playerSrc);
|
|
115
|
-
if (ped === 0) {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
this.pedAdapter.setDefaultComponentVariation(ped);
|
|
119
|
-
// Notify client to reset client-only appearance elements
|
|
120
|
-
this.events.emit('opencore:appearance:reset', parseInt(playerSrc, 10));
|
|
121
|
-
return true;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Validates appearance data without applying it.
|
|
125
|
-
*
|
|
126
|
-
* @remarks
|
|
127
|
-
* Use this to validate appearance data before storing or applying.
|
|
128
|
-
* All validation rules are enforced to prevent invalid/malicious data.
|
|
129
|
-
*
|
|
130
|
-
* @param appearance - Appearance data to validate
|
|
131
|
-
* @returns Validation result with errors if any
|
|
132
|
-
*/
|
|
133
9
|
validateAppearance(appearance) {
|
|
134
10
|
const errors = [];
|
|
135
11
|
if (!appearance) {
|
|
136
12
|
return { valid: false, errors: ['Appearance data is null or undefined'] };
|
|
137
13
|
}
|
|
138
|
-
// Validate components (0-11)
|
|
139
14
|
if (appearance.components) {
|
|
140
15
|
for (const [id, data] of Object.entries(appearance.components)) {
|
|
141
16
|
const componentId = parseInt(id, 10);
|
|
@@ -150,7 +25,6 @@ let AppearanceService = class AppearanceService {
|
|
|
150
25
|
}
|
|
151
26
|
}
|
|
152
27
|
}
|
|
153
|
-
// Validate props (0-7)
|
|
154
28
|
if (appearance.props) {
|
|
155
29
|
for (const [id, data] of Object.entries(appearance.props)) {
|
|
156
30
|
const propId = parseInt(id, 10);
|
|
@@ -165,7 +39,6 @@ let AppearanceService = class AppearanceService {
|
|
|
165
39
|
}
|
|
166
40
|
}
|
|
167
41
|
}
|
|
168
|
-
// Validate faceFeatures (0-19, values -1.0 to 1.0)
|
|
169
42
|
if (appearance.faceFeatures) {
|
|
170
43
|
for (const [id, value] of Object.entries(appearance.faceFeatures)) {
|
|
171
44
|
const index = parseInt(id, 10);
|
|
@@ -177,47 +50,35 @@ let AppearanceService = class AppearanceService {
|
|
|
177
50
|
}
|
|
178
51
|
}
|
|
179
52
|
}
|
|
180
|
-
// Validate headBlend
|
|
181
53
|
if (appearance.headBlend) {
|
|
182
54
|
const hb = appearance.headBlend;
|
|
183
|
-
if (typeof hb.shapeFirst !== 'number' || hb.shapeFirst < 0 || hb.shapeFirst > 45)
|
|
55
|
+
if (typeof hb.shapeFirst !== 'number' || hb.shapeFirst < 0 || hb.shapeFirst > 45)
|
|
184
56
|
errors.push('Invalid shapeFirst (must be 0-45)');
|
|
185
|
-
|
|
186
|
-
if (typeof hb.shapeSecond !== 'number' || hb.shapeSecond < 0 || hb.shapeSecond > 45) {
|
|
57
|
+
if (typeof hb.shapeSecond !== 'number' || hb.shapeSecond < 0 || hb.shapeSecond > 45)
|
|
187
58
|
errors.push('Invalid shapeSecond (must be 0-45)');
|
|
188
|
-
|
|
189
|
-
if (typeof hb.skinFirst !== 'number' || hb.skinFirst < 0 || hb.skinFirst > 45) {
|
|
59
|
+
if (typeof hb.skinFirst !== 'number' || hb.skinFirst < 0 || hb.skinFirst > 45)
|
|
190
60
|
errors.push('Invalid skinFirst (must be 0-45)');
|
|
191
|
-
|
|
192
|
-
if (typeof hb.skinSecond !== 'number' || hb.skinSecond < 0 || hb.skinSecond > 45) {
|
|
61
|
+
if (typeof hb.skinSecond !== 'number' || hb.skinSecond < 0 || hb.skinSecond > 45)
|
|
193
62
|
errors.push('Invalid skinSecond (must be 0-45)');
|
|
194
|
-
|
|
195
|
-
if (typeof hb.shapeMix !== 'number' || hb.shapeMix < 0 || hb.shapeMix > 1) {
|
|
63
|
+
if (typeof hb.shapeMix !== 'number' || hb.shapeMix < 0 || hb.shapeMix > 1)
|
|
196
64
|
errors.push('Invalid shapeMix (must be 0.0-1.0)');
|
|
197
|
-
|
|
198
|
-
if (typeof hb.skinMix !== 'number' || hb.skinMix < 0 || hb.skinMix > 1) {
|
|
65
|
+
if (typeof hb.skinMix !== 'number' || hb.skinMix < 0 || hb.skinMix > 1)
|
|
199
66
|
errors.push('Invalid skinMix (must be 0.0-1.0)');
|
|
200
|
-
|
|
201
|
-
if (hb.shapeThird !== undefined && (hb.shapeThird < 0 || hb.shapeThird > 45)) {
|
|
67
|
+
if (hb.shapeThird !== undefined && (hb.shapeThird < 0 || hb.shapeThird > 45))
|
|
202
68
|
errors.push('Invalid shapeThird (must be 0-45)');
|
|
203
|
-
|
|
204
|
-
if (hb.skinThird !== undefined && (hb.skinThird < 0 || hb.skinThird > 45)) {
|
|
69
|
+
if (hb.skinThird !== undefined && (hb.skinThird < 0 || hb.skinThird > 45))
|
|
205
70
|
errors.push('Invalid skinThird (must be 0-45)');
|
|
206
|
-
|
|
207
|
-
if (hb.thirdMix !== undefined && (hb.thirdMix < 0 || hb.thirdMix > 1)) {
|
|
71
|
+
if (hb.thirdMix !== undefined && (hb.thirdMix < 0 || hb.thirdMix > 1))
|
|
208
72
|
errors.push('Invalid thirdMix (must be 0.0-1.0)');
|
|
209
|
-
}
|
|
210
73
|
}
|
|
211
|
-
// Validate headOverlays (0-12)
|
|
212
74
|
if (appearance.headOverlays) {
|
|
213
75
|
for (const [id, overlay] of Object.entries(appearance.headOverlays)) {
|
|
214
76
|
const overlayId = parseInt(id, 10);
|
|
215
77
|
if (Number.isNaN(overlayId) || overlayId < 0 || overlayId > 12) {
|
|
216
78
|
errors.push(`Invalid overlay ID: ${id} (must be 0-12)`);
|
|
217
79
|
}
|
|
218
|
-
if (typeof overlay.index !== 'number' || overlay.index < 0)
|
|
80
|
+
if (typeof overlay.index !== 'number' || overlay.index < 0)
|
|
219
81
|
errors.push(`Invalid overlay index for ID ${id}`);
|
|
220
|
-
}
|
|
221
82
|
if (typeof overlay.opacity !== 'number' || overlay.opacity < 0 || overlay.opacity > 1) {
|
|
222
83
|
errors.push(`Invalid overlay opacity for ID ${id} (must be 0.0-1.0)`);
|
|
223
84
|
}
|
|
@@ -226,17 +87,14 @@ let AppearanceService = class AppearanceService {
|
|
|
226
87
|
}
|
|
227
88
|
}
|
|
228
89
|
}
|
|
229
|
-
// Validate hairColor
|
|
230
90
|
if (appearance.hairColor) {
|
|
231
|
-
if (typeof appearance.hairColor.colorId !== 'number' || appearance.hairColor.colorId < 0)
|
|
91
|
+
if (typeof appearance.hairColor.colorId !== 'number' || appearance.hairColor.colorId < 0)
|
|
232
92
|
errors.push('Invalid hair colorId');
|
|
233
|
-
}
|
|
234
93
|
if (typeof appearance.hairColor.highlightColorId !== 'number' ||
|
|
235
94
|
appearance.hairColor.highlightColorId < 0) {
|
|
236
95
|
errors.push('Invalid hair highlightColorId');
|
|
237
96
|
}
|
|
238
97
|
}
|
|
239
|
-
// Validate eyeColor (0-31)
|
|
240
98
|
if (appearance.eyeColor !== undefined) {
|
|
241
99
|
if (typeof appearance.eyeColor !== 'number' ||
|
|
242
100
|
appearance.eyeColor < 0 ||
|
|
@@ -244,7 +102,6 @@ let AppearanceService = class AppearanceService {
|
|
|
244
102
|
errors.push(`Invalid eye color: ${appearance.eyeColor} (must be 0-31)`);
|
|
245
103
|
}
|
|
246
104
|
}
|
|
247
|
-
// Validate tattoos
|
|
248
105
|
if (appearance.tattoos) {
|
|
249
106
|
if (!Array.isArray(appearance.tattoos)) {
|
|
250
107
|
errors.push('Tattoos must be an array');
|
|
@@ -252,16 +109,13 @@ let AppearanceService = class AppearanceService {
|
|
|
252
109
|
else {
|
|
253
110
|
for (let i = 0; i < appearance.tattoos.length; i++) {
|
|
254
111
|
const tattoo = appearance.tattoos[i];
|
|
255
|
-
if (!tattoo.collection || typeof tattoo.collection !== 'string')
|
|
112
|
+
if (!tattoo.collection || typeof tattoo.collection !== 'string')
|
|
256
113
|
errors.push(`Invalid tattoo collection at index ${i}`);
|
|
257
|
-
|
|
258
|
-
if (!tattoo.overlay || typeof tattoo.overlay !== 'string') {
|
|
114
|
+
if (!tattoo.overlay || typeof tattoo.overlay !== 'string')
|
|
259
115
|
errors.push(`Invalid tattoo overlay at index ${i}`);
|
|
260
|
-
}
|
|
261
116
|
}
|
|
262
117
|
}
|
|
263
118
|
}
|
|
264
|
-
// Validate model
|
|
265
119
|
if (appearance.model !== undefined) {
|
|
266
120
|
if (typeof appearance.model !== 'string' || appearance.model.length === 0) {
|
|
267
121
|
errors.push('Invalid model (must be a non-empty string)');
|
|
@@ -269,39 +123,8 @@ let AppearanceService = class AppearanceService {
|
|
|
269
123
|
}
|
|
270
124
|
return { valid: errors.length === 0, errors };
|
|
271
125
|
}
|
|
272
|
-
/**
|
|
273
|
-
* Applies server-side appearance natives (components and props only).
|
|
274
|
-
*
|
|
275
|
-
* @param ped - Ped entity handle
|
|
276
|
-
* @param appearance - Appearance data
|
|
277
|
-
*/
|
|
278
|
-
applyServerSideAppearance(ped, appearance) {
|
|
279
|
-
// Apply components
|
|
280
|
-
if (appearance.components) {
|
|
281
|
-
for (const [componentId, data] of Object.entries(appearance.components)) {
|
|
282
|
-
this.pedAdapter.setComponentVariation(ped, parseInt(componentId, 10), data.drawable, data.texture, 2);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
// Apply props
|
|
286
|
-
if (appearance.props) {
|
|
287
|
-
for (const [propId, data] of Object.entries(appearance.props)) {
|
|
288
|
-
if (data.drawable === -1) {
|
|
289
|
-
this.pedAdapter.clearProp(ped, parseInt(propId, 10));
|
|
290
|
-
}
|
|
291
|
-
else {
|
|
292
|
-
this.pedAdapter.setPropIndex(ped, parseInt(propId, 10), data.drawable, data.texture, true);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
126
|
};
|
|
298
127
|
AppearanceService = __decorate([
|
|
299
|
-
injectable()
|
|
300
|
-
__param(0, inject(IPedAppearanceServer)),
|
|
301
|
-
__param(1, inject(IPlayerServer)),
|
|
302
|
-
__param(2, inject(EventsAPI)),
|
|
303
|
-
__metadata("design:paramtypes", [IPedAppearanceServer,
|
|
304
|
-
IPlayerServer,
|
|
305
|
-
EventsAPI])
|
|
128
|
+
injectable()
|
|
306
129
|
], AppearanceService);
|
|
307
130
|
export { AppearanceService };
|