UNPKG

@aurora-mp/server

Version:

Server package of the aurora-mp TypeScript framework.

307 lines (298 loc) 11.2 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // src/decorators/events/on-client.decorator.ts import { createEventDecorator, EventType } from "@aurora-mp/core"; function OnClient(eventName) { return createEventDecorator(EventType.ON_CLIENT, eventName); } __name(OnClient, "OnClient"); // src/decorators/events/on-webview.decorator.ts import { createEventDecorator as createEventDecorator2, EventType as EventType2 } from "@aurora-mp/core"; function OnWebView(webviewId, eventName) { return createEventDecorator2(EventType2.ON_CLIENT, eventName, webviewId); } __name(OnWebView, "OnWebView"); // src/decorators/rpc/on-client-rpc.decorator.ts import { createRpcDecorator, RpcType } from "@aurora-mp/core"; function OnClientRpc(rpcName) { return createRpcDecorator(RpcType.ON_CLIENT, rpcName); } __name(OnClientRpc, "OnClientRpc"); // src/decorators/rpc/on-webview-rpc.decorator.ts import { createRpcDecorator as createRpcDecorator2, RpcType as RpcType2 } from "@aurora-mp/core"; function OnWebViewRpc(webviewId, rpcName) { return createRpcDecorator2(RpcType2.ON_CLIENT, rpcName, webviewId); } __name(OnWebViewRpc, "OnWebViewRpc"); // src/services/config.service.ts import { Injectable, Inject, CONFIG_LOADER } from "@aurora-mp/core"; function _ts_decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } __name(_ts_decorate, "_ts_decorate"); function _ts_metadata(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); } __name(_ts_metadata, "_ts_metadata"); function _ts_param(paramIndex, decorator) { return function(target, key) { decorator(target, key, paramIndex); }; } __name(_ts_param, "_ts_param"); var ConfigService = class { static { __name(this, "ConfigService"); } loader; /** * Internal storage for configuration key/value pairs. */ config = {}; /** * Creates an instance of ConfigService. * @param loader - The platform-specific configuration loader. * It should implement IConfigLoader.load() to return a map of config values. */ constructor(loader) { this.loader = loader; this.config = this.loader.load(); } /** * Retrieves a configuration value by key, optionally casting it to the type of a default value. * * @typeParam T - The expected return type. * @param key - The configuration key to look up. * @param defaultValue - An optional default value to return if the key is not found. * @returns The configuration value cast to T, or the provided defaultValue. * @throws If the key is missing and no defaultValue is provided. */ get(key, defaultValue) { const value = this.config[key]; if (value === void 0) { if (defaultValue === void 0) { throw new Error(`[Aurora] Missing required configuration key: "${key}" and no default value was provided.`); } return defaultValue; } const lowercasedValue = value.toLowerCase(); if (lowercasedValue === "true") { return true; } if (lowercasedValue === "false") { return false; } if (defaultValue !== void 0) { if (typeof defaultValue === "number") { const num = parseFloat(value); return isNaN(num) ? defaultValue : num; } if (typeof defaultValue === "boolean") { return value === "true"; } } return value; } }; ConfigService = _ts_decorate([ Injectable(), _ts_param(0, Inject(CONFIG_LOADER)), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof IConfigLoader === "undefined" ? Object : IConfigLoader ]) ], ConfigService); // src/services/event.service.ts import { Injectable as Injectable2, Inject as Inject2, PLATFORM_DRIVER, WebViewEvents } from "@aurora-mp/core"; function _ts_decorate2(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } __name(_ts_decorate2, "_ts_decorate"); function _ts_metadata2(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); } __name(_ts_metadata2, "_ts_metadata"); function _ts_param2(paramIndex, decorator) { return function(target, key) { decorator(target, key, paramIndex); }; } __name(_ts_param2, "_ts_param"); var EventService = class { static { __name(this, "EventService"); } platformDriver; /** * @param platformDriver - The platform-specific driver implementation, * injected via the PLATFORM_DRIVER token. */ constructor(platformDriver) { this.platformDriver = platformDriver; } /** * Emit a global event on the server or client (depending on driver). * * @param eventName - The name of the event to emit. * @param args - Additional arguments to pass to event listeners. */ emit(eventName, ...args) { if (!this.platformDriver.emit) { console.warn("[Aurora] Warning: The current platform driver does not support emit."); return; } this.platformDriver.emit(eventName, ...args); } /** * Emit an event to a specific client/player. * * @param player - The target player instance. * @param eventName - The name of the event to emit to that player. * @param args - Additional arguments to pass to the player's event listener. */ emitClient(player, eventName, ...args) { if (!this.platformDriver.emitClient) { console.warn("[Aurora] Warning: The current platform driver does not support emitClient."); return; } this.platformDriver.emitClient(player, eventName, ...args); } /** * Emit an event into a WebView owned by a player. * * This method uses a single multiplex channel (`WebViewEvents.DISPATCH`) * to route calls from the game server through the client into the CEF context. * * @param player - The player who owns the WebView. * @param webviewId - The identifier of the target WebView. * @param eventName - The name of the WebView event. * @param args - Arguments to pass into the WebView handler. */ emitWebview(player, webviewId, eventName, ...args) { if (!this.platformDriver.emitClient) { console.warn("[Aurora] Warning: The current platform driver does not support emitClient (used from emitWebview)."); return; } this.platformDriver.emitClient(player, WebViewEvents.DISPATCH, webviewId, eventName, ...args); } }; EventService = _ts_decorate2([ Injectable2(), _ts_param2(0, Inject2(PLATFORM_DRIVER)), _ts_metadata2("design:type", Function), _ts_metadata2("design:paramtypes", [ typeof IPlatformDriver === "undefined" ? Object : IPlatformDriver ]) ], EventService); // src/services/rpc.service.ts import { Inject as Inject3, Injectable as Injectable3, LOGGER_SERVICE, PLATFORM_DRIVER as PLATFORM_DRIVER2 } from "@aurora-mp/core"; function _ts_decorate3(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } __name(_ts_decorate3, "_ts_decorate"); function _ts_metadata3(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); } __name(_ts_metadata3, "_ts_metadata"); function _ts_param3(paramIndex, decorator) { return function(target, key) { decorator(target, key, paramIndex); }; } __name(_ts_param3, "_ts_param"); var RpcService = class { static { __name(this, "RpcService"); } platformDriver; logger; /** * @param platformDriver - The platform-specific driver implementation, * injected via the PLATFORM_DRIVER token. */ constructor(platformDriver, logger) { this.platformDriver = platformDriver; this.logger = logger; } async invokeClient(player, method, ...args) { if (!this.platformDriver.invokeClient) { const err = new Error(`[RpcService] invokeClient not implemented on platformDriver.`); this.logger.error(err); throw err; } try { const result = await this.platformDriver.invokeClient(player, method, ...args); return result; } catch (error) { this.logger.error(`[RpcService] Rpc error on method: ${method}, error: ${error}`); throw error; } } }; RpcService = _ts_decorate3([ Injectable3(), _ts_param3(0, Inject3(PLATFORM_DRIVER2)), _ts_param3(1, Inject3(LOGGER_SERVICE)), _ts_metadata3("design:type", Function), _ts_metadata3("design:paramtypes", [ typeof IPlatformDriver === "undefined" ? Object : IPlatformDriver, typeof ILogger === "undefined" ? Object : ILogger ]) ], RpcService); // src/server.module.ts import { CONFIG_SERVICE, EVENT_SERVICE, Global, Module, RPC_SERVICE } from "@aurora-mp/core"; function _ts_decorate4(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } __name(_ts_decorate4, "_ts_decorate"); var ServerModule = class { static { __name(this, "ServerModule"); } }; ServerModule = _ts_decorate4([ Global(), Module({ providers: [ { provide: CONFIG_SERVICE, useClass: ConfigService }, { provide: EVENT_SERVICE, useClass: EventService }, { provide: RPC_SERVICE, useClass: RpcService } ], exports: [ CONFIG_SERVICE, EVENT_SERVICE, RPC_SERVICE ] }) ], ServerModule); export { ConfigService, EventService, OnClient, OnClientRpc, OnWebView, OnWebViewRpc, RpcService, ServerModule };