@xmobitea/gn-server
Version:
GearN Server by XmobiTea (Pro)
1,332 lines (1,303 loc) • 4.61 MB
JavaScript
/******/ (() => { // 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