@xmobitea/gn-server 2.6.2 → 2.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -136,14 +136,14 @@ import {
136
136
  GroupStatus,
137
137
  GNDebug,
138
138
  ItemType,
139
- StoreItemType,
139
+ StoreItemType,
140
140
  LogType,
141
141
  GNSupport,
142
142
  PostType,
143
143
  GetAuthInfoResponse,
144
144
  PushPlatformType,
145
145
  StoreReceiveType,
146
- GNUtils,
146
+ GNUtils,
147
147
  } from "@xmobitea/gn-typescript-client";
148
148
 
149
149
  import * as mongodb from "mongodb";
@@ -176,35 +176,35 @@ class CloudScriptAdmin {
176
176
  public readonly multiplayer = GNNetwork.multiplayer.admin;
177
177
  public readonly cloudScript = GNNetwork.cloudScript.admin;
178
178
  public readonly dashboard = {
179
- getAdminAccountList: GNNetwork.dashboard.getAdminAccountList,
180
- getAdminAccountListAsync: GNNetwork.dashboard.getAdminAccountListAsync,
181
- getGameInformation: GNNetwork.dashboard.getGameInformation,
182
- getGameInformationAsync: GNNetwork.dashboard.getGameInformationAsync,
183
- getGameList: GNNetwork.dashboard.getGameList,
184
- getGameListAsync: GNNetwork.dashboard.getGameListAsync,
185
- getMasterGameSettings: GNNetwork.dashboard.getMasterGameSettings,
186
- getMasterGameSettingsAsync: GNNetwork.dashboard.getMasterGameSettingsAsync,
187
- getSecretInfoInformation: GNNetwork.dashboard.getSecretInfoInformation,
188
- getSecretInfoInformationAsync: GNNetwork.dashboard.getSecretInfoInformationAsync,
189
- getSecretInfoList: GNNetwork.dashboard.getSecretInfoList,
190
- getSecretInfoListAsync: GNNetwork.dashboard.getSecretInfoListAsync,
191
- getServerLog: GNNetwork.dashboard.getServerLog,
192
- getServerLogAsync: GNNetwork.dashboard.getServerLogAsync,
193
- setGameInformation: GNNetwork.dashboard.setGameInformation,
194
- setGameInformationAsync: GNNetwork.dashboard.setGameInformationAsync,
195
- getUsernameAdminAccount: GNNetwork.dashboard.getUsernameAdminAccount,
196
- getUsernameAdminAccountAsync: GNNetwork.dashboard.getUsernameAdminAccountAsync,
197
- getAnalytics: GNNetwork.dashboard.getAnalytics,
198
- getAnalyticsAsync: GNNetwork.dashboard.getAnalyticsAsync,
199
- resetStatisticsLeaderboard: GNNetwork.dashboard.resetStatisticsLeaderboard,
200
- resetStatisticsLeaderboardAsync: GNNetwork.dashboard.resetStatisticsLeaderboardAsync,
201
- getBackupStatisticsLeaderboardVersion: GNNetwork.dashboard.getBackupStatisticsLeaderboardVersion,
202
- getBackupStatisticsLeaderboardVersionAsync: GNNetwork.dashboard.getBackupStatisticsLeaderboardVersionAsync,
203
- getServerGameData: GNNetwork.dashboard.getServerGameData,
204
- getServerGameDataAsync: GNNetwork.dashboard.getServerGameDataAsync,
205
- deleteInDatabase: GNNetwork.dashboard.deleteInDatabase,
206
- deleteInDatabaseAsync: GNNetwork.dashboard.deleteInDatabaseAsync,
207
- };
179
+ getAdminAccountList: GNNetwork.dashboard.getAdminAccountList,
180
+ getAdminAccountListAsync: GNNetwork.dashboard.getAdminAccountListAsync,
181
+ getGameInformation: GNNetwork.dashboard.getGameInformation,
182
+ getGameInformationAsync: GNNetwork.dashboard.getGameInformationAsync,
183
+ getGameList: GNNetwork.dashboard.getGameList,
184
+ getGameListAsync: GNNetwork.dashboard.getGameListAsync,
185
+ getMasterGameSettings: GNNetwork.dashboard.getMasterGameSettings,
186
+ getMasterGameSettingsAsync: GNNetwork.dashboard.getMasterGameSettingsAsync,
187
+ getSecretInfoInformation: GNNetwork.dashboard.getSecretInfoInformation,
188
+ getSecretInfoInformationAsync: GNNetwork.dashboard.getSecretInfoInformationAsync,
189
+ getSecretInfoList: GNNetwork.dashboard.getSecretInfoList,
190
+ getSecretInfoListAsync: GNNetwork.dashboard.getSecretInfoListAsync,
191
+ getServerLog: GNNetwork.dashboard.getServerLog,
192
+ getServerLogAsync: GNNetwork.dashboard.getServerLogAsync,
193
+ setGameInformation: GNNetwork.dashboard.setGameInformation,
194
+ setGameInformationAsync: GNNetwork.dashboard.setGameInformationAsync,
195
+ getUsernameAdminAccount: GNNetwork.dashboard.getUsernameAdminAccount,
196
+ getUsernameAdminAccountAsync: GNNetwork.dashboard.getUsernameAdminAccountAsync,
197
+ getAnalytics: GNNetwork.dashboard.getAnalytics,
198
+ getAnalyticsAsync: GNNetwork.dashboard.getAnalyticsAsync,
199
+ resetStatisticsLeaderboard: GNNetwork.dashboard.resetStatisticsLeaderboard,
200
+ resetStatisticsLeaderboardAsync: GNNetwork.dashboard.resetStatisticsLeaderboardAsync,
201
+ getBackupStatisticsLeaderboardVersion: GNNetwork.dashboard.getBackupStatisticsLeaderboardVersion,
202
+ getBackupStatisticsLeaderboardVersionAsync: GNNetwork.dashboard.getBackupStatisticsLeaderboardVersionAsync,
203
+ getServerGameData: GNNetwork.dashboard.getServerGameData,
204
+ getServerGameDataAsync: GNNetwork.dashboard.getServerGameDataAsync,
205
+ deleteInDatabase: GNNetwork.dashboard.deleteInDatabase,
206
+ deleteInDatabaseAsync: GNNetwork.dashboard.deleteInDatabaseAsync,
207
+ };
208
208
  public send(
209
209
  requestType: RequestType,
210
210
  requestRole: RequestRole,
@@ -347,160 +347,160 @@ class CloudScriptSocket {
347
347
  }
348
348
 
349
349
  private async sendEvent(event: CloudScriptEvent) {
350
- if (process?.send)
351
- process.send(event);
350
+ if (process?.send)
351
+ process.send(event);
352
352
  }
353
353
  }
354
354
 
355
355
  class CloudScriptMatchmaking {
356
356
  public async confirmServerDetail(gameId: string, matchmakingTicketCanMatch: MatchmakingTicketCanMatch, serverDetail: ServerDetail) {
357
357
  if (process?.send)
358
- process.send({
359
- eventType: 10,
360
- receiver: null,
361
- operationEvent: {
362
- eventCode: 0,
363
- encrypted: false,
364
- parameters: {
365
- gameId: gameId,
366
- matchmakingTicketCanMatch: matchmakingTicketCanMatch,
367
- serverDetail: serverDetail,
368
- },
369
- },
370
- });
358
+ process.send({
359
+ eventType: 10,
360
+ receiver: null,
361
+ operationEvent: {
362
+ eventCode: 0,
363
+ encrypted: false,
364
+ parameters: {
365
+ gameId: gameId,
366
+ matchmakingTicketCanMatch: matchmakingTicketCanMatch,
367
+ serverDetail: serverDetail,
368
+ },
369
+ },
370
+ });
371
371
  }
372
372
  }
373
373
 
374
374
  class CloudScriptMail {
375
375
  public async send(email: string, subject: string, contentHtml: string) {
376
376
  if (process?.send)
377
- process.send({
378
- eventType: 20,
379
- receiver: null,
380
- operationEvent: {
381
- eventCode: 0,
382
- encrypted: false,
383
- parameters: {
384
- email: email,
385
- subject: subject,
386
- contentHtml: contentHtml,
387
- },
388
- },
389
- });
377
+ process.send({
378
+ eventType: 20,
379
+ receiver: null,
380
+ operationEvent: {
381
+ eventCode: 0,
382
+ encrypted: false,
383
+ parameters: {
384
+ email: email,
385
+ subject: subject,
386
+ contentHtml: contentHtml,
387
+ },
388
+ },
389
+ });
390
390
  }
391
391
 
392
392
  public async sendToMore(emails: string[], subject: string, contentHtml: string) {
393
393
  if (process?.send)
394
- process.send({
395
- eventType: 21,
396
- receiver: null,
397
- operationEvent: {
398
- eventCode: 0,
399
- encrypted: false,
400
- parameters: {
401
- emails: emails,
402
- subject: subject,
403
- contentHtml: contentHtml,
404
- },
405
- },
406
- });
394
+ process.send({
395
+ eventType: 21,
396
+ receiver: null,
397
+ operationEvent: {
398
+ eventCode: 0,
399
+ encrypted: false,
400
+ parameters: {
401
+ emails: emails,
402
+ subject: subject,
403
+ contentHtml: contentHtml,
404
+ },
405
+ },
406
+ });
407
407
  }
408
408
  }
409
409
 
410
410
  class CloudScriptPushNotification {
411
411
  public async send(token: string, title: string, body: string, badge?: number, sound?: string, icon?: string, data?: { [k: string]: any }) {
412
412
  if (process?.send)
413
- process.send({
414
- eventType: 30,
415
- receiver: null,
416
- operationEvent: {
417
- eventCode: 0,
418
- encrypted: false,
419
- parameters: {
420
- token: token,
421
- title: title,
422
- body: body,
423
- badge: badge,
424
- sound: sound,
425
- icon: icon,
426
- data: data,
427
- },
428
- },
429
- });
413
+ process.send({
414
+ eventType: 30,
415
+ receiver: null,
416
+ operationEvent: {
417
+ eventCode: 0,
418
+ encrypted: false,
419
+ parameters: {
420
+ token: token,
421
+ title: title,
422
+ body: body,
423
+ badge: badge,
424
+ sound: sound,
425
+ icon: icon,
426
+ data: data,
427
+ },
428
+ },
429
+ });
430
430
  }
431
431
 
432
432
  public async sendToMore(tokens: string[], title: string, body: string, badge?: number, sound?: string, icon?: string, data?: { [k: string]: any }) {
433
433
  if (process?.send)
434
- process.send({
435
- eventType: 31,
436
- receiver: null,
437
- operationEvent: {
438
- eventCode: 0,
439
- encrypted: false,
440
- parameters: {
441
- tokens: tokens,
442
- title: title,
443
- body: body,
444
- badge: badge,
445
- sound: sound,
446
- icon: icon,
447
- data: data,
448
- },
449
- },
450
- });
434
+ process.send({
435
+ eventType: 31,
436
+ receiver: null,
437
+ operationEvent: {
438
+ eventCode: 0,
439
+ encrypted: false,
440
+ parameters: {
441
+ tokens: tokens,
442
+ title: title,
443
+ body: body,
444
+ badge: badge,
445
+ sound: sound,
446
+ icon: icon,
447
+ data: data,
448
+ },
449
+ },
450
+ });
451
451
  }
452
452
 
453
453
  public async sendToTopic(topic: string, title: string, body: string, badge?: number, sound?: string, icon?: string, data?: { [k: string]: any }) {
454
454
  if (process?.send)
455
- process.send({
456
- eventType: 32,
457
- receiver: null,
458
- operationEvent: {
459
- eventCode: 0,
460
- encrypted: false,
461
- parameters: {
462
- topic: topic,
463
- title: title,
464
- body: body,
465
- badge: badge,
466
- sound: sound,
467
- icon: icon,
468
- data: data,
469
- },
470
- },
471
- });
472
- }
473
-
474
- public async subscribeToTopic(tokens: string[], topic: string) {
455
+ process.send({
456
+ eventType: 32,
457
+ receiver: null,
458
+ operationEvent: {
459
+ eventCode: 0,
460
+ encrypted: false,
461
+ parameters: {
462
+ topic: topic,
463
+ title: title,
464
+ body: body,
465
+ badge: badge,
466
+ sound: sound,
467
+ icon: icon,
468
+ data: data,
469
+ },
470
+ },
471
+ });
472
+ }
473
+
474
+ public async subscribeToTopic(tokens: string[], topic: string) {
475
475
  if (process?.send)
476
- process.send({
477
- eventType: 33,
478
- receiver: null,
479
- operationEvent: {
480
- eventCode: 0,
481
- encrypted: false,
482
- parameters: {
483
- tokens: tokens,
484
- topic: topic,
485
- },
486
- },
487
- });
488
- }
489
-
490
- public async unsubscribeFromTopic(tokens: string[], topic: string) {
476
+ process.send({
477
+ eventType: 33,
478
+ receiver: null,
479
+ operationEvent: {
480
+ eventCode: 0,
481
+ encrypted: false,
482
+ parameters: {
483
+ tokens: tokens,
484
+ topic: topic,
485
+ },
486
+ },
487
+ });
488
+ }
489
+
490
+ public async unsubscribeFromTopic(tokens: string[], topic: string) {
491
491
  if (process?.send)
492
- process.send({
493
- eventType: 34,
494
- receiver: null,
495
- operationEvent: {
496
- eventCode: 0,
497
- encrypted: false,
498
- parameters: {
499
- tokens: tokens,
500
- topic: topic,
501
- },
502
- },
503
- });
492
+ process.send({
493
+ eventType: 34,
494
+ receiver: null,
495
+ operationEvent: {
496
+ eventCode: 0,
497
+ encrypted: false,
498
+ parameters: {
499
+ tokens: tokens,
500
+ topic: topic,
501
+ },
502
+ },
503
+ });
504
504
  }
505
505
  }
506
506
 
@@ -508,7 +508,7 @@ enum EventCallbackType {
508
508
  Pre = 0,
509
509
  Post = 1,
510
510
  System = 2,
511
- Event = 3,
511
+ Event = 3,
512
512
  }
513
513
 
514
514
  interface CloudScriptRequest {
@@ -524,6 +524,7 @@ interface CloudScriptRequest {
524
524
  permission: SecretPermissionItem;
525
525
  gameId: string;
526
526
  isDefault: boolean;
527
+ displayName: string;
527
528
  onlyMasterAdmin: boolean;
528
529
  };
529
530
  operationRequest: {
@@ -581,143 +582,193 @@ interface FunctionResponse {
581
582
  }
582
583
 
583
584
  process?.on("message", async (request: CloudScriptRequest) => {
584
- let startTime = performance.now();
585
- let startMemoryUsage = process.memoryUsage();
586
-
587
- let logs: string[] = [];
588
-
589
- let handleResponse: FunctionResponse = null as any;
590
-
591
- if (request.eventType == EventCallbackType.System) {
592
- if (request.eventName == "system_RequestServerDetail") {
593
- let functionRequest: FunctionRequest = {
594
- eventName: request.eventName,
595
- operationRequest: null as any,
596
- secretInfo: null as any,
597
- request: request.request,
598
- log(log: any) {
599
- logs.push(JSON.stringify(log));
600
- },
601
- };
602
-
603
- handleResponse = await ___handleMatchmakingFunction(functionRequest);
604
- }
605
- else {
606
- let functionRequest: FunctionRequest = {
607
- eventName: request.eventName,
608
- operationRequest: null as any,
609
- secretInfo: null as any,
610
- request: null as any,
611
- log(log: any) {
612
- logs.push(JSON.stringify(log));
613
- },
614
- };
615
-
616
- handleResponse = await ___handleSystemFunction(functionRequest);
617
- }
618
- } else if (request.eventType == EventCallbackType.Event) {
619
- let originOperationEvent = request.operationRequest;
620
-
621
- let operationEvent = new OperationEvent(originOperationEvent.operationCode, (originOperationEvent.parameters ? GNHashtable.builder().addAll(originOperationEvent.parameters).build() : null as any), originOperationEvent.encrypted);
622
-
623
- let functionRequest: FunctionRequest = {
624
- eventName: request.eventName,
625
- operationRequest: null as any,
626
- secretInfo: null as any,
627
- request: {
628
- operationEvent: operationEvent,
629
- request: request.request,
630
- },
631
- log(log: any) {
632
- logs.push(JSON.stringify(log));
633
- },
634
- };
635
-
636
- handleResponse = await ___handleEventFunction(functionRequest);
637
- } else {
638
- let originOperationRequest = request.operationRequest;
639
- let operationRequest = new OperationRequest(originOperationRequest.operationCode, originOperationRequest.encrypted);
640
- if (originOperationRequest.parameters) {
641
- operationRequest.setParameters(GNHashtable.builder().addAll(originOperationRequest.parameters).build());
642
- }
643
-
644
- let originSecretInfo = request.secretInfo;
645
- let secretInfo: SecretInfo = null as any;
646
- if (originSecretInfo) {
647
- secretInfo = SecretInfo.Builder()
648
- .setSecretKey(originSecretInfo.secretKey)
649
- .setRole(originSecretInfo.role)
650
- .setIsRemove(originSecretInfo.remove)
651
- .setTsExpire(originSecretInfo.tsExpire)
652
- .setPermission(originSecretInfo.permission)
653
- .setGameId(originSecretInfo.gameId)
654
- .setIsDefault(originSecretInfo.isDefault)
655
- .setIsOnlyMasterAdmin(originSecretInfo.onlyMasterAdmin)
656
- .build();
657
- }
658
-
659
- if (request.eventType == EventCallbackType.Pre) {
660
- let functionRequest: FunctionRequest = {
661
- eventName: request.eventName,
662
- operationRequest: operationRequest,
663
- secretInfo: secretInfo,
664
- request: request.request,
665
- log(log: any) {
666
- logs.push(JSON.stringify(log));
667
- },
668
- };
669
-
670
- handleResponse = await ___handlePreFunction(functionRequest);
671
- } else if (request.eventType == EventCallbackType.Post) {
672
- let originOperationResponse = request.operationResponse;
673
- let operationResponse: OperationResponse = null as any;
674
-
675
- if (originOperationResponse) {
676
- operationResponse = new OperationResponse(originOperationRequest.operationCode, originOperationRequest.requestId, originOperationRequest.encrypted);
677
- operationResponse.setReturnCode(originOperationResponse.returnCode);
678
- operationResponse.setDebugMessage(originOperationResponse.debugMessage);
679
-
680
- if (originOperationResponse.parameters) {
681
- operationResponse.setParameters(GNHashtable.builder().addAll(originOperationResponse.parameters).build());
682
- }
683
- }
684
-
685
- let functionRequest: FunctionRequest = {
686
- eventName: request.eventName,
687
- operationRequest: operationRequest,
688
- operationResponse: operationResponse,
689
- secretInfo: secretInfo,
690
- request: request.request,
691
- log(log: any) {
692
- logs.push(JSON.stringify(log));
693
- },
694
- };
695
-
696
- handleResponse = await ___handlePostFunction(functionRequest);
697
- }
698
- }
699
-
700
- let endTime = performance.now();
701
- let endMemoryUsage = process.memoryUsage();
702
-
703
- let memoryUsedInBytes = endMemoryUsage.heapUsed - startMemoryUsage.heapUsed;
704
- if (memoryUsedInBytes <= 0) memoryUsedInBytes = 8192;
705
- let executeTimeInMs = endTime - startTime;
706
-
707
- //let cost = (memoryUsedInGb * executeTime) / 1000 * 0.022;
708
-
709
- let response: CloudScriptResponse = {
710
- responseId: request.requestId,
711
- response: handleResponse as any,
712
- stats: {
713
- executeTimeInMs: executeTimeInMs,
714
- memoryUsedInBytes: memoryUsedInBytes,
715
- },
716
- logs: logs,
717
- };
718
-
719
- if (process?.send)
720
- process.send(response);
585
+ let startTime = performance.now();
586
+ let startMemoryUsage = process.memoryUsage();
587
+
588
+ let logs: string[] = [];
589
+
590
+ let handleResponse: FunctionResponse = null as any;
591
+
592
+ if (request.eventType == EventCallbackType.System) {
593
+ if (request.eventName == "system_RequestServerDetail") {
594
+ let functionRequest: FunctionRequest = {
595
+ eventName: request.eventName,
596
+ operationRequest: null as any,
597
+ secretInfo: null as any,
598
+ request: request.request,
599
+ log(log: any) {
600
+ logs.push(JSON.stringify(log));
601
+ },
602
+ };
603
+
604
+ handleResponse = await ___handleMatchmakingFunction(functionRequest);
605
+ }
606
+ else if (request.eventName == "system_OnAuthenticateSuccess") {
607
+ let originOperationRequest = request.operationRequest;
608
+ let operationRequest = new OperationRequest(originOperationRequest.operationCode, originOperationRequest.encrypted);
609
+ if (originOperationRequest.parameters) {
610
+ operationRequest.setParameters(GNHashtable.builder().addAll(originOperationRequest.parameters).build());
611
+ }
612
+
613
+ let originSecretInfo = request.secretInfo;
614
+ let secretInfo: SecretInfo = null as any;
615
+ if (originSecretInfo) {
616
+ secretInfo = SecretInfo.Builder()
617
+ .setSecretKey(originSecretInfo.secretKey)
618
+ .setDisplayName(originSecretInfo.displayName)
619
+ .setRole(originSecretInfo.role)
620
+ .setIsRemove(originSecretInfo.remove)
621
+ .setTsExpire(originSecretInfo.tsExpire)
622
+ .setPermission(originSecretInfo.permission)
623
+ .setGameId(originSecretInfo.gameId)
624
+ .setIsDefault(originSecretInfo.isDefault)
625
+ .setIsOnlyMasterAdmin(originSecretInfo.onlyMasterAdmin)
626
+ .build();
627
+ }
628
+
629
+ let originOperationResponse = request.operationResponse;
630
+ let operationResponse: OperationResponse = null as any;
631
+
632
+ if (originOperationResponse) {
633
+ operationResponse = new OperationResponse(originOperationRequest.operationCode, originOperationRequest.requestId, originOperationRequest.encrypted);
634
+ operationResponse.setReturnCode(originOperationResponse.returnCode);
635
+ operationResponse.setDebugMessage(originOperationResponse.debugMessage);
636
+
637
+ if (originOperationResponse.parameters) {
638
+ operationResponse.setParameters(GNHashtable.builder().addAll(originOperationResponse.parameters).build());
639
+ }
640
+ }
641
+
642
+ let functionRequest: FunctionRequest = {
643
+ eventName: request.eventName,
644
+ operationRequest: operationRequest,
645
+ operationResponse: operationResponse,
646
+ secretInfo: secretInfo,
647
+ request: request.request,
648
+ log(log: any) {
649
+ logs.push(JSON.stringify(log));
650
+ },
651
+ };
652
+
653
+ handleResponse = await ___handleSystemAuthenticateFunction(functionRequest);
654
+ }
655
+ else {
656
+ let functionRequest: FunctionRequest = {
657
+ eventName: request.eventName,
658
+ operationRequest: null as any,
659
+ secretInfo: null as any,
660
+ request: null as any,
661
+ log(log: any) {
662
+ logs.push(JSON.stringify(log));
663
+ },
664
+ };
665
+
666
+ handleResponse = await ___handleSystemFunction(functionRequest);
667
+ }
668
+ } else if (request.eventType == EventCallbackType.Event) {
669
+ let originOperationEvent = request.operationRequest;
670
+
671
+ let operationEvent = new OperationEvent(originOperationEvent.operationCode, (originOperationEvent.parameters ? GNHashtable.builder().addAll(originOperationEvent.parameters).build() : null as any), originOperationEvent.encrypted);
672
+
673
+ let functionRequest: FunctionRequest = {
674
+ eventName: request.eventName,
675
+ operationRequest: null as any,
676
+ secretInfo: null as any,
677
+ request: {
678
+ operationEvent: operationEvent,
679
+ request: request.request,
680
+ },
681
+ log(log: any) {
682
+ logs.push(JSON.stringify(log));
683
+ },
684
+ };
685
+
686
+ handleResponse = await ___handleEventFunction(functionRequest);
687
+ } else {
688
+ let originOperationRequest = request.operationRequest;
689
+ let operationRequest = new OperationRequest(originOperationRequest.operationCode, originOperationRequest.encrypted);
690
+ if (originOperationRequest.parameters) {
691
+ operationRequest.setParameters(GNHashtable.builder().addAll(originOperationRequest.parameters).build());
692
+ }
693
+
694
+ let originSecretInfo = request.secretInfo;
695
+ let secretInfo: SecretInfo = null as any;
696
+ if (originSecretInfo) {
697
+ secretInfo = SecretInfo.Builder()
698
+ .setSecretKey(originSecretInfo.secretKey)
699
+ .setDisplayName(originSecretInfo.displayName)
700
+ .setRole(originSecretInfo.role)
701
+ .setIsRemove(originSecretInfo.remove)
702
+ .setTsExpire(originSecretInfo.tsExpire)
703
+ .setPermission(originSecretInfo.permission)
704
+ .setGameId(originSecretInfo.gameId)
705
+ .setIsDefault(originSecretInfo.isDefault)
706
+ .setIsOnlyMasterAdmin(originSecretInfo.onlyMasterAdmin)
707
+ .build();
708
+ }
709
+
710
+ if (request.eventType == EventCallbackType.Pre) {
711
+ let functionRequest: FunctionRequest = {
712
+ eventName: request.eventName,
713
+ operationRequest: operationRequest,
714
+ secretInfo: secretInfo,
715
+ request: request.request,
716
+ log(log: any) {
717
+ logs.push(JSON.stringify(log));
718
+ },
719
+ };
720
+
721
+ handleResponse = await ___handlePreFunction(functionRequest);
722
+ } else if (request.eventType == EventCallbackType.Post) {
723
+ let originOperationResponse = request.operationResponse;
724
+ let operationResponse: OperationResponse = null as any;
725
+
726
+ if (originOperationResponse) {
727
+ operationResponse = new OperationResponse(originOperationRequest.operationCode, originOperationRequest.requestId, originOperationRequest.encrypted);
728
+ operationResponse.setReturnCode(originOperationResponse.returnCode);
729
+ operationResponse.setDebugMessage(originOperationResponse.debugMessage);
730
+
731
+ if (originOperationResponse.parameters) {
732
+ operationResponse.setParameters(GNHashtable.builder().addAll(originOperationResponse.parameters).build());
733
+ }
734
+ }
735
+
736
+ let functionRequest: FunctionRequest = {
737
+ eventName: request.eventName,
738
+ operationRequest: operationRequest,
739
+ operationResponse: operationResponse,
740
+ secretInfo: secretInfo,
741
+ request: request.request,
742
+ log(log: any) {
743
+ logs.push(JSON.stringify(log));
744
+ },
745
+ };
746
+
747
+ handleResponse = await ___handlePostFunction(functionRequest);
748
+ }
749
+ }
750
+
751
+ let endTime = performance.now();
752
+ let endMemoryUsage = process.memoryUsage();
753
+
754
+ let memoryUsedInBytes = endMemoryUsage.heapUsed - startMemoryUsage.heapUsed;
755
+ if (memoryUsedInBytes <= 0) memoryUsedInBytes = 8192;
756
+ let executeTimeInMs = endTime - startTime;
757
+
758
+ //let cost = (memoryUsedInGb * executeTime) / 1000 * 0.022;
759
+
760
+ let response: CloudScriptResponse = {
761
+ responseId: request.requestId,
762
+ response: handleResponse as any,
763
+ stats: {
764
+ executeTimeInMs: executeTimeInMs,
765
+ memoryUsedInBytes: memoryUsedInBytes,
766
+ },
767
+ logs: logs,
768
+ };
769
+
770
+ if (process?.send)
771
+ process.send(response);
721
772
  });
722
773
 
723
774
  async function ___handleMatchmakingFunction(request: FunctionRequest): Promise<FunctionResponse> {
@@ -752,6 +803,45 @@ async function ___handleMatchmakingFunction(request: FunctionRequest): Promise<F
752
803
  return answer;
753
804
  }
754
805
 
806
+ async function ___handleSystemAuthenticateFunction(request: FunctionRequest): Promise<FunctionResponse> {
807
+ let handler = systemAuthenticateHandlers[request.eventName];
808
+
809
+ if (handler == null) {
810
+ return {
811
+ status: ExecuteResponseStatus.FunctionNameNotFound,
812
+ result: null,
813
+ errorMessage: null,
814
+ request: null,
815
+ };
816
+ }
817
+
818
+ let answer: FunctionResponse = {
819
+ status: ExecuteResponseStatus.Ok,
820
+ errorMessage: null,
821
+ result: null,
822
+ request: null,
823
+ };
824
+
825
+ try {
826
+ let result = await handler(request.request as any, request.secretInfo, request.operationRequest, request.operationResponse as any, request.log);
827
+
828
+ if (result) {
829
+ answer.result = {
830
+ returnCode: result.getReturnCode(),
831
+ debugMessage: result.getDebugMessage(),
832
+ encrypted: result.isEncrypted(),
833
+ parameters: result.getParameters()?.toData(),
834
+ };
835
+ }
836
+
837
+ } catch (err: any) {
838
+ answer.status = ExecuteResponseStatus.Exception;
839
+ answer.errorMessage = err.message;
840
+ }
841
+
842
+ return answer;
843
+ }
844
+
755
845
  async function ___handleSystemFunction(request: FunctionRequest): Promise<FunctionResponse> {
756
846
  let handler = systemHandlers[request.eventName];
757
847
 
@@ -782,7 +872,7 @@ async function ___handleSystemFunction(request: FunctionRequest): Promise<Functi
782
872
  }
783
873
 
784
874
  async function ___handleEventFunction(request: FunctionRequest): Promise<FunctionResponse> {
785
- let handler = eventHandlers[request.eventName];
875
+ let handler = eventHandlers[request.eventName];
786
876
 
787
877
  if (handler == null) {
788
878
  return {
@@ -803,16 +893,16 @@ async function ___handleEventFunction(request: FunctionRequest): Promise<Functio
803
893
  try {
804
894
  await handler(request.request.request, request.request.operationEvent, request.log);
805
895
 
806
- let operationEvent = request.request.operationEvent;
896
+ let operationEvent = request.request.operationEvent;
807
897
 
808
- answer.result = {
809
- returnCode: operationEvent.getEventCode(),
810
- debugMessage: null as any,
811
- encrypted: operationEvent.isEncrypted(),
812
- parameters: operationEvent.getParameters()?.toData(),
813
- };
898
+ answer.result = {
899
+ returnCode: operationEvent.getEventCode(),
900
+ debugMessage: null as any,
901
+ encrypted: operationEvent.isEncrypted(),
902
+ parameters: operationEvent.getParameters()?.toData(),
903
+ };
814
904
 
815
- answer.request = request.request.request;
905
+ answer.request = request.request.request;
816
906
  } catch (err: any) {
817
907
  answer.status = ExecuteResponseStatus.Exception;
818
908
  answer.errorMessage = err.message;
@@ -882,12 +972,14 @@ async function ___handlePostFunction(request: FunctionRequest): Promise<Function
882
972
  try {
883
973
  let result = await handler(request.request, request.secretInfo, request.operationRequest, request.operationResponse as any, request.log);
884
974
 
885
- answer.result = {
886
- returnCode: result.getReturnCode(),
887
- debugMessage: result.getDebugMessage(),
888
- encrypted: result.isEncrypted(),
889
- parameters: result.getParameters()?.toData(),
890
- };
975
+ if (result) {
976
+ answer.result = {
977
+ returnCode: result.getReturnCode(),
978
+ debugMessage: result.getDebugMessage(),
979
+ encrypted: result.isEncrypted(),
980
+ parameters: result.getParameters()?.toData(),
981
+ };
982
+ }
891
983
  } catch (err: any) {
892
984
  answer.status = ExecuteResponseStatus.Exception;
893
985
  answer.errorMessage = err.message;
@@ -931,4 +1023,6 @@ const eventHandlers: Record<string, (request: any, operationEvent: OperationEven
931
1023
 
932
1024
  const systemMatchmakingHandlers: Record<string, (gameId: string, matchmakingTicketCanMatch: MatchmakingTicketCanMatch, log: (log: any) => void) => Promise<{ success: boolean }>> = {};
933
1025
 
934
- //$replaceScript
1026
+ const systemAuthenticateHandlers: Record<string, (request: { userId: string, ipAddress: string, isNewUser: boolean, authenticationType: string }, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse, log: (log: any) => void) => Promise<OperationResponse>> = {};
1027
+
1028
+ //$replaceScript