UNPKG

@xmobitea/gn-server

Version:

GearN Server by XmobiTea (Pro)

1,332 lines (1,303 loc) 4.61 MB
/******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ // The require scope /******/ var __webpack_require__ = {}; /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => (module['default']) : /******/ () => (module); /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { AnalyticsService: () => (/* reexport */ AnalyticsService), AntiDdosMiddleware: () => (/* reexport */ AntiDdosMiddleware), ApiMiddleware: () => (/* reexport */ ApiMiddleware), AppleService: () => (/* reexport */ AppleService), ApplicationSettings: () => (/* reexport */ ApplicationSettings), AuthInfo: () => (/* reexport */ AuthInfo), AuthenticatePermissionRulesParam: () => (/* reexport */ AuthenticatePermissionRulesParam), AvatarParam: () => (/* reexport */ AvatarParam), BooleanDataMember: () => (/* reexport */ BooleanDataMember), CacheItem: () => (/* reexport */ CacheItem), CacheService: () => (/* reexport */ CacheService), CharacterCatalogSettingsParam: () => (/* reexport */ CharacterCatalogSettingsParam), CharacterPlayer: () => (/* reexport */ CharacterPlayer), CharacterPlayerPermissionRulesParam: () => (/* reexport */ CharacterPlayerPermissionRulesParam), CharacterPlayerSettingsParam: () => (/* reexport */ CharacterPlayerSettingsParam), ChatMessage: () => (/* reexport */ ChatMessage), CloudScriptPermissionRulesParam: () => (/* reexport */ CloudScriptPermissionRulesParam), ClusterSettings: () => (/* reexport */ ClusterSettings), CodeHelper: () => (/* reexport */ CodeHelper), Commands: () => (/* reexport */ Commands), CommonOperationRequest: () => (/* reexport */ CommonOperationRequest), ConfigItem: () => (/* reexport */ ConfigItem), ConfigService: () => (/* reexport */ ConfigService), ContentDataParam: () => (/* reexport */ ContentDataParam), ContentPermissionRulesParam: () => (/* reexport */ ContentPermissionRulesParam), CurrencyParam: () => (/* reexport */ CurrencyParam), CurrencySettingsParam: () => (/* reexport */ CurrencySettingsParam), CustomDataParam: () => (/* reexport */ CustomDataParam_CustomDataParam), DataMember: () => (/* reexport */ DataMember), DataObjectBase: () => (/* reexport */ DataObjectBase), DataSettingsParam: () => (/* reexport */ DataSettingsParam), DatabaseSettings: () => (/* reexport */ DatabaseSettings), DdosSettings: () => (/* reexport */ DdosSettings), Debug: () => (/* reexport */ Debug), DefaultApplicationStartup: () => (/* reexport */ DefaultApplicationStartup), DisplayNameUtility: () => (/* reexport */ DisplayNameUtility), EmailService: () => (/* reexport */ EmailService), EmailSettingsParam: () => (/* reexport */ EmailSettingsParam), ErrorCode: () => (/* reexport */ ErrorCode), EventCode: () => (/* reexport */ EventCode), FacebookService: () => (/* reexport */ FacebookService), FieldDataType: () => (/* reexport */ GNMetadata_FieldDataType), FriendCatalogSettingsParam: () => (/* reexport */ FriendCatalogSettingsParam), FriendStatus: () => (/* reexport */ FriendStatus), GNArray: () => (/* reexport */ GNArray), GNArrayBuilder: () => (/* reexport */ GNArrayBuilder), GNArrayDataMember: () => (/* reexport */ GNArrayDataMember), GNData: () => (/* reexport */ GNData), GNFieldDataType: () => (/* reexport */ GNFieldDataType), GNHashtable: () => (/* reexport */ GNHashtable), GNHashtableBuilder: () => (/* reexport */ GNHashtableBuilder), GNHashtableDataMember: () => (/* reexport */ GNHashtableDataMember), GNServer: () => (/* reexport */ GNServer), GameItem: () => (/* reexport */ GameItem), GamePlayer: () => (/* reexport */ GamePlayer), GamePlayerBase: () => (/* reexport */ GamePlayerBase), GamePlayerPermissionRulesParam: () => (/* reexport */ GamePlayerPermissionRulesParam), GamePlayerSettingsParam: () => (/* reexport */ GamePlayerSettingsParam), GameSettingsParam: () => (/* reexport */ GameSettingsParam), GenericServiceSettingsParam: () => (/* reexport */ GenericServiceSettingsParam), GoogleLoginType: () => (/* reexport */ GoogleLoginType), GoogleService: () => (/* reexport */ GoogleService), Group: () => (/* reexport */ Group), GroupCatalogSettingsParam: () => (/* reexport */ GroupCatalogSettingsParam), GroupCurrencyParam: () => (/* reexport */ GroupCurrencyParam), GroupDataParam: () => (/* reexport */ GroupDataParam), GroupMemberParam: () => (/* reexport */ model_GroupMemberParam_GroupMemberParam), GroupPermissionRulesParam: () => (/* reexport */ GroupPermissionRulesParam), GroupSettingsParam: () => (/* reexport */ GroupSettingsParam), GroupStatisticsParam: () => (/* reexport */ GroupStatisticsParam), GroupStatus: () => (/* reexport */ GroupStatus), HttpApp: () => (/* reexport */ HttpApp), HttpAppHandler: () => (/* reexport */ HttpAppHandler), HttpAppSettings: () => (/* reexport */ HttpAppSettings), InAppPurchaseParam: () => (/* reexport */ InAppPurchaseParam), InvalidMemberType: () => (/* reexport */ InvalidMemberType), Inventory: () => (/* reexport */ Inventory), InventoryPermissionRulesParam: () => (/* reexport */ InventoryPermissionRulesParam), InventorySettingsParam: () => (/* reexport */ InventorySettingsParam), ItemCatalogSettingsParam: () => (/* reexport */ ItemCatalogSettingsParam), ItemClassSettingsParam: () => (/* reexport */ ItemClassSettingsParam), ItemDataParam: () => (/* reexport */ ItemDataParam), ItemStatisticsParam: () => (/* reexport */ ItemStatisticsParam), ItemType: () => (/* reexport */ ItemType), LogSettings: () => (/* reexport */ LogSettings), MasterAdminMongoObject: () => (/* reexport */ MasterAdminMongoObject), MasterAdminPermissionRulesParam: () => (/* reexport */ MasterAdminPermissionRulesParam), MasterAdminPlayer: () => (/* reexport */ MasterAdminPlayer), MasterGameSettings: () => (/* reexport */ MasterGameSettings), MasterPlayer: () => (/* reexport */ MasterPlayer), MasterPlayerPermissionRulesParam: () => (/* reexport */ MasterPlayerPermissionRulesParam), MasterPlayerSettingsParam: () => (/* reexport */ MasterPlayerSettingsParam), Match: () => (/* reexport */ Match), MatchmakingMemberStatus: () => (/* reexport */ MatchmakingMemberStatus), MatchmakingQueueSettingsParam: () => (/* reexport */ MatchmakingQueueSettingsParam), MatchmakingTicket: () => (/* reexport */ MatchmakingTicket), MatchmakingTicketStatus: () => (/* reexport */ MatchmakingTicketStatus), Md5Generate: () => (/* reexport */ Md5Generate), MemoryCacheServiceController: () => (/* reexport */ MemoryCacheServiceController), MongoDbCacheServiceController: () => (/* reexport */ MongoDbCacheServiceController), MongoObject: () => (/* reexport */ MongoObject), MultiplayerPermissionRulesParam: () => (/* reexport */ MultiplayerPermissionRulesParam), NumberDataMember: () => (/* reexport */ NumberDataMember), OperationArray: () => (/* reexport */ OperationArray), OperationCode: () => (/* reexport */ OperationCode), OperationEvent: () => (/* reexport */ OperationEvent), OperationHelper: () => (/* reexport */ OperationHelper), OperationObject: () => (/* reexport */ OperationObject), OperationRequest: () => (/* reexport */ OperationRequest), OperationResponse: () => (/* reexport */ OperationResponse), OtherSettings: () => (/* reexport */ OtherSettings), OwnerType: () => (/* reexport */ OwnerType), ParameterCode: () => (/* reexport */ ParameterCode), PermissionDataItem: () => (/* reexport */ PermissionDataItem), PermissionParam: () => (/* reexport */ PermissionParam), PermissionRulesParam: () => (/* reexport */ PermissionRulesParam), PlayerBase: () => (/* reexport */ PlayerBase), PlayerCurrencyParam: () => (/* reexport */ PlayerCurrencyParam_PlayerCurrencyParam), PlayerDataParam: () => (/* reexport */ PlayerDataParam_PlayerDataParam), PlayerStatisticsParam: () => (/* reexport */ PlayerStatisticsParam_PlayerStatisticsParam), PostEventCallbackService: () => (/* reexport */ PostEventCallbackService), PreEventCallbackService: () => (/* reexport */ PreEventCallbackService), PushNotificationService: () => (/* reexport */ PushNotificationService), PushNotificationSettingsParam: () => (/* reexport */ PushNotificationSettingsParam), PushPlatformType: () => (/* reexport */ PushPlatformType), Request: () => (/* reexport */ Request), RequestController: () => (/* reexport */ RequestController), RequestConverterService: () => (/* reexport */ RequestConverterService), RequestHandler: () => (/* reexport */ RequestHandler), RequestRole: () => (/* reexport */ RequestRole), RequestType: () => (/* reexport */ RequestType), ReturnCode: () => (/* reexport */ ReturnCode), SecretInfo: () => (/* reexport */ SecretInfo), SecretInfoItem: () => (/* reexport */ SecretInfoItem), ServerApplication: () => (/* reexport */ ServerApplication), ServerApplicationStartup: () => (/* reexport */ ServerApplicationStartup), SocketApp: () => (/* reexport */ SocketApp), SocketAppHandler: () => (/* reexport */ SocketAppHandler), SocketAppSettings: () => (/* reexport */ SocketAppSettings), StatisticsSettingsParam: () => (/* reexport */ StatisticsSettingsParam), StoreDataParam: () => (/* reexport */ StoreDataParam), StoreInventory: () => (/* reexport */ StoreInventory), StoreInventoryPermissionRulesParam: () => (/* reexport */ StoreInventoryPermissionRulesParam), StoreItemParam: () => (/* reexport */ StoreItemParam), StoreItemType: () => (/* reexport */ StoreItemType), StringDataMember: () => (/* reexport */ StringDataMember), StringUtility: () => (/* reexport */ StringUtility), TagParam: () => (/* reexport */ TagParam), TagSettingsParam: () => (/* reexport */ TagSettingsParam), ThirtPartyAppleSettingsParam: () => (/* reexport */ ThirtPartyAppleSettingsParam), ThirtPartyFacebookSettingsParam: () => (/* reexport */ ThirtPartyFacebookSettingsParam), ThirtPartyGameCenterSettingsParam: () => (/* reexport */ ThirtPartyGameCenterSettingsParam), ThirtPartyGooglePlayGameSettingsParam: () => (/* reexport */ ThirtPartyGooglePlayGameSettingsParam), ThirtPartyParam: () => (/* reexport */ ThirtPartyParam), TimerService: () => (/* reexport */ TimerService), TradeInventory: () => (/* reexport */ TradeInventory), UploadFileHandler: () => (/* reexport */ UploadFileHandler), UploadFileInfo: () => (/* reexport */ UploadFileInfo), UploadFileMiddleware: () => (/* reexport */ UploadFileMiddleware), UploadFileSettings: () => (/* reexport */ UploadFileSettings), authenticate_InfoRequestParam: () => (/* reexport */ InfoRequestParam), characterPlayer_InfoRequestParam: () => (/* reexport */ model_InfoRequestParam_InfoRequestParam), gamePlayer_InfoRequestParam: () => (/* reexport */ gamePlayer_model_InfoRequestParam_InfoRequestParam), group_InfoRequestParam: () => (/* reexport */ group_model_InfoRequestParam_InfoRequestParam), inventory_InfoRequestParam: () => (/* reexport */ inventory_model_InfoRequestParam_InfoRequestParam), masterPlayer_InfoRequestParam: () => (/* reexport */ InfoRequestParam_InfoRequestParam), storeInventory_InfoRequestParam: () => (/* reexport */ storeInventory_model_InfoRequestParam_InfoRequestParam), xDatabase: () => (/* reexport */ xDatabase), xDatetime: () => (/* reexport */ xDatetime), xGNSettings: () => (/* reexport */ xGNSettings), xRandom: () => (/* reexport */ xRandom), xStatisticsAggregationMethod: () => (/* reexport */ xStatisticsAggregationMethod) }); ;// ./src/GN-common/constant/ReturnCode.ts class ReturnCode { static SecretInvalid = -10; static MaxSizeRequestReject = -9; static MaxRequestReject = -8; static MaxCCUReject = -7; static OperationNotAuthorized = -6; static InvalidRequestParameters = -5; static OperationInvalid = -4; static InternalServerError = -3; static OperationNotAllow = -2; static OperationTimeout = -1; static UnknownError = 0; static Ok = 1; } ;// ./src/GN-common/entity/SecretInfo.ts var SecretRole; (function (SecretRole) { SecretRole[SecretRole["Admin"] = 1] = "Admin"; SecretRole[SecretRole["Server"] = 2] = "Server"; SecretRole[SecretRole["Player"] = 3] = "Player"; })(SecretRole || (SecretRole = {})); class BuilderBase { secretKey; role; remove; tsExpire; description; permission; gameId; isDefault; onlyMasterAdmin; getSecretKey() { return this.secretKey; } getPermission() { return this.permission; } getRole() { return this.role; } isRemove() { return this.remove; } getTsExpire() { return this.tsExpire; } getDescription() { return this.description; } getGameId() { return this.gameId; } getIsDefault() { return this.isDefault; } getIsOnlyMasterAdmin() { return this.onlyMasterAdmin; } setSecretKey(secretKey) { return this; } setPermission(permission) { return this; } setGameId(gameId) { return this; } setRole(role) { return this; } setIsRemove(remove) { this.remove = remove; return this; } setIsDefault(isDefault) { this.isDefault = isDefault; return this; } setIsOnlyMasterAdmin(onlyMasterAdmin) { this.onlyMasterAdmin = onlyMasterAdmin; return this; } setTsExpire(tsExpire) { //this.tsExpire = tsExpire; return this; } setDescription(description) { return this; } build() { return null; } constructor() { } } class Builder extends BuilderBase { setSecretKey(secretKey) { this.secretKey = secretKey; return this; } setRole(role) { this.role = role; return this; } setTsExpire(tsExpire) { this.tsExpire = tsExpire; return this; } setDescription(description) { this.description = description; return this; } setPermission(permission) { this.permission = permission; return this; } setGameId(gameId) { this.gameId = gameId; return this; } build() { return new SecretInfo(this); } constructor() { super(); } } class SecretInfo extends BuilderBase { constructor(builder) { super(); this.secretKey = builder.getSecretKey(); this.role = builder.getRole(); this.remove = builder.isRemove(); this.tsExpire = builder.getTsExpire(); this.description = builder.getDescription(); this.permission = builder.getPermission(); this.gameId = builder.getGameId(); this.isDefault = builder.getIsDefault(); this.onlyMasterAdmin = builder.getIsOnlyMasterAdmin(); } setGameId(gameId) { this.gameId = gameId; return this; } toDocumentData() { let doc = { "secretKey": this.secretKey, "role": this.role, "isRemove": this.remove, "tsExpire": this.tsExpire, "description": this.description, "permission": this.permission, "gameId": this.gameId, }; if (this.isDefault) doc["isDefault"] = true; if (this.onlyMasterAdmin) doc["onlyMasterAdmin"] = true; return doc; } static Builder() { return new Builder(); } } ;// ./src/GN-common/constant/enumType/RequestRole.ts var RequestRole; (function (RequestRole) { RequestRole[RequestRole["Admin"] = 1] = "Admin"; RequestRole[RequestRole["Server"] = 2] = "Server"; RequestRole[RequestRole["Client"] = 3] = "Client"; })(RequestRole || (RequestRole = {})); ;// ./src/GN-common/constant/enumType/RequestType.ts var RequestType; (function (RequestType) { RequestType[RequestType["Custom"] = 0] = "Custom"; RequestType[RequestType["Authenticate"] = 1] = "Authenticate"; RequestType[RequestType["CharacterPlayer"] = 2] = "CharacterPlayer"; RequestType[RequestType["Content"] = 3] = "Content"; RequestType[RequestType["GamePlayer"] = 4] = "GamePlayer"; RequestType[RequestType["Group"] = 5] = "Group"; RequestType[RequestType["Inventory"] = 6] = "Inventory"; RequestType[RequestType["MasterPlayer"] = 7] = "MasterPlayer"; RequestType[RequestType["StoreInventory"] = 8] = "StoreInventory"; RequestType[RequestType["Dashboard"] = 9] = "Dashboard"; RequestType[RequestType["Multiplayer"] = 10] = "Multiplayer"; RequestType[RequestType["CloudScript"] = 11] = "CloudScript"; })(RequestType || (RequestType = {})); ;// ./src/GN-common/helper/CodeHelper.ts class CodeHelperBase { static unknownCode = "Unknown"; codeDict; getCodeName(code) { return this.codeDict.has(code) ? this.codeDict.get(code) : (CodeHelperBase.unknownCode + " (" + code + ")"); } constructor(codeDict) { this.codeDict = codeDict; } } class CodeHelper { static returnCodeHelper; static requestTypeHelper; static requestRoleHelper; static secretRoleHelper; static getReturnCodeName(returnCode) { return CodeHelper.returnCodeHelper.getCodeName(returnCode); } static getRequestTypeName(requestType) { return CodeHelper.requestTypeHelper.getCodeName(requestType); } static getRequestRoleName(requestRole) { return CodeHelper.requestRoleHelper.getCodeName(requestRole); } static getSecretRoleName(secretRole) { return CodeHelper.secretRoleHelper.getCodeName(secretRole); } static init() { this.setReturnCodeDic(); this.setRequestTypeDic(); this.setRequestRoleDic(); this.setSecretRoleDic(); } static setReturnCodeDic() { this.returnCodeHelper = new CodeHelperBase(new Map()); this.addReturnCodeDic(ReturnCode); } static addReturnCodeDic(returnCode) { let keys = Object.keys(returnCode); let values = Object.values(returnCode); for (let i = 0; i < keys.length; i++) { this.returnCodeHelper.codeDict.set(values[i], keys[i]); } } static setRequestTypeDic() { this.requestTypeHelper = new CodeHelperBase(new Map()); this.addRequestTypeDic(RequestType); } static addRequestTypeDic(requestType) { let keys = Object.keys(requestType); let values = Object.values(requestType); for (let i = 0; i < keys.length; i++) { let key = keys[i]; this.requestTypeHelper.codeDict.set(values[i], key[0].toLowerCase() + key.slice(1)); } } static setRequestRoleDic() { this.requestRoleHelper = new CodeHelperBase(new Map()); this.addRequestRoleDic(RequestRole); } static addRequestRoleDic(requestRole) { let keys = Object.keys(requestRole); let values = Object.values(requestRole); for (let i = 0; i < keys.length; i++) { let key = keys[i]; this.requestRoleHelper.codeDict.set(values[i], key[0].toLowerCase() + key.slice(1)); } } static setSecretRoleDic() { this.secretRoleHelper = new CodeHelperBase(new Map()); this.addSecretRoleDic(SecretRole); } static addSecretRoleDic(secretRole) { let keys = Object.keys(secretRole); let values = Object.values(secretRole); for (let i = 0; i < keys.length; i++) { let key = keys[i]; this.secretRoleHelper.codeDict.set(values[i], key[0].toLowerCase() + key.slice(1)); } } } ;// ./src/GN-common/common/GNData.ts class GNData { get(k, def) { return def; } getBoolean(k, def) { return this.get(k, def); } getObject(k, def) { return this.get(k, def); } getString(k, def) { return this.get(k, def); } getNumber(k, def) { return this.get(k, def); } getGNHashtable(k, def) { return this.get(k, def); } getGNArray(k, def) { return this.get(k, def); } static createGNHashtableFromObject(value) { let answer = new GNHashtable(); let valueKeys = Object.keys(value); for (let i = 0; i < valueKeys.length; i++) { let key = valueKeys[i]; answer.add(key, value[key]); } return answer; } static createGNArrayFromArray(value) { let answer = new GNArray(); let valueArr = value; for (let i = 0; i < valueArr.length; i++) { answer.add(valueArr[i]); } return answer; } static createUseDataFromOriginData(value) { if (value == null) return null; let typeOfValue = typeof value; if (typeOfValue === "string") return value; if (typeOfValue === "number") return value; if (typeOfValue === "boolean") return value; if (value instanceof GNArray) return value; if (value instanceof GNHashtable) return value; if (typeOfValue === "object") { if (Array.isArray(value)) return this.createGNArrayFromArray(value); else return this.createGNHashtableFromObject(value); } return null; } static createDataFromUseData(value) { if (value == null) return null; if (value instanceof GNData) { return value.toData(); } return value; } } class GNHashtableBuilder { dict = {}; add(k, value) { this.dict[k] = value; return this; } addAll(dict) { let keys = Object.keys(dict); keys.forEach(keyStr => { this.add(keyStr, dict[keyStr]); }); return this; } constructor() { this.dict = {}; } build() { let answer = new GNHashtable(); let keys = Object.keys(this.dict); keys.forEach(keyStr => { answer.add(keyStr, this.dict[keyStr]); }); return answer; } } class GNHashtable extends GNData { dict = {}; clear() { this.dict = {}; } remove(k) { if (this.containsKey(k)) { delete this.dict[k]; return true; } return false; } count() { return Object.keys(this.dict).length; } containsKey(k) { let keys = Object.keys(this.dict); let kStr = k.toString(); return keys.indexOf(kStr) != -1; } get(k, def) { let value = this.dict[k]; if (value == null) return def; return value; } add(k, value) { this.dict[k] = GNData.createUseDataFromOriginData(value); } toData() { let anwser = {}; let keys = Object.keys(this.dict); for (let i = 0; i < keys.length; i++) { let key = keys[i]; anwser[key] = GNData.createDataFromUseData(this.dict[key]); } return anwser; } static builder() { return new GNHashtableBuilder(); } toString() { return JSON.stringify(this.dict); } } class GNArrayBuilder { array; add(value) { this.array.push(value); return this; } addAll(array) { array.forEach(o => { this.add(o); }); return this; } build() { let awnser = new GNArray(); this.array.forEach(o => { awnser.add(o); }); return awnser; } constructor() { this.array = []; } } class GNArray extends GNData { array = []; clear() { this.array = []; } indexOf(item) { return this.array.indexOf(item); } remove(k) { if (k < 0 || k >= this.array.length) return false; this.array.splice(k, 1); return true; } count() { return this.array.length; } get(k, def) { if (k < 0 || k >= this.array.length) return null; let value = this.array[k]; if (value == null) return def; return value; } add(value) { this.array.push(GNData.createUseDataFromOriginData(value)); } toData() { let anwser = []; for (let i = 0; i < this.array.length; i++) { anwser.push(GNData.createDataFromUseData(this.array[i])); } return anwser; } static builder() { return new GNArrayBuilder(); } toString() { return JSON.stringify(this.array); } } ;// ./src/GN-common/entity/operationResponse/OperationResponse.ts class OperationResponse { operationCode; responseId; returnCode; debugMessage; parameters; invalidMembers; constructor(operationCode, responseId) { this.operationCode = operationCode; this.responseId = responseId; this.parameters = new GNHashtable(); this.debugMessage = null; } getOperationCode() { return this.operationCode; } getReturnCode() { return this.returnCode; } getParameters() { return this.parameters; } getResponseId() { return this.responseId; } getDebugMessage() { return this.debugMessage; } getInvalidMembers() { return this.invalidMembers; } hasError() { return this.getReturnCode() != ReturnCode.Ok; } setReturnCode(returnCode) { this.returnCode = returnCode; return this; } setDebugMessage(debugMessage) { this.debugMessage = debugMessage; return this; } setParameter(k, value) { this.parameters.add(k, value); return this; } setParameters(parameters) { this.parameters = parameters; return this; } setInvalidMembers(invalidMembers) { this.invalidMembers = invalidMembers; return this; } toString() { let stringBuilder = ""; stringBuilder += "OperationCode: " + this.operationCode + ", responseId: " + this.responseId + ", returnCode " + CodeHelper.getReturnCodeName(this.returnCode); if (this.returnCode == ReturnCode.Ok) stringBuilder += ", parameters " + JSON.stringify(this.parameters?.toData()); else if (this.returnCode == ReturnCode.InvalidRequestParameters) { if (this.invalidMembers != null) { let invalidStr = ""; this.invalidMembers.forEach(invalidMember => { invalidStr += invalidMember; }); stringBuilder += ", invalidMembers " + invalidStr; } else stringBuilder += ", invalidMembers " + this.invalidMembers; } else stringBuilder += ", debugMessage " + (this.debugMessage ?? ""); return stringBuilder; } } ;// ./src/GN-common/entity/operationHelper/OperationHelper.ts class OperationHelper { static toResponseSocketData(operationResponse) { return { returnCode: operationResponse.getReturnCode(), parameters: OperationHelper.toDataGNHashtable(operationResponse.getParameters()), invalidRequestParameters: OperationHelper.invalidMemberData(operationResponse), debugMessage: operationResponse.getDebugMessage(), responseId: operationResponse.getResponseId(), }; } static toResponseHttpData(operationResponse) { return { returnCode: operationResponse.getReturnCode(), parameters: OperationHelper.toDataGNHashtable(operationResponse.getParameters()), invalidRequestParameters: OperationHelper.invalidMemberData(operationResponse), debugMessage: operationResponse.getDebugMessage(), }; } static toDataGNHashtable(gnHashtable) { if (gnHashtable == null) return null; return gnHashtable.toData(); } static invalidMemberData(operationResponse) { let invalidMembers = operationResponse.getInvalidMembers(); if (invalidMembers != null) { let anwser = []; for (let i = 0; i < invalidMembers.length; i++) { let invalidMember = invalidMembers[i]; anwser.push([invalidMember.code, invalidMember.invalidMemberType]); } return anwser; } return null; } static toDataOperationResponse(operationResponse) { return { operationCode: operationResponse.getOperationCode(), responseId: operationResponse.getResponseId(), parameters: OperationHelper.toDataGNHashtable(operationResponse.getParameters()), debugMessage: operationResponse.getDebugMessage(), returnCode: CodeHelper.getReturnCodeName(operationResponse.getReturnCode()), }; } static toDataOperationRequest(operationRequest) { return { operationCode: operationRequest.getOperationCode(), requestId: operationRequest.getRequestId(), parameters: OperationHelper.toDataGNHashtable(operationRequest.getParameters()) }; } static toDataFromRequest(request) { return { operationCode: request.getOperationCode(), requestType: CodeHelper.getRequestTypeName(request.getRequestType()), role: CodeHelper.getRequestRoleName(request.getRole()), ip: request.getIP(), secretInfo: OperationHelper.toDataSecretInfo(request.getSecretInfo()), authInfo: OperationHelper.toAuthInfo(request.getAuthInfo()), }; } static toDataSecretInfo(secretInfo) { if (secretInfo == null) return null; return { role: CodeHelper.getSecretRoleName(secretInfo.getRole()), gameId: secretInfo.getGameId(), }; } static toAuthInfo(authInfo) { if (authInfo == null) return null; return { userId: authInfo.getUserId(), }; } static newOperationResponse(operationCode, responseId) { return new OperationResponse(operationCode, responseId); } static newOperationResponseInvalid(operationCode, responseId, debugMessage) { let operationInvalid = this.newOperationResponse(operationCode, responseId); operationInvalid.setReturnCode(ReturnCode.OperationInvalid); if (debugMessage !== null) operationInvalid.setDebugMessage(debugMessage); return operationInvalid; } static newOperationResponseInvalidRequestParameters(operationCode, responseId, invalidMembers, debugMessage) { let operationInvalid = this.newOperationResponse(operationCode, responseId); operationInvalid.setReturnCode(ReturnCode.InvalidRequestParameters); operationInvalid.setInvalidMembers(invalidMembers); if (debugMessage !== null) operationInvalid.setDebugMessage(debugMessage); return operationInvalid; } static newOperationResponseInternalServerError(operationCode, responseId, debugMessage) { let operationInvalid = this.newOperationResponse(operationCode, responseId); operationInvalid.setReturnCode(ReturnCode.InternalServerError); if (debugMessage !== null) operationInvalid.setDebugMessage(debugMessage); return operationInvalid; } static newOperationResponseNotAuthorized(operationCode, responseId, debugMessage) { let operationInvalid = this.newOperationResponse(operationCode, responseId); operationInvalid.setReturnCode(ReturnCode.OperationNotAuthorized); if (debugMessage !== null) operationInvalid.setDebugMessage(debugMessage); return operationInvalid; } static newOperationResponseNotAllowError(operationCode, responseId, debugMessage) { let operationInvalid = this.newOperationResponse(operationCode, responseId); operationInvalid.setReturnCode(ReturnCode.OperationNotAllow); if (debugMessage !== null) operationInvalid.setDebugMessage(debugMessage); return operationInvalid; } static toEventSocketData(operationEvent) { return { eventCode: operationEvent.getEventCode(), parameters: OperationHelper.toDataGNHashtable(operationEvent.getParameters()) }; } } ;// ./src/GN-app-api/handler/controller/handler/base/RequestHandler.ts class RequestHandler { gnServer; requestConverterService; async adminHandle(secretInfo, operationRequest) { return this.newOperationInvalid(operationRequest); } async serverHandle(secretInfo, operationRequest) { return this.newOperationInvalid(operationRequest); } async handle(authInfo, secretInfo, operationRequest) { return this.newOperationInvalid(operationRequest); } init() { } newInvalidRequestParameters(operationRequest) { return OperationHelper.newOperationResponseInvalidRequestParameters(operationRequest.getOperationCode(), operationRequest.getRequestId(), operationRequest.invalidMembers); } newOperationInvalid(operationRequest, debugMessage) { return OperationHelper.newOperationResponseInvalid(operationRequest.getOperationCode(), operationRequest.getRequestId(), debugMessage); } newOperationInternalServerError(operationRequest, debugMessage) { return OperationHelper.newOperationResponseInternalServerError(operationRequest.getOperationCode(), operationRequest.getRequestId(), debugMessage); } newOperationNotAllowError(operationRequest, debugMessage) { return OperationHelper.newOperationResponseNotAllowError(operationRequest.getOperationCode(), operationRequest.getRequestId(), debugMessage); } constructor(gnServer) { this.gnServer = gnServer; this.requestConverterService = gnServer.getRequestConverterService(); this.init(); } } ;// ./src/GN-app-api/handler/controller/RequestController.ts class RequestController { handlers; requestUnAuthenticatedCodes; requestConverterService; setRequestConverterService(requestConverterService) { this.requestConverterService = requestConverterService; } getRequestUnAuthenticatedCodes() { return this.requestUnAuthenticatedCodes; } addHandler(requestType, requestHandler, onlyAuthenticated = true) { if (this.handlers[requestType] == null) { this.handlers[requestType] = {}; } let allHandler = this.handlers[requestType]; let operationCode = requestHandler.getCode(); allHandler[operationCode] = requestHandler; if (!onlyAuthenticated) this.requestUnAuthenticatedCodes.push(operationCode); } removeHandler(requestType, operationCode) { if (this.handlers[requestType] == null) { this.handlers[requestType] = {}; } let allHandler = this.handlers[requestType]; delete allHandler[operationCode]; } removeAllHandlers() { this.handlers = {}; } getHandler(requestType, operationCode) { if (this.handlers[requestType] == null) { this.handlers[requestType] = {}; } let allHandler = this.handlers[requestType]; return allHandler[operationCode]; } getAllHandlers(requestType) { if (this.handlers[requestType] == null) { this.handlers[requestType] = {}; } let allHandler = this.handlers[requestType]; return Object.values(allHandler); } async handleRequest(request) { let operationCode = request.getOperationCode(); let role = request.getRole(); let isAuthenticated = request.isAuthenticated(); if (!isAuthenticated && role != RequestRole.Admin && role != RequestRole.Server) { // if the user not authentication // and this request not in unAthenticated if (this.requestUnAuthenticatedCodes.indexOf(operationCode) == -1) { return OperationHelper.newOperationResponseNotAuthorized(operationCode, request.getRequestId()); } } let requestType = request.getRequestType(); let handler = this.getHandler(requestType, operationCode); if (handler != null) { let operationRequest = this.requestConverterService.newOperationRequest(request); if (role == RequestRole.Admin) { return handler.adminHandle(request.getSecretInfo(), operationRequest); } else if (role == RequestRole.Server) { return handler.serverHandle(request.getSecretInfo(), operationRequest); } else if (role == RequestRole.Client) { return handler.handle(request.getAuthInfo(), request.getSecretInfo(), operationRequest); } } return null; } constructor() { this.handlers = {}; this.requestUnAuthenticatedCodes = []; } } ;// ./src/GN-library/xdatetime/lib/xDatetime.ts class xDatetime { static ONE_SECOND_MILLISECOND = 1 * 1000; static ONE_MINUTE_MILLISECOND = this.ONE_SECOND_MILLISECOND * 60; static ONE_HOUR_MILLISECOND = this.ONE_MINUTE_MILLISECOND * 60; static ONE_DAY_MILLISECOND = this.ONE_HOUR_MILLISECOND * 24; static ONE_WEEK_MILLISECOND = this.ONE_DAY_MILLISECOND * 7; static ONE_MONTH_MILLISECOND = this.ONE_DAY_MILLISECOND * 30; static ONE_YEAR_MILLISECOND = this.ONE_DAY_MILLISECOND * 365; static getCurrentMilliseconds() { return this.getMilliseconds(this.getCurrentDate()); } static getCurrentDate() { return new Date(); } static getMilliseconds(date) { return Math.round(date.getTime()); } static getDateAtMilliseconds(milliseconds) { return new Date(milliseconds); } static getToday0hMilliseconds() { let now = new Date(); let today0h = new Date(now.getFullYear(), now.getMonth(), now.getDate()); return this.getMilliseconds(today0h); } } ;// external "systeminformation" const external_systeminformation_namespaceObject = require("systeminformation"); var external_systeminformation_default = /*#__PURE__*/__webpack_require__.n(external_systeminformation_namespaceObject); ;// external "mongodb" const external_mongodb_namespaceObject = require("mongodb"); ;// ./src/GN-app-api/service/AnalyticsService.ts class AnalyticsService { gnServer; currentCCU; currentDAU; currentDAUSince0h; currentDNU; currentDNUSince0h; currentDRT; currentDRTSince0h; currentMAU; currentMAUSince0h1; currentMNU; currentMNUSince0h1; currentMRT; currentMRTSince0h1; currentAnalyticsPrice; currentCountry; currentOperationSystem; currentDatabaseSystem; currentLogDatabaseSystem; currentRequestComplete; currentCost; currentMonthlyCost; setGNServer(gnServer) { this.gnServer = gnServer; } async getBigAnalyticsItem(tsDate) { let answer; if (!tsDate) { answer = { CCU: this.currentCCU, DAU: this.currentDAU, DAUSince0h: this.currentDAUSince0h, DNU: this.currentDNU, DNUSince0h: this.currentDNUSince0h, DRT: this.currentDRT, DRTSince0h: this.currentDRTSince0h, MAU: this.currentMAU, MAUSince0h1: this.currentMAUSince0h1, MNU: this.currentMNU, MNUSince0h1: this.currentMNUSince0h1, MRT: this.currentMRT, MRTSince0h1: this.currentMRTSince0h1, analyticsPrice: this.currentAnalyticsPrice, country: this.currentCountry, operationSystem: this.currentOperationSystem, requestComplete: this.currentRequestComplete, databaseSystem: this.currentDatabaseSystem, logDatabaseSystem: this.currentLogDatabaseSystem, cost: this.currentCost, monthlyCost: this.currentMonthlyCost, }; } else { let analyticsCollection = this.gnServer.getDatabase().systemCollection("Analytics"); let result = await analyticsCollection.findOne({ tsCreate: tsDate }); if (result == null) { answer = { CCU: 0, DAU: 0, DAUSince0h: 0, DNU: 0, DNUSince0h: 0, DRT: 0, DRTSince0h: 0, MAU: 0, MAUSince0h1: 0, MNU: 0, MNUSince0h1: 0, MRT: 0, MRTSince0h1: 0, analyticsPrice: 0, country: null, operationSystem: null, requestComplete: null, databaseSystem: null, logDatabaseSystem: null, cost: null, monthlyCost: null, }; } else { answer = { CCU: result["ccu"], DAU: result["dau"], DAUSince0h: result["dauSince0h"], DNU: result["dnu"], DNUSince0h: result["dnuSince0h"], DRT: result["drt"], DRTSince0h: result["drtSince0h"], MAU: result["mau"], MAUSince0h1: result["mauSince0h1"], MNU: result["mnu"], MNUSince0h1: result["mnuSince0h1"], MRT: result["mrt"], MRTSince0h1: result["mrtSince0h1"], analyticsPrice: result["analyticsPrice"], country: result["country"], operationSystem: result["operationSystem"], requestComplete: result["requestComplete"], databaseSystem: result["databaseSystem"], logDatabaseSystem: result["logDatabaseSystem"], cost: result["cost"], monthlyCost: result["monthlyCost"], }; } } return answer; } run() { this.getAnalytics(); let thiz = this; this.gnServer.getTimerService().subscriberEveryMinute(() => { let currentDate = xDatetime.getCurrentDate(); if (currentDate.getMinutes() % 15 == 0) thiz.analytics(); else if (currentDate.getMinutes() % 5 == 0) { thiz.getAnalytics(); } }); } async analytics() { await this.getAnalytics(); if (this.gnServer.isPrimary()) { await this.saveAnalytics(); } } async getAnalytics() { let currentMilliseconds = xDatetime.getCurrentMilliseconds(); let millisecondsSince0h = xDatetime.getToday0hMilliseconds(); let playerCollection = this.gnServer.getDatabase().systemCollection("MasterPlayer"); let millisecondsAt15MinutesAgo = currentMilliseconds - 15 * xDatetime.ONE_MINUTE_MILLISECOND; // CCU { this.currentCCU = await playerCollection.countDocuments({ tsLastLogin: { $gt: millisecondsAt15MinutesAgo } }); } { this.currentAnalyticsPrice = await this.gnServer.getDatabase().systemCollection("StoreAnalytics").countDocuments({ tsLastLogin: { $gt: millisecondsAt15MinutesAgo } }); } // DAU { let millisecondsAt1DayAgo = currentMilliseconds - xDatetime.ONE_DAY_MILLISECOND; this.currentDAU = await playerCollection.countDocuments({ tsLastLogin: { $gt: millisecondsAt1DayAgo } }); } // DAUSince0h { this.currentDAUSince0h = await playerCollection.countDocuments({ tsLastLogin: { $gt: millisecondsSince0h } }); } // DNU { let millisecondsAt1DayAgo = currentMilliseconds - xDatetime.ONE_DAY_MILLISECOND; this.currentDNU = await playerCollection.countDocuments({ tsCreate: { $gt: millisecondsAt1DayAgo } }); } // DNUSince0h { this.currentDNUSince0h = await playerCollection.countDocuments({ tsCreate: { $gt: millisecondsSince0h } }); } // MAU { let millisecondsAt1MonthAgo = currentMilliseconds - xDatetime.ONE_MONTH_MILLISECOND; this.currentMAU = await playerCollection.countDocuments({ tsLastLogin: { $gt: millisecondsAt1MonthAgo } }); } // MAUSince0h1 { let currentDate = xDatetime.getCurrentDate(); currentDate.setHours(0); currentDate.setMinutes(0); currentDate.setSeconds(0); currentDate.setMilliseconds(0); currentDate.setDate(1); let millisecondsSince0h1 = currentDate.getTime(); this.currentMAUSince0h1 = await playerCollection.countDocuments({ tsLastLogin: { $gt: millisecondsSince0h1 } }); } // MNU { let millisecondsAt1DayAgo = currentMilliseconds - xDatetime.ONE_MONTH_MILLISECOND; this.currentMNU = await playerCollection.countDocuments({ tsCreate: { $gt: millisecondsAt1DayAgo } }); } // MNUSince0h1 { let currentDate = xDatetime.getCurrentDate(); currentDate.setHours(0); currentDate.setMinutes(0); currentDate.setSeconds(0); currentDate.setMilliseconds(0); currentDate.setDate(1); let millisecondsSince0h1 = currentDate.getTime(); this.currentMNUSince0h1 = await playerCollection.countDocuments({ tsCreate: { $gt: millisecondsSince0h1 } }); } this.currentDRT = this.currentDAU - this.currentDNU; this.currentDRTSince0h = this.currentDAUSince0h - this.currentDNUSince0h; this.currentMRT = this.currentMAU - this.currentMNU; this.currentMRTSince0h1 = this.currentMAUSince0h1 - this.currentMNUSince0h1; { let gnCountrys = []; let countryRegionCollection = this.gnServer.getDatabase().systemCollection("CountryRegion"); let results = await countryRegionCollection.find({}); while (await results.hasNext()) { let result = await results.next(); let regions = result["regions"]; let nameRegions = result["nameRegions"]; let ipAddressRegions = result["ipAddressRegions"]; if (!regions || !nameRegions || !ipAddressRegions) continue; let gnCountry = { countryCode: result["countryCode"], regions: [], }; let regionKeys = Object.keys(regions); for (let i = 0; i < regionKeys.length; i++) { let key = regionKeys[i]; let ipAddressRegion = ipAddressRegions[key]; if (!ipAddressRegion) continue; let region = regions[key]; if (!region) continue; let gnRegion = { regionCode: key, regionName: nameRe