@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
|
@@ -16,14 +16,17 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.Controller = exports.Command = void 0;
|
|
18
18
|
__exportStar(require("./bind"), exports);
|
|
19
|
-
__exportStar(require("./utils"), exports);
|
|
20
19
|
var command_1 = require("./command");
|
|
21
20
|
Object.defineProperty(exports, "Command", { enumerable: true, get: function () { return command_1.Command; } });
|
|
22
|
-
__exportStar(require("./onFrameworkEvent"), exports);
|
|
23
|
-
__exportStar(require("./onNet"), exports);
|
|
24
|
-
__exportStar(require("./onTick"), exports);
|
|
25
21
|
var controller_1 = require("./controller");
|
|
26
22
|
Object.defineProperty(exports, "Controller", { enumerable: true, get: function () { return controller_1.Controller; } });
|
|
27
|
-
__exportStar(require("./
|
|
23
|
+
__exportStar(require("./export"), exports);
|
|
28
24
|
__exportStar(require("./guard"), exports);
|
|
25
|
+
__exportStar(require("./onFiveMEvent"), exports);
|
|
26
|
+
__exportStar(require("./onFrameworkEvent"), exports);
|
|
27
|
+
__exportStar(require("./onNet"), exports);
|
|
28
|
+
__exportStar(require("./onTick"), exports);
|
|
29
|
+
__exportStar(require("./public"), exports);
|
|
29
30
|
__exportStar(require("./requiresState"), exports);
|
|
31
|
+
__exportStar(require("./throttle"), exports);
|
|
32
|
+
__exportStar(require("./utils"), exports);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers a method as a server-side listener for a native FiveM event.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* This decorator only stores metadata. During bootstrap, the framework scans controller
|
|
6
|
+
* methods and binds handlers to FiveM events.
|
|
7
|
+
*
|
|
8
|
+
* FiveM server event reference:
|
|
9
|
+
* https://docs.fivem.net/docs/scripting-reference/events/server-events/
|
|
10
|
+
*
|
|
11
|
+
* @param event - FiveM event name (e.g. `"playerJoining"`).
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* @Server.Controller()
|
|
16
|
+
* export class SessionController {
|
|
17
|
+
* @Server.OnFiveMEvent('playerJoining')
|
|
18
|
+
* onPlayerJoining() {
|
|
19
|
+
* // ...
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function OnFiveMEvent(event: string): (target: any, propertyKey: string) => void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnFiveMEvent = OnFiveMEvent;
|
|
4
|
+
const metadata_server_keys_1 = require("../system/metadata-server.keys");
|
|
5
|
+
/**
|
|
6
|
+
* Registers a method as a server-side listener for a native FiveM event.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* This decorator only stores metadata. During bootstrap, the framework scans controller
|
|
10
|
+
* methods and binds handlers to FiveM events.
|
|
11
|
+
*
|
|
12
|
+
* FiveM server event reference:
|
|
13
|
+
* https://docs.fivem.net/docs/scripting-reference/events/server-events/
|
|
14
|
+
*
|
|
15
|
+
* @param event - FiveM event name (e.g. `"playerJoining"`).
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* @Server.Controller()
|
|
20
|
+
* export class SessionController {
|
|
21
|
+
* @Server.OnFiveMEvent('playerJoining')
|
|
22
|
+
* onPlayerJoining() {
|
|
23
|
+
* // ...
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
function OnFiveMEvent(event) {
|
|
29
|
+
return (target, propertyKey) => {
|
|
30
|
+
Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.FIVEM_EVENT, { event }, target, propertyKey);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CoreEventMap } from '../types/core-events';
|
|
2
|
+
/**
|
|
3
|
+
* Registers a method as a listener for an internal OpenCore framework event.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* This decorator only stores metadata. The framework binds listeners during bootstrap by scanning
|
|
7
|
+
* controller methods.
|
|
8
|
+
*
|
|
9
|
+
* @param event - Core event name, strongly typed to {@link CoreEventMap}.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* @Server.Controller()
|
|
14
|
+
* export class SystemController {
|
|
15
|
+
* @Server.OnFrameworkEvent('server:ready')
|
|
16
|
+
* onServerReady() {
|
|
17
|
+
* console.log('OpenCore framework is ready')
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function OnFrameworkEvent<K extends keyof CoreEventMap>(event: K): (target: any, propertyKey: string) => void;
|
|
@@ -3,21 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OnFrameworkEvent = OnFrameworkEvent;
|
|
4
4
|
const metadata_server_keys_1 = require("../system/metadata-server.keys");
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Registers a method as a listener for an internal OpenCore framework event.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* @param event - The name of the core event to listen for (typed strictly to `CoreEventMap`).
|
|
8
|
+
* @remarks
|
|
9
|
+
* This decorator only stores metadata. The framework binds listeners during bootstrap by scanning
|
|
10
|
+
* controller methods.
|
|
12
11
|
*
|
|
12
|
+
* @param event - Core event name, strongly typed to {@link CoreEventMap}.
|
|
13
13
|
*
|
|
14
|
+
* @example
|
|
14
15
|
* ```ts
|
|
15
16
|
* @Server.Controller()
|
|
16
17
|
* export class SystemController {
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* console.log('OpenCore Framework is ready!')
|
|
18
|
+
* @Server.OnFrameworkEvent('server:ready')
|
|
19
|
+
* onServerReady() {
|
|
20
|
+
* console.log('OpenCore framework is ready')
|
|
21
21
|
* }
|
|
22
22
|
* }
|
|
23
23
|
* ```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export interface NetEventOptions {
|
|
3
|
+
/**
|
|
4
|
+
* The network event name to register.
|
|
5
|
+
*/
|
|
6
|
+
eventName: string;
|
|
7
|
+
/**
|
|
8
|
+
* Zod schema for payload validation.
|
|
9
|
+
* - `z.tuple([...])`: validates all positional args.
|
|
10
|
+
* - otherwise: expects exactly 1 arg and validates `args[0]` (DTO payload pattern).
|
|
11
|
+
*/
|
|
12
|
+
schema?: z.ZodType;
|
|
13
|
+
/**
|
|
14
|
+
* Runtime parameter types for auto-validation.
|
|
15
|
+
*/
|
|
16
|
+
paramTypes: any;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Registers a method as a server-side network event handler.
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* Rules:
|
|
23
|
+
* - First parameter must be `Player` (injected from the caller).
|
|
24
|
+
*
|
|
25
|
+
* Validation:
|
|
26
|
+
* - If schema is provided:
|
|
27
|
+
* - `z.tuple([...])` validates all positional args.
|
|
28
|
+
* - otherwise: expects exactly 1 arg and validates `args[0]` (DTO payload pattern).
|
|
29
|
+
* - If schema is omitted, only primitive args can be auto-validated from runtime param types
|
|
30
|
+
* (`string|number|boolean|any[]`). Complex payloads should use an explicit schema.
|
|
31
|
+
*
|
|
32
|
+
* Authentication:
|
|
33
|
+
* - Handlers are typically protected by the framework's net-event security layer.
|
|
34
|
+
* - Use {@link Public} to explicitly mark a handler as unauthenticated.
|
|
35
|
+
*
|
|
36
|
+
* @param eventName - Network event name.
|
|
37
|
+
* @param schemaOrOptions - Zod schema directly, or options object with schema property.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* import { z, Infer } from '@open-core/framework'
|
|
42
|
+
*
|
|
43
|
+
* const PayloadSchema = z.object({ message: z.string() })
|
|
44
|
+
*
|
|
45
|
+
* @Server.Controller()
|
|
46
|
+
* export class ExampleController {
|
|
47
|
+
* // Simple handler (no schema)
|
|
48
|
+
* @Server.OnNet('example:ping')
|
|
49
|
+
* ping(player: Player, message: string) { }
|
|
50
|
+
*
|
|
51
|
+
* // With schema directly (recommended)
|
|
52
|
+
* @Server.OnNet('example:data', PayloadSchema)
|
|
53
|
+
* handleData(player: Player, data: Infer<typeof PayloadSchema>) { }
|
|
54
|
+
*
|
|
55
|
+
* // With options object (legacy)
|
|
56
|
+
* @Server.OnNet('example:legacy', { schema: PayloadSchema })
|
|
57
|
+
* handleLegacy(player: Player, data: Infer<typeof PayloadSchema>) { }
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function OnNet<_TArgs extends any[]>(eventName: string, schema: z.ZodType): MethodDecorator;
|
|
62
|
+
export declare function OnNet<_TArgs extends any[]>(eventName: string, options?: Pick<NetEventOptions, 'schema'>): MethodDecorator;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnNet = OnNet;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const metadata_server_keys_1 = require("../system/metadata-server.keys");
|
|
6
|
+
// Implementation
|
|
7
|
+
function OnNet(eventName, schemaOrOptions) {
|
|
8
|
+
return (target, propertyKey, _descriptor) => {
|
|
9
|
+
const paramTypes = Reflect.getMetadata('design:paramtypes', target, propertyKey);
|
|
10
|
+
// Detect if second arg is a Zod schema or an options object
|
|
11
|
+
const schema = schemaOrOptions instanceof zod_1.z.ZodType ? schemaOrOptions : schemaOrOptions === null || schemaOrOptions === void 0 ? void 0 : schemaOrOptions.schema;
|
|
12
|
+
const metadata = { eventName, schema, paramTypes };
|
|
13
|
+
Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.NET_EVENT, metadata, target, propertyKey);
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers a method to be executed on every server tick.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* This decorator only stores metadata. During bootstrap, the framework binds tick handlers to the
|
|
6
|
+
* FiveM tick cycle.
|
|
7
|
+
*
|
|
8
|
+
* Tick handlers should be lightweight and non-blocking.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* @Server.Controller()
|
|
13
|
+
* export class SyncController {
|
|
14
|
+
* @Server.OnTick()
|
|
15
|
+
* updatePlayers() {
|
|
16
|
+
* this.service.syncPositions()
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function OnTick(): (target: any, propertyKey: string) => void;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnTick = OnTick;
|
|
4
|
+
const metadata_server_keys_1 = require("../system/metadata-server.keys");
|
|
5
|
+
/**
|
|
6
|
+
* Registers a method to be executed on every server tick.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* This decorator only stores metadata. During bootstrap, the framework binds tick handlers to the
|
|
10
|
+
* FiveM tick cycle.
|
|
11
|
+
*
|
|
12
|
+
* Tick handlers should be lightweight and non-blocking.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* @Server.Controller()
|
|
17
|
+
* export class SyncController {
|
|
18
|
+
* @Server.OnTick()
|
|
19
|
+
* updatePlayers() {
|
|
20
|
+
* this.service.syncPositions()
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function OnTick() {
|
|
26
|
+
return (target, propertyKey) => {
|
|
27
|
+
Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.TICK, {}, target, propertyKey);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marks a server-side net-event handler as publicly accessible.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* This decorator disables authentication requirements for the decorated method.
|
|
6
|
+
* It is intended to be used together with {@link OnNet}.
|
|
7
|
+
*
|
|
8
|
+
* Security warning:
|
|
9
|
+
* - Use with caution.
|
|
10
|
+
* - Public endpoints should not mutate sensitive game state unless strictly necessary.
|
|
11
|
+
*
|
|
12
|
+
* @returns Method decorator that marks a handler as unauthenticated.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* @Server.Controller()
|
|
17
|
+
* export class AuthController {
|
|
18
|
+
* @Server.Public()
|
|
19
|
+
* @Server.OnNet('auth:login')
|
|
20
|
+
* async login(player: Server.Player, credentials: AuthCredentials) {
|
|
21
|
+
* // no authentication required for this event
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function Public(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
@@ -3,33 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Public = Public;
|
|
4
4
|
const metadata_server_keys_1 = require("../system/metadata-server.keys");
|
|
5
5
|
/**
|
|
6
|
-
* Marks a server-side
|
|
6
|
+
* Marks a server-side net-event handler as publicly accessible.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* - Registration
|
|
12
|
-
* - Public information retrieval
|
|
8
|
+
* @remarks
|
|
9
|
+
* This decorator disables authentication requirements for the decorated method.
|
|
10
|
+
* It is intended to be used together with {@link OnNet}.
|
|
13
11
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
12
|
+
* Security warning:
|
|
13
|
+
* - Use with caution.
|
|
14
|
+
* - Public endpoints should not mutate sensitive game state unless strictly necessary.
|
|
17
15
|
*
|
|
18
|
-
*
|
|
16
|
+
* @returns Method decorator that marks a handler as unauthenticated.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
19
|
* ```ts
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* @
|
|
20
|
+
* @Server.Controller()
|
|
21
|
+
* export class AuthController {
|
|
22
|
+
* @Server.Public()
|
|
23
|
+
* @Server.OnNet('auth:login')
|
|
23
24
|
* async login(player: Server.Player, credentials: AuthCredentials) {
|
|
24
25
|
* // no authentication required for this event
|
|
25
26
|
* }
|
|
26
27
|
* }
|
|
27
28
|
* ```
|
|
28
|
-
*
|
|
29
|
-
* @returns Method decorator that marks a handler as unauthenticated.
|
|
30
29
|
*/
|
|
31
30
|
function Public() {
|
|
32
|
-
return
|
|
31
|
+
return (target, propertyKey, descriptor) => {
|
|
33
32
|
Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.PUBLIC, true, target, propertyKey);
|
|
34
33
|
return descriptor;
|
|
35
34
|
};
|
|
@@ -6,7 +6,7 @@ export interface StateRequirement {
|
|
|
6
6
|
/**
|
|
7
7
|
* **Whitelist:** The player **MUST** possess ALL of these states to proceed.
|
|
8
8
|
* If the player is missing any one of these, the execution is blocked.
|
|
9
|
-
* @example ['
|
|
9
|
+
* @example ['on_duty', 'in_vehicle']
|
|
10
10
|
*/
|
|
11
11
|
has?: string[];
|
|
12
12
|
/**
|
|
@@ -24,33 +24,40 @@ export interface StateRequirement {
|
|
|
24
24
|
/**
|
|
25
25
|
* Enforces gameplay state requirements before executing a method.
|
|
26
26
|
*
|
|
27
|
-
*
|
|
28
|
-
* the
|
|
29
|
-
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* The decorator wraps the original method and verifies whether the player satisfies required
|
|
29
|
+
* state flags (e.g. `dead`, `cuffed`, `on_duty_police`).
|
|
30
30
|
*
|
|
31
|
-
*
|
|
32
|
-
* The
|
|
31
|
+
* Rules:
|
|
32
|
+
* - The decorated method must receive a `Server.Player` instance as its first argument.
|
|
33
33
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
34
|
+
* Validation:
|
|
35
|
+
* - `req.has`: the player must have *all* of these states.
|
|
36
|
+
* - `req.missing`: the player must have *none* of these states.
|
|
36
37
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* -
|
|
38
|
+
* @param req - State validation configuration.
|
|
39
|
+
*
|
|
40
|
+
* @throws Error - If the method is invoked without a `Player` as the first argument.
|
|
41
|
+
* @throws AppError - If the player does not satisfy the configured requirements.
|
|
40
42
|
*
|
|
41
|
-
*
|
|
43
|
+
* @example
|
|
42
44
|
* ```ts
|
|
43
|
-
* @
|
|
44
|
-
*
|
|
45
|
+
* @Server.Controller()
|
|
46
|
+
* export class InventoryController {
|
|
47
|
+
* @Server.RequiresState({ missing: ['dead', 'cuffed'] })
|
|
48
|
+
* openInventory(player: Server.Player) {
|
|
49
|
+
* // ...
|
|
50
|
+
* }
|
|
45
51
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
+
* @Server.RequiresState({
|
|
53
|
+
* has: ['police_duty'],
|
|
54
|
+
* missing: ['dead'],
|
|
55
|
+
* errorMessage: 'You must be on duty to access the armory.',
|
|
56
|
+
* })
|
|
57
|
+
* openArmory(player: Server.Player) {
|
|
58
|
+
* // ...
|
|
59
|
+
* }
|
|
60
|
+
* }
|
|
52
61
|
* ```
|
|
53
|
-
*
|
|
54
|
-
* @param req - State validation configuration.
|
|
55
62
|
*/
|
|
56
63
|
export declare function RequiresState(req: StateRequirement): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequiresState = RequiresState;
|
|
4
|
+
const utils_1 = require("../../../kernel/utils");
|
|
5
|
+
const metadata_server_keys_1 = require("../system/metadata-server.keys");
|
|
6
|
+
/**
|
|
7
|
+
* Enforces gameplay state requirements before executing a method.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* The decorator wraps the original method and verifies whether the player satisfies required
|
|
11
|
+
* state flags (e.g. `dead`, `cuffed`, `on_duty_police`).
|
|
12
|
+
*
|
|
13
|
+
* Rules:
|
|
14
|
+
* - The decorated method must receive a `Server.Player` instance as its first argument.
|
|
15
|
+
*
|
|
16
|
+
* Validation:
|
|
17
|
+
* - `req.has`: the player must have *all* of these states.
|
|
18
|
+
* - `req.missing`: the player must have *none* of these states.
|
|
19
|
+
*
|
|
20
|
+
* @param req - State validation configuration.
|
|
21
|
+
*
|
|
22
|
+
* @throws Error - If the method is invoked without a `Player` as the first argument.
|
|
23
|
+
* @throws AppError - If the player does not satisfy the configured requirements.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* @Server.Controller()
|
|
28
|
+
* export class InventoryController {
|
|
29
|
+
* @Server.RequiresState({ missing: ['dead', 'cuffed'] })
|
|
30
|
+
* openInventory(player: Server.Player) {
|
|
31
|
+
* // ...
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* @Server.RequiresState({
|
|
35
|
+
* has: ['police_duty'],
|
|
36
|
+
* missing: ['dead'],
|
|
37
|
+
* errorMessage: 'You must be on duty to access the armory.',
|
|
38
|
+
* })
|
|
39
|
+
* openArmory(player: Server.Player) {
|
|
40
|
+
* // ...
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
function RequiresState(req) {
|
|
46
|
+
return (target, propertyKey, descriptor) => {
|
|
47
|
+
const originalMethod = descriptor.value;
|
|
48
|
+
// Store metadata for remote transmission
|
|
49
|
+
Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.REQUIRES_STATE, req, target, propertyKey);
|
|
50
|
+
descriptor.value = async function (...args) {
|
|
51
|
+
const player = args[0];
|
|
52
|
+
if (!player) {
|
|
53
|
+
throw new Error(`@RequiresState used on ${propertyKey} without Player context`);
|
|
54
|
+
}
|
|
55
|
+
if (req.has) {
|
|
56
|
+
for (const state of req.has) {
|
|
57
|
+
if (!player.hasState(state)) {
|
|
58
|
+
throw new utils_1.AppError('GAME:INVALID_STATE', req.errorMessage || `You must be [${state}] to do this.`, 'client');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (req.missing) {
|
|
63
|
+
for (const state of req.missing) {
|
|
64
|
+
if (player.hasState(state)) {
|
|
65
|
+
throw new utils_1.AppError('GAME:INVALID_STATE', req.errorMessage || `You can't do this while you're [${state}].`, 'client');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return originalMethod.apply(this, args);
|
|
70
|
+
};
|
|
71
|
+
return descriptor;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { SecurityAction } from '../types/security.types';
|
|
2
|
+
export interface ThrottleOptions {
|
|
3
|
+
/**
|
|
4
|
+
* limit of calls per windowMs
|
|
5
|
+
*/
|
|
6
|
+
limit: number;
|
|
7
|
+
/**
|
|
8
|
+
* time window for numeric overload
|
|
9
|
+
*/
|
|
10
|
+
windowMs: number;
|
|
11
|
+
/**
|
|
12
|
+
* action to perform on exceed limit
|
|
13
|
+
*/
|
|
14
|
+
onExceed?: SecurityAction;
|
|
15
|
+
/**
|
|
16
|
+
* custom message to display on exceed limit (ERROR MESSAGE)
|
|
17
|
+
*/
|
|
18
|
+
message?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Rate-limits how frequently a method can be called by a specific player.
|
|
22
|
+
*
|
|
23
|
+
* @remarks
|
|
24
|
+
* Uses {@link RateLimiterService} with a key composed of:
|
|
25
|
+
* `clientId:ClassName:MethodName`.
|
|
26
|
+
*
|
|
27
|
+
* Overloads:
|
|
28
|
+
* - `@Throttle(5, 1000)` → 5 calls per 1000 ms
|
|
29
|
+
* - `@Throttle({ limit, windowMs, onExceed, message })`
|
|
30
|
+
*
|
|
31
|
+
* Behavior:
|
|
32
|
+
* - If the rate limit is exceeded, a {@link SecurityError} is thrown.
|
|
33
|
+
* - If the method is called without a valid `Player` context (first argument), the limiter is skipped.
|
|
34
|
+
*
|
|
35
|
+
* @param optionsOrLimit - Number (simple overload) or full config object.
|
|
36
|
+
* @param windowMs - Time window for the numeric overload.
|
|
37
|
+
*
|
|
38
|
+
* @throws SecurityError - When the rate limit is exceeded.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* @Server.Controller()
|
|
43
|
+
* export class MarketController {
|
|
44
|
+
* @Server.Throttle(5, 2000)
|
|
45
|
+
* async search(player: Server.Player, query: string) {
|
|
46
|
+
* // ...
|
|
47
|
+
* }
|
|
48
|
+
*
|
|
49
|
+
* @Server.Throttle({ limit: 1, windowMs: 5000, message: 'Too fast!' })
|
|
50
|
+
* async placeOrder(player: Server.Player) {
|
|
51
|
+
* // ...
|
|
52
|
+
* }
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function Throttle(optionsOrLimit: number | ThrottleOptions, windowMs?: number): (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => PropertyDescriptor | undefined;
|
|
@@ -2,37 +2,47 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Throttle = Throttle;
|
|
4
4
|
const tsyringe_1 = require("tsyringe");
|
|
5
|
+
const security_error_1 = require("../../../kernel/utils/error/security.error");
|
|
5
6
|
const rate_limiter_service_1 = require("../services/rate-limiter.service");
|
|
6
|
-
const
|
|
7
|
+
const metadata_server_keys_1 = require("../system/metadata-server.keys");
|
|
7
8
|
/**
|
|
8
9
|
* Rate-limits how frequently a method can be called by a specific player.
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* Uses {@link RateLimiterService} with a key composed of:
|
|
13
|
+
* `clientId:ClassName:MethodName`.
|
|
12
14
|
*
|
|
13
|
-
*
|
|
14
|
-
* - `@Throttle(5, 1000)` →
|
|
15
|
+
* Overloads:
|
|
16
|
+
* - `@Throttle(5, 1000)` → 5 calls per 1000 ms
|
|
15
17
|
* - `@Throttle({ limit, windowMs, onExceed, message })`
|
|
16
18
|
*
|
|
17
|
-
*
|
|
18
|
-
* If the rate limit is exceeded
|
|
19
|
-
* -
|
|
20
|
-
* - Optional custom behavior (`onExceed`) may be executed.
|
|
19
|
+
* Behavior:
|
|
20
|
+
* - If the rate limit is exceeded, a {@link SecurityError} is thrown.
|
|
21
|
+
* - If the method is called without a valid `Player` context (first argument), the limiter is skipped.
|
|
21
22
|
*
|
|
22
|
-
*
|
|
23
|
+
* @param optionsOrLimit - Number (simple overload) or full config object.
|
|
24
|
+
* @param windowMs - Time window for the numeric overload.
|
|
25
|
+
*
|
|
26
|
+
* @throws SecurityError - When the rate limit is exceeded.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
23
29
|
* ```ts
|
|
24
|
-
* @
|
|
25
|
-
*
|
|
30
|
+
* @Server.Controller()
|
|
31
|
+
* export class MarketController {
|
|
32
|
+
* @Server.Throttle(5, 2000)
|
|
33
|
+
* async search(player: Server.Player, query: string) {
|
|
34
|
+
* // ...
|
|
35
|
+
* }
|
|
26
36
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
37
|
+
* @Server.Throttle({ limit: 1, windowMs: 5000, message: 'Too fast!' })
|
|
38
|
+
* async placeOrder(player: Server.Player) {
|
|
39
|
+
* // ...
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
29
42
|
* ```
|
|
30
|
-
*
|
|
31
|
-
* @param optionsOrLimit - Number (simple mode) or full config object.
|
|
32
|
-
* @param windowMs - Time window for numeric overload.
|
|
33
43
|
*/
|
|
34
44
|
function Throttle(optionsOrLimit, windowMs) {
|
|
35
|
-
return
|
|
45
|
+
return (target, propertyKey, descriptor) => {
|
|
36
46
|
if (!descriptor) {
|
|
37
47
|
// In benchmarks or edge cases, skip method wrapping
|
|
38
48
|
// This should NOT happen in production code with proper TypeScript compilation
|
|
@@ -47,13 +57,15 @@ function Throttle(optionsOrLimit, windowMs) {
|
|
|
47
57
|
else {
|
|
48
58
|
opts = Object.assign({ onExceed: 'LOG' }, optionsOrLimit);
|
|
49
59
|
}
|
|
60
|
+
// Store metadata for remote transmission
|
|
61
|
+
Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.THROTTLE, opts, target, propertyKey);
|
|
50
62
|
descriptor.value = async function (...args) {
|
|
51
63
|
const player = args[0];
|
|
52
64
|
if (player === null || player === void 0 ? void 0 : player.clientID) {
|
|
53
65
|
const service = tsyringe_1.container.resolve(rate_limiter_service_1.RateLimiterService);
|
|
54
66
|
const key = `${player.clientID}:${target.constructor.name}:${propertyKey}`;
|
|
55
67
|
if (!service.checkLimit(key, opts.limit, opts.windowMs)) {
|
|
56
|
-
throw new
|
|
68
|
+
throw new security_error_1.SecurityError(opts.onExceed, opts.message || `Rate limit exceeded on ${propertyKey}`, { limit: opts.limit, key });
|
|
57
69
|
}
|
|
58
70
|
}
|
|
59
71
|
return originalMethod.apply(this, args);
|