@open-core/framework 0.1.0-alpha.1 → 0.2.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +98 -98
- 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
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* When FiveM or the target environment supports native worker threads,
|
|
9
9
|
* this script can be used as the worker entry point.
|
|
10
10
|
*/
|
|
11
|
-
import
|
|
11
|
+
import { WorkerMessage, WorkerResponse } from './types';
|
|
12
12
|
/**
|
|
13
13
|
* Execute a compute function from its string body
|
|
14
14
|
*/
|
|
@@ -8,9 +8,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.PlayerPersistenceService = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
-
const container_1 = require("
|
|
12
|
-
const
|
|
13
|
-
const
|
|
11
|
+
const container_1 = require("../../../kernel/di/container");
|
|
12
|
+
const logger_1 = require("../../../kernel/shared/logger");
|
|
13
|
+
const contracts_1 = require("../contracts");
|
|
14
14
|
/**
|
|
15
15
|
* Internal service that orchestrates player data persistence.
|
|
16
16
|
*
|
|
@@ -31,8 +31,8 @@ let PlayerPersistenceService = class PlayerPersistenceService {
|
|
|
31
31
|
if (this.initialized)
|
|
32
32
|
return;
|
|
33
33
|
try {
|
|
34
|
-
if (container_1.di.isRegistered(
|
|
35
|
-
const provider = container_1.di.resolve(
|
|
34
|
+
if (container_1.di.isRegistered(contracts_1.PlayerPersistenceContract)) {
|
|
35
|
+
const provider = container_1.di.resolve(contracts_1.PlayerPersistenceContract);
|
|
36
36
|
this.provider = provider;
|
|
37
37
|
logger_1.loggers.bootstrap.info('Player Persistence Provider initialized', {
|
|
38
38
|
autoSaveEnabled: provider.config.autoSaveEnabled,
|
|
@@ -115,9 +115,12 @@ let PlayerPersistenceService = class PlayerPersistenceService {
|
|
|
115
115
|
async saveAllPlayers(players) {
|
|
116
116
|
if (!this.provider)
|
|
117
117
|
return;
|
|
118
|
-
const savePromises = players.map((player) =>
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
const savePromises = players.map((player) => {
|
|
119
|
+
var _a;
|
|
120
|
+
return (_a = this.provider) === null || _a === void 0 ? void 0 : _a.onSessionSave(player).catch((error) => {
|
|
121
|
+
logger_1.loggers.session.error('Failed to save player data during bulk save', { clientId: player.clientID }, error);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
121
124
|
await Promise.all(savePromises);
|
|
122
125
|
logger_1.loggers.session.info('Bulk player save completed', { playerCount: players.length });
|
|
123
126
|
}
|
|
@@ -129,8 +132,9 @@ let PlayerPersistenceService = class PlayerPersistenceService {
|
|
|
129
132
|
return;
|
|
130
133
|
const intervalMs = this.provider.config.autoSaveIntervalMs;
|
|
131
134
|
const interval = setInterval(async () => {
|
|
135
|
+
var _a;
|
|
132
136
|
try {
|
|
133
|
-
await this.provider.onAutoSave(player);
|
|
137
|
+
await ((_a = this.provider) === null || _a === void 0 ? void 0 : _a.onAutoSave(player));
|
|
134
138
|
logger_1.loggers.session.debug('Player auto-save completed', { clientId: player.clientID });
|
|
135
139
|
}
|
|
136
140
|
catch (error) {
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CommandMetadata } from '../../decorators/command';
|
|
2
|
+
import { Player } from '../../entities';
|
|
3
|
+
/**
|
|
4
|
+
* Command information returned by getAllCommands.
|
|
5
|
+
*/
|
|
6
|
+
export interface CommandInfo {
|
|
7
|
+
command: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
usage?: string;
|
|
10
|
+
isPublic: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Abstract port for command registration and execution.
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* This port provides mode-agnostic access to the command system.
|
|
17
|
+
* Implementations:
|
|
18
|
+
* - CommandService (local): CORE/STANDALONE modes maintain command registry locally
|
|
19
|
+
* - RemoteCommandService (remote): RESOURCE mode delegates to CORE via exports
|
|
20
|
+
*/
|
|
21
|
+
export declare abstract class CommandExecutionPort {
|
|
22
|
+
/**
|
|
23
|
+
* Registers a command handler.
|
|
24
|
+
*
|
|
25
|
+
* @param metadata - Command metadata from decorator
|
|
26
|
+
* @param handler - Bound method to invoke when command is executed
|
|
27
|
+
*/
|
|
28
|
+
abstract register(metadata: CommandMetadata, handler: Function): void;
|
|
29
|
+
/**
|
|
30
|
+
* Executes a registered command.
|
|
31
|
+
*
|
|
32
|
+
* @param player - Player invoking the command
|
|
33
|
+
* @param commandName - Command name (without leading slash)
|
|
34
|
+
* @param args - Raw argument strings
|
|
35
|
+
*/
|
|
36
|
+
abstract execute(player: Player, commandName: string, args: string[]): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Returns all registered commands.
|
|
39
|
+
*/
|
|
40
|
+
abstract getAllCommands(): CommandInfo[];
|
|
41
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommandExecutionPort = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Abstract port for command registration and execution.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This port provides mode-agnostic access to the command system.
|
|
9
|
+
* Implementations:
|
|
10
|
+
* - CommandService (local): CORE/STANDALONE modes maintain command registry locally
|
|
11
|
+
* - RemoteCommandService (remote): RESOURCE mode delegates to CORE via exports
|
|
12
|
+
*/
|
|
13
|
+
class CommandExecutionPort {
|
|
14
|
+
}
|
|
15
|
+
exports.CommandExecutionPort = CommandExecutionPort;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Player } from '../../entities';
|
|
2
|
+
/**
|
|
3
|
+
* Core port that provides access to active player sessions.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* This port defines a framework-owned boundary for querying and managing player-related data
|
|
7
|
+
* regardless of the current runtime mode (CORE, RESOURCE, etc.).
|
|
8
|
+
*
|
|
9
|
+
* Implementations of this port are responsible for resolving player information
|
|
10
|
+
* from the authoritative source (local session store, remote core exports, etc.).
|
|
11
|
+
*
|
|
12
|
+
* Consumers should treat returned {@link Player} instances as runtime representations
|
|
13
|
+
* of connected clients, not as persistent domain models.
|
|
14
|
+
*
|
|
15
|
+
* **Mode Differences:**
|
|
16
|
+
* - **CORE/STANDALONE**: Data is local and authoritative
|
|
17
|
+
* - **RESOURCE**: Data is fetched from CORE via exports
|
|
18
|
+
*/
|
|
19
|
+
export declare abstract class PlayerDirectoryPort {
|
|
20
|
+
/**
|
|
21
|
+
* Returns the {@link Player} associated with a given FiveM client ID.
|
|
22
|
+
*
|
|
23
|
+
* @param clientID - The FiveM server client ID (`source`).
|
|
24
|
+
* @returns The corresponding {@link Player} instance, or `undefined` if the player is not connected.
|
|
25
|
+
*/
|
|
26
|
+
abstract getByClient(clientID: number): Player | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Returns a group of {@link Player} associated with a given fivem clients ids
|
|
29
|
+
*
|
|
30
|
+
* @param clientIds The fivem server client ID (`source`)
|
|
31
|
+
*/
|
|
32
|
+
abstract getMany(clientIds: number[]): Player[];
|
|
33
|
+
/**
|
|
34
|
+
* Returns all currently connected players.
|
|
35
|
+
*
|
|
36
|
+
* @returns An array of {@link Player} instances representing all active clients.
|
|
37
|
+
*/
|
|
38
|
+
abstract getAll(): Player[];
|
|
39
|
+
/**
|
|
40
|
+
* Returns the persistent account identifier associated with a client.
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
* The returned identifier is typically assigned after authentication and may be
|
|
44
|
+
* `undefined` if the player has not completed the login or character selection flow.
|
|
45
|
+
*
|
|
46
|
+
* @param clientID - The FiveM server client ID (`source`).
|
|
47
|
+
* @returns The linked account ID, or `undefined` if none is associated.
|
|
48
|
+
*/
|
|
49
|
+
abstract getPlayerId(clientID: number): string | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Retrieves a metadata value associated with a player session.
|
|
52
|
+
*
|
|
53
|
+
* @remarks
|
|
54
|
+
* Metadata values are transient and scoped to the current session.
|
|
55
|
+
* Implementations may resolve this data locally or delegate to the core runtime.
|
|
56
|
+
*
|
|
57
|
+
* @typeParam T - The expected type of the stored value.
|
|
58
|
+
* @param clientID - The FiveM server client ID (`source`).
|
|
59
|
+
* @param key - The metadata key to retrieve.
|
|
60
|
+
* @returns The stored value, or `undefined` if the key does not exist.
|
|
61
|
+
*/
|
|
62
|
+
abstract getMeta<T = unknown>(clientID: number, key: string): Promise<T | undefined>;
|
|
63
|
+
/**
|
|
64
|
+
* Stores a metadata value in the player session.
|
|
65
|
+
*
|
|
66
|
+
* @remarks
|
|
67
|
+
* Metadata is intended for transient runtime state such as flags, gameplay context,
|
|
68
|
+
* or temporary attributes. It is not persisted across reconnects.
|
|
69
|
+
*
|
|
70
|
+
* @param clientID - The FiveM server client ID (`source`).
|
|
71
|
+
* @param key - The metadata key to store.
|
|
72
|
+
* @param value - The value to associate with the given key.
|
|
73
|
+
*/
|
|
74
|
+
abstract setMeta(clientID: number, key: string, value: unknown): void;
|
|
75
|
+
/**
|
|
76
|
+
* Returns the {@link Player} associated with a persistent account ID.
|
|
77
|
+
*
|
|
78
|
+
* @remarks
|
|
79
|
+
* Searches all connected players for one with the matching accountID.
|
|
80
|
+
* Returns `undefined` if no player with that account is currently online.
|
|
81
|
+
*
|
|
82
|
+
* @param accountId - The persistent account identifier.
|
|
83
|
+
* @returns The corresponding {@link Player} instance, or `undefined` if not online.
|
|
84
|
+
*/
|
|
85
|
+
getByAccountId?(accountId: string): Player | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Returns the current number of connected players.
|
|
88
|
+
*
|
|
89
|
+
* @remarks
|
|
90
|
+
* More efficient than `getAll().length` for implementations that
|
|
91
|
+
* can provide a count without fetching all player data.
|
|
92
|
+
*
|
|
93
|
+
* @returns The number of currently connected players.
|
|
94
|
+
*/
|
|
95
|
+
getPlayerCount?(): number;
|
|
96
|
+
/**
|
|
97
|
+
* Checks if a player with the given account ID is currently online.
|
|
98
|
+
*
|
|
99
|
+
* @remarks
|
|
100
|
+
* More efficient than `getByAccountId() !== undefined` for implementations
|
|
101
|
+
* that can check presence without fetching full player data.
|
|
102
|
+
*
|
|
103
|
+
* @param accountId - The persistent account identifier.
|
|
104
|
+
* @returns `true` if the player is online, `false` otherwise.
|
|
105
|
+
*/
|
|
106
|
+
isOnline?(accountId: string): boolean;
|
|
107
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlayerDirectoryPort = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Core port that provides access to active player sessions.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This port defines a framework-owned boundary for querying and managing player-related data
|
|
9
|
+
* regardless of the current runtime mode (CORE, RESOURCE, etc.).
|
|
10
|
+
*
|
|
11
|
+
* Implementations of this port are responsible for resolving player information
|
|
12
|
+
* from the authoritative source (local session store, remote core exports, etc.).
|
|
13
|
+
*
|
|
14
|
+
* Consumers should treat returned {@link Player} instances as runtime representations
|
|
15
|
+
* of connected clients, not as persistent domain models.
|
|
16
|
+
*
|
|
17
|
+
* **Mode Differences:**
|
|
18
|
+
* - **CORE/STANDALONE**: Data is local and authoritative
|
|
19
|
+
* - **RESOURCE**: Data is fetched from CORE via exports
|
|
20
|
+
*/
|
|
21
|
+
class PlayerDirectoryPort {
|
|
22
|
+
}
|
|
23
|
+
exports.PlayerDirectoryPort = PlayerDirectoryPort;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Player } from '../../entities';
|
|
2
|
+
import { LinkedID } from '../types/linked-id';
|
|
3
|
+
import { PlayerSession } from '../types/player-session.object';
|
|
4
|
+
/**
|
|
5
|
+
* Core port responsible for managing the lifecycle of player sessions.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This port defines the authoritative boundary for creating, linking, and
|
|
9
|
+
* destroying player sessions within the framework.
|
|
10
|
+
*
|
|
11
|
+
* Implementations of this port own the session state and are expected to be
|
|
12
|
+
* invoked in response to connection, authentication, and disconnection events.
|
|
13
|
+
*/
|
|
14
|
+
export declare abstract class PlayerSessionLifecyclePort {
|
|
15
|
+
/**
|
|
16
|
+
* Creates and binds a new player session to a connected client.
|
|
17
|
+
*
|
|
18
|
+
* @remarks
|
|
19
|
+
* This method is typically called when a player joins the server or completes
|
|
20
|
+
* the initial handshake phase. The returned {@link Player} represents the
|
|
21
|
+
* runtime session associated with the client.
|
|
22
|
+
*
|
|
23
|
+
* @param clientID - The FiveM server client ID (`source`).
|
|
24
|
+
* @param identifiers - Optional platform identifiers (license, steam, etc.).
|
|
25
|
+
* @returns The newly created {@link Player} instance.
|
|
26
|
+
*/
|
|
27
|
+
abstract bind(clientID: number, identifiers?: PlayerSession['identifiers']): Player;
|
|
28
|
+
/**
|
|
29
|
+
* Terminates and removes the player session associated with a client.
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
* This method should be called when the client disconnects to ensure
|
|
33
|
+
* session state is properly cleaned up and memory is released.
|
|
34
|
+
*
|
|
35
|
+
* @param clientID - The FiveM server client ID (`source`).
|
|
36
|
+
*/
|
|
37
|
+
abstract unbind(clientID: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* Links an authenticated account to an existing player session.
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* This method is typically invoked after successful authentication or
|
|
43
|
+
* character selection to associate persistent data with the active session.
|
|
44
|
+
*
|
|
45
|
+
* @param clientID - The FiveM server client ID (`source`).
|
|
46
|
+
* @param accountID - The persistent account identifier.
|
|
47
|
+
*/
|
|
48
|
+
abstract linkAccount(clientID: number, accountID: LinkedID): void;
|
|
49
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlayerSessionLifecyclePort = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Core port responsible for managing the lifecycle of player sessions.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This port defines the authoritative boundary for creating, linking, and
|
|
9
|
+
* destroying player sessions within the framework.
|
|
10
|
+
*
|
|
11
|
+
* Implementations of this port own the session state and are expected to be
|
|
12
|
+
* invoked in response to connection, authentication, and disconnection events.
|
|
13
|
+
*/
|
|
14
|
+
class PlayerSessionLifecyclePort {
|
|
15
|
+
}
|
|
16
|
+
exports.PlayerSessionLifecyclePort = PlayerSessionLifecyclePort;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { Principal } from '../../contracts/security/permission.types';
|
|
2
|
+
import { GuardOptions } from '../../decorators/guard';
|
|
3
|
+
import { Player } from '../../entities';
|
|
4
|
+
/**
|
|
5
|
+
* Core port that provides access to player authorization and permissions.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This port defines a framework-owned boundary for querying permission-related data
|
|
9
|
+
* regardless of the current runtime mode (CORE, RESOURCE, etc.).
|
|
10
|
+
*
|
|
11
|
+
* Implementations of this port are responsible for resolving permission information
|
|
12
|
+
* from the authoritative source (local provider, remote core exports, etc.).
|
|
13
|
+
*
|
|
14
|
+
* **Mode Differences:**
|
|
15
|
+
* - **CORE/STANDALONE**: Uses the user-provided PrincipalProviderContract directly
|
|
16
|
+
* - **RESOURCE**: Delegates to CORE via exports
|
|
17
|
+
*
|
|
18
|
+
* **Usage:**
|
|
19
|
+
* ```typescript
|
|
20
|
+
* @injectable()
|
|
21
|
+
* class MyService {
|
|
22
|
+
* constructor(private principal: PrincipalPort) {}
|
|
23
|
+
*
|
|
24
|
+
* async canBan(player: Player): Promise<boolean> {
|
|
25
|
+
* return await this.principal.hasPermission(player, 'admin.ban')
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare abstract class PrincipalPort {
|
|
31
|
+
/**
|
|
32
|
+
* Gets the full Principal object for a player.
|
|
33
|
+
*
|
|
34
|
+
* @param player - The player entity
|
|
35
|
+
* @returns Principal data or null if not authenticated
|
|
36
|
+
*/
|
|
37
|
+
abstract getPrincipal(player: Player): Promise<Principal | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Gets Principal by account ID (works for offline players too).
|
|
40
|
+
*
|
|
41
|
+
* @param accountId - Database account identifier
|
|
42
|
+
* @returns Principal data or null
|
|
43
|
+
*/
|
|
44
|
+
abstract getPrincipalByAccountId(accountId: string): Promise<Principal | null>;
|
|
45
|
+
/**
|
|
46
|
+
* Forces a refresh of the player's permissions from persistence.
|
|
47
|
+
*
|
|
48
|
+
* @remarks
|
|
49
|
+
* Use this after promoting/demoting a player while they're online.
|
|
50
|
+
*
|
|
51
|
+
* @param player - The player to refresh
|
|
52
|
+
*/
|
|
53
|
+
abstract refreshPrincipal(player: Player): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Checks if player has a specific permission.
|
|
56
|
+
*
|
|
57
|
+
* @remarks
|
|
58
|
+
* Supports wildcard '*' permission for super-admin access.
|
|
59
|
+
*
|
|
60
|
+
* @param player - The player entity
|
|
61
|
+
* @param permission - Permission string to check
|
|
62
|
+
* @returns True if player has permission
|
|
63
|
+
*/
|
|
64
|
+
abstract hasPermission(player: Player, permission: string): Promise<boolean>;
|
|
65
|
+
/**
|
|
66
|
+
* Checks if player has at least the required rank.
|
|
67
|
+
*
|
|
68
|
+
* @remarks
|
|
69
|
+
* Uses numeric comparison: playerRank >= requiredRank
|
|
70
|
+
*
|
|
71
|
+
* @param player - The player entity
|
|
72
|
+
* @param requiredRank - Minimum rank value
|
|
73
|
+
* @returns True if playerRank >= requiredRank
|
|
74
|
+
*/
|
|
75
|
+
abstract hasRank(player: Player, requiredRank: number): Promise<boolean>;
|
|
76
|
+
/**
|
|
77
|
+
* Checks if player has ANY of the specified permissions.
|
|
78
|
+
*
|
|
79
|
+
* @param player - The player entity
|
|
80
|
+
* @param permissions - Array of permissions to check
|
|
81
|
+
* @returns True if player has at least one permission
|
|
82
|
+
*/
|
|
83
|
+
abstract hasAnyPermission(player: Player, permissions: string[]): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* Checks if player has ALL of the specified permissions.
|
|
86
|
+
*
|
|
87
|
+
* @param player - The player entity
|
|
88
|
+
* @param permissions - Array of permissions to check
|
|
89
|
+
* @returns True if player has all permissions
|
|
90
|
+
*/
|
|
91
|
+
abstract hasAllPermissions(player: Player, permissions: string[]): Promise<boolean>;
|
|
92
|
+
/**
|
|
93
|
+
* Gets all permissions for a player.
|
|
94
|
+
*
|
|
95
|
+
* @param player - The player entity
|
|
96
|
+
* @returns Array of permission strings
|
|
97
|
+
*/
|
|
98
|
+
abstract getPermissions(player: Player): Promise<string[]>;
|
|
99
|
+
/**
|
|
100
|
+
* Gets the rank value for a player.
|
|
101
|
+
*
|
|
102
|
+
* @param player - The player entity
|
|
103
|
+
* @returns Rank number or null if not set
|
|
104
|
+
*/
|
|
105
|
+
abstract getRank(player: Player): Promise<number | null>;
|
|
106
|
+
/**
|
|
107
|
+
* Gets the principal name/role name for a player.
|
|
108
|
+
*
|
|
109
|
+
* @param player - The player entity
|
|
110
|
+
* @returns Role name or null
|
|
111
|
+
*/
|
|
112
|
+
abstract getPrincipalName(player: Player): Promise<string | null>;
|
|
113
|
+
/**
|
|
114
|
+
* Gets principal metadata for a player.
|
|
115
|
+
*
|
|
116
|
+
* @param player - The player entity
|
|
117
|
+
* @param key - Metadata key
|
|
118
|
+
* @returns Metadata value or null
|
|
119
|
+
*/
|
|
120
|
+
abstract getPrincipalMeta(player: Player, key: string): Promise<unknown>;
|
|
121
|
+
/**
|
|
122
|
+
* Enforces access control requirements, throwing on failure.
|
|
123
|
+
*
|
|
124
|
+
* @remarks
|
|
125
|
+
* This is the primary method used by `@Guard` decorator and security validation.
|
|
126
|
+
* It validates rank and/or permission requirements and throws `AppError` if
|
|
127
|
+
* the player doesn't meet the criteria.
|
|
128
|
+
*
|
|
129
|
+
* **Validation Order:**
|
|
130
|
+
* 1. Rank check (if `rank` specified)
|
|
131
|
+
* 2. Permission check (if `permission` specified)
|
|
132
|
+
*
|
|
133
|
+
* @param player - The player entity to validate
|
|
134
|
+
* @param requirements - Guard options containing rank and/or permission requirements
|
|
135
|
+
*
|
|
136
|
+
* @throws AppError - `AUTH:UNAUTHORIZED` if player has no principal
|
|
137
|
+
* @throws AppError - `GAME:NO_RANK_IN_PRINCIPAL` if rank check requested but principal has no rank
|
|
138
|
+
* @throws AppError - `AUTH:PERMISSION_DENIED` if player doesn't meet requirements
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* // In a service or controller
|
|
143
|
+
* await this.principal.enforce(player, { rank: 5 })
|
|
144
|
+
* await this.principal.enforce(player, { permission: 'admin.ban' })
|
|
145
|
+
* await this.principal.enforce(player, { rank: 3, permission: 'mod.kick' })
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
abstract enforce(player: Player, requirements: GuardOptions): Promise<void>;
|
|
149
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrincipalPort = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Core port that provides access to player authorization and permissions.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This port defines a framework-owned boundary for querying permission-related data
|
|
9
|
+
* regardless of the current runtime mode (CORE, RESOURCE, etc.).
|
|
10
|
+
*
|
|
11
|
+
* Implementations of this port are responsible for resolving permission information
|
|
12
|
+
* from the authoritative source (local provider, remote core exports, etc.).
|
|
13
|
+
*
|
|
14
|
+
* **Mode Differences:**
|
|
15
|
+
* - **CORE/STANDALONE**: Uses the user-provided PrincipalProviderContract directly
|
|
16
|
+
* - **RESOURCE**: Delegates to CORE via exports
|
|
17
|
+
*
|
|
18
|
+
* **Usage:**
|
|
19
|
+
* ```typescript
|
|
20
|
+
* @injectable()
|
|
21
|
+
* class MyService {
|
|
22
|
+
* constructor(private principal: PrincipalPort) {}
|
|
23
|
+
*
|
|
24
|
+
* async canBan(player: Player): Promise<boolean> {
|
|
25
|
+
* return await this.principal.hasPermission(player, 'admin.ban')
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
class PrincipalPort {
|
|
31
|
+
}
|
|
32
|
+
exports.PrincipalPort = PrincipalPort;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory rate limiter used by security-related decorators.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* This service is intentionally simple and process-local.
|
|
6
|
+
* It is primarily used by {@link Throttle} to enforce per-player call limits.
|
|
7
|
+
*/
|
|
8
|
+
export declare class RateLimiterService {
|
|
9
|
+
private hits;
|
|
10
|
+
/**
|
|
11
|
+
* Checks whether a key is still within the rate limit window.
|
|
12
|
+
*
|
|
13
|
+
* @param key - Unique identifier for the caller/action.
|
|
14
|
+
* @param limit - Maximum number of calls allowed within the time window.
|
|
15
|
+
* @param windowMs - Sliding window size in milliseconds.
|
|
16
|
+
* @returns `true` if the call is allowed; `false` if the limit was exceeded.
|
|
17
|
+
*/
|
|
18
|
+
checkLimit(key: string, limit: number, windowMs: number): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Best-effort cleanup to prevent unbounded memory growth.
|
|
21
|
+
*/
|
|
22
|
+
private cleanup;
|
|
23
|
+
}
|
|
@@ -8,10 +8,25 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.RateLimiterService = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
+
/**
|
|
12
|
+
* In-memory rate limiter used by security-related decorators.
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* This service is intentionally simple and process-local.
|
|
16
|
+
* It is primarily used by {@link Throttle} to enforce per-player call limits.
|
|
17
|
+
*/
|
|
11
18
|
let RateLimiterService = class RateLimiterService {
|
|
12
19
|
constructor() {
|
|
13
20
|
this.hits = new Map();
|
|
14
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Checks whether a key is still within the rate limit window.
|
|
24
|
+
*
|
|
25
|
+
* @param key - Unique identifier for the caller/action.
|
|
26
|
+
* @param limit - Maximum number of calls allowed within the time window.
|
|
27
|
+
* @param windowMs - Sliding window size in milliseconds.
|
|
28
|
+
* @returns `true` if the call is allowed; `false` if the limit was exceeded.
|
|
29
|
+
*/
|
|
15
30
|
checkLimit(key, limit, windowMs) {
|
|
16
31
|
const now = Date.now();
|
|
17
32
|
const timestamps = this.hits.get(key) || [];
|
|
@@ -25,6 +40,9 @@ let RateLimiterService = class RateLimiterService {
|
|
|
25
40
|
this.cleanup();
|
|
26
41
|
return true;
|
|
27
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Best-effort cleanup to prevent unbounded memory growth.
|
|
45
|
+
*/
|
|
28
46
|
cleanup() {
|
|
29
47
|
const now = Date.now();
|
|
30
48
|
for (const [key, times] of this.hits.entries()) {
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { IExports } from '../../../../adapters/contracts/IExports';
|
|
2
|
+
import { CommandMetadata } from '../../decorators/command';
|
|
3
|
+
import { Player } from '../../entities';
|
|
4
|
+
import { CommandExecutionPort, type CommandInfo } from '../ports/command-execution.port';
|
|
5
|
+
/**
|
|
6
|
+
* Remote command service for RESOURCE mode.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* In RESOURCE mode, this service:
|
|
10
|
+
* - Stores command handlers and metadata locally in the resource
|
|
11
|
+
* - Registers command metadata with CORE via exports
|
|
12
|
+
* - Executes handlers when invoked by CORE via net event
|
|
13
|
+
* - Validates arguments using Zod schemas (same as CommandService)
|
|
14
|
+
*
|
|
15
|
+
* Flow:
|
|
16
|
+
* 1. Resource declares @Command → metadata registered with CORE
|
|
17
|
+
* 2. Player executes command → CORE validates security and emits event to resource
|
|
18
|
+
* 3. Resource receives event → validates schema → executes handler
|
|
19
|
+
*
|
|
20
|
+
* Security validation is split:
|
|
21
|
+
* - CORE validates: @Guard (rank/permission), @Throttle (rate limit), @RequiresState
|
|
22
|
+
* - RESOURCE validates: Zod schema (not serializable, must be local)
|
|
23
|
+
*/
|
|
24
|
+
export declare class RemoteCommandService extends CommandExecutionPort {
|
|
25
|
+
private exportsService;
|
|
26
|
+
private commands;
|
|
27
|
+
constructor(exportsService: IExports);
|
|
28
|
+
/**
|
|
29
|
+
* Gets typed access to CORE resource exports.
|
|
30
|
+
*/
|
|
31
|
+
private get core();
|
|
32
|
+
/**
|
|
33
|
+
* Registers a command handler locally and with CORE.
|
|
34
|
+
*
|
|
35
|
+
* @remarks
|
|
36
|
+
* The handler and full metadata are stored locally for schema validation.
|
|
37
|
+
* Only serializable metadata is sent to CORE for security validation.
|
|
38
|
+
*/
|
|
39
|
+
register(metadata: CommandMetadata, handler: Function): void;
|
|
40
|
+
/**
|
|
41
|
+
* Executes a command handler stored in this resource.
|
|
42
|
+
*
|
|
43
|
+
* @remarks
|
|
44
|
+
* Called by the resource's command execution controller when CORE
|
|
45
|
+
* emits a command execution event to this resource.
|
|
46
|
+
*
|
|
47
|
+
* CORE has already validated:
|
|
48
|
+
* - @Guard (rank/permission requirements)
|
|
49
|
+
* - @Throttle (rate limiting)
|
|
50
|
+
* - @RequiresState (player state)
|
|
51
|
+
* - @Public (authentication - if not public, player must be authenticated)
|
|
52
|
+
*
|
|
53
|
+
* This method validates:
|
|
54
|
+
* - Zod schema (argument types and structure)
|
|
55
|
+
*
|
|
56
|
+
* @throws AppError - If schema validation fails or command not found
|
|
57
|
+
*/
|
|
58
|
+
execute(player: Player, commandName: string, args: string[]): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Returns all commands registered in CORE (local + remote).
|
|
61
|
+
*/
|
|
62
|
+
getAllCommands(): CommandInfo[];
|
|
63
|
+
}
|