@open-core/framework 0.1.0-alpha.1 → 0.2.0-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.
- package/README.md +217 -360
- package/dist/adapters/contracts/IEngineEvents.d.ts +20 -0
- package/dist/adapters/contracts/IEngineEvents.js +6 -0
- package/dist/adapters/contracts/IEntityServer.d.ts +88 -0
- package/dist/adapters/contracts/IEntityServer.js +13 -0
- package/dist/adapters/contracts/IExports.d.ts +4 -0
- package/dist/adapters/contracts/IExports.js +6 -0
- package/dist/adapters/contracts/IHasher.d.ts +15 -0
- package/dist/adapters/contracts/IHasher.js +12 -0
- package/dist/adapters/contracts/INetTransport.d.ts +8 -0
- package/dist/adapters/contracts/INetTransport.js +6 -0
- package/dist/adapters/contracts/IPedAppearanceClient.d.ts +206 -0
- package/dist/adapters/contracts/IPedAppearanceClient.js +16 -0
- package/dist/adapters/contracts/IPedAppearanceServer.d.ts +45 -0
- package/dist/adapters/contracts/IPedAppearanceServer.js +16 -0
- package/dist/adapters/contracts/IPlayerInfo.d.ts +5 -0
- package/dist/adapters/contracts/IPlayerInfo.js +6 -0
- package/dist/adapters/contracts/IPlayerServer.d.ts +73 -0
- package/dist/adapters/contracts/IPlayerServer.js +13 -0
- package/dist/adapters/contracts/IResourceInfo.d.ts +3 -0
- package/dist/adapters/contracts/IResourceInfo.js +6 -0
- package/dist/adapters/contracts/ITick.d.ts +10 -0
- package/dist/adapters/contracts/ITick.js +9 -0
- package/dist/adapters/contracts/IVehicleServer.d.ts +55 -0
- package/dist/adapters/contracts/IVehicleServer.js +13 -0
- package/dist/{server/database/adapters → adapters/database}/oxmysql.adapter.d.ts +2 -2
- package/dist/{server/database/adapters → adapters/database}/oxmysql.adapter.js +2 -2
- package/dist/adapters/database/resource.adapter.d.ts +12 -0
- package/dist/adapters/database/resource.adapter.js +68 -0
- package/dist/adapters/fivem/fivem-engine-events.d.ts +5 -0
- package/dist/adapters/fivem/fivem-engine-events.js +13 -0
- package/dist/adapters/fivem/fivem-entity-server.d.ts +22 -0
- package/dist/adapters/fivem/fivem-entity-server.js +80 -0
- package/dist/adapters/fivem/fivem-exports.d.ts +5 -0
- package/dist/adapters/fivem/fivem-exports.js +14 -0
- package/dist/adapters/fivem/fivem-hasher.d.ts +7 -0
- package/dist/adapters/fivem/fivem-hasher.js +23 -0
- package/dist/adapters/fivem/fivem-net-transport.d.ts +5 -0
- package/dist/adapters/fivem/fivem-net-transport.js +24 -0
- package/dist/adapters/fivem/fivem-ped-appearance-client.d.ts +34 -0
- package/dist/adapters/fivem/fivem-ped-appearance-client.js +84 -0
- package/dist/adapters/fivem/fivem-ped-appearance-server.d.ts +14 -0
- package/dist/adapters/fivem/fivem-ped-appearance-server.js +26 -0
- package/dist/adapters/fivem/fivem-player-server.d.ts +15 -0
- package/dist/adapters/fivem/fivem-player-server.js +63 -0
- package/dist/adapters/fivem/fivem-playerinfo.d.ts +6 -0
- package/dist/adapters/fivem/fivem-playerinfo.js +14 -0
- package/dist/adapters/fivem/fivem-resourceinfo.d.ts +4 -0
- package/dist/adapters/fivem/fivem-resourceinfo.js +16 -0
- package/dist/adapters/fivem/fivem-tick.d.ts +7 -0
- package/dist/adapters/fivem/fivem-tick.js +22 -0
- package/dist/adapters/fivem/fivem-vehicle-server.d.ts +15 -0
- package/dist/adapters/fivem/fivem-vehicle-server.js +47 -0
- package/dist/adapters/index.d.ts +15 -0
- package/dist/adapters/index.js +40 -0
- package/dist/adapters/node/index.d.ts +8 -0
- package/dist/adapters/node/index.js +19 -0
- package/dist/adapters/node/node-engine-events.d.ts +20 -0
- package/dist/adapters/node/node-engine-events.js +42 -0
- package/dist/adapters/node/node-entity-server.d.ts +26 -0
- package/dist/adapters/node/node-entity-server.js +101 -0
- package/dist/adapters/node/node-exports.d.ts +26 -0
- package/dist/adapters/node/node-exports.js +63 -0
- package/dist/adapters/node/node-hasher.d.ts +12 -0
- package/dist/adapters/node/node-hasher.js +39 -0
- package/dist/adapters/node/node-net-transport.d.ts +18 -0
- package/dist/adapters/node/node-net-transport.js +57 -0
- package/dist/adapters/node/node-ped-appearance-client.d.ts +34 -0
- package/dist/adapters/node/node-ped-appearance-client.js +59 -0
- package/dist/adapters/node/node-ped-appearance-server.d.ts +14 -0
- package/dist/adapters/node/node-ped-appearance-server.js +18 -0
- package/dist/adapters/node/node-player-server.d.ts +27 -0
- package/dist/adapters/node/node-player-server.js +82 -0
- package/dist/adapters/node/node-playerinfo.d.ts +6 -0
- package/dist/adapters/node/node-playerinfo.js +12 -0
- package/dist/adapters/node/node-resourceinfo.d.ts +12 -0
- package/dist/adapters/node/node-resourceinfo.js +27 -0
- package/dist/adapters/node/node-tick.d.ts +10 -0
- package/dist/{server/system/processors/command.processor.js → adapters/node/node-tick.js} +27 -14
- package/dist/adapters/node/node-vehicle-server.d.ts +21 -0
- package/dist/adapters/node/node-vehicle-server.js +93 -0
- package/dist/adapters/register-capabilities.d.ts +11 -0
- package/dist/adapters/register-capabilities.js +148 -0
- package/dist/adapters/register-client-capabilities.d.ts +8 -0
- package/dist/adapters/register-client-capabilities.js +56 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.js +9 -5
- package/dist/kernel/di/index.d.ts +4 -0
- package/dist/kernel/di/index.js +20 -0
- package/dist/{system → kernel/di}/metadata.scanner.d.ts +1 -2
- package/dist/kernel/di/tokens.d.ts +30 -0
- package/dist/kernel/di/tokens.js +38 -0
- package/dist/kernel/index.d.ts +7 -0
- package/dist/kernel/index.js +30 -0
- package/dist/kernel/schema/index.d.ts +32 -0
- package/dist/kernel/schema/index.js +5 -0
- package/dist/kernel/shared/appearance/appearance.interface.d.ts +276 -0
- package/dist/kernel/shared/appearance/appearance.interface.js +77 -0
- package/dist/kernel/shared/appearance/index.d.ts +1 -0
- package/dist/kernel/shared/appearance/index.js +17 -0
- package/dist/kernel/shared/index.d.ts +2 -0
- package/dist/{shared → kernel/shared}/index.js +1 -0
- package/dist/{shared → kernel/shared}/logger/core-logger.d.ts +13 -0
- package/dist/{shared → kernel/shared}/logger/core-logger.js +38 -9
- package/dist/{shared → kernel/shared}/logger/index.d.ts +12 -9
- package/dist/{shared → kernel/shared}/logger/index.js +24 -15
- package/dist/{shared → kernel/shared}/logger/logger.config.d.ts +1 -1
- package/dist/kernel/shared/logger/logger.env.d.ts +28 -0
- package/dist/kernel/shared/logger/logger.env.js +51 -0
- package/dist/{shared → kernel/shared}/logger/logger.service.d.ts +2 -2
- package/dist/{shared → kernel/shared}/logger/transports/buffered.transport.d.ts +2 -2
- package/dist/{shared → kernel/shared}/logger/transports/buffered.transport.js +1 -1
- package/dist/{shared → kernel/shared}/logger/transports/console.transport.d.ts +2 -2
- package/dist/{shared → kernel/shared}/logger/transports/console.transport.js +1 -0
- package/dist/kernel/shared/logger/transports/dev-transport.factory.d.ts +75 -0
- package/dist/kernel/shared/logger/transports/dev-transport.factory.js +111 -0
- package/dist/kernel/shared/logger/transports/http.transport.d.ts +67 -0
- package/dist/kernel/shared/logger/transports/http.transport.js +170 -0
- package/dist/kernel/shared/logger/transports/index.d.ts +7 -0
- package/dist/kernel/shared/logger/transports/index.js +34 -0
- package/dist/kernel/shared/logger/transports/simple-console.transport.d.ts +38 -0
- package/dist/kernel/shared/logger/transports/simple-console.transport.js +93 -0
- package/dist/{shared → kernel/shared}/logger/transports/transport.interface.d.ts +1 -1
- package/dist/kernel/shared/logger/transports/websocket.transport.d.ts +69 -0
- package/dist/kernel/shared/logger/transports/websocket.transport.js +169 -0
- package/dist/kernel/utils/error/app.error.d.ts +9 -0
- package/dist/{utils/errors.js → kernel/utils/error/app.error.js} +1 -9
- package/dist/kernel/utils/error/security.error.d.ts +6 -0
- package/dist/kernel/utils/error/security.error.js +12 -0
- package/dist/{utils → kernel/utils}/index.d.ts +3 -2
- package/dist/{utils → kernel/utils}/index.js +3 -2
- package/dist/{utils → kernel/utils}/result.d.ts +1 -1
- package/dist/runtime/client/client-bootstrap.d.ts +7 -0
- package/dist/runtime/client/client-bootstrap.js +180 -0
- package/dist/runtime/client/client-core.d.ts +19 -0
- package/dist/runtime/client/client-core.js +24 -0
- package/dist/runtime/client/client-runtime.d.ts +58 -0
- package/dist/runtime/client/client-runtime.js +32 -0
- package/dist/runtime/client/controllers/appearance.controller.d.ts +8 -0
- package/dist/runtime/client/controllers/appearance.controller.js +50 -0
- package/dist/runtime/client/controllers/player-sync.controller.d.ts +11 -0
- package/dist/runtime/client/controllers/player-sync.controller.js +54 -0
- package/dist/{client → runtime/client}/controllers/spawner.controller.d.ts +1 -1
- package/dist/runtime/client/decorators/controller.d.ts +20 -0
- package/dist/runtime/client/decorators/controller.js +55 -0
- package/dist/runtime/client/decorators/export.d.ts +21 -0
- package/dist/runtime/client/decorators/export.js +29 -0
- package/dist/{client → runtime/client}/decorators/gameEvent.d.ts +2 -2
- package/dist/runtime/client/decorators/interval.d.ts +23 -0
- package/dist/runtime/client/decorators/interval.js +31 -0
- package/dist/runtime/client/decorators/key.d.ts +23 -0
- package/dist/runtime/client/decorators/key.js +31 -0
- package/dist/runtime/client/decorators/localEvent.d.ts +21 -0
- package/dist/runtime/client/decorators/localEvent.js +29 -0
- package/dist/runtime/client/decorators/nui.d.ts +21 -0
- package/dist/runtime/client/decorators/nui.js +29 -0
- package/dist/runtime/client/decorators/onNet.d.ts +21 -0
- package/dist/runtime/client/decorators/onNet.js +29 -0
- package/dist/runtime/client/decorators/resourceLifecycle.d.ts +40 -0
- package/dist/runtime/client/decorators/resourceLifecycle.js +53 -0
- package/dist/runtime/client/decorators/tick.d.ts +21 -0
- package/dist/runtime/client/decorators/tick.js +29 -0
- package/dist/{client → runtime/client}/index.d.ts +2 -2
- package/dist/{client → runtime/client}/index.js +4 -2
- package/dist/runtime/client/interfaces/appearance.interface.d.ts +25 -0
- package/dist/runtime/client/interfaces/appearance.interface.js +2 -0
- package/dist/{client → runtime/client}/player/player.d.ts +1 -1
- package/dist/{client → runtime/client}/player/player.js +5 -6
- package/dist/{client → runtime/client}/player/player.loader.js +2 -2
- package/dist/runtime/client/services/appearance.service.d.ts +132 -0
- package/dist/runtime/client/services/appearance.service.js +328 -0
- package/dist/{client → runtime/client}/services/blip.service.d.ts +1 -1
- package/dist/{client → runtime/client}/services/index.d.ts +6 -5
- package/dist/{client → runtime/client}/services/index.js +6 -5
- package/dist/{client → runtime/client}/services/marker.service.d.ts +1 -1
- package/dist/{client → runtime/client}/services/ped.service.d.ts +1 -1
- package/dist/{client → runtime/client}/services/ped.service.js +3 -2
- package/dist/{client → runtime/client}/services/spawn.service.d.ts +2 -2
- package/dist/{client → runtime/client}/services/spawn.service.js +4 -8
- package/dist/{client → runtime/client}/services/textui.service.d.ts +1 -1
- package/dist/runtime/client/services/vehicle-client.service.d.ts +180 -0
- package/dist/runtime/client/services/vehicle-client.service.js +485 -0
- package/dist/{client → runtime/client}/services/vehicle.service.d.ts +2 -2
- package/dist/{client → runtime/client}/services/vehicle.service.js +1 -1
- package/dist/{client → runtime/client}/system/processors/export.processor.d.ts +1 -1
- package/dist/{client → runtime/client}/system/processors/export.processor.js +1 -1
- package/dist/{client → runtime/client}/system/processors/gameEvent.processor.d.ts +1 -1
- package/dist/{client → runtime/client}/system/processors/gameEvent.processor.js +2 -2
- package/dist/{client → runtime/client}/system/processors/interval.processor.d.ts +1 -1
- package/dist/{client → runtime/client}/system/processors/interval.processor.js +1 -1
- package/dist/{client → runtime/client}/system/processors/key.processor.d.ts +1 -1
- package/dist/{client → runtime/client}/system/processors/localEvent.processor.d.ts +1 -1
- package/dist/{client → runtime/client}/system/processors/localEvent.processor.js +1 -1
- package/dist/{client → runtime/client}/system/processors/netEvent.processor.d.ts +1 -1
- package/dist/{client → runtime/client}/system/processors/netEvent.processor.js +1 -1
- package/dist/{client → runtime/client}/system/processors/nui.processor.d.ts +1 -1
- package/dist/{client → runtime/client}/system/processors/nui.processor.js +1 -1
- package/dist/{client → runtime/client}/system/processors/resourceLifecycle.processor.d.ts +1 -1
- package/dist/{client → runtime/client}/system/processors/resourceLifecycle.processor.js +1 -1
- package/dist/{client → runtime/client}/system/processors/tick.processor.d.ts +1 -1
- package/dist/{client → runtime/client}/system/processors/tick.processor.js +1 -1
- package/dist/{client → runtime/client}/types/game-events.js +0 -8
- package/dist/{client → runtime/client}/ui-bridge.js +1 -1
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.js +39 -0
- package/dist/{server → runtime/server}/bootstrap.d.ts +2 -1
- package/dist/runtime/server/bootstrap.js +234 -0
- package/dist/runtime/server/bootstrap.validation.d.ts +12 -0
- package/dist/runtime/server/bootstrap.validation.js +102 -0
- package/dist/runtime/server/bus/core-event-bus.d.ts +6 -0
- package/dist/{server → runtime/server}/bus/core-event-bus.js +5 -5
- package/dist/{server → runtime/server}/configs/api.config.d.ts +1 -1
- package/dist/{server/templates/auth → runtime/server/contracts}/auth-provider.contract.d.ts +2 -2
- package/dist/runtime/server/contracts/index.d.ts +7 -0
- package/dist/{server/templates → runtime/server/contracts}/index.js +8 -4
- package/dist/{server/templates/persistence → runtime/server/contracts}/player-persistence.contract.d.ts +1 -1
- package/dist/{server/templates → runtime/server/contracts}/repository/index.d.ts +2 -2
- package/dist/{server/templates → runtime/server/contracts}/repository/index.js +1 -1
- package/dist/{server/templates → runtime/server/contracts}/repository/repository.contract.d.ts +2 -2
- package/dist/{server/templates → runtime/server/contracts}/repository/repository.contract.js +0 -1
- package/dist/runtime/server/contracts/security/net-event-security-observer.contract.d.ts +15 -0
- package/dist/runtime/server/contracts/security/net-event-security-observer.contract.js +6 -0
- package/dist/{server/templates → runtime/server/contracts}/security/principal-provider.contract.d.ts +3 -3
- package/dist/{server/templates → runtime/server/contracts}/security/security-handler.contract.d.ts +2 -2
- package/dist/runtime/server/controllers/chat.controller.d.ts +11 -0
- package/dist/{server → runtime/server}/controllers/chat.controller.js +23 -11
- package/dist/runtime/server/controllers/command-export.controller.d.ts +74 -0
- package/dist/runtime/server/controllers/command-export.controller.js +260 -0
- package/dist/runtime/server/controllers/command.controller.d.ts +15 -0
- package/dist/runtime/server/controllers/command.controller.js +100 -0
- package/dist/runtime/server/controllers/player-export.controller.d.ts +29 -0
- package/dist/runtime/server/controllers/player-export.controller.js +173 -0
- package/dist/runtime/server/controllers/principal-export.controller.d.ts +79 -0
- package/dist/runtime/server/controllers/principal-export.controller.js +296 -0
- package/dist/runtime/server/controllers/remote-command-execution.controller.d.ts +43 -0
- package/dist/runtime/server/controllers/remote-command-execution.controller.js +104 -0
- package/dist/runtime/server/controllers/session.controller.d.ts +11 -0
- package/dist/{server → runtime/server}/controllers/session.controller.js +15 -12
- package/dist/runtime/server/controllers/vehicle.controller.d.ts +55 -0
- package/dist/runtime/server/controllers/vehicle.controller.js +216 -0
- package/dist/runtime/server/core.d.ts +3 -0
- package/dist/runtime/server/core.js +11 -0
- package/dist/runtime/server/database/adapter.registry.d.ts +4 -0
- package/dist/runtime/server/database/adapter.registry.js +14 -0
- package/dist/{server → runtime/server}/database/database.contract.d.ts +1 -1
- package/dist/{server → runtime/server}/database/database.service.d.ts +3 -31
- package/dist/{server → runtime/server}/database/database.service.js +36 -50
- package/dist/runtime/server/database/index.d.ts +5 -0
- package/dist/runtime/server/database/index.js +25 -0
- package/dist/runtime/server/decorators/bind.d.ts +21 -0
- package/dist/runtime/server/decorators/bind.js +31 -0
- package/dist/runtime/server/decorators/command.d.ts +81 -0
- package/dist/runtime/server/decorators/command.js +32 -0
- package/dist/{server → runtime/server}/decorators/controller.d.ts +4 -3
- package/dist/runtime/server/decorators/controller.js +61 -0
- package/dist/runtime/server/decorators/export.d.ts +24 -0
- package/dist/runtime/server/decorators/export.js +32 -0
- package/dist/runtime/server/decorators/guard.d.ts +49 -0
- package/dist/{server → runtime/server}/decorators/guard.js +33 -32
- package/dist/{server → runtime/server}/decorators/index.d.ts +7 -4
- package/dist/{server → runtime/server}/decorators/index.js +8 -5
- package/dist/runtime/server/decorators/onFiveMEvent.d.ts +24 -0
- package/dist/runtime/server/decorators/onFiveMEvent.js +32 -0
- package/dist/runtime/server/decorators/onFrameworkEvent.d.ts +22 -0
- package/dist/{server → runtime/server}/decorators/onFrameworkEvent.js +9 -9
- package/dist/runtime/server/decorators/onNet.d.ts +62 -0
- package/dist/runtime/server/decorators/onNet.js +15 -0
- package/dist/runtime/server/decorators/onTick.d.ts +21 -0
- package/dist/runtime/server/decorators/onTick.js +29 -0
- package/dist/runtime/server/decorators/public.d.ts +26 -0
- package/dist/{server → runtime/server}/decorators/public.js +15 -16
- package/dist/{server → runtime/server}/decorators/requiresState.d.ts +29 -22
- package/dist/runtime/server/decorators/requiresState.js +73 -0
- package/dist/runtime/server/decorators/throttle.d.ts +56 -0
- package/dist/{server → runtime/server}/decorators/throttle.js +31 -19
- package/dist/runtime/server/decorators/utils.d.ts +54 -0
- package/dist/runtime/server/decorators/utils.js +60 -0
- package/dist/runtime/server/devmode/contracts/IDevModeBridge.d.ts +36 -0
- package/dist/runtime/server/devmode/contracts/IDevModeBridge.js +12 -0
- package/dist/runtime/server/devmode/contracts/IDevModeInspector.d.ts +52 -0
- package/dist/runtime/server/devmode/contracts/IDevModeInspector.js +12 -0
- package/dist/runtime/server/devmode/contracts/IDevModeInterceptor.d.ts +41 -0
- package/dist/runtime/server/devmode/contracts/IDevModeInterceptor.js +11 -0
- package/dist/runtime/server/devmode/contracts/index.d.ts +3 -0
- package/dist/runtime/server/devmode/contracts/index.js +9 -0
- package/dist/runtime/server/devmode/dev-mode.service.d.ts +110 -0
- package/dist/runtime/server/devmode/dev-mode.service.js +324 -0
- package/dist/runtime/server/devmode/event-interceptor.service.d.ts +80 -0
- package/dist/runtime/server/devmode/event-interceptor.service.js +232 -0
- package/dist/runtime/server/devmode/hot-reload.server.d.ts +74 -0
- package/dist/runtime/server/devmode/hot-reload.server.js +261 -0
- package/dist/runtime/server/devmode/index.d.ts +8 -0
- package/dist/runtime/server/devmode/index.js +32 -0
- package/dist/runtime/server/devmode/player-simulator.service.d.ts +66 -0
- package/dist/runtime/server/devmode/player-simulator.service.js +202 -0
- package/dist/runtime/server/devmode/state-inspector.service.d.ts +57 -0
- package/dist/runtime/server/devmode/state-inspector.service.js +183 -0
- package/dist/runtime/server/devmode/types.d.ts +161 -0
- package/dist/runtime/server/devmode/types.js +28 -0
- package/dist/runtime/server/entities/index.d.ts +2 -0
- package/dist/{server → runtime/server}/entities/index.js +1 -0
- package/dist/{server → runtime/server}/entities/player.d.ts +70 -3
- package/dist/{server → runtime/server}/entities/player.js +92 -14
- package/dist/runtime/server/entities/vehicle.d.ts +160 -0
- package/dist/runtime/server/entities/vehicle.js +261 -0
- package/dist/{server → runtime/server}/error-handler.d.ts +1 -1
- package/dist/{server → runtime/server}/error-handler.js +7 -8
- package/dist/runtime/server/helpers/command-validation.helper.d.ts +6 -0
- package/dist/runtime/server/helpers/command-validation.helper.js +72 -0
- package/dist/runtime/server/helpers/function-helper.d.ts +1 -0
- package/dist/runtime/server/helpers/function-helper.js +15 -0
- package/dist/{server → runtime/server}/helpers/resolve-method.d.ts +1 -1
- package/dist/runtime/server/helpers/resolve-method.js +28 -0
- package/dist/{server → runtime/server}/index.d.ts +8 -6
- package/dist/{server → runtime/server}/index.js +14 -10
- package/dist/runtime/server/runtime.d.ts +408 -0
- package/dist/runtime/server/runtime.js +234 -0
- package/dist/runtime/server/services/access-control.service.d.ts +59 -0
- package/dist/runtime/server/services/access-control.service.js +127 -0
- package/dist/runtime/server/services/appearance.service.d.ts +99 -0
- package/dist/runtime/server/services/appearance.service.js +307 -0
- package/dist/runtime/server/services/chat.service.d.ts +33 -0
- package/dist/{server → runtime/server}/services/chat.service.js +26 -0
- package/dist/{server → runtime/server}/services/config.service.js +1 -1
- package/dist/runtime/server/services/core/command.service.d.ts +49 -0
- package/dist/runtime/server/services/core/command.service.js +112 -0
- package/dist/{server/services → runtime/server/services/core}/player.service.d.ts +48 -22
- package/dist/{server/services → runtime/server/services/core}/player.service.js +98 -14
- package/dist/runtime/server/services/core/principal.service.d.ts +28 -0
- package/dist/runtime/server/services/core/principal.service.js +126 -0
- package/dist/runtime/server/services/core/vehicle-modification.service.d.ts +104 -0
- package/dist/runtime/server/services/core/vehicle-modification.service.js +330 -0
- package/dist/runtime/server/services/core/vehicle.service.d.ts +128 -0
- package/dist/runtime/server/services/core/vehicle.service.js +391 -0
- package/dist/runtime/server/services/default/default-net-event-security-observer.d.ts +15 -0
- package/dist/runtime/server/services/default/default-net-event-security-observer.js +28 -0
- package/dist/runtime/server/services/default/default-security.handler.d.ts +19 -0
- package/dist/{server → runtime/server}/services/default/default-security.handler.js +15 -2
- package/dist/{server → runtime/server}/services/http/http.service.js +5 -5
- package/dist/runtime/server/services/index.d.ts +16 -0
- package/dist/runtime/server/services/index.js +39 -0
- package/dist/{server → runtime/server}/services/parallel/index.d.ts +2 -4
- package/dist/{server → runtime/server}/services/parallel/index.js +13 -15
- package/dist/{server → runtime/server}/services/parallel/parallel-compute.service.d.ts +1 -1
- package/dist/{server → runtime/server}/services/parallel/parallel-compute.service.js +2 -1
- package/dist/{server → runtime/server}/services/parallel/worker-pool.d.ts +1 -1
- package/dist/{server → runtime/server}/services/parallel/worker.d.ts +1 -1
- package/dist/{server → runtime/server}/services/persistence.service.d.ts +1 -1
- package/dist/{server → runtime/server}/services/persistence.service.js +13 -9
- package/dist/runtime/server/services/ports/command-execution.port.d.ts +41 -0
- package/dist/runtime/server/services/ports/command-execution.port.js +15 -0
- package/dist/runtime/server/services/ports/player-directory.port.d.ts +107 -0
- package/dist/runtime/server/services/ports/player-directory.port.js +23 -0
- package/dist/runtime/server/services/ports/player-session-lifecycle.port.d.ts +49 -0
- package/dist/runtime/server/services/ports/player-session-lifecycle.port.js +16 -0
- package/dist/runtime/server/services/ports/principal.port.d.ts +149 -0
- package/dist/runtime/server/services/ports/principal.port.js +32 -0
- package/dist/runtime/server/services/rate-limiter.service.d.ts +23 -0
- package/dist/{server → runtime/server}/services/rate-limiter.service.js +18 -0
- package/dist/runtime/server/services/remote/remote-command.service.d.ts +63 -0
- package/dist/runtime/server/services/remote/remote-command.service.js +139 -0
- package/dist/runtime/server/services/remote/remote-player.service.d.ts +62 -0
- package/dist/runtime/server/services/remote/remote-player.service.js +191 -0
- package/dist/runtime/server/services/remote/remote-principal.provider.d.ts +55 -0
- package/dist/runtime/server/services/remote/remote-principal.provider.js +130 -0
- package/dist/runtime/server/services/remote/remote-principal.service.d.ts +33 -0
- package/dist/runtime/server/services/remote/remote-principal.service.js +99 -0
- package/dist/runtime/server/services/remote/server-bridge.d.ts +34 -0
- package/dist/runtime/server/services/remote/server-bridge.js +94 -0
- package/dist/runtime/server/services/services.register.d.ts +14 -0
- package/dist/runtime/server/services/services.register.js +98 -0
- package/dist/runtime/server/services/types/linked-id.d.ts +6 -0
- package/dist/runtime/server/services/types/player-session.object.d.ts +11 -0
- package/dist/runtime/server/services/vehicle-modification.service.d.ts +94 -0
- package/dist/runtime/server/services/vehicle-modification.service.js +310 -0
- package/dist/runtime/server/services/vehicle.service.d.ts +138 -0
- package/dist/runtime/server/services/vehicle.service.js +361 -0
- package/dist/runtime/server/setup.d.ts +10 -0
- package/dist/runtime/server/setup.js +33 -0
- package/dist/{server → runtime/server}/system/metadata-server.keys.d.ts +2 -0
- package/dist/{server → runtime/server}/system/metadata-server.keys.js +2 -0
- package/dist/runtime/server/system/processors/command.processor.d.ts +16 -0
- package/dist/runtime/server/system/processors/command.processor.js +54 -0
- package/dist/{server → runtime/server}/system/processors/coreEvent.processor.d.ts +1 -1
- package/dist/{server → runtime/server}/system/processors/coreEvent.processor.js +3 -3
- package/dist/runtime/server/system/processors/export.processor.d.ts +10 -0
- package/dist/{server → runtime/server}/system/processors/export.processor.js +15 -5
- package/dist/runtime/server/system/processors/fivemEvent.processor.d.ts +10 -0
- package/dist/{server → runtime/server}/system/processors/fivemEvent.processor.js +15 -5
- package/dist/runtime/server/system/processors/netEvent.processor.d.ts +23 -0
- package/dist/runtime/server/system/processors/netEvent.processor.js +240 -0
- package/dist/runtime/server/system/processors/tick.processor.d.ts +8 -0
- package/dist/{server → runtime/server}/system/processors/tick.processor.js +14 -4
- package/dist/runtime/server/system/processors.register.d.ts +2 -0
- package/dist/runtime/server/system/processors.register.js +37 -0
- package/dist/{server → runtime/server}/system/schema-generator.d.ts +1 -1
- package/dist/{server → runtime/server}/system/schema-generator.js +17 -8
- package/dist/{server/templates/admin → runtime/server/templates}/admin.controller-template.d.ts +1 -1
- package/dist/runtime/server/templates/index.d.ts +1 -0
- package/dist/runtime/server/templates/index.js +17 -0
- package/dist/runtime/server/types/core-exports.d.ts +285 -0
- package/dist/runtime/server/types/core-exports.js +2 -0
- package/dist/runtime/server/types/index.d.ts +4 -0
- package/dist/runtime/server/types/index.js +20 -0
- package/dist/runtime/server/types/security.types.js +2 -0
- package/dist/runtime/server/types/vehicle.types.d.ts +152 -0
- package/dist/runtime/server/types/vehicle.types.js +2 -0
- package/package.json +30 -30
- package/dist/client/client-bootstrap.d.ts +0 -1
- package/dist/client/client-bootstrap.js +0 -50
- package/dist/client/client-core.d.ts +0 -1
- package/dist/client/client-core.js +0 -7
- package/dist/client/decorators/controller.d.ts +0 -3
- package/dist/client/decorators/controller.js +0 -14
- package/dist/client/decorators/export.d.ts +0 -7
- package/dist/client/decorators/export.js +0 -15
- package/dist/client/decorators/interval.d.ts +0 -7
- package/dist/client/decorators/interval.js +0 -15
- package/dist/client/decorators/key.d.ts +0 -2
- package/dist/client/decorators/key.js +0 -10
- package/dist/client/decorators/localEvent.d.ts +0 -7
- package/dist/client/decorators/localEvent.js +0 -15
- package/dist/client/decorators/nui.d.ts +0 -1
- package/dist/client/decorators/nui.js +0 -9
- package/dist/client/decorators/onNet.d.ts +0 -1
- package/dist/client/decorators/onNet.js +0 -9
- package/dist/client/decorators/resourceLifecycle.d.ts +0 -11
- package/dist/client/decorators/resourceLifecycle.js +0 -24
- package/dist/client/decorators/tick.d.ts +0 -1
- package/dist/client/decorators/tick.js +0 -9
- package/dist/client/interfaces/appearance.interface.d.ts +0 -19
- package/dist/client/services/appearance.service.d.ts +0 -6
- package/dist/client/services/appearance.service.js +0 -89
- package/dist/server/bootstrap.js +0 -57
- package/dist/server/bus/core-event-bus.d.ts +0 -6
- package/dist/server/controllers/chat.controller.d.ts +0 -10
- package/dist/server/controllers/command.controller.d.ts +0 -7
- package/dist/server/controllers/command.controller.js +0 -47
- package/dist/server/controllers/session.controller.d.ts +0 -9
- package/dist/server/core.d.ts +0 -1
- package/dist/server/core.js +0 -7
- package/dist/server/database/index.d.ts +0 -53
- package/dist/server/database/index.js +0 -70
- package/dist/server/decorators/bind.d.ts +0 -2
- package/dist/server/decorators/bind.js +0 -15
- package/dist/server/decorators/command.d.ts +0 -49
- package/dist/server/decorators/command.js +0 -23
- package/dist/server/decorators/controller.js +0 -36
- package/dist/server/decorators/export.d.ts +0 -39
- package/dist/server/decorators/export.js +0 -47
- package/dist/server/decorators/guard.d.ts +0 -56
- package/dist/server/decorators/onFiveMEvent.d.ts +0 -6
- package/dist/server/decorators/onFiveMEvent.js +0 -14
- package/dist/server/decorators/onFrameworkEvent.d.ts +0 -22
- package/dist/server/decorators/onNet.d.ts +0 -58
- package/dist/server/decorators/onNet.js +0 -57
- package/dist/server/decorators/onTick.d.ts +0 -32
- package/dist/server/decorators/onTick.js +0 -40
- package/dist/server/decorators/public.d.ts +0 -27
- package/dist/server/decorators/requiresState.js +0 -63
- package/dist/server/decorators/throttle.d.ts +0 -48
- package/dist/server/decorators/utils.d.ts +0 -57
- package/dist/server/decorators/utils.js +0 -63
- package/dist/server/entities/index.d.ts +0 -1
- package/dist/server/helpers/resolve-method.js +0 -18
- package/dist/server/loaders/exports.loader.d.ts +0 -0
- package/dist/server/loaders/exports.loader.js +0 -23
- package/dist/server/loaders/playerSession.loader.d.ts +0 -1
- package/dist/server/loaders/playerSession.loader.js +0 -51
- package/dist/server/services/access-control.service.d.ts +0 -56
- package/dist/server/services/access-control.service.js +0 -99
- package/dist/server/services/chat.service.d.ts +0 -7
- package/dist/server/services/command.service.d.ts +0 -15
- package/dist/server/services/command.service.js +0 -77
- package/dist/server/services/default/default-security.handler.d.ts +0 -6
- package/dist/server/services/index.d.ts +0 -10
- package/dist/server/services/index.js +0 -26
- package/dist/server/services/rate-limiter.service.d.ts +0 -5
- package/dist/server/services/registers.d.ts +0 -1
- package/dist/server/services/registers.js +0 -18
- package/dist/server/setup.d.ts +0 -9
- package/dist/server/setup.js +0 -28
- package/dist/server/system/processors/command.processor.d.ts +0 -9
- package/dist/server/system/processors/export.processor.d.ts +0 -7
- package/dist/server/system/processors/fivemEvent.processor.d.ts +0 -7
- package/dist/server/system/processors/netEvent.processor.d.ts +0 -11
- package/dist/server/system/processors/netEvent.processor.js +0 -103
- package/dist/server/system/processors/tick.processor.d.ts +0 -5
- package/dist/server/system/processors.register.d.ts +0 -1
- package/dist/server/system/processors.register.js +0 -23
- package/dist/server/templates/index.d.ts +0 -8
- package/dist/server/templates/persistence/index.d.ts +0 -30
- package/dist/server/templates/persistence/index.js +0 -34
- package/dist/shared/index.d.ts +0 -1
- package/dist/shared/logger/transports/index.d.ts +0 -3
- package/dist/shared/logger/transports/index.js +0 -19
- package/dist/utils/errors.d.ts +0 -14
- package/dist/{system → kernel/di}/class-constructor.d.ts +0 -0
- package/dist/{system → kernel/di}/class-constructor.js +0 -0
- package/dist/{server → kernel/di}/container.d.ts +0 -0
- package/dist/{server → kernel/di}/container.js +0 -0
- package/dist/{system → kernel/di}/decorator-processor.d.ts +0 -0
- package/dist/{system → kernel/di}/decorator-processor.js +0 -0
- package/dist/{system → kernel/di}/metadata.scanner.js +0 -0
- package/dist/{shared → kernel/shared}/logger/logger.config.js +0 -0
- package/dist/{shared → kernel/shared}/logger/logger.service.js +0 -0
- package/dist/{shared → kernel/shared}/logger/logger.types.d.ts +0 -0
- package/dist/{shared → kernel/shared}/logger/logger.types.js +0 -0
- package/dist/{shared → kernel/shared}/logger/transports/transport.interface.js +0 -0
- package/dist/{utils → kernel/utils}/result.js +0 -0
- package/dist/{utils → kernel/utils}/rgb.d.ts +0 -0
- package/dist/{utils → kernel/utils}/rgb.js +0 -0
- package/dist/{utils → kernel/utils}/vector3.d.ts +0 -0
- package/dist/{utils → kernel/utils}/vector3.js +0 -0
- package/dist/{client → runtime/client}/client-container.d.ts +0 -0
- package/dist/{client → runtime/client}/client-container.js +0 -0
- package/dist/{client → runtime/client}/controllers/spawner.controller.js +0 -0
- package/dist/{client → runtime/client}/decorators/gameEvent.js +0 -0
- package/dist/{client → runtime/client}/decorators/index.d.ts +5 -5
- package/dist/{client → runtime/client}/decorators/index.js +5 -5
- package/dist/{client → runtime/client}/player/player.loader.d.ts +0 -0
- package/dist/{client → runtime/client}/services/blip.service.js +0 -0
- package/dist/{client → runtime/client}/services/marker.service.js +0 -0
- package/dist/{client → runtime/client}/services/notification.service.d.ts +0 -0
- package/dist/{client → runtime/client}/services/notification.service.js +0 -0
- package/dist/{client → runtime/client}/services/progress.service.d.ts +0 -0
- package/dist/{client → runtime/client}/services/progress.service.js +0 -0
- package/dist/{client → runtime/client}/services/streaming.service.d.ts +0 -0
- package/dist/{client → runtime/client}/services/streaming.service.js +0 -0
- package/dist/{client → runtime/client}/services/textui.service.js +0 -0
- package/dist/{client → runtime/client}/system/metadata-client.keys.d.ts +0 -0
- package/dist/{client → runtime/client}/system/metadata-client.keys.js +0 -0
- package/dist/{client → runtime/client}/system/processors/key.processor.js +0 -0
- package/dist/{client → runtime/client}/system/processors.register.d.ts +0 -0
- package/dist/{client → runtime/client}/system/processors.register.js +6 -6
- /package/dist/{client → runtime/client}/types/game-events.d.ts +0 -0
- /package/dist/{client → runtime/client}/types/index.d.ts +0 -0
- /package/dist/{client → runtime/client}/types/index.js +0 -0
- /package/dist/{client → runtime/client}/ui-bridge.d.ts +0 -0
- /package/dist/{server → runtime/server}/configs/api.config.js +0 -0
- /package/dist/{server → runtime/server}/configs/config.base.d.ts +0 -0
- /package/dist/{server → runtime/server}/configs/config.base.js +0 -0
- /package/dist/{server → runtime/server}/configs/index.d.ts +0 -0
- /package/dist/{server → runtime/server}/configs/index.js +0 -0
- /package/dist/{server/templates/auth → runtime/server/contracts}/auth-provider.contract.js +0 -0
- /package/dist/{server/templates/persistence → runtime/server/contracts}/player-persistence.contract.js +0 -0
- /package/dist/{server/templates → runtime/server/contracts}/repository/repository.types.d.ts +0 -0
- /package/dist/{server/templates → runtime/server/contracts}/repository/repository.types.js +0 -0
- /package/dist/{server/templates → runtime/server/contracts}/security/permission.types.d.ts +0 -0
- /package/dist/{server/templates → runtime/server/contracts}/security/permission.types.js +0 -0
- /package/dist/{server/templates → runtime/server/contracts}/security/principal-provider.contract.js +0 -0
- /package/dist/{server/templates → runtime/server/contracts}/security/security-handler.contract.js +0 -0
- /package/dist/{server → runtime/server}/database/database.contract.js +0 -0
- /package/dist/{server → runtime/server}/database/types.d.ts +0 -0
- /package/dist/{server → runtime/server}/database/types.js +0 -0
- /package/dist/{server → runtime/server}/database.d.ts +0 -0
- /package/dist/{server → runtime/server}/database.js +0 -0
- /package/dist/{server → runtime/server}/services/config.service.d.ts +0 -0
- /package/dist/{server → runtime/server}/services/http/http.service.d.ts +0 -0
- /package/dist/{server → runtime/server}/services/parallel/types.d.ts +0 -0
- /package/dist/{server → runtime/server}/services/parallel/types.js +0 -0
- /package/dist/{server → runtime/server}/services/parallel/worker-pool.js +0 -0
- /package/dist/{server → runtime/server}/services/parallel/worker.js +0 -0
- /package/dist/{client/interfaces/appearance.interface.js → runtime/server/services/types/linked-id.js} +0 -0
- /package/dist/{server/templates/admin/admin.controller-template.js → runtime/server/services/types/player-session.object.js} +0 -0
- /package/dist/{server/types/core-events.js → runtime/server/templates/admin.controller-template.js} +0 -0
- /package/dist/{server → runtime/server}/types/core-events.d.ts +0 -0
- /package/dist/{server/types/security.types.js → runtime/server/types/core-events.js} +0 -0
- /package/dist/{server → runtime/server}/types/security.types.d.ts +0 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AppearanceService = void 0;
|
|
16
|
+
const tsyringe_1 = require("tsyringe");
|
|
17
|
+
const INetTransport_1 = require("../../../adapters/contracts/INetTransport");
|
|
18
|
+
const IPedAppearanceServer_1 = require("../../../adapters/contracts/IPedAppearanceServer");
|
|
19
|
+
const IPlayerServer_1 = require("../../../adapters/contracts/IPlayerServer");
|
|
20
|
+
/**
|
|
21
|
+
* Server-side appearance management service.
|
|
22
|
+
*
|
|
23
|
+
* @remarks
|
|
24
|
+
* Handles validating and applying ped appearance data on the server.
|
|
25
|
+
* Provides security validation and server-authoritative appearance control.
|
|
26
|
+
*
|
|
27
|
+
* **Security Model:**
|
|
28
|
+
* - All appearance changes should be validated server-side
|
|
29
|
+
* - Server applies components/props directly (available natives)
|
|
30
|
+
* - Server emits events to client for client-only natives (headBlend, overlays, tattoos)
|
|
31
|
+
* - Client never sends appearance data directly to other clients
|
|
32
|
+
*
|
|
33
|
+
* **Persistence:**
|
|
34
|
+
* The framework does NOT handle persistence internally.
|
|
35
|
+
* After calling `applyAppearance`, you receive the validated data back.
|
|
36
|
+
* You decide when and where to save it (database, file, etc.).
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* // Apply appearance to a player
|
|
41
|
+
* const result = await appearanceService.applyAppearance(playerSrc, appearanceData)
|
|
42
|
+
* if (result.success) {
|
|
43
|
+
* // Save to your database
|
|
44
|
+
* await myDatabase.saveAppearance(playerId, result.appearance)
|
|
45
|
+
* }
|
|
46
|
+
*
|
|
47
|
+
* // Validate appearance without applying
|
|
48
|
+
* const validation = appearanceService.validateAppearance(appearanceData)
|
|
49
|
+
* if (!validation.valid) {
|
|
50
|
+
* console.log('Errors:', validation.errors)
|
|
51
|
+
* }
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
let AppearanceService = class AppearanceService {
|
|
55
|
+
constructor(pedAdapter, playerServer, netTransport) {
|
|
56
|
+
this.pedAdapter = pedAdapter;
|
|
57
|
+
this.playerServer = playerServer;
|
|
58
|
+
this.netTransport = netTransport;
|
|
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.netTransport.emitNet('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.netTransport.emitNet('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
|
+
validateAppearance(appearance) {
|
|
134
|
+
const errors = [];
|
|
135
|
+
if (!appearance) {
|
|
136
|
+
return { valid: false, errors: ['Appearance data is null or undefined'] };
|
|
137
|
+
}
|
|
138
|
+
// Validate components (0-11)
|
|
139
|
+
if (appearance.components) {
|
|
140
|
+
for (const [id, data] of Object.entries(appearance.components)) {
|
|
141
|
+
const componentId = parseInt(id, 10);
|
|
142
|
+
if (Number.isNaN(componentId) || componentId < 0 || componentId > 11) {
|
|
143
|
+
errors.push(`Invalid component ID: ${id} (must be 0-11)`);
|
|
144
|
+
}
|
|
145
|
+
if (data.drawable === undefined || data.drawable < -1) {
|
|
146
|
+
errors.push(`Invalid drawable for component ${id}`);
|
|
147
|
+
}
|
|
148
|
+
if (data.texture === undefined || data.texture < 0) {
|
|
149
|
+
errors.push(`Invalid texture for component ${id}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Validate props (0-7)
|
|
154
|
+
if (appearance.props) {
|
|
155
|
+
for (const [id, data] of Object.entries(appearance.props)) {
|
|
156
|
+
const propId = parseInt(id, 10);
|
|
157
|
+
if (Number.isNaN(propId) || propId < 0 || propId > 7) {
|
|
158
|
+
errors.push(`Invalid prop ID: ${id} (must be 0-7)`);
|
|
159
|
+
}
|
|
160
|
+
if (data.drawable === undefined) {
|
|
161
|
+
errors.push(`Missing drawable for prop ${id}`);
|
|
162
|
+
}
|
|
163
|
+
if (data.texture === undefined || data.texture < 0) {
|
|
164
|
+
errors.push(`Invalid texture for prop ${id}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Validate faceFeatures (0-19, values -1.0 to 1.0)
|
|
169
|
+
if (appearance.faceFeatures) {
|
|
170
|
+
for (const [id, value] of Object.entries(appearance.faceFeatures)) {
|
|
171
|
+
const index = parseInt(id, 10);
|
|
172
|
+
if (Number.isNaN(index) || index < 0 || index > 19) {
|
|
173
|
+
errors.push(`Invalid face feature index: ${id} (must be 0-19)`);
|
|
174
|
+
}
|
|
175
|
+
if (typeof value !== 'number' || value < -1.0 || value > 1.0) {
|
|
176
|
+
errors.push(`Face feature ${id} value out of range: ${value} (must be -1.0 to 1.0)`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Validate headBlend
|
|
181
|
+
if (appearance.headBlend) {
|
|
182
|
+
const hb = appearance.headBlend;
|
|
183
|
+
if (typeof hb.shapeFirst !== 'number' || hb.shapeFirst < 0 || hb.shapeFirst > 45) {
|
|
184
|
+
errors.push('Invalid shapeFirst (must be 0-45)');
|
|
185
|
+
}
|
|
186
|
+
if (typeof hb.shapeSecond !== 'number' || hb.shapeSecond < 0 || hb.shapeSecond > 45) {
|
|
187
|
+
errors.push('Invalid shapeSecond (must be 0-45)');
|
|
188
|
+
}
|
|
189
|
+
if (typeof hb.skinFirst !== 'number' || hb.skinFirst < 0 || hb.skinFirst > 45) {
|
|
190
|
+
errors.push('Invalid skinFirst (must be 0-45)');
|
|
191
|
+
}
|
|
192
|
+
if (typeof hb.skinSecond !== 'number' || hb.skinSecond < 0 || hb.skinSecond > 45) {
|
|
193
|
+
errors.push('Invalid skinSecond (must be 0-45)');
|
|
194
|
+
}
|
|
195
|
+
if (typeof hb.shapeMix !== 'number' || hb.shapeMix < 0 || hb.shapeMix > 1) {
|
|
196
|
+
errors.push('Invalid shapeMix (must be 0.0-1.0)');
|
|
197
|
+
}
|
|
198
|
+
if (typeof hb.skinMix !== 'number' || hb.skinMix < 0 || hb.skinMix > 1) {
|
|
199
|
+
errors.push('Invalid skinMix (must be 0.0-1.0)');
|
|
200
|
+
}
|
|
201
|
+
if (hb.shapeThird !== undefined && (hb.shapeThird < 0 || hb.shapeThird > 45)) {
|
|
202
|
+
errors.push('Invalid shapeThird (must be 0-45)');
|
|
203
|
+
}
|
|
204
|
+
if (hb.skinThird !== undefined && (hb.skinThird < 0 || hb.skinThird > 45)) {
|
|
205
|
+
errors.push('Invalid skinThird (must be 0-45)');
|
|
206
|
+
}
|
|
207
|
+
if (hb.thirdMix !== undefined && (hb.thirdMix < 0 || hb.thirdMix > 1)) {
|
|
208
|
+
errors.push('Invalid thirdMix (must be 0.0-1.0)');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Validate headOverlays (0-12)
|
|
212
|
+
if (appearance.headOverlays) {
|
|
213
|
+
for (const [id, overlay] of Object.entries(appearance.headOverlays)) {
|
|
214
|
+
const overlayId = parseInt(id, 10);
|
|
215
|
+
if (Number.isNaN(overlayId) || overlayId < 0 || overlayId > 12) {
|
|
216
|
+
errors.push(`Invalid overlay ID: ${id} (must be 0-12)`);
|
|
217
|
+
}
|
|
218
|
+
if (typeof overlay.index !== 'number' || overlay.index < 0) {
|
|
219
|
+
errors.push(`Invalid overlay index for ID ${id}`);
|
|
220
|
+
}
|
|
221
|
+
if (typeof overlay.opacity !== 'number' || overlay.opacity < 0 || overlay.opacity > 1) {
|
|
222
|
+
errors.push(`Invalid overlay opacity for ID ${id} (must be 0.0-1.0)`);
|
|
223
|
+
}
|
|
224
|
+
if (overlay.colorType !== undefined && ![0, 1, 2].includes(overlay.colorType)) {
|
|
225
|
+
errors.push(`Invalid overlay colorType for ID ${id} (must be 0, 1, or 2)`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// Validate hairColor
|
|
230
|
+
if (appearance.hairColor) {
|
|
231
|
+
if (typeof appearance.hairColor.colorId !== 'number' || appearance.hairColor.colorId < 0) {
|
|
232
|
+
errors.push('Invalid hair colorId');
|
|
233
|
+
}
|
|
234
|
+
if (typeof appearance.hairColor.highlightColorId !== 'number' ||
|
|
235
|
+
appearance.hairColor.highlightColorId < 0) {
|
|
236
|
+
errors.push('Invalid hair highlightColorId');
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Validate eyeColor (0-31)
|
|
240
|
+
if (appearance.eyeColor !== undefined) {
|
|
241
|
+
if (typeof appearance.eyeColor !== 'number' ||
|
|
242
|
+
appearance.eyeColor < 0 ||
|
|
243
|
+
appearance.eyeColor > 31) {
|
|
244
|
+
errors.push(`Invalid eye color: ${appearance.eyeColor} (must be 0-31)`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// Validate tattoos
|
|
248
|
+
if (appearance.tattoos) {
|
|
249
|
+
if (!Array.isArray(appearance.tattoos)) {
|
|
250
|
+
errors.push('Tattoos must be an array');
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
for (let i = 0; i < appearance.tattoos.length; i++) {
|
|
254
|
+
const tattoo = appearance.tattoos[i];
|
|
255
|
+
if (!tattoo.collection || typeof tattoo.collection !== 'string') {
|
|
256
|
+
errors.push(`Invalid tattoo collection at index ${i}`);
|
|
257
|
+
}
|
|
258
|
+
if (!tattoo.overlay || typeof tattoo.overlay !== 'string') {
|
|
259
|
+
errors.push(`Invalid tattoo overlay at index ${i}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Validate model
|
|
265
|
+
if (appearance.model !== undefined) {
|
|
266
|
+
if (typeof appearance.model !== 'string' || appearance.model.length === 0) {
|
|
267
|
+
errors.push('Invalid model (must be a non-empty string)');
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return { valid: errors.length === 0, errors };
|
|
271
|
+
}
|
|
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
|
+
};
|
|
298
|
+
exports.AppearanceService = AppearanceService;
|
|
299
|
+
exports.AppearanceService = AppearanceService = __decorate([
|
|
300
|
+
(0, tsyringe_1.injectable)(),
|
|
301
|
+
__param(0, (0, tsyringe_1.inject)(IPedAppearanceServer_1.IPedAppearanceServer)),
|
|
302
|
+
__param(1, (0, tsyringe_1.inject)(IPlayerServer_1.IPlayerServer)),
|
|
303
|
+
__param(2, (0, tsyringe_1.inject)(INetTransport_1.INetTransport)),
|
|
304
|
+
__metadata("design:paramtypes", [IPedAppearanceServer_1.IPedAppearanceServer,
|
|
305
|
+
IPlayerServer_1.IPlayerServer,
|
|
306
|
+
INetTransport_1.INetTransport])
|
|
307
|
+
], AppearanceService);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Server } from '../../..';
|
|
2
|
+
import { RGB } from '../../../kernel/utils';
|
|
3
|
+
/**
|
|
4
|
+
* Service for sending chat messages to players.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* This service emits framework chat events over the network.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ChatService {
|
|
10
|
+
/**
|
|
11
|
+
* Broadcast a chat message to all connected players.
|
|
12
|
+
*
|
|
13
|
+
* @param message - Message body.
|
|
14
|
+
* @param author - Author label shown in chat. Defaults to `SYSTEM`.
|
|
15
|
+
* @param color - Message color (RGB). Defaults to white.
|
|
16
|
+
*/
|
|
17
|
+
broadcast(message: string, author?: string, color?: RGB): void;
|
|
18
|
+
/**
|
|
19
|
+
* Send a private chat message to a single player.
|
|
20
|
+
*
|
|
21
|
+
* @param player - Target player.
|
|
22
|
+
* @param message - Message body.
|
|
23
|
+
* @param author - Author label shown in chat. Defaults to `Private`.
|
|
24
|
+
* @param color - Message color (RGB).
|
|
25
|
+
*/
|
|
26
|
+
sendPrivate(player: Server.Player, message: string, author?: string, color?: RGB): void;
|
|
27
|
+
/**
|
|
28
|
+
* Clear chat for a single player.
|
|
29
|
+
*
|
|
30
|
+
* @param player - Target player.
|
|
31
|
+
*/
|
|
32
|
+
clearChat(player: Server.Player): void;
|
|
33
|
+
}
|
|
@@ -8,19 +8,45 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.ChatService = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
+
/**
|
|
12
|
+
* Service for sending chat messages to players.
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* This service emits framework chat events over the network.
|
|
16
|
+
*/
|
|
11
17
|
let ChatService = class ChatService {
|
|
18
|
+
/**
|
|
19
|
+
* Broadcast a chat message to all connected players.
|
|
20
|
+
*
|
|
21
|
+
* @param message - Message body.
|
|
22
|
+
* @param author - Author label shown in chat. Defaults to `SYSTEM`.
|
|
23
|
+
* @param color - Message color (RGB). Defaults to white.
|
|
24
|
+
*/
|
|
12
25
|
broadcast(message, author = 'SYSTEM', color = { r: 255, g: 255, b: 255 }) {
|
|
13
26
|
emitNet('core:chat:message', -1, {
|
|
14
27
|
args: [author, message],
|
|
15
28
|
color: color,
|
|
16
29
|
});
|
|
17
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Send a private chat message to a single player.
|
|
33
|
+
*
|
|
34
|
+
* @param player - Target player.
|
|
35
|
+
* @param message - Message body.
|
|
36
|
+
* @param author - Author label shown in chat. Defaults to `Private`.
|
|
37
|
+
* @param color - Message color (RGB).
|
|
38
|
+
*/
|
|
18
39
|
sendPrivate(player, message, author = 'Private', color = { r: 200, g: 200, b: 200 }) {
|
|
19
40
|
emitNet('core:chat:addMessage', player.clientID, {
|
|
20
41
|
args: [author, message],
|
|
21
42
|
color: color,
|
|
22
43
|
});
|
|
23
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Clear chat for a single player.
|
|
47
|
+
*
|
|
48
|
+
* @param player - Target player.
|
|
49
|
+
*/
|
|
24
50
|
clearChat(player) {
|
|
25
51
|
emitNet('core:chat:clear', player.clientID);
|
|
26
52
|
}
|
|
@@ -62,7 +62,7 @@ let ConfigService = class ConfigService {
|
|
|
62
62
|
getNumber(key, defaultValue) {
|
|
63
63
|
const value = GetConvar(this.PREFIX + key, String(defaultValue));
|
|
64
64
|
const parsed = Number(value);
|
|
65
|
-
return isNaN(parsed) ? defaultValue : parsed;
|
|
65
|
+
return Number.isNaN(parsed) ? defaultValue : parsed;
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
68
68
|
* Gets a boolean configuration value.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { CommandMetadata } from '../../decorators/command';
|
|
2
|
+
import { Player } from '../../entities';
|
|
3
|
+
import { CommandExecutionPort, type CommandInfo } from '../ports/command-execution.port';
|
|
4
|
+
/**
|
|
5
|
+
* Local command execution service (CORE/STANDALONE modes).
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Maintains an in-memory registry of command handlers and executes them with full validation.
|
|
9
|
+
* Controllers declare commands via @Command decorator. During bootstrap, the framework
|
|
10
|
+
* scans and registers handlers via CommandProcessor.
|
|
11
|
+
*
|
|
12
|
+
* Execution pipeline:
|
|
13
|
+
* - Enforces authentication (secure by default unless marked @Public)
|
|
14
|
+
* - Validates arguments using Zod schemas (explicit or auto-generated)
|
|
15
|
+
* - Coerces argument types before invoking handlers
|
|
16
|
+
*/
|
|
17
|
+
export declare class CommandService extends CommandExecutionPort {
|
|
18
|
+
private commands;
|
|
19
|
+
/**
|
|
20
|
+
* Registers a command handler.
|
|
21
|
+
*
|
|
22
|
+
* @param meta - Command metadata collected from the {@link Command} decorator.
|
|
23
|
+
* @param handler - The bound method to invoke.
|
|
24
|
+
*/
|
|
25
|
+
register(meta: CommandMetadata, handler: Function): void;
|
|
26
|
+
/**
|
|
27
|
+
* Executes a registered command.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* **Security**: Commands require authentication by default unless marked with @Public().
|
|
31
|
+
* Unauthenticated attempts are blocked gracefully with player notification.
|
|
32
|
+
*
|
|
33
|
+
* Argument parsing behavior depends on the schema:
|
|
34
|
+
* - Zod object schema: maps raw args to parameter names.
|
|
35
|
+
* - Zod tuple schema: validates positional args.
|
|
36
|
+
* - No schema: attempts to generate a schema from parameter types.
|
|
37
|
+
*
|
|
38
|
+
* @param player - Player invoking the command.
|
|
39
|
+
* @param commandName - Command name (without the leading `/`).
|
|
40
|
+
* @param args - Raw argument list (strings).
|
|
41
|
+
*
|
|
42
|
+
* @throws AppError - If the command does not exist, the schema mismatches parameters, or validation fails.
|
|
43
|
+
*/
|
|
44
|
+
execute(player: Player, commandName: string, args: string[]): Promise<any>;
|
|
45
|
+
/**
|
|
46
|
+
* Returns a list of all registered commands.
|
|
47
|
+
*/
|
|
48
|
+
getAllCommands(): CommandInfo[];
|
|
49
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.CommandService = void 0;
|
|
10
|
+
const tsyringe_1 = require("tsyringe");
|
|
11
|
+
const logger_1 = require("../../../../kernel/shared/logger");
|
|
12
|
+
const utils_1 = require("../../../../kernel/utils");
|
|
13
|
+
const command_validation_helper_1 = require("../../helpers/command-validation.helper");
|
|
14
|
+
const command_execution_port_1 = require("../ports/command-execution.port");
|
|
15
|
+
/**
|
|
16
|
+
* Local command execution service (CORE/STANDALONE modes).
|
|
17
|
+
*
|
|
18
|
+
* @remarks
|
|
19
|
+
* Maintains an in-memory registry of command handlers and executes them with full validation.
|
|
20
|
+
* Controllers declare commands via @Command decorator. During bootstrap, the framework
|
|
21
|
+
* scans and registers handlers via CommandProcessor.
|
|
22
|
+
*
|
|
23
|
+
* Execution pipeline:
|
|
24
|
+
* - Enforces authentication (secure by default unless marked @Public)
|
|
25
|
+
* - Validates arguments using Zod schemas (explicit or auto-generated)
|
|
26
|
+
* - Coerces argument types before invoking handlers
|
|
27
|
+
*/
|
|
28
|
+
let CommandService = class CommandService extends command_execution_port_1.CommandExecutionPort {
|
|
29
|
+
constructor() {
|
|
30
|
+
super(...arguments);
|
|
31
|
+
this.commands = new Map();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Registers a command handler.
|
|
35
|
+
*
|
|
36
|
+
* @param meta - Command metadata collected from the {@link Command} decorator.
|
|
37
|
+
* @param handler - The bound method to invoke.
|
|
38
|
+
*/
|
|
39
|
+
register(meta, handler) {
|
|
40
|
+
var _a;
|
|
41
|
+
if (this.commands.has(meta.command.toLowerCase())) {
|
|
42
|
+
logger_1.loggers.command.error(`Command '${meta.command}' is already registered. Skipped`, {
|
|
43
|
+
command: meta.command,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
this.commands.set(meta.command.toLowerCase(), {
|
|
47
|
+
meta,
|
|
48
|
+
handler,
|
|
49
|
+
isPublic: (_a = meta.isPublic) !== null && _a !== void 0 ? _a : false,
|
|
50
|
+
});
|
|
51
|
+
const publicFlag = meta.isPublic ? ' [Public]' : '';
|
|
52
|
+
const schemaFlag = meta.schema ? ' [Validated]' : '';
|
|
53
|
+
logger_1.loggers.command.debug(`Registered: /${meta.command}${publicFlag}${schemaFlag}`);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Executes a registered command.
|
|
57
|
+
*
|
|
58
|
+
* @remarks
|
|
59
|
+
* **Security**: Commands require authentication by default unless marked with @Public().
|
|
60
|
+
* Unauthenticated attempts are blocked gracefully with player notification.
|
|
61
|
+
*
|
|
62
|
+
* Argument parsing behavior depends on the schema:
|
|
63
|
+
* - Zod object schema: maps raw args to parameter names.
|
|
64
|
+
* - Zod tuple schema: validates positional args.
|
|
65
|
+
* - No schema: attempts to generate a schema from parameter types.
|
|
66
|
+
*
|
|
67
|
+
* @param player - Player invoking the command.
|
|
68
|
+
* @param commandName - Command name (without the leading `/`).
|
|
69
|
+
* @param args - Raw argument list (strings).
|
|
70
|
+
*
|
|
71
|
+
* @throws AppError - If the command does not exist, the schema mismatches parameters, or validation fails.
|
|
72
|
+
*/
|
|
73
|
+
async execute(player, commandName, args) {
|
|
74
|
+
const entry = this.commands.get(commandName.toLowerCase());
|
|
75
|
+
if (!entry)
|
|
76
|
+
throw new utils_1.AppError('COMMAND:NOT_FOUND', `Command not found: ${commandName}`, 'client');
|
|
77
|
+
const { meta, handler, isPublic } = entry;
|
|
78
|
+
// ═══════════════════════════════════════════════════════════════
|
|
79
|
+
// SECURE BY DEFAULT: Require authentication unless @Public()
|
|
80
|
+
// ═══════════════════════════════════════════════════════════════
|
|
81
|
+
if (!isPublic) {
|
|
82
|
+
if (!player.accountID) {
|
|
83
|
+
logger_1.loggers.security.warn(`Unauthenticated command attempt blocked`, {
|
|
84
|
+
command: commandName,
|
|
85
|
+
clientId: player.clientID,
|
|
86
|
+
});
|
|
87
|
+
player.emit('core:auth:required', { command: commandName });
|
|
88
|
+
player.send('You must be authenticated to use this command', 'error');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return await (0, command_validation_helper_1.validateAndExecuteCommand)(meta, player, args, handler);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Returns a list of all registered commands.
|
|
96
|
+
*/
|
|
97
|
+
getAllCommands() {
|
|
98
|
+
return Array.from(this.commands.values()).map((c) => {
|
|
99
|
+
var _a, _b;
|
|
100
|
+
return ({
|
|
101
|
+
command: c.meta.command,
|
|
102
|
+
description: (_a = c.meta.description) !== null && _a !== void 0 ? _a : '',
|
|
103
|
+
usage: (_b = c.meta.usage) !== null && _b !== void 0 ? _b : '',
|
|
104
|
+
isPublic: c.isPublic,
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
exports.CommandService = CommandService;
|
|
110
|
+
exports.CommandService = CommandService = __decorate([
|
|
111
|
+
(0, tsyringe_1.injectable)()
|
|
112
|
+
], CommandService);
|
|
@@ -1,30 +1,35 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
accountID?: LinkedID;
|
|
11
|
-
identifiers?: {
|
|
12
|
-
license?: string;
|
|
13
|
-
steam?: string;
|
|
14
|
-
discord?: string;
|
|
15
|
-
};
|
|
16
|
-
meta: Record<string, unknown>;
|
|
17
|
-
}
|
|
1
|
+
import { IPlayerInfo } from '../../../../adapters';
|
|
2
|
+
import { IEntityServer } from '../../../../adapters/contracts/IEntityServer';
|
|
3
|
+
import { INetTransport } from '../../../../adapters/contracts/INetTransport';
|
|
4
|
+
import { IPlayerServer } from '../../../../adapters/contracts/IPlayerServer';
|
|
5
|
+
import { Player } from '../../entities';
|
|
6
|
+
import { PlayerDirectoryPort } from '../ports/player-directory.port';
|
|
7
|
+
import { PlayerSessionLifecyclePort } from '../ports/player-session-lifecycle.port';
|
|
8
|
+
import { LinkedID } from '../types/linked-id';
|
|
9
|
+
import { PlayerSession } from '../types/player-session.object';
|
|
18
10
|
/**
|
|
19
11
|
* Service responsible for managing the lifecycle of player sessions.
|
|
20
12
|
* It acts as the central registry for all connected players, mapping FiveM client IDs
|
|
21
13
|
* to Core `Player` entities.
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* This service is used as a singleton in the dependency container.
|
|
17
|
+
* It exposes the operations defined by {@link PlayerDirectoryPort} and {@link PlayerSessionLifecyclePort}.
|
|
22
18
|
*/
|
|
23
|
-
export declare class PlayerService {
|
|
19
|
+
export declare class PlayerService implements PlayerDirectoryPort, PlayerSessionLifecyclePort {
|
|
20
|
+
private readonly playerInfo;
|
|
21
|
+
private readonly playerServer;
|
|
22
|
+
private readonly entityServer;
|
|
23
|
+
private readonly netTransport;
|
|
24
24
|
/**
|
|
25
25
|
* Internal map storing active player sessions indexed by their FiveM client ID (source).
|
|
26
26
|
*/
|
|
27
27
|
private playersByClient;
|
|
28
|
+
/**
|
|
29
|
+
* Cached adapters bundle for Player instances
|
|
30
|
+
*/
|
|
31
|
+
private readonly playerAdapters;
|
|
32
|
+
constructor(playerInfo: IPlayerInfo, playerServer: IPlayerServer, entityServer: IEntityServer, netTransport: INetTransport);
|
|
28
33
|
/**
|
|
29
34
|
* Initializes a new player session for a connecting client.
|
|
30
35
|
*
|
|
@@ -54,21 +59,22 @@ export declare class PlayerService {
|
|
|
54
59
|
*
|
|
55
60
|
* @param clientID - The FiveM server ID of the player disconnecting.
|
|
56
61
|
*/
|
|
57
|
-
|
|
62
|
+
unbind(clientID: number): void;
|
|
58
63
|
/**
|
|
59
64
|
* Retrieves the `Player` entity associated with a specific FiveM client ID.
|
|
60
65
|
*
|
|
61
66
|
* @param clientID - The FiveM server ID to look up.
|
|
62
67
|
* @returns The `Player` instance if found, or `null` if the session does not exist.
|
|
63
68
|
*/
|
|
64
|
-
getByClient(clientID: number): Player |
|
|
69
|
+
getByClient(clientID: number): Player | undefined;
|
|
70
|
+
getMany(clientIds: number[]): Player[];
|
|
65
71
|
/**
|
|
66
72
|
* Helper to retrieve the authenticated Account ID for a given client.
|
|
67
73
|
*
|
|
68
74
|
* @param clientID - The FiveM server ID to look up.
|
|
69
75
|
* @returns The bound Account ID (string/UUID) if the player is logged in, or `null` otherwise.
|
|
70
76
|
*/
|
|
71
|
-
getPlayerId(clientID: number): string |
|
|
77
|
+
getPlayerId(clientID: number): string | undefined;
|
|
72
78
|
/**
|
|
73
79
|
* Stores arbitrary metadata in the player's session.
|
|
74
80
|
* Useful for storing transient state like 'isDead', 'job', 'dimension', etc.
|
|
@@ -86,11 +92,31 @@ export declare class PlayerService {
|
|
|
86
92
|
* @param key - The metadata key to retrieve.
|
|
87
93
|
* @returns The value cast to type `T`, or `undefined` if the key or player doesn't exist.
|
|
88
94
|
*/
|
|
89
|
-
getMeta<T = unknown>(clientID: number, key: string): T | undefined
|
|
95
|
+
getMeta<T = unknown>(clientID: number, key: string): Promise<T | undefined>;
|
|
90
96
|
/**
|
|
91
97
|
* Returns a list of all currently active `Player` entities.
|
|
92
98
|
*
|
|
93
99
|
* @returns An array containing all connected players managed by this service.
|
|
94
100
|
*/
|
|
95
101
|
getAll(): Player[];
|
|
102
|
+
/**
|
|
103
|
+
* Retrieves a Player by their persistent account ID.
|
|
104
|
+
*
|
|
105
|
+
* @param accountId - The unique account identifier to search for.
|
|
106
|
+
* @returns The Player if found, or `undefined` if not online.
|
|
107
|
+
*/
|
|
108
|
+
getByAccountId(accountId: string): Player | undefined;
|
|
109
|
+
/**
|
|
110
|
+
* Returns the current number of connected players.
|
|
111
|
+
*
|
|
112
|
+
* @returns Player count.
|
|
113
|
+
*/
|
|
114
|
+
getPlayerCount(): number;
|
|
115
|
+
/**
|
|
116
|
+
* Checks if a player with the given account ID is currently online.
|
|
117
|
+
*
|
|
118
|
+
* @param accountId - The account identifier to check.
|
|
119
|
+
* @returns `true` if online, `false` otherwise.
|
|
120
|
+
*/
|
|
121
|
+
isOnline(accountId: string): boolean;
|
|
96
122
|
}
|