maplestory-openapi 2.3.2 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +11 -9
  2. package/dist/index.js +1474 -1249
  3. package/dist/index.min.js +1 -1
  4. package/dist/index.mjs +1467 -1250
  5. package/package.json +1 -1
  6. package/types/index.d.ts +8 -0
  7. package/types/maplestory/api/dto/character/characterAbilityDto.d.ts +17 -0
  8. package/types/maplestory/api/dto/character/characterAbilityInfoDto.d.ts +9 -0
  9. package/types/maplestory/api/dto/character/characterAbilityPresetDto.d.ts +17 -0
  10. package/types/maplestory/api/dto/character/characterAndroidEquipmentDto.d.ts +33 -0
  11. package/types/maplestory/api/dto/character/characterAndroidEquipmentPresetDto.d.ts +58 -0
  12. package/types/maplestory/api/dto/character/characterCashItemEquipmentDto.d.ts +14 -6
  13. package/types/maplestory/api/dto/character/characterCashItemEquipmentPresetDto.d.ts +2 -2
  14. package/types/maplestory/api/dto/character/characterItemEquipmentDto.d.ts +19 -3
  15. package/types/maplestory/api/dto/character/characterLinkSkillDto.d.ts +25 -1
  16. package/types/maplestory/api/dto/character/characterPetEquipmentDto.d.ts +51 -21
  17. package/types/maplestory/api/dto/character/characterPetEquipmentItemDto.d.ts +9 -1
  18. package/types/maplestory/api/dto/history/cubeHistoryDto.d.ts +1 -1
  19. package/types/maplestory/api/dto/history/cubeResultOptionDto.d.ts +1 -1
  20. package/types/maplestory/api/dto/history/potentialHistoryDto.d.ts +82 -0
  21. package/types/maplestory/api/dto/history/potentialHistoryResponseDto.d.ts +21 -0
  22. package/types/maplestory/api/dto/history/potentialResultOptionDto.d.ts +18 -0
  23. package/types/maplestory/api/dto/union/unionArtifactCrystalDto.d.ts +36 -0
  24. package/types/maplestory/api/dto/union/unionArtifactDto.d.ts +26 -0
  25. package/types/maplestory/api/dto/union/unionArtifactEffectDto.d.ts +16 -0
  26. package/types/maplestory/api/dto/union/unionDto.d.ts +12 -0
  27. package/types/maplestory/api/mapleStoryApi.d.ts +55 -12
  28. package/types/maplestory/api/mapleStoryApiError.d.ts +3 -1
  29. package/types/maplestory/api/response/character/characterAbilityDtoBody.d.ts +9 -1
  30. package/types/maplestory/api/response/character/characterAndroidEquipmentDtoBody.d.ts +23 -1
  31. package/types/maplestory/api/response/character/characterCashItemEquipmentDtoBody.d.ts +3 -1
  32. package/types/maplestory/api/response/character/characterItemEquipmentDtoBody.d.ts +4 -0
  33. package/types/maplestory/api/response/character/characterLinkSkillDtoBody.d.ts +7 -1
  34. package/types/maplestory/api/response/character/characterPetEquipmentDtoBody.d.ts +30 -22
  35. package/types/maplestory/api/response/history/potentialHistoryResponseDtoBody.d.ts +29 -0
  36. package/types/maplestory/api/response/union/unionArtifactDtoBody.d.ts +20 -0
  37. package/types/maplestory/api/response/union/unionDtoBody.d.ts +3 -0
package/dist/index.js CHANGED
@@ -29,80 +29,45 @@ var utc$1 = {exports: {}};
29
29
  var utc = utc$1.exports;
30
30
 
31
31
  /**
32
- * 업적 랭킹 정보
32
+ * 캐릭터 어빌리티 상세 정보
33
33
  */
34
- class AchievementRankingDto {
35
- /**
36
- * 랭킹 업데이트 일자 (KST, 일 단위 데이터로 시, 분은 일괄 0으로 표기)
37
- */
38
- date;
39
- /**
40
- * 업적 랭킹 순위
41
- */
42
- ranking;
43
- /**
44
- * 캐릭터 명
45
- */
46
- characterName;
47
- /**
48
- * 월드 명
49
- */
50
- worldName;
51
- /**
52
- * 직업 명
53
- */
54
- className;
34
+ class CharacterAbilityInfoDto {
55
35
  /**
56
- * 전직 직업 명
36
+ * 어빌리티 번호
57
37
  */
58
- subClassName;
38
+ abilityNo;
59
39
  /**
60
- * 업적 등급
40
+ * 어빌리티 등급
61
41
  */
62
- trophyGrade;
42
+ abilityGrade;
63
43
  /**
64
- * 업적 점수
44
+ * 어빌리티 옵션 및 수치
65
45
  */
66
- trophyScore;
46
+ abilityValue;
67
47
  constructor(obj) {
68
- const { date, ranking, character_name, world_name, class_name, sub_class_name, trophy_grade, trophy_score, } = obj;
69
- this.date = new Date(date);
70
- this.ranking = ranking;
71
- this.characterName = character_name;
72
- this.worldName = world_name;
73
- this.className = class_name;
74
- this.subClassName = sub_class_name;
75
- this.trophyGrade = trophy_grade;
76
- this.trophyScore = trophy_score;
48
+ const { ability_no, ability_grade, ability_value } = obj;
49
+ this.abilityNo = ability_no;
50
+ this.abilityGrade = ability_grade;
51
+ this.abilityValue = ability_value;
77
52
  }
78
53
  }
79
54
 
80
55
  /**
81
- * 업적 랭킹 응답 정보
56
+ * 캐릭터 어빌리티 프리셋 정보
82
57
  */
83
- class AchievementRankingResponseDto {
58
+ class CharacterAbilityPresetDto {
84
59
  /**
85
- * 업적 랭킹 정보
60
+ * 프리셋의 어빌리티 등급
86
61
  */
87
- ranking;
88
- constructor(obj) {
89
- const { ranking } = obj;
90
- this.ranking = ranking.map((rank) => new AchievementRankingDto(rank));
91
- }
92
- }
93
-
94
- /**
95
- * 캐릭터 어빌리티 상세 정보
96
- */
97
- class CharacterAbilityInfoDto {
98
- abilityNo;
99
- abilityGrade;
100
- abilityValue;
62
+ abilityPresetGrade;
63
+ /**
64
+ * 프리셋의 어빌리티 정보
65
+ */
66
+ abilityInfo;
101
67
  constructor(obj) {
102
- const { ability_no, ability_grade, ability_value } = obj;
103
- this.abilityNo = ability_no;
104
- this.abilityGrade = ability_grade;
105
- this.abilityValue = ability_value;
68
+ const { ability_preset_grade, ability_info } = obj;
69
+ this.abilityPresetGrade = ability_preset_grade;
70
+ this.abilityInfo = ability_info.map((info) => new CharacterAbilityInfoDto(info));
106
71
  }
107
72
  }
108
73
 
@@ -126,13 +91,39 @@ class CharacterAbilityDto {
126
91
  * 보유 명성치
127
92
  */
128
93
  remainFame;
94
+ /**
95
+ * 적용 중인 어빌리티 프리셋 번호
96
+ */
97
+ presetNo;
98
+ /**
99
+ * 어빌리티 1번 프리셋 전체 정보
100
+ */
101
+ abilityPreset1;
102
+ /**
103
+ * 어빌리티 2번 프리셋 전체 정보
104
+ */
105
+ abilityPreset2;
106
+ /**
107
+ * 어빌리티 3번 프리셋 전체 정보
108
+ */
109
+ abilityPreset3;
129
110
  constructor(obj) {
130
- const { date, ability_grade, ability_info, remain_fame } = obj;
111
+ const { date, ability_grade, ability_info, remain_fame, preset_no, ability_preset_1, ability_preset_2, ability_preset_3, } = obj;
131
112
  // 날짜는 Date 객체로 변환
132
113
  this.date = new Date(date);
133
114
  this.abilityGrade = ability_grade;
134
115
  this.abilityInfo = ability_info.map((info) => new CharacterAbilityInfoDto(info));
135
116
  this.remainFame = remain_fame;
117
+ this.presetNo = preset_no;
118
+ this.abilityPreset1 = ability_preset_1
119
+ ? new CharacterAbilityPresetDto(ability_preset_1)
120
+ : null;
121
+ this.abilityPreset2 = ability_preset_2
122
+ ? new CharacterAbilityPresetDto(ability_preset_2)
123
+ : null;
124
+ this.abilityPreset3 = ability_preset_3
125
+ ? new CharacterAbilityPresetDto(ability_preset_3)
126
+ : null;
136
127
  }
137
128
  }
138
129
 
@@ -305,6 +296,75 @@ class CharacterAndroidEquipmentHairDto {
305
296
  }
306
297
  }
307
298
 
299
+ /**
300
+ * 캐릭터 안드로이드 프리셋 정보
301
+ */
302
+ class CharacterAndroidEquipmentPresetDto {
303
+ /**
304
+ * 안드로이드 명
305
+ */
306
+ androidName;
307
+ /**
308
+ * 안드로이드 닉네임
309
+ */
310
+ androidNickname;
311
+ /**
312
+ * 안드로이드 아이콘
313
+ */
314
+ androidIcon;
315
+ /**
316
+ * 안드로이드 아이템 설명
317
+ */
318
+ androidDescription;
319
+ /**
320
+ * 안드로이드 성별
321
+ */
322
+ androidGender;
323
+ /**
324
+ * 안드로이드 등급
325
+ */
326
+ androidGrade;
327
+ /**
328
+ * 안드로이드 피부 명
329
+ */
330
+ androidSkinName;
331
+ /**
332
+ * 안드로이드 헤어 정보
333
+ */
334
+ androidHair;
335
+ /**
336
+ * 안드로이드 성형 정보
337
+ */
338
+ androidFace;
339
+ /**
340
+ * 안드로이드 이어센서 클립 적용 여부
341
+ */
342
+ androidEarSensorClipFlag;
343
+ /**
344
+ * 비인간형 안드로이드 여부
345
+ */
346
+ androidNonHumanoidFlag;
347
+ /**
348
+ * 잡화상점 기능 이용 가능 여부
349
+ */
350
+ androidShopUsableFlag;
351
+ constructor(obj) {
352
+ const { android_name, android_nickname, android_icon, android_description, android_gender, android_grade, android_skin_name, android_hair, android_face, android_ear_sensor_clip_flag, android_non_humanoid_flag, android_shop_usable_flag, } = obj;
353
+ this.androidName = android_name;
354
+ this.androidNickname = android_nickname;
355
+ this.androidIcon = android_icon;
356
+ this.androidDescription = android_description;
357
+ this.androidGender = android_gender;
358
+ this.androidGrade = android_grade;
359
+ this.androidSkinName = android_skin_name;
360
+ this.androidHair = new CharacterAndroidEquipmentHairDto(android_hair);
361
+ this.androidFace = new CharacterAndroidEquipmentFaceDto(android_face);
362
+ this.androidEarSensorClipFlag = android_ear_sensor_clip_flag;
363
+ this.androidNonHumanoidFlag = android_non_humanoid_flag;
364
+ this.androidShopUsableFlag = android_shop_usable_flag;
365
+ }
366
+ }
367
+
308
368
  /**
309
369
  * 캐릭터 안드로이드 장비 정보
310
370
  */
@@ -349,8 +409,40 @@ class CharacterAndroidEquipmentDto {
349
409
  * 안드로이드 이어센서 클립 적용 여부
350
410
  */
351
411
  androidEarSensorClipFlag;
412
+ /**
413
+ * 안드로이드 성별
414
+ */
415
+ androidGender;
416
+ /**
417
+ * 안드로이드 등급
418
+ */
419
+ androidGrade;
420
+ /**
421
+ * 비인간형 안드로이드 여부
422
+ */
423
+ androidNonHumanoidFlag;
424
+ /**
425
+ * 잡화상점 기능 이용 가능 여부
426
+ */
427
+ androidShopUsableFlag;
428
+ /**
429
+ * 적용 중인 장비 프리셋 번호
430
+ */
431
+ presetNo;
432
+ /**
433
+ * 1번 프리셋 안드로이드 정보
434
+ */
435
+ androidPreset1;
436
+ /**
437
+ * 2번 프리셋 안드로이드 정보
438
+ */
439
+ androidPreset2;
440
+ /**
441
+ * 3번 프리셋 안드로이드 정보
442
+ */
443
+ androidPreset3;
352
444
  constructor(obj) {
353
- const { date, android_name, android_nickname, android_icon, android_description, android_hair, android_face, android_skin_name, android_cash_item_equipment, android_ear_sensor_clip_flag, } = obj;
445
+ const { date, android_name, android_nickname, android_icon, android_description, android_hair, android_face, android_skin_name, android_cash_item_equipment, android_ear_sensor_clip_flag, android_gender, android_grade, android_non_humanoid_flag, android_shop_usable_flag, preset_no, android_preset_1, android_preset_2, android_preset_3, } = obj;
354
446
  this.date = new Date(date);
355
447
  this.androidName = android_name;
356
448
  this.androidNickname = android_nickname;
@@ -361,6 +453,14 @@ class CharacterAndroidEquipmentDto {
361
453
  this.androidSkinName = android_skin_name;
362
454
  this.androidCashItemEquipment = android_cash_item_equipment.map((equipment) => new CharacterAndroidCashItemEquipmentDto(equipment));
363
455
  this.androidEarSensorClipFlag = android_ear_sensor_clip_flag ?? null;
456
+ this.androidGender = android_gender;
457
+ this.androidGrade = android_grade;
458
+ this.androidNonHumanoidFlag = android_non_humanoid_flag;
459
+ this.androidShopUsableFlag = android_shop_usable_flag;
460
+ this.presetNo = preset_no;
461
+ this.androidPreset1 = android_preset_1 ? new CharacterAndroidEquipmentPresetDto(android_preset_1) : null;
462
+ this.androidPreset2 = android_preset_2 ? new CharacterAndroidEquipmentPresetDto(android_preset_2) : null;
463
+ this.androidPreset3 = android_preset_3 ? new CharacterAndroidEquipmentPresetDto(android_preset_3) : null;
364
464
  }
365
465
  }
366
466
 
@@ -637,11 +737,11 @@ class CharacterCashItemEquipmentPresetDto {
637
737
  */
638
738
  cashItemColoringPrism;
639
739
  /**
640
- * 다른 프리셋에서 장비 추가 장착 없이 1번 프리셋의 장비 공유를 비활성화 했는지 여부
740
+ * 아이템 장착 가능 성별
641
741
  */
642
- basePresetItemDisableFlag;
742
+ itemGender;
643
743
  constructor(obj) {
644
- const { cash_item_equipment_part, cash_item_equipment_slot, cash_item_name, cash_item_icon, cash_item_description, cash_item_option, date_expire, date_option_expire, cash_item_label, cash_item_coloring_prism, base_preset_item_disable_flag, } = obj;
744
+ const { cash_item_equipment_part, cash_item_equipment_slot, cash_item_name, cash_item_icon, cash_item_description, cash_item_option, date_expire, date_option_expire, cash_item_label, cash_item_coloring_prism, item_gender, } = obj;
645
745
  this.cashItemEquipmentPart = cash_item_equipment_part;
646
746
  this.cashItemEquipmentSlot = cash_item_equipment_slot;
647
747
  this.cashItemName = cash_item_name;
@@ -654,7 +754,7 @@ class CharacterCashItemEquipmentPresetDto {
654
754
  this.cashItemColoringPrism = cash_item_coloring_prism
655
755
  ? new CharacterCashItemEquipmentColoringPrismDto(cash_item_coloring_prism)
656
756
  : null;
657
- this.basePresetItemDisableFlag = base_preset_item_disable_flag;
757
+ this.itemGender = item_gender;
658
758
  }
659
759
  }
660
760
 
@@ -679,37 +779,49 @@ class CharacterCashItemEquipmentDto {
679
779
  */
680
780
  presetNo;
681
781
  /**
682
- * 1번 프리셋 장착 캐시 장비 정보
782
+ * 장착 중인 캐시 장비
783
+ */
784
+ cashItemEquipmentBase;
785
+ /**
786
+ * 1번 코디 프리셋
683
787
  */
684
788
  cashItemEquipmentPreset1;
685
789
  /**
686
- * 2번 프리셋 장착 캐시 장비 정보
790
+ * 2번 코디 프리셋
687
791
  */
688
792
  cashItemEquipmentPreset2;
689
793
  /**
690
- * 3번 프리셋 장착 캐시 장비 정보
794
+ * 3번 코디 프리셋
691
795
  */
692
796
  cashItemEquipmentPreset3;
693
797
  /**
694
- * 제로인 경우 베타, 엔젤릭버스터인 경우 드레스 업 모드의 1번 프리셋 장착 캐시 장비 정보
798
+ * 제로인 경우 베타, 엔젤릭버스터인 경우 드레스 업 모드에서 장착 중인 캐시 장비
799
+ */
800
+ additionalCashItemEquipmentBase;
801
+ /**
802
+ * 제로인 경우 베타, 엔젤릭버스터인 경우 드레스 업 모드의 1번 코디 프리셋
695
803
  */
696
804
  additionalCashItemEquipmentPreset1;
697
805
  /**
698
- * 제로인 경우 베타, 엔젤릭버스터인 경우 드레스 업 모드의 2번 프리셋 장착 캐시 장비 정보
806
+ * 제로인 경우 베타, 엔젤릭버스터인 경우 드레스 업 모드의 2번 코디 프리셋
699
807
  */
700
808
  additionalCashItemEquipmentPreset2;
701
809
  /**
702
- * 제로인 경우 베타, 엔젤릭버스터인 경우 드레스 업 모드의 3번 프리셋 장착 캐시 장비 정보
810
+ * 제로인 경우 베타, 엔젤릭버스터인 경우 드레스 업 모드의 3번 코디 프리셋
703
811
  */
704
812
  additionalCashItemEquipmentPreset3;
705
813
  constructor(obj) {
706
- const { date, character_gender, character_class, preset_no, cash_item_equipment_preset_1, cash_item_equipment_preset_2, cash_item_equipment_preset_3, additional_cash_item_equipment_preset_1, additional_cash_item_equipment_preset_2, additional_cash_item_equipment_preset_3, } = obj;
707
- (this.date = new Date(date)), (this.characterGender = character_gender);
814
+ const { date, character_gender, character_class, preset_no, cash_item_equipment_base, cash_item_equipment_preset_1, cash_item_equipment_preset_2, cash_item_equipment_preset_3, additional_cash_item_equipment_base, additional_cash_item_equipment_preset_1, additional_cash_item_equipment_preset_2, additional_cash_item_equipment_preset_3, } = obj;
815
+ this.date = new Date(date);
816
+ this.characterGender = character_gender;
708
817
  this.characterClass = character_class;
709
818
  this.presetNo = preset_no;
819
+ this.cashItemEquipmentBase = cash_item_equipment_base.map((preset) => new CharacterCashItemEquipmentPresetDto(preset));
710
820
  this.cashItemEquipmentPreset1 = cash_item_equipment_preset_1.map((preset) => new CharacterCashItemEquipmentPresetDto(preset));
711
821
  this.cashItemEquipmentPreset2 = cash_item_equipment_preset_2.map((preset) => new CharacterCashItemEquipmentPresetDto(preset));
712
822
  this.cashItemEquipmentPreset3 = cash_item_equipment_preset_3.map((preset) => new CharacterCashItemEquipmentPresetDto(preset));
823
+ this.additionalCashItemEquipmentBase =
824
+ additional_cash_item_equipment_base.map((preset) => new CharacterCashItemEquipmentPresetDto(preset));
713
825
  this.additionalCashItemEquipmentPreset1 =
714
826
  additional_cash_item_equipment_preset_1.map((preset) => new CharacterCashItemEquipmentPresetDto(preset));
715
827
  this.additionalCashItemEquipmentPreset2 =
@@ -1457,9 +1569,9 @@ class CharacterItemEquipmentTotalOptionDto {
1457
1569
  }
1458
1570
 
1459
1571
  /**
1460
- * 캐릭터 장비 아이템 상세 정보
1572
+ * 에반 드래곤 장비 정보
1461
1573
  */
1462
- class CharacterItemEquipmentInfoDto {
1574
+ class CharacterItemEquipmentDragonInfoDto {
1463
1575
  /**
1464
1576
  * 장비 부위 명
1465
1577
  */
@@ -1500,38 +1612,6 @@ class CharacterItemEquipmentInfoDto {
1500
1612
  * 장비 기본 옵션
1501
1613
  */
1502
1614
  itemBaseOption;
1503
- /**
1504
- * 잠재능력 등급
1505
- */
1506
- potentialOptionGrade;
1507
- /**
1508
- * 에디셔널 잠재능력 등급
1509
- */
1510
- additionalPotentialOptionGrade;
1511
- /**
1512
- * 잠재능력 첫 번째 옵션
1513
- */
1514
- potentialOption1;
1515
- /**
1516
- * 잠재능력 두 번째 옵션
1517
- */
1518
- potentialOption2;
1519
- /**
1520
- * 잠재능력 세 번째 옵션
1521
- */
1522
- potentialOption3;
1523
- /**
1524
- * 에디셔널 잠재능력 첫 번째 옵션
1525
- */
1526
- additionalPotentialOption1;
1527
- /**
1528
- * 에디셔널 잠재능력 두 번째 옵션
1529
- */
1530
- additionalPotentialOption2;
1531
- /**
1532
- * 에디셔널 잠재능력 세 번째 옵션
1533
- */
1534
- additionalPotentialOption3;
1535
1615
  /**
1536
1616
  * 착용 레벨 증가
1537
1617
  */
@@ -1605,7 +1685,7 @@ class CharacterItemEquipmentInfoDto {
1605
1685
  */
1606
1686
  dateExpire;
1607
1687
  constructor(obj) {
1608
- const { item_equipment_part, item_equipment_slot, item_name, item_icon, item_description, item_shape_name, item_shape_icon, item_gender, item_total_option, item_base_option, potential_option_grade, additional_potential_option_grade, potential_option_1, potential_option_2, potential_option_3, additional_potential_option_1, additional_potential_option_2, additional_potential_option_3, equipment_level_increase, item_exceptional_option, item_add_option, growth_exp, growth_level, scroll_upgrade, cuttable_count, golden_hammer_flag, scroll_resilience_count, scroll_upgradeable_count, soul_name, soul_option, item_etc_option, starforce, starforce_scroll_flag, item_starforce_option, special_ring_level, date_expire, } = obj;
1688
+ const { item_equipment_part, item_equipment_slot, item_name, item_icon, item_description, item_shape_name, item_shape_icon, item_gender, item_total_option, item_base_option, equipment_level_increase, item_exceptional_option, item_add_option, growth_exp, growth_level, scroll_upgrade, cuttable_count, golden_hammer_flag, scroll_resilience_count, scroll_upgradeable_count, soul_name, soul_option, item_etc_option, starforce, starforce_scroll_flag, item_starforce_option, special_ring_level, date_expire, } = obj;
1609
1689
  this.itemEquipmentPart = item_equipment_part;
1610
1690
  this.itemEquipmentSlot = item_equipment_slot;
1611
1691
  this.itemName = item_name;
@@ -1616,14 +1696,6 @@ class CharacterItemEquipmentInfoDto {
1616
1696
  this.itemGender = item_gender;
1617
1697
  this.itemTotalOption = new CharacterItemEquipmentTotalOptionDto(item_total_option);
1618
1698
  this.itemBaseOption = new CharacterItemEquipmentBaseOptionDto(item_base_option);
1619
- this.potentialOptionGrade = potential_option_grade;
1620
- this.additionalPotentialOptionGrade = additional_potential_option_grade;
1621
- this.potentialOption1 = potential_option_1;
1622
- this.potentialOption2 = potential_option_2;
1623
- this.potentialOption3 = potential_option_3;
1624
- this.additionalPotentialOption1 = additional_potential_option_1;
1625
- this.additionalPotentialOption2 = additional_potential_option_2;
1626
- this.additionalPotentialOption3 = additional_potential_option_3;
1627
1699
  this.equipmentLevelIncrease = equipment_level_increase;
1628
1700
  this.itemExceptionalOption = new CharacterItemEquipmentExceptionalOptionDto(item_exceptional_option);
1629
1701
  this.itemAddOption = new CharacterItemEquipmentAddOptionDto(item_add_option);
@@ -1646,94 +1718,81 @@ class CharacterItemEquipmentInfoDto {
1646
1718
  }
1647
1719
 
1648
1720
  /**
1649
- * 캐릭터 칭호 아이템 정보
1721
+ * 캐릭터 장비 아이템 상세 정보
1650
1722
  */
1651
- class CharacterItemEquipmentTitleDto {
1723
+ class CharacterItemEquipmentInfoDto {
1652
1724
  /**
1653
- * 칭호 장비 명
1725
+ * 장비 부위
1654
1726
  */
1655
- titleName;
1727
+ itemEquipmentPart;
1656
1728
  /**
1657
- * 칭호 아이콘
1729
+ * 장비 슬롯 위치
1658
1730
  */
1659
- titleIcon;
1731
+ itemEquipmentSlot;
1660
1732
  /**
1661
- * 칭호 설명
1733
+ * 장비
1662
1734
  */
1663
- titleDescription;
1735
+ itemName;
1664
1736
  /**
1665
- * 칭호 유효 기간
1737
+ * 장비 아이콘
1666
1738
  */
1667
- dateExpire;
1739
+ itemIcon;
1668
1740
  /**
1669
- * 칭호 옵션 유효 기간
1741
+ * 장비 설명
1670
1742
  */
1671
- dateOptionExpire = null;
1743
+ itemDescription;
1672
1744
  /**
1673
- * 칭호 옵션 유효 기간 만료 여부
1745
+ * 장비 외형
1674
1746
  */
1675
- isOptionExpired = null;
1676
- constructor(obj) {
1677
- const { title_name, title_icon, title_description, date_expire, date_option_expire, } = obj;
1678
- this.titleName = title_name;
1679
- this.titleIcon = title_icon;
1680
- this.titleDescription = title_description;
1681
- this.dateExpire = date_expire ? new Date(date_expire) : null;
1682
- if (date_option_expire === 'expired') {
1683
- this.isOptionExpired = true;
1684
- }
1685
- else if (typeof date_option_expire === 'string') {
1686
- this.dateOptionExpire = date_option_expire
1687
- ? new Date(date_option_expire)
1688
- : null;
1689
- }
1690
- }
1691
- }
1692
-
1693
- /**
1694
- * 에반 드래곤 장비 정보
1695
- */
1696
- class CharacterItemEquipmentDragonInfoDto {
1747
+ itemShapeName;
1697
1748
  /**
1698
- * 장비 부위
1749
+ * 장비 외형 아이콘
1699
1750
  */
1700
- itemEquipmentPart;
1751
+ itemShapeIcon;
1701
1752
  /**
1702
- * 장비 슬롯 위치
1753
+ * 전용 성별
1703
1754
  */
1704
- itemEquipmentSlot;
1755
+ itemGender;
1705
1756
  /**
1706
- * 장비
1757
+ * 장비 최종 옵션
1707
1758
  */
1708
- itemName;
1759
+ itemTotalOption;
1709
1760
  /**
1710
- * 장비 아이콘
1761
+ * 장비 기본 옵션
1711
1762
  */
1712
- itemIcon;
1763
+ itemBaseOption;
1713
1764
  /**
1714
- * 장비 설명
1765
+ * 잠재능력 등급
1715
1766
  */
1716
- itemDescription;
1767
+ potentialOptionGrade;
1717
1768
  /**
1718
- * 장비 외형
1769
+ * 에디셔널 잠재능력 등급
1719
1770
  */
1720
- itemShapeName;
1771
+ additionalPotentialOptionGrade;
1721
1772
  /**
1722
- * 장비 외형 아이콘
1773
+ * 잠재능력 번째 옵션
1723
1774
  */
1724
- itemShapeIcon;
1775
+ potentialOption1;
1725
1776
  /**
1726
- * 전용 성별
1777
+ * 잠재능력 두 번째 옵션
1727
1778
  */
1728
- itemGender;
1779
+ potentialOption2;
1729
1780
  /**
1730
- * 장비 최종 옵션
1781
+ * 잠재능력 번째 옵션
1731
1782
  */
1732
- itemTotalOption;
1783
+ potentialOption3;
1733
1784
  /**
1734
- * 장비 기본 옵션
1785
+ * 에디셔널 잠재능력 첫 번째 옵션
1735
1786
  */
1736
- itemBaseOption;
1787
+ additionalPotentialOption1;
1788
+ /**
1789
+ * 에디셔널 잠재능력 두 번째 옵션
1790
+ */
1791
+ additionalPotentialOption2;
1792
+ /**
1793
+ * 에디셔널 잠재능력 세 번째 옵션
1794
+ */
1795
+ additionalPotentialOption3;
1737
1796
  /**
1738
1797
  * 착용 레벨 증가
1739
1798
  */
@@ -1807,7 +1866,7 @@ class CharacterItemEquipmentDragonInfoDto {
1807
1866
  */
1808
1867
  dateExpire;
1809
1868
  constructor(obj) {
1810
- const { item_equipment_part, item_equipment_slot, item_name, item_icon, item_description, item_shape_name, item_shape_icon, item_gender, item_total_option, item_base_option, equipment_level_increase, item_exceptional_option, item_add_option, growth_exp, growth_level, scroll_upgrade, cuttable_count, golden_hammer_flag, scroll_resilience_count, scroll_upgradeable_count, soul_name, soul_option, item_etc_option, starforce, starforce_scroll_flag, item_starforce_option, special_ring_level, date_expire, } = obj;
1869
+ const { item_equipment_part, item_equipment_slot, item_name, item_icon, item_description, item_shape_name, item_shape_icon, item_gender, item_total_option, item_base_option, potential_option_grade, additional_potential_option_grade, potential_option_1, potential_option_2, potential_option_3, additional_potential_option_1, additional_potential_option_2, additional_potential_option_3, equipment_level_increase, item_exceptional_option, item_add_option, growth_exp, growth_level, scroll_upgrade, cuttable_count, golden_hammer_flag, scroll_resilience_count, scroll_upgradeable_count, soul_name, soul_option, item_etc_option, starforce, starforce_scroll_flag, item_starforce_option, special_ring_level, date_expire, } = obj;
1811
1870
  this.itemEquipmentPart = item_equipment_part;
1812
1871
  this.itemEquipmentSlot = item_equipment_slot;
1813
1872
  this.itemName = item_name;
@@ -1818,6 +1877,14 @@ class CharacterItemEquipmentDragonInfoDto {
1818
1877
  this.itemGender = item_gender;
1819
1878
  this.itemTotalOption = new CharacterItemEquipmentTotalOptionDto(item_total_option);
1820
1879
  this.itemBaseOption = new CharacterItemEquipmentBaseOptionDto(item_base_option);
1880
+ this.potentialOptionGrade = potential_option_grade;
1881
+ this.additionalPotentialOptionGrade = additional_potential_option_grade;
1882
+ this.potentialOption1 = potential_option_1;
1883
+ this.potentialOption2 = potential_option_2;
1884
+ this.potentialOption3 = potential_option_3;
1885
+ this.additionalPotentialOption1 = additional_potential_option_1;
1886
+ this.additionalPotentialOption2 = additional_potential_option_2;
1887
+ this.additionalPotentialOption3 = additional_potential_option_3;
1821
1888
  this.equipmentLevelIncrease = equipment_level_increase;
1822
1889
  this.itemExceptionalOption = new CharacterItemEquipmentExceptionalOptionDto(item_exceptional_option);
1823
1890
  this.itemAddOption = new CharacterItemEquipmentAddOptionDto(item_add_option);
@@ -1988,6 +2055,51 @@ class CharacterItemEquipmentMechanicInfoDto {
1988
2055
  }
1989
2056
  }
1990
2057
 
2058
+ /**
2059
+ * 캐릭터 칭호 아이템 정보
2060
+ */
2061
+ class CharacterItemEquipmentTitleDto {
2062
+ /**
2063
+ * 칭호 장비 명
2064
+ */
2065
+ titleName;
2066
+ /**
2067
+ * 칭호 아이콘
2068
+ */
2069
+ titleIcon;
2070
+ /**
2071
+ * 칭호 설명
2072
+ */
2073
+ titleDescription;
2074
+ /**
2075
+ * 칭호 유효 기간
2076
+ */
2077
+ dateExpire;
2078
+ /**
2079
+ * 칭호 옵션 유효 기간
2080
+ */
2081
+ dateOptionExpire = null;
2082
+ /**
2083
+ * 칭호 옵션 유효 기간 만료 여부
2084
+ */
2085
+ isOptionExpired = null;
2086
+ constructor(obj) {
2087
+ const { title_name, title_icon, title_description, date_expire, date_option_expire, } = obj;
2088
+ this.titleName = title_name;
2089
+ this.titleIcon = title_icon;
2090
+ this.titleDescription = title_description;
2091
+ this.dateExpire = date_expire ? new Date(date_expire) : null;
2092
+ if (date_option_expire === 'expired') {
2093
+ this.isOptionExpired = true;
2094
+ }
2095
+ else if (typeof date_option_expire === 'string') {
2096
+ this.dateOptionExpire = date_option_expire
2097
+ ? new Date(date_option_expire)
2098
+ : null;
2099
+ }
2100
+ }
2101
+ }
2102
+
1991
2103
  /**
1992
2104
  * 캐릭터 장비 아이템 정보
1993
2105
  */
@@ -2005,9 +2117,25 @@ class CharacterItemEquipmentDto {
2005
2117
  */
2006
2118
  characterClass;
2007
2119
  /**
2008
- * 장비 정보 배열
2120
+ * 적용 중인 장비 프리셋 번호
2121
+ */
2122
+ presetNo;
2123
+ /**
2124
+ * 장비 정보
2009
2125
  */
2010
2126
  itemEquipment;
2127
+ /**
2128
+ * 1번 프리셋 장비 정보
2129
+ */
2130
+ itemEquipmentPreset1;
2131
+ /**
2132
+ * 2번 프리셋 장비 정보
2133
+ */
2134
+ itemEquipmentPreset2;
2135
+ /**
2136
+ * 3번 프리셋 장비 정보
2137
+ */
2138
+ itemEquipmentPreset3;
2011
2139
  /**
2012
2140
  * 칭호 정보
2013
2141
  */
@@ -2021,11 +2149,15 @@ class CharacterItemEquipmentDto {
2021
2149
  */
2022
2150
  mechanicEquipment;
2023
2151
  constructor(obj) {
2024
- const { date, character_gender, character_class, item_equipment, title, dragon_equipment, mechanic_equipment, } = obj;
2152
+ const { date, character_gender, character_class, preset_no, item_equipment, item_equipment_preset_1, item_equipment_preset_2, item_equipment_preset_3, title, dragon_equipment, mechanic_equipment, } = obj;
2025
2153
  this.date = new Date(date);
2026
2154
  this.characterGender = character_gender;
2027
2155
  this.characterClass = character_class;
2156
+ this.presetNo = preset_no;
2028
2157
  this.itemEquipment = item_equipment.map((equipment) => new CharacterItemEquipmentInfoDto(equipment));
2158
+ this.itemEquipmentPreset1 = item_equipment_preset_1 ? item_equipment_preset_1.map((equipment) => new CharacterItemEquipmentInfoDto(equipment)) : null;
2159
+ this.itemEquipmentPreset2 = item_equipment_preset_2 ? item_equipment_preset_2.map((equipment) => new CharacterItemEquipmentInfoDto(equipment)) : null;
2160
+ this.itemEquipmentPreset3 = item_equipment_preset_3 ? item_equipment_preset_3.map((equipment) => new CharacterItemEquipmentInfoDto(equipment)) : null;
2029
2161
  this.title = title ? new CharacterItemEquipmentTitleDto(title) : null;
2030
2162
  this.dragonEquipment = dragon_equipment.map((equipment) => new CharacterItemEquipmentDragonInfoDto(equipment));
2031
2163
  this.mechanicEquipment = mechanic_equipment.map((equipment) => new CharacterItemEquipmentMechanicInfoDto(equipment));
@@ -2082,16 +2214,46 @@ class CharacterLinkSkillDto {
2082
2214
  * 링크 스킬 정보
2083
2215
  */
2084
2216
  characterLinkSkill;
2217
+ /**
2218
+ * 링크 스킬 1번 프리셋 정보
2219
+ */
2220
+ characterLinkSkillPreset1;
2221
+ /**
2222
+ * 링크 스킬 2번 프리셋 정보
2223
+ */
2224
+ characterLinkSkillPreset2;
2225
+ /**
2226
+ * 링크 스킬 3번 프리셋 정보
2227
+ */
2228
+ characterLinkSkillPreset3;
2085
2229
  /**
2086
2230
  * 내 링크 스킬 정보
2087
2231
  */
2088
2232
  characterOwnedLinkSkill;
2233
+ /**
2234
+ * 내 링크 스킬 1번 프리셋 정보
2235
+ */
2236
+ characterOwnedLinkSkillPreset1;
2237
+ /**
2238
+ * 내 링크 스킬 2번 프리셋 정보
2239
+ */
2240
+ characterOwnedLinkSkillPreset2;
2241
+ /**
2242
+ * 내 링크 스킬 3번 프리셋 정보
2243
+ */
2244
+ characterOwnedLinkSkillPreset3;
2089
2245
  constructor(obj) {
2090
- const { date, character_class, character_link_skill, character_owned_link_skill, } = obj;
2246
+ const { date, character_class, character_link_skill, character_link_skill_preset_1, character_link_skill_preset_2, character_link_skill_preset_3, character_owned_link_skill, character_owned_link_skill_preset_1, character_owned_link_skill_preset_2, character_owned_link_skill_preset_3, } = obj;
2091
2247
  this.date = new Date(date);
2092
2248
  this.characterClass = character_class;
2093
- this.characterLinkSkill = new CharacterLinkSkillInfoDto(character_link_skill);
2249
+ this.characterLinkSkill = character_link_skill.map((skill) => new CharacterLinkSkillInfoDto(skill));
2250
+ this.characterLinkSkillPreset1 = character_link_skill_preset_1.map((skill) => new CharacterLinkSkillInfoDto(skill));
2251
+ this.characterLinkSkillPreset2 = character_link_skill_preset_2.map((skill) => new CharacterLinkSkillInfoDto(skill));
2252
+ this.characterLinkSkillPreset3 = character_link_skill_preset_3.map((skill) => new CharacterLinkSkillInfoDto(skill));
2094
2253
  this.characterOwnedLinkSkill = new CharacterLinkSkillInfoDto(character_owned_link_skill);
2254
+ this.characterOwnedLinkSkillPreset1 = character_owned_link_skill_preset_1 ? new CharacterLinkSkillInfoDto(character_owned_link_skill_preset_1) : null;
2255
+ this.characterOwnedLinkSkillPreset2 = character_owned_link_skill_preset_2 ? new CharacterLinkSkillInfoDto(character_owned_link_skill_preset_2) : null;
2256
+ this.characterOwnedLinkSkillPreset3 = character_owned_link_skill_preset_3 ? new CharacterLinkSkillInfoDto(character_owned_link_skill_preset_3) : null;
2095
2257
  }
2096
2258
  }
2097
2259
 
@@ -2170,15 +2332,25 @@ class CharacterPetEquipmentItemDto {
2170
2332
  /**
2171
2333
  * 업그레이드 가능 횟수
2172
2334
  */
2173
- scrollUpgradeable;
2335
+ scrollUpgradable;
2336
+ /**
2337
+ * 아이템 외형
2338
+ */
2339
+ itemShape;
2340
+ /**
2341
+ * 아이템 외형 아이콘
2342
+ */
2343
+ itemShapeIcon;
2174
2344
  constructor(obj) {
2175
- const { item_name, item_icon, item_description, item_option, scroll_upgrade, scroll_upgradeable, } = obj;
2345
+ const { item_name, item_icon, item_description, item_option, scroll_upgrade, scroll_upgradable, item_shape, item_shape_icon } = obj;
2176
2346
  this.itemName = item_name;
2177
2347
  this.itemIcon = item_icon;
2178
2348
  this.itemDescription = item_description;
2179
2349
  this.itemOption = item_option.map((option) => new CharacterPetEquipmentItemOptionDto(option));
2180
2350
  this.scrollUpgrade = scroll_upgrade;
2181
- this.scrollUpgradeable = scroll_upgradeable;
2351
+ this.scrollUpgradable = scroll_upgradable;
2352
+ this.itemShape = item_shape;
2353
+ this.itemShapeIcon = item_shape_icon;
2182
2354
  }
2183
2355
  }
2184
2356
 
@@ -2226,6 +2398,14 @@ class CharacterPetEquipmentDto {
2226
2398
  * 펫1 마법의 시간 (KST, 시간 단위 데이터로 분은 일괄 0으로 표기)
2227
2399
  */
2228
2400
  pet1DateExpire;
2401
+ /**
2402
+ * 펫1 외형
2403
+ */
2404
+ pet1Appearance;
2405
+ /**
2406
+ * 펫1 외형 아이콘
2407
+ */
2408
+ pet1AppearanceIcon;
2229
2409
  /**
2230
2410
  * 펫2 명
2231
2411
  */
@@ -2258,10 +2438,18 @@ class CharacterPetEquipmentDto {
2258
2438
  * 펫2 펫 보유 스킬
2259
2439
  */
2260
2440
  pet2Skill;
2261
- /*
2441
+ /**
2262
2442
  * 펫2 마법의 시간 (KST, 시간 단위 데이터로 분은 일괄 0으로 표기)
2263
2443
  */
2264
2444
  pet2DateExpire;
2445
+ /**
2446
+ * 펫2 외형
2447
+ */
2448
+ pet2Appearance;
2449
+ /**
2450
+ * 펫2 외형 아이콘
2451
+ */
2452
+ pet2AppearanceIcon;
2265
2453
  /**
2266
2454
  * 펫3 명
2267
2455
  */
@@ -2294,40 +2482,54 @@ class CharacterPetEquipmentDto {
2294
2482
  * 펫3 펫 보유 스킬
2295
2483
  */
2296
2484
  pet3Skill;
2297
- /*
2485
+ /**
2298
2486
  * 펫3 마법의 시간 (KST, 시간 단위 데이터로 분은 일괄 0으로 표기)
2299
2487
  */
2300
2488
  pet3DateExpire;
2489
+ /**
2490
+ * 펫3 외형
2491
+ */
2492
+ pet3Appearance;
2493
+ /**
2494
+ * 펫3 외형 아이콘
2495
+ */
2496
+ pet3AppearanceIcon;
2301
2497
  constructor(obj) {
2302
- const { date, pet_1_name, pet_1_nickname, pet_1_icon, pet_1_description, pet_1_equipment, pet_1_auto_skill, pet_1_pet_type, pet_1_skill, pet_1_date_expire, pet_2_name, pet_2_nickname, pet_2_icon, pet_2_description, pet_2_equipment, pet_2_auto_skill, pet_2_pet_type, pet_2_skill, pet_2_date_expire, pet_3_name, pet_3_nickname, pet_3_icon, pet_3_description, pet_3_equipment, pet_3_auto_skill, pet_3_pet_type, pet_3_skill, pet_3_date_expire, } = obj;
2498
+ const { date, pet_1_name, pet_1_nickname, pet_1_icon, pet_1_description, pet_1_equipment, pet_1_auto_skill, pet_1_pet_type, pet_1_skill, pet_1_date_expire, pet_1_appearance, pet_1_appearance_icon, pet_2_name, pet_2_nickname, pet_2_icon, pet_2_description, pet_2_equipment, pet_2_auto_skill, pet_2_pet_type, pet_2_skill, pet_2_date_expire, pet_2_appearance, pet_2_appearance_icon, pet_3_name, pet_3_nickname, pet_3_icon, pet_3_description, pet_3_equipment, pet_3_auto_skill, pet_3_pet_type, pet_3_skill, pet_3_date_expire, pet_3_appearance, pet_3_appearance_icon, } = obj;
2303
2499
  this.date = new Date(date);
2304
2500
  this.pet1Name = pet_1_name;
2305
2501
  this.pet1Nickname = pet_1_nickname;
2306
2502
  this.pet1Icon = pet_1_icon;
2307
2503
  this.pet1Description = pet_1_description;
2308
- this.pet1Equipment = new CharacterPetEquipmentItemDto(pet_1_equipment);
2309
- this.pet1AutoSkill = new CharacterPetEquipmentAutoSkillDto(pet_1_auto_skill);
2504
+ this.pet1Equipment = pet_1_equipment ? new CharacterPetEquipmentItemDto(pet_1_equipment) : null;
2505
+ this.pet1AutoSkill = pet_1_auto_skill ? new CharacterPetEquipmentAutoSkillDto(pet_1_auto_skill) : null;
2310
2506
  this.pet1PetType = pet_1_pet_type;
2311
2507
  this.pet1Skill = pet_1_skill;
2312
- this.pet1DateExpire = new Date(pet_1_date_expire);
2508
+ this.pet1DateExpire = pet_1_date_expire ? new Date(pet_1_date_expire) : null;
2509
+ this.pet1Appearance = pet_1_appearance;
2510
+ this.pet1AppearanceIcon = pet_1_appearance_icon;
2313
2511
  this.pet2Name = pet_2_name;
2314
2512
  this.pet2Nickname = pet_2_nickname;
2315
2513
  this.pet2Icon = pet_2_icon;
2316
2514
  this.pet2Description = pet_2_description;
2317
- this.pet2Equipment = new CharacterPetEquipmentItemDto(pet_2_equipment);
2318
- this.pet2AutoSkill = new CharacterPetEquipmentAutoSkillDto(pet_2_auto_skill);
2515
+ this.pet2Equipment = pet_2_equipment ? new CharacterPetEquipmentItemDto(pet_2_equipment) : null;
2516
+ this.pet2AutoSkill = pet_2_auto_skill ? new CharacterPetEquipmentAutoSkillDto(pet_2_auto_skill) : null;
2319
2517
  this.pet2PetType = pet_2_pet_type;
2320
2518
  this.pet2Skill = pet_2_skill;
2321
- this.pet2DateExpire = new Date(pet_2_date_expire);
2519
+ this.pet2DateExpire = pet_2_date_expire ? new Date(pet_2_date_expire) : null;
2520
+ this.pet2Appearance = pet_2_appearance;
2521
+ this.pet2AppearanceIcon = pet_2_appearance_icon;
2322
2522
  this.pet3Name = pet_3_name;
2323
2523
  this.pet3Nickname = pet_3_nickname;
2324
2524
  this.pet3Icon = pet_3_icon;
2325
2525
  this.pet3Description = pet_3_description;
2326
- this.pet3Equipment = new CharacterPetEquipmentItemDto(pet_3_equipment);
2327
- this.pet3AutoSkill = new CharacterPetEquipmentAutoSkillDto(pet_3_auto_skill);
2526
+ this.pet3Equipment = pet_3_equipment ? new CharacterPetEquipmentItemDto(pet_3_equipment) : null;
2527
+ this.pet3AutoSkill = pet_3_auto_skill ? new CharacterPetEquipmentAutoSkillDto(pet_3_auto_skill) : null;
2328
2528
  this.pet3PetType = pet_3_pet_type;
2329
2529
  this.pet3Skill = pet_3_skill;
2330
- this.pet3DateExpire = new Date(pet_3_date_expire);
2530
+ this.pet3DateExpire = pet_3_date_expire ? new Date(pet_3_date_expire) : null;
2531
+ this.pet3Appearance = pet_3_appearance;
2532
+ this.pet3AppearanceIcon = pet_3_appearance_icon;
2331
2533
  }
2332
2534
  }
2333
2535
 
@@ -2722,104 +2924,226 @@ class CharacterVMatrixDto {
2722
2924
  }
2723
2925
  }
2724
2926
 
2725
- exports.PotentialOptionGrade = void 0;
2726
- (function (PotentialOptionGrade) {
2727
- PotentialOptionGrade[PotentialOptionGrade["RARE"] = 0] = "RARE";
2728
- PotentialOptionGrade[PotentialOptionGrade["EPIC"] = 1] = "EPIC";
2729
- PotentialOptionGrade[PotentialOptionGrade["UNIQUE"] = 2] = "UNIQUE";
2730
- PotentialOptionGrade[PotentialOptionGrade["LEGENDARY"] = 3] = "LEGENDARY";
2731
- })(exports.PotentialOptionGrade || (exports.PotentialOptionGrade = {}));
2732
- /**
2733
- * 한글로 정의된 잠재옵션 등급을 PotentialOptionGrade으로 변환합니다.
2734
- *
2735
- * @param text support only "레어", "에픽", "유니크", "레전드리"
2736
- */
2737
- const potentialOptionGradeFromString = (text) => {
2738
- const potentialOptionGradeMap = {
2739
- 레어: exports.PotentialOptionGrade.RARE,
2740
- 에픽: exports.PotentialOptionGrade.EPIC,
2741
- 유니크: exports.PotentialOptionGrade.UNIQUE,
2742
- 레전드리: exports.PotentialOptionGrade.LEGENDARY,
2743
- };
2744
- const grade = potentialOptionGradeMap[text];
2745
- if (!grade) {
2746
- throw new TypeError('No enum constant for string: ' + text);
2747
- }
2748
- return grade;
2749
- };
2750
-
2751
2927
  /**
2752
- * 큐브 결과 옵션 정보
2928
+ * 길드 스킬 정보
2753
2929
  */
2754
- class CubeResultOptionDto {
2930
+ class GuildSkillDto {
2755
2931
  /**
2756
- * 옵션
2932
+ * 스킬
2757
2933
  */
2758
- value;
2934
+ skillName;
2759
2935
  /**
2760
- * 옵션 등급
2936
+ * 스킬 설명
2761
2937
  */
2762
- grade;
2938
+ skillDescription;
2939
+ /**
2940
+ * 스킬 레벨
2941
+ */
2942
+ skillLevel;
2943
+ /**
2944
+ * 스킬 레벨 별 효과
2945
+ */
2946
+ skillEffect;
2947
+ /**
2948
+ * 스킬 아이콘
2949
+ */
2950
+ skillIcon;
2763
2951
  constructor(obj) {
2764
- const { value, grade } = obj;
2765
- this.value = value;
2766
- this.grade = grade;
2767
- }
2768
- get gradeEnum() {
2769
- return potentialOptionGradeFromString(this.grade);
2952
+ const { skill_name, skill_description, skill_level, skill_effect, skill_icon, } = obj;
2953
+ this.skillName = skill_name;
2954
+ this.skillDescription = skill_description;
2955
+ this.skillLevel = skill_level;
2956
+ this.skillEffect = skill_effect;
2957
+ this.skillIcon = skill_icon;
2770
2958
  }
2771
2959
  }
2772
2960
 
2773
2961
  /**
2774
- * 큐브 히스토리
2962
+ * 길드 기본 정보
2775
2963
  */
2776
- class CubeHistoryDto {
2777
- /**
2778
- * 큐브 히스토리 식별자
2779
- */
2780
- id;
2964
+ class GuildBasicDto {
2781
2965
  /**
2782
- * 캐릭터
2966
+ * 조회 기준일
2783
2967
  */
2784
- characterName;
2968
+ date;
2785
2969
  /**
2786
2970
  * 월드 명
2787
2971
  */
2788
2972
  worldName;
2789
2973
  /**
2790
- * 사용 일시
2974
+ * 길드
2791
2975
  */
2792
- dateCreate;
2976
+ guildName;
2793
2977
  /**
2794
- * 사용 큐브
2978
+ * 길드 레벨
2795
2979
  */
2796
- cubeType;
2980
+ guildLevel;
2797
2981
  /**
2798
- * 사용 결과
2982
+ * 길드 명성치
2799
2983
  */
2800
- itemUpgradeResult;
2984
+ guildFame;
2801
2985
  /**
2802
- * 미라클 타임 적용 여부
2986
+ * 길드 포인트(GP)
2803
2987
  */
2804
- miracleTimeFlag;
2988
+ guildPoint;
2805
2989
  /**
2806
- * 장비 분류
2990
+ * 길드 마스터 캐릭터 명
2807
2991
  */
2808
- itemEquipmentPart;
2992
+ guildMasterName;
2809
2993
  /**
2810
- * 장비 레벨
2994
+ * 길드원
2811
2995
  */
2812
- itemLevel;
2996
+ guildMemberCount;
2813
2997
  /**
2814
- * 큐브 사용한 장비
2998
+ * 길드원 목록
2815
2999
  */
2816
- targetItem;
3000
+ guildMember;
2817
3001
  /**
2818
- * 잠재능력 등급
3002
+ * 길드 스킬 목록
2819
3003
  */
2820
- potentialOptionGrade;
3004
+ guildSkill;
2821
3005
  /**
2822
- * 에디셔널 잠재능력 등급
3006
+ * 노블레스 스킬 목록
3007
+ */
3008
+ guildNoblesseSkill;
3009
+ /**
3010
+ * 조합형 길드 마크
3011
+ */
3012
+ guildMark;
3013
+ /**
3014
+ * 커스텀 길드 마크 (base64 인코딩 형식)
3015
+ */
3016
+ guildMarkCustom;
3017
+ constructor(obj) {
3018
+ const { date, world_name, guild_name, guild_level, guild_fame, guild_point, guild_master_name, guild_member_count, guild_member, guild_skill, guild_noblesse_skill, guild_mark, guild_mark_custom, } = obj;
3019
+ this.date = new Date(date);
3020
+ this.worldName = world_name;
3021
+ this.guildName = guild_name;
3022
+ this.guildLevel = guild_level;
3023
+ this.guildFame = guild_fame;
3024
+ this.guildPoint = guild_point;
3025
+ this.guildMasterName = guild_master_name;
3026
+ this.guildMemberCount = guild_member_count;
3027
+ this.guildMember = guild_member;
3028
+ this.guildSkill = guild_skill.map((skill) => new GuildSkillDto(skill));
3029
+ this.guildNoblesseSkill = guild_noblesse_skill.map((skill) => new GuildSkillDto(skill));
3030
+ this.guildMark = guild_mark;
3031
+ this.guildMarkCustom = guild_mark_custom;
3032
+ }
3033
+ }
3034
+
3035
+ /**
3036
+ * 길드 식별자 정보
3037
+ */
3038
+ class GuildDto {
3039
+ /**
3040
+ * 길드 식별자
3041
+ */
3042
+ oguildId;
3043
+ constructor(obj) {
3044
+ const { oguild_id } = obj;
3045
+ this.oguildId = oguild_id;
3046
+ }
3047
+ }
3048
+
3049
+ exports.PotentialOptionGrade = void 0;
3050
+ (function (PotentialOptionGrade) {
3051
+ PotentialOptionGrade[PotentialOptionGrade["RARE"] = 0] = "RARE";
3052
+ PotentialOptionGrade[PotentialOptionGrade["EPIC"] = 1] = "EPIC";
3053
+ PotentialOptionGrade[PotentialOptionGrade["UNIQUE"] = 2] = "UNIQUE";
3054
+ PotentialOptionGrade[PotentialOptionGrade["LEGENDARY"] = 3] = "LEGENDARY";
3055
+ })(exports.PotentialOptionGrade || (exports.PotentialOptionGrade = {}));
3056
+ /**
3057
+ * 한글로 정의된 잠재옵션 등급을 PotentialOptionGrade으로 변환합니다.
3058
+ *
3059
+ * @param text support only "레어", "에픽", "유니크", "레전드리"
3060
+ */
3061
+ const potentialOptionGradeFromString = (text) => {
3062
+ const potentialOptionGradeMap = {
3063
+ 레어: exports.PotentialOptionGrade.RARE,
3064
+ 에픽: exports.PotentialOptionGrade.EPIC,
3065
+ 유니크: exports.PotentialOptionGrade.UNIQUE,
3066
+ 레전드리: exports.PotentialOptionGrade.LEGENDARY,
3067
+ };
3068
+ const grade = potentialOptionGradeMap[text];
3069
+ if (!grade) {
3070
+ throw new TypeError('No enum constant for string: ' + text);
3071
+ }
3072
+ return grade;
3073
+ };
3074
+
3075
+ /**
3076
+ * 큐브 결과 옵션 정보
3077
+ */
3078
+ class CubeResultOptionDto {
3079
+ /**
3080
+ * 옵션 명
3081
+ */
3082
+ value;
3083
+ /**
3084
+ * 옵션 등급
3085
+ */
3086
+ grade;
3087
+ constructor(obj) {
3088
+ const { value, grade } = obj;
3089
+ this.value = value;
3090
+ this.grade = grade;
3091
+ }
3092
+ get gradeEnum() {
3093
+ return potentialOptionGradeFromString(this.grade);
3094
+ }
3095
+ }
3096
+
3097
+ /**
3098
+ * 큐브 히스토리
3099
+ */
3100
+ class CubeHistoryDto {
3101
+ /**
3102
+ * 큐브 히스토리 식별자
3103
+ */
3104
+ id;
3105
+ /**
3106
+ * 캐릭터 명
3107
+ */
3108
+ characterName;
3109
+ /**
3110
+ * 월드 명
3111
+ */
3112
+ worldName;
3113
+ /**
3114
+ * 사용 일시
3115
+ */
3116
+ dateCreate;
3117
+ /**
3118
+ * 사용 큐브
3119
+ */
3120
+ cubeType;
3121
+ /**
3122
+ * 사용 결과
3123
+ */
3124
+ itemUpgradeResult;
3125
+ /**
3126
+ * 미라클 타임 적용 여부
3127
+ */
3128
+ miracleTimeFlag;
3129
+ /**
3130
+ * 장비 분류
3131
+ */
3132
+ itemEquipmentPart;
3133
+ /**
3134
+ * 장비 레벨
3135
+ */
3136
+ itemLevel;
3137
+ /**
3138
+ * 큐브 사용한 장비
3139
+ */
3140
+ targetItem;
3141
+ /**
3142
+ * 잠재능력 등급
3143
+ */
3144
+ potentialOptionGrade;
3145
+ /**
3146
+ * 에디셔널 잠재능력 등급
2823
3147
  */
2824
3148
  additionalPotentialOptionGrade;
2825
3149
  /**
@@ -2907,192 +3231,462 @@ class CubeHistoryResponseDto {
2907
3231
  }
2908
3232
 
2909
3233
  /**
2910
- * 무릉도장 랭킹 정보
3234
+ * 잠재능력 재설정 결과 옵션 정보
2911
3235
  */
2912
- class DojangRankingDto {
3236
+ class PotentialResultOptionDto {
2913
3237
  /**
2914
- * 랭킹 업데이트 일자 (KST, 일 단위 데이터로 시, 분은 일괄 0으로 표기)
3238
+ * 옵션
2915
3239
  */
2916
- date;
3240
+ value;
2917
3241
  /**
2918
- * 무릉도장 랭킹 순위
3242
+ * 옵션 등급
2919
3243
  */
2920
- ranking;
3244
+ grade;
3245
+ constructor(obj) {
3246
+ const { value, grade } = obj;
3247
+ this.value = value;
3248
+ this.grade = grade;
3249
+ }
3250
+ get gradeEnum() {
3251
+ return potentialOptionGradeFromString(this.grade);
3252
+ }
3253
+ }
3254
+
3255
+ /**
3256
+ * 잠재능력 재설정 히스토리
3257
+ */
3258
+ class PotentialHistoryDto {
3259
+ /**
3260
+ * 잠재능력 재설정 히스토리 식별자
3261
+ */
3262
+ id;
2921
3263
  /**
2922
3264
  * 캐릭터 명
2923
3265
  */
2924
3266
  characterName;
2925
3267
  /**
2926
- * 월드
3268
+ * 사용 일시
2927
3269
  */
2928
- worldName;
3270
+ dateCreate;
2929
3271
  /**
2930
- * 직업
3272
+ * 대상 잠재능력 타입 (잠재능력, 에디셔널 잠재능력)
2931
3273
  */
2932
- className;
3274
+ potentialType;
2933
3275
  /**
2934
- * 전직 직업 명
3276
+ * 사용 결과
2935
3277
  */
2936
- subClassName;
3278
+ itemUpgradeResult;
2937
3279
  /**
2938
- * 캐릭터 레벨
3280
+ * 미라클 타임 적용 여부
2939
3281
  */
2940
- characterLevel;
3282
+ miracleTimeFlag;
2941
3283
  /**
2942
- * 무릉도장 구간
3284
+ * 장비 분류
2943
3285
  */
2944
- dojangFloor;
3286
+ itemEquipmentPart;
2945
3287
  /**
2946
- * 무릉도장 클리어 시간 기록 (초 단위)
3288
+ * 장비 레벨
2947
3289
  */
2948
- dojangTimeRecord;
3290
+ itemLevel;
3291
+ /**
3292
+ * 잠재능력 재설정 장비 명
3293
+ */
3294
+ targetItem;
3295
+ /**
3296
+ * 잠재능력 등급
3297
+ */
3298
+ potentialOptionGrade;
3299
+ /**
3300
+ * 에디셔널 잠재능력 등급
3301
+ */
3302
+ additionalPotentialOptionGrade;
3303
+ /**
3304
+ * 천장에 도달하여 확정 등급 상승한 여부
3305
+ */
3306
+ upgradeGuarantee;
3307
+ /**
3308
+ * 현재까지 쌓은 스택
3309
+ */
3310
+ upgradeGuaranteeCount;
3311
+ /**
3312
+ * 사용 전 잠재능력 옵션
3313
+ */
3314
+ beforePotentialOption;
3315
+ /**
3316
+ * 사용 전 에디셔널 잠재능력 옵션
3317
+ */
3318
+ beforeAdditionalPotentialOption;
3319
+ /**
3320
+ * 사용 후 잠재능력 옵션
3321
+ */
3322
+ afterPotentialOption;
3323
+ /**
3324
+ * 사용 후 에디셔널 잠재능력 옵션
3325
+ */
3326
+ afterAdditionalPotentialOption;
2949
3327
  constructor(obj) {
2950
- const { date, ranking, character_name, world_name, class_name, sub_class_name, character_level, dojang_floor, dojang_time_record, } = obj;
2951
- this.date = new Date(date);
2952
- this.ranking = ranking;
3328
+ const { id, character_name, date_create, potential_type, item_upgrade_result, miracle_time_flag, item_equipment_part, item_level, target_item, potential_option_grade, additional_potential_option_grade, upgrade_guarantee, upgrade_guarantee_count, before_potential_option, before_additional_potential_option, after_potential_option, after_additional_potential_option, } = obj;
3329
+ this.id = id;
3330
+ this.characterName = character_name;
3331
+ this.dateCreate = new Date(date_create);
3332
+ this.potentialType = potential_type;
3333
+ this.itemUpgradeResult = item_upgrade_result;
3334
+ this.miracleTimeFlag = miracle_time_flag;
3335
+ this.itemEquipmentPart = item_equipment_part;
3336
+ this.itemLevel = item_level;
3337
+ this.targetItem = target_item;
3338
+ this.potentialOptionGrade = potential_option_grade;
3339
+ this.additionalPotentialOptionGrade = additional_potential_option_grade;
3340
+ this.upgradeGuarantee = upgrade_guarantee;
3341
+ this.upgradeGuaranteeCount = upgrade_guarantee_count;
3342
+ this.beforePotentialOption = before_potential_option.map((origin) => new PotentialResultOptionDto(origin));
3343
+ this.beforeAdditionalPotentialOption =
3344
+ before_additional_potential_option.map((origin) => new PotentialResultOptionDto(origin));
3345
+ this.afterPotentialOption = after_potential_option.map((origin) => new PotentialResultOptionDto(origin));
3346
+ this.afterAdditionalPotentialOption = after_additional_potential_option.map((origin) => new PotentialResultOptionDto(origin));
3347
+ }
3348
+ get isItemUpgrade() {
3349
+ return this.itemUpgradeResult === '성공';
3350
+ }
3351
+ get isMiracleTimeFlag() {
3352
+ return this.miracleTimeFlag !== '이벤트 적용되지 않음';
3353
+ }
3354
+ get potentialOptionGradeEnum() {
3355
+ return potentialOptionGradeFromString(this.potentialOptionGrade);
3356
+ }
3357
+ get additionalPotentialOptionGradeEnum() {
3358
+ return potentialOptionGradeFromString(this.additionalPotentialOptionGrade);
3359
+ }
3360
+ }
3361
+
3362
+ /**
3363
+ * 잠재능력 재설정 히스토리 응답 정보
3364
+ */
3365
+ class PotentialHistoryResponseDto {
3366
+ /**
3367
+ * 결과 건 수
3368
+ */
3369
+ count;
3370
+ /**
3371
+ * 잠재능력 재설정 히스토리
3372
+ */
3373
+ potentialHistory;
3374
+ /**
3375
+ * 페이징 처리를 위한 cursor
3376
+ */
3377
+ nextCursor;
3378
+ constructor(obj) {
3379
+ const { count, potential_history, next_cursor } = obj;
3380
+ this.count = count;
3381
+ this.potentialHistory = potential_history.map((origin) => new PotentialHistoryDto(origin));
3382
+ this.nextCursor = next_cursor;
3383
+ }
3384
+ }
3385
+
3386
+ /**
3387
+ * 스타포스 강화 이벤트 정보
3388
+ */
3389
+ class StarforceEventDto {
3390
+ /**
3391
+ * 이벤트 성공 확률
3392
+ */
3393
+ successRate;
3394
+ /**
3395
+ * 이벤트 비용 할인율
3396
+ */
3397
+ costDiscountRate;
3398
+ /**
3399
+ * 이벤트 강화 수치 가중값
3400
+ */
3401
+ plusValue;
3402
+ /**
3403
+ * 이벤트 적용 강화 시도 가능한 n성 범위
3404
+ */
3405
+ starforceEventRange;
3406
+ constructor(obj) {
3407
+ const { success_rate, cost_discount_rate, plus_value, starforce_event_range, } = obj;
3408
+ this.successRate = success_rate;
3409
+ this.costDiscountRate = cost_discount_rate;
3410
+ this.plusValue = plus_value;
3411
+ this.starforceEventRange = starforce_event_range;
3412
+ }
3413
+ }
3414
+
3415
+ /**
3416
+ * 스타포스 히스토리
3417
+ */
3418
+ class StarforceHistoryDto {
3419
+ /**
3420
+ *스타포스 히스토리 식별자
3421
+ */
3422
+ id;
3423
+ /**
3424
+ *강화 시도 결과
3425
+ */
3426
+ itemUpgradeResult;
3427
+ /**
3428
+ *강화 시도 전 스타포스 수치
3429
+ */
3430
+ beforeStarforceCount;
3431
+ /**
3432
+ *강화 시도 후 스타포스 수치
3433
+ */
3434
+ afterStarforceCount;
3435
+ /**
3436
+ *스타 캐치
3437
+ */
3438
+ starCatchResult;
3439
+ /**
3440
+ *슈페리얼 장비
3441
+ */
3442
+ superiorItemFlag;
3443
+ /**
3444
+ *파괴 방지
3445
+ */
3446
+ destroyDefence;
3447
+ /**
3448
+ *찬스 타임
3449
+ */
3450
+ chanceTime;
3451
+ /**
3452
+ *파괴 방지 필드 이벤트
3453
+ */
3454
+ eventFieldFlag;
3455
+ /**
3456
+ *사용 주문서 명
3457
+ */
3458
+ upgradeItem;
3459
+ /**
3460
+ *프로텍트 실드
3461
+ */
3462
+ protectShield;
3463
+ /**
3464
+ *보너스 스탯 부여 아이템 여부
3465
+ */
3466
+ bonusStatUpgrade;
3467
+ /**
3468
+ *캐릭터 명
3469
+ */
3470
+ characterName;
3471
+ /**
3472
+ *월드 명
3473
+ */
3474
+ worldName;
3475
+ /**
3476
+ *대상 장비 아이템 명
3477
+ */
3478
+ targetItem;
3479
+ /**
3480
+ *강화 일시 (KST)
3481
+ */
3482
+ dateCreate;
3483
+ /**
3484
+ * 진행 중인 스타포스 강화 이벤트 정보
3485
+ */
3486
+ starforceEventList;
3487
+ constructor(obj) {
3488
+ const { id, item_upgrade_result, before_starforce_count, after_starforce_count, starcatch_result, superior_item_flag, destroy_defence, chance_time, event_field_flag, upgrade_item, protect_shield, bonus_stat_upgrade, character_name, world_name, target_item, date_create, starforce_event_list, } = obj;
3489
+ this.id = id;
3490
+ this.itemUpgradeResult = item_upgrade_result;
3491
+ this.beforeStarforceCount = before_starforce_count;
3492
+ this.afterStarforceCount = after_starforce_count;
3493
+ this.starCatchResult = starcatch_result;
3494
+ this.superiorItemFlag = superior_item_flag;
3495
+ this.destroyDefence = destroy_defence;
3496
+ this.chanceTime = chance_time;
3497
+ this.eventFieldFlag = event_field_flag;
3498
+ this.upgradeItem = upgrade_item;
3499
+ this.protectShield = protect_shield;
3500
+ this.bonusStatUpgrade = bonus_stat_upgrade;
2953
3501
  this.characterName = character_name;
2954
3502
  this.worldName = world_name;
2955
- this.className = class_name;
2956
- this.subClassName = sub_class_name;
2957
- this.characterLevel = character_level;
2958
- this.dojangFloor = dojang_floor;
2959
- this.dojangTimeRecord = dojang_time_record;
3503
+ this.targetItem = target_item;
3504
+ this.dateCreate = new Date(date_create);
3505
+ this.starforceEventList = starforce_event_list.map((event) => new StarforceEventDto(event));
2960
3506
  }
2961
3507
  }
2962
3508
 
2963
3509
  /**
2964
- * 무릉도장 랭킹 응답 정보
3510
+ * 스타포스 히스토리 응답 정보
2965
3511
  */
2966
- class DojangRankingResponseDto {
3512
+ class StarforceHistoryResponseDto {
2967
3513
  /**
2968
- * 길드 랭킹 정보
3514
+ * 결과
2969
3515
  */
2970
- ranking;
3516
+ count;
3517
+ /**
3518
+ * 스타포스 히스토리
3519
+ */
3520
+ starforceHistory;
3521
+ /**
3522
+ * 페이징 처리를 위한 cursor
3523
+ */
3524
+ nextCursor;
2971
3525
  constructor(obj) {
2972
- const { ranking } = obj;
2973
- this.ranking = ranking.map((rank) => new DojangRankingDto(rank));
3526
+ const { count, starforce_history, next_cursor } = obj;
3527
+ this.count = count;
3528
+ this.starforceHistory = starforce_history.map((origin) => new StarforceHistoryDto(origin));
3529
+ this.nextCursor = next_cursor;
2974
3530
  }
2975
3531
  }
2976
3532
 
2977
3533
  /**
2978
- * 길드 스킬 정보
3534
+ * 서버 점검 정보
2979
3535
  */
2980
- class GuildSkillDto {
3536
+ class InspectionInfoDto {
2981
3537
  /**
2982
- * 스킬
3538
+ * 서비스 코드
2983
3539
  */
2984
- skillName;
3540
+ serviceCode;
2985
3541
  /**
2986
- * 스킬 설명
3542
+ * 점검 시작 시각
2987
3543
  */
2988
- skillDescription;
3544
+ startDateTime;
2989
3545
  /**
2990
- * 스킬 레벨
3546
+ * 점검 종료 시각
2991
3547
  */
2992
- skillLevel;
3548
+ endDateTime;
2993
3549
  /**
2994
- * 스킬 레벨 별 효과
3550
+ * 점검 안내 제목
2995
3551
  */
2996
- skillEffect;
3552
+ strObstacleContents;
3553
+ constructor(obj) {
3554
+ const inspectionInfoTag = obj['soap:Envelope']['soap:Body'][0]['GetInspectionInfoResponse'][0]['GetInspectionInfoResult'][0]['diffgr:diffgram'][0]['NewDataSet'][0]['InspectionInfo'][0];
3555
+ this.serviceCode = Number(inspectionInfoTag.serviceCode[0]);
3556
+ this.startDateTime = new Date(inspectionInfoTag.startDateTime[0]);
3557
+ this.endDateTime = new Date(inspectionInfoTag.endDateTime[0]);
3558
+ this.strObstacleContents = inspectionInfoTag.strObstacleContents[0];
3559
+ }
3560
+ }
3561
+
3562
+ /**
3563
+ * 업적 랭킹 정보
3564
+ */
3565
+ class AchievementRankingDto {
2997
3566
  /**
2998
- * 스킬 아이콘
3567
+ * 랭킹 업데이트 일자 (KST, 일 단위 데이터로 시, 분은 일괄 0으로 표기)
3568
+ */
3569
+ date;
3570
+ /**
3571
+ * 업적 랭킹 순위
3572
+ */
3573
+ ranking;
3574
+ /**
3575
+ * 캐릭터 명
3576
+ */
3577
+ characterName;
3578
+ /**
3579
+ * 월드 명
3580
+ */
3581
+ worldName;
3582
+ /**
3583
+ * 직업 명
3584
+ */
3585
+ className;
3586
+ /**
3587
+ * 전직 직업 명
3588
+ */
3589
+ subClassName;
3590
+ /**
3591
+ * 업적 등급
3592
+ */
3593
+ trophyGrade;
3594
+ /**
3595
+ * 업적 점수
3596
+ */
3597
+ trophyScore;
3598
+ constructor(obj) {
3599
+ const { date, ranking, character_name, world_name, class_name, sub_class_name, trophy_grade, trophy_score, } = obj;
3600
+ this.date = new Date(date);
3601
+ this.ranking = ranking;
3602
+ this.characterName = character_name;
3603
+ this.worldName = world_name;
3604
+ this.className = class_name;
3605
+ this.subClassName = sub_class_name;
3606
+ this.trophyGrade = trophy_grade;
3607
+ this.trophyScore = trophy_score;
3608
+ }
3609
+ }
3610
+
3611
+ /**
3612
+ * 업적 랭킹 응답 정보
3613
+ */
3614
+ class AchievementRankingResponseDto {
3615
+ /**
3616
+ * 업적 랭킹 정보
2999
3617
  */
3000
- skillIcon;
3618
+ ranking;
3001
3619
  constructor(obj) {
3002
- const { skill_name, skill_description, skill_level, skill_effect, skill_icon, } = obj;
3003
- this.skillName = skill_name;
3004
- this.skillDescription = skill_description;
3005
- this.skillLevel = skill_level;
3006
- this.skillEffect = skill_effect;
3007
- this.skillIcon = skill_icon;
3620
+ const { ranking } = obj;
3621
+ this.ranking = ranking.map((rank) => new AchievementRankingDto(rank));
3008
3622
  }
3009
3623
  }
3010
3624
 
3011
3625
  /**
3012
- * 길드 기본 정보
3626
+ * 무릉도장 랭킹 정보
3013
3627
  */
3014
- class GuildBasicDto {
3628
+ class DojangRankingDto {
3015
3629
  /**
3016
- * 조회 기준일
3630
+ * 랭킹 업데이트 일자 (KST, 일 단위 데이터로 시, 분은 일괄 0으로 표기)
3017
3631
  */
3018
3632
  date;
3019
3633
  /**
3020
- * 월드
3021
- */
3022
- worldName;
3023
- /**
3024
- * 길드 명
3025
- */
3026
- guildName;
3027
- /**
3028
- * 길드 레벨
3029
- */
3030
- guildLevel;
3031
- /**
3032
- * 길드 명성치
3033
- */
3034
- guildFame;
3035
- /**
3036
- * 길드 포인트(GP)
3634
+ * 무릉도장 랭킹 순위
3037
3635
  */
3038
- guildPoint;
3636
+ ranking;
3039
3637
  /**
3040
- * 길드 마스터 캐릭터 명
3638
+ * 캐릭터 명
3041
3639
  */
3042
- guildMasterName;
3640
+ characterName;
3043
3641
  /**
3044
- * 길드원
3642
+ * 월드
3045
3643
  */
3046
- guildMemberCount;
3644
+ worldName;
3047
3645
  /**
3048
- * 길드원 목록
3646
+ * 직업
3049
3647
  */
3050
- guildMember;
3648
+ className;
3051
3649
  /**
3052
- * 길드 스킬 목록
3650
+ * 전직 직업
3053
3651
  */
3054
- guildSkill;
3652
+ subClassName;
3055
3653
  /**
3056
- * 노블레스 스킬 목록
3654
+ * 캐릭터 레벨
3057
3655
  */
3058
- guildNoblesseSkill;
3656
+ characterLevel;
3059
3657
  /**
3060
- * 조합형 길드 마크
3658
+ * 무릉도장 구간
3061
3659
  */
3062
- guildMark;
3660
+ dojangFloor;
3063
3661
  /**
3064
- * 커스텀 길드 마크 (base64 인코딩 형식)
3662
+ * 무릉도장 클리어 시간 기록 ( 단위)
3065
3663
  */
3066
- guildMarkCustom;
3664
+ dojangTimeRecord;
3067
3665
  constructor(obj) {
3068
- const { date, world_name, guild_name, guild_level, guild_fame, guild_point, guild_master_name, guild_member_count, guild_member, guild_skill, guild_noblesse_skill, guild_mark, guild_mark_custom, } = obj;
3666
+ const { date, ranking, character_name, world_name, class_name, sub_class_name, character_level, dojang_floor, dojang_time_record, } = obj;
3069
3667
  this.date = new Date(date);
3668
+ this.ranking = ranking;
3669
+ this.characterName = character_name;
3070
3670
  this.worldName = world_name;
3071
- this.guildName = guild_name;
3072
- this.guildLevel = guild_level;
3073
- this.guildFame = guild_fame;
3074
- this.guildPoint = guild_point;
3075
- this.guildMasterName = guild_master_name;
3076
- this.guildMemberCount = guild_member_count;
3077
- this.guildMember = guild_member;
3078
- this.guildSkill = guild_skill.map((skill) => new GuildSkillDto(skill));
3079
- this.guildNoblesseSkill = guild_noblesse_skill.map((skill) => new GuildSkillDto(skill));
3080
- this.guildMark = guild_mark;
3081
- this.guildMarkCustom = guild_mark_custom;
3671
+ this.className = class_name;
3672
+ this.subClassName = sub_class_name;
3673
+ this.characterLevel = character_level;
3674
+ this.dojangFloor = dojang_floor;
3675
+ this.dojangTimeRecord = dojang_time_record;
3082
3676
  }
3083
3677
  }
3084
3678
 
3085
3679
  /**
3086
- * 길드 식별자 정보
3680
+ * 무릉도장 랭킹 응답 정보
3087
3681
  */
3088
- class GuildDto {
3682
+ class DojangRankingResponseDto {
3089
3683
  /**
3090
- * 길드 식별자
3684
+ * 길드 랭킹 정보
3091
3685
  */
3092
- oguildId;
3686
+ ranking;
3093
3687
  constructor(obj) {
3094
- const { oguild_id } = obj;
3095
- this.oguildId = oguild_id;
3688
+ const { ranking } = obj;
3689
+ this.ranking = ranking.map((rank) => new DojangRankingDto(rank));
3096
3690
  }
3097
3691
  }
3098
3692
 
@@ -3159,35 +3753,6 @@ class GuildRankingResponseDto {
3159
3753
  }
3160
3754
  }
3161
3755
 
3162
- /**
3163
- * 서버 점검 정보
3164
- */
3165
- class InspectionInfoDto {
3166
- /**
3167
- * 서비스 코드
3168
- */
3169
- serviceCode;
3170
- /**
3171
- * 점검 시작 시각
3172
- */
3173
- startDateTime;
3174
- /**
3175
- * 점검 종료 시각
3176
- */
3177
- endDateTime;
3178
- /**
3179
- * 점검 안내 제목
3180
- */
3181
- strObstacleContents;
3182
- constructor(obj) {
3183
- const inspectionInfoTag = obj['soap:Envelope']['soap:Body'][0]['GetInspectionInfoResponse'][0]['GetInspectionInfoResult'][0]['diffgr:diffgram'][0]['NewDataSet'][0]['InspectionInfo'][0];
3184
- this.serviceCode = Number(inspectionInfoTag.serviceCode[0]);
3185
- this.startDateTime = new Date(inspectionInfoTag.startDateTime[0]);
3186
- this.endDateTime = new Date(inspectionInfoTag.endDateTime[0]);
3187
- this.strObstacleContents = inspectionInfoTag.strObstacleContents[0];
3188
- }
3189
- }
3190
-
3191
3756
  /**
3192
3757
  * 종합 랭킹 정보
3193
3758
  */
@@ -3316,164 +3881,16 @@ class TheSeedRankingDto {
3316
3881
  }
3317
3882
 
3318
3883
  /**
3319
- * 더 시드 랭킹 응답 정보
3320
- */
3321
- class TheSeedRankingResponseDto {
3322
- /**
3323
- * 더 시드 랭킹 정보
3324
- */
3325
- ranking;
3326
- constructor(obj) {
3327
- const { ranking } = obj;
3328
- this.ranking = ranking.map((rank) => new TheSeedRankingDto(rank));
3329
- }
3330
- }
3331
-
3332
- /**
3333
- * 유니온 정보
3334
- */
3335
- class UnionDto {
3336
- /**
3337
- * 조회 기준일
3338
- */
3339
- date;
3340
- /**
3341
- * 유니온 레벨
3342
- */
3343
- unionLevel;
3344
- /**
3345
- * 유니온 등급
3346
- */
3347
- unionGrade;
3348
- constructor(obj) {
3349
- const { date, union_level, union_grade } = obj;
3350
- this.date = new Date(date);
3351
- this.unionLevel = union_level;
3352
- this.unionGrade = union_grade;
3353
- }
3354
- }
3355
-
3356
- /**
3357
- * 유니온 블록이 차지하고 있는 영역 좌표들
3358
- */
3359
- class UnionRaiderBlockPositionDto {
3360
- /**
3361
- * 블록 X좌표
3362
- */
3363
- x;
3364
- /**
3365
- * 블록 Y좌표
3366
- */
3367
- y;
3368
- constructor(obj) {
3369
- const { x, y } = obj;
3370
- this.x = x;
3371
- this.y = y;
3372
- }
3373
- }
3374
-
3375
- /**
3376
- * 유니온 블록 기준점 좌표 정보
3377
- */
3378
- class UnionRaiderBlockControlPointDto {
3379
- /**
3380
- * 블록 기준점 X좌표
3381
- */
3382
- x;
3383
- /**
3384
- * 블록 기준점 Y좌표
3385
- */
3386
- y;
3387
- constructor(obj) {
3388
- const { x, y } = obj;
3389
- this.x = x;
3390
- this.y = y;
3391
- }
3392
- }
3393
-
3394
- /**
3395
- * 유니온 블록 정보
3396
- */
3397
- class UnionRaiderBlockDto {
3398
- /**
3399
- * 블록 모양 (전사, 마법사, 궁수, 도적, 해적, 메이플m, 하이브리드)
3400
- */
3401
- blockType;
3402
- /**
3403
- * 블록 해당 캐릭터 직업
3404
- */
3405
- blockClass;
3406
- /**
3407
- * 블록 해당 캐릭터 레벨
3408
- */
3409
- blockLevel;
3410
- /**
3411
- * 블록 기준점 좌표
3412
- */
3413
- blockControlPoint;
3414
- /**
3415
- * 블록이 차지하고 있는 영역 좌표들 (null:미 배치 시)
3416
- */
3417
- blockPosition;
3418
- constructor(obj) {
3419
- const { block_type, block_class, block_level, block_control_point, block_position, } = obj;
3420
- this.blockType = block_type;
3421
- this.blockClass = block_class;
3422
- this.blockLevel = block_level;
3423
- this.blockControlPoint = new UnionRaiderBlockControlPointDto(block_control_point);
3424
- this.blockPosition = block_position
3425
- ? block_position.map((position) => new UnionRaiderBlockPositionDto(position))
3426
- : null;
3427
- }
3428
- }
3429
-
3430
- /**
3431
- * 유니온 공격대 배치 정보
3432
- */
3433
- class UnionRaiderInnerStatDto {
3434
- /**
3435
- * 공격대 배치 위치 (11시 방향부터 시계 방향 순서대로 0~7)
3436
- */
3437
- statFieldId;
3438
- /**
3439
- * 해당 지역 점령 효과
3440
- */
3441
- statFieldEffect;
3442
- constructor(obj) {
3443
- const { stat_field_id, stat_field_effect } = obj;
3444
- this.statFieldId = stat_field_id;
3445
- this.statFieldEffect = stat_field_effect;
3446
- }
3447
- }
3448
-
3449
- /**
3450
- * 유니온 공격대 정보
3884
+ * 더 시드 랭킹 응답 정보
3451
3885
  */
3452
- class UnionRaiderDto {
3453
- date;
3454
- /**
3455
- * 유니온 공격대원 효과
3456
- */
3457
- unionRaiderStat;
3458
- /**
3459
- * 유니온 공격대 점령 효과
3460
- */
3461
- unionOccupiedStat;
3462
- /**
3463
- * 유니온 공격대 배치
3464
- */
3465
- unionInnerStat;
3886
+ class TheSeedRankingResponseDto {
3466
3887
  /**
3467
- * 유니온 블록 정보
3888
+ * 시드 랭킹 정보
3468
3889
  */
3469
- unionBlock;
3890
+ ranking;
3470
3891
  constructor(obj) {
3471
- const { date, union_raider_stat, union_occupied_stat, union_inner_stat, union_block, } = obj;
3472
- this.date = new Date(date);
3473
- this.unionRaiderStat = union_raider_stat;
3474
- this.unionOccupiedStat = union_occupied_stat;
3475
- this.unionInnerStat = union_inner_stat.map((stat) => new UnionRaiderInnerStatDto(stat));
3476
- this.unionBlock = union_block.map((block) => new UnionRaiderBlockDto(block));
3892
+ const { ranking } = obj;
3893
+ this.ranking = ranking.map((rank) => new TheSeedRankingDto(rank));
3477
3894
  }
3478
3895
  }
3479
3896
 
@@ -3541,190 +3958,302 @@ class UnionRankingResponseDto {
3541
3958
  }
3542
3959
 
3543
3960
  /**
3544
- * MapleStory OpenAPI error.<br>
3545
- * Please refer to <a href="https://openapi.nexon.com/guide/request-api/">MapleStory API guide</a> for the error details.
3961
+ * 유니온 아티팩트 크리스탈 정보
3546
3962
  */
3547
- class MapleStoryApiError extends Error {
3548
- name = 'MapleStoryApiError';
3549
- errorCode;
3550
- message;
3551
- constructor(errorBody) {
3552
- const { name, message } = errorBody.error;
3553
- super(message);
3554
- this.errorCode = errorMap[name];
3555
- this.message = message;
3963
+ class UnionArtifactCrystalDto {
3964
+ /**
3965
+ * 아티팩트 크리스탈 명
3966
+ */
3967
+ name;
3968
+ /**
3969
+ * 능력치 유효 여부 (0:유효, 1:유효하지 않음)
3970
+ */
3971
+ validityFlag;
3972
+ /**
3973
+ * 능력치 유효 기간(KST)
3974
+ */
3975
+ dateExpire;
3976
+ /**
3977
+ * 아티팩트 크리스탈 등급
3978
+ */
3979
+ level;
3980
+ /**
3981
+ * 아티팩트 크리스탈 첫 번째 옵션 명
3982
+ */
3983
+ crystalOptionName1;
3984
+ /**
3985
+ * 아티팩트 크리스탈 두 번째 옵션 명
3986
+ */
3987
+ crystalOptionName2;
3988
+ /**
3989
+ * 아티팩트 크리스탈 세 번째 옵션 명
3990
+ */
3991
+ crystalOptionName3;
3992
+ constructor(obj) {
3993
+ const { name, validity_flag, date_expire, level, crystal_option_name_1, crystal_option_name_2, crystal_option_name_3, } = obj;
3994
+ this.name = name;
3995
+ this.validityFlag = validity_flag;
3996
+ this.dateExpire = new Date(date_expire);
3997
+ this.level = level;
3998
+ this.crystalOptionName1 = crystal_option_name_1;
3999
+ this.crystalOptionName2 = crystal_option_name_2;
4000
+ this.crystalOptionName3 = crystal_option_name_3;
3556
4001
  }
3557
4002
  }
4003
+
3558
4004
  /**
3559
- * MapleStory OpenAPI error codes.<br>
3560
- * Please refer to <a href="https://openapi.nexon.com/guide/request-api/">MapleStory API guide</a> for the error code details.
4005
+ * 유니온 아티팩트 효과 정보
3561
4006
  */
3562
- exports.MapleStoryApiErrorCode = void 0;
3563
- (function (MapleStoryApiErrorCode) {
3564
- MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00001"] = 0] = "OPENAPI00001";
3565
- MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00002"] = 1] = "OPENAPI00002";
3566
- MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00003"] = 2] = "OPENAPI00003";
3567
- MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00004"] = 3] = "OPENAPI00004";
3568
- MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00005"] = 4] = "OPENAPI00005";
3569
- MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00006"] = 5] = "OPENAPI00006";
3570
- MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00007"] = 6] = "OPENAPI00007";
3571
- })(exports.MapleStoryApiErrorCode || (exports.MapleStoryApiErrorCode = {}));
3572
- const errorMap = {
3573
- ['OPENAPI00001']: exports.MapleStoryApiErrorCode.OPENAPI00001,
3574
- ['OPENAPI00002']: exports.MapleStoryApiErrorCode.OPENAPI00002,
3575
- ['OPENAPI00003']: exports.MapleStoryApiErrorCode.OPENAPI00003,
3576
- ['OPENAPI00004']: exports.MapleStoryApiErrorCode.OPENAPI00004,
3577
- ['OPENAPI00005']: exports.MapleStoryApiErrorCode.OPENAPI00005,
3578
- ['OPENAPI00006']: exports.MapleStoryApiErrorCode.OPENAPI00006,
3579
- ['OPENAPI00007']: exports.MapleStoryApiErrorCode.OPENAPI00007,
3580
- };
4007
+ class UnionArtifactEffectDto {
4008
+ /**
4009
+ * 아티팩트 효과
4010
+ */
4011
+ name;
4012
+ /**
4013
+ * 아티팩트 효과 레벨
4014
+ */
4015
+ level;
4016
+ constructor(obj) {
4017
+ const { name, level } = obj;
4018
+ this.name = name;
4019
+ this.level = level;
4020
+ }
4021
+ }
3581
4022
 
3582
4023
  /**
3583
- * 스타포스 강화 이벤트 정보
4024
+ * 유니온 아티팩트 정보
3584
4025
  */
3585
- class StarforceEventDto {
4026
+ class UnionArtifactDto {
3586
4027
  /**
3587
- * 이벤트 성공 확률
4028
+ * 조회 기준일
3588
4029
  */
3589
- successRate;
4030
+ date;
3590
4031
  /**
3591
- * 이벤트 비용 할인율
4032
+ * 아티팩트 효과 정보
3592
4033
  */
3593
- costDiscountRate;
4034
+ unionArtifactEffect;
3594
4035
  /**
3595
- * 이벤트 강화 수치 가중값
4036
+ * 아티팩트 크리스탈 정보
3596
4037
  */
3597
- plusValue;
4038
+ unionArtifactCrystal;
3598
4039
  /**
3599
- * 이벤트 적용 강화 시도 가능한 n성 범위
4040
+ * 잔여 아티팩트 AP
3600
4041
  */
3601
- starforceEventRange;
4042
+ unionArtifactRemainAp;
3602
4043
  constructor(obj) {
3603
- const { success_rate, cost_discount_rate, plus_value, starforce_event_range, } = obj;
3604
- this.successRate = success_rate;
3605
- this.costDiscountRate = cost_discount_rate;
3606
- this.plusValue = plus_value;
3607
- this.starforceEventRange = starforce_event_range;
4044
+ const { date, union_artifact_effect, union_artifact_crystal, union_artifact_remain_ap, } = obj;
4045
+ this.date = new Date(date);
4046
+ this.unionArtifactEffect = union_artifact_effect.map((effect) => new UnionArtifactEffectDto(effect));
4047
+ this.unionArtifactCrystal = union_artifact_crystal.map((crystal) => new UnionArtifactCrystalDto(crystal));
4048
+ this.unionArtifactRemainAp = union_artifact_remain_ap;
3608
4049
  }
3609
4050
  }
3610
4051
 
3611
4052
  /**
3612
- * 스타포스 히스토리
4053
+ * 유니온 정보
3613
4054
  */
3614
- class StarforceHistoryDto {
4055
+ class UnionDto {
3615
4056
  /**
3616
- *스타포스 히스토리 식별자
4057
+ * 조회 기준일
3617
4058
  */
3618
- id;
4059
+ date;
3619
4060
  /**
3620
- *강화 시도 결과
4061
+ * 유니온 레벨
3621
4062
  */
3622
- itemUpgradeResult;
4063
+ unionLevel;
3623
4064
  /**
3624
- *강화 시도 전 스타포스 수치
4065
+ * 유니온 등급
3625
4066
  */
3626
- beforeStarforceCount;
4067
+ unionGrade;
3627
4068
  /**
3628
- *강화 시도 후 스타포스 수치
4069
+ * 아티팩트 레벨
3629
4070
  */
3630
- afterStarforceCount;
4071
+ unionArtifactLevel;
3631
4072
  /**
3632
- *스타 캐치
4073
+ * 보유 아티팩트 경험치
3633
4074
  */
3634
- starCatchResult;
4075
+ unionArtifactExp;
3635
4076
  /**
3636
- *슈페리얼 장비
4077
+ * 보유 아티팩트 포인트
3637
4078
  */
3638
- superiorItemFlag;
4079
+ unionArtifactPoint;
4080
+ constructor(obj) {
4081
+ const { date, union_level, union_grade, union_artifact_level, union_artifact_exp, union_artifact_point } = obj;
4082
+ this.date = new Date(date);
4083
+ this.unionLevel = union_level;
4084
+ this.unionGrade = union_grade;
4085
+ this.unionArtifactLevel = union_artifact_level;
4086
+ this.unionArtifactExp = union_artifact_exp;
4087
+ this.unionArtifactPoint = union_artifact_point;
4088
+ }
4089
+ }
4090
+
4091
+ /**
4092
+ * 유니온 블록이 차지하고 있는 영역 좌표들
4093
+ */
4094
+ class UnionRaiderBlockPositionDto {
3639
4095
  /**
3640
- *파괴 방지
4096
+ * 블록 X좌표
3641
4097
  */
3642
- destroyDefence;
4098
+ x;
3643
4099
  /**
3644
- *찬스 타임
4100
+ * 블록 Y좌표
3645
4101
  */
3646
- chanceTime;
4102
+ y;
4103
+ constructor(obj) {
4104
+ const { x, y } = obj;
4105
+ this.x = x;
4106
+ this.y = y;
4107
+ }
4108
+ }
4109
+
4110
+ /**
4111
+ * 유니온 블록 기준점 좌표 정보
4112
+ */
4113
+ class UnionRaiderBlockControlPointDto {
3647
4114
  /**
3648
- *파괴 방지 필드 이벤트
4115
+ * 블록 기준점 X좌표
3649
4116
  */
3650
- eventFieldFlag;
4117
+ x;
3651
4118
  /**
3652
- *사용 주문서
4119
+ * 블록 기준점 Y좌표
3653
4120
  */
3654
- upgradeItem;
4121
+ y;
4122
+ constructor(obj) {
4123
+ const { x, y } = obj;
4124
+ this.x = x;
4125
+ this.y = y;
4126
+ }
4127
+ }
4128
+
4129
+ /**
4130
+ * 유니온 블록 정보
4131
+ */
4132
+ class UnionRaiderBlockDto {
3655
4133
  /**
3656
- *프로텍트 실드
4134
+ * 블록 모양 (전사, 마법사, 궁수, 도적, 해적, 메이플m, 하이브리드)
3657
4135
  */
3658
- protectShield;
4136
+ blockType;
3659
4137
  /**
3660
- *보너스 스탯 부여 아이템 여부
4138
+ * 블록 해당 캐릭터 직업
3661
4139
  */
3662
- bonusStatUpgrade;
4140
+ blockClass;
3663
4141
  /**
3664
- *캐릭터
4142
+ * 블록 해당 캐릭터 레벨
3665
4143
  */
3666
- characterName;
4144
+ blockLevel;
3667
4145
  /**
3668
- *월드
4146
+ * 블록 기준점 좌표
3669
4147
  */
3670
- worldName;
4148
+ blockControlPoint;
3671
4149
  /**
3672
- *대상 장비 아이템
4150
+ * 블록이 차지하고 있는 영역 좌표들 (null:미 배치 시)
3673
4151
  */
3674
- targetItem;
4152
+ blockPosition;
4153
+ constructor(obj) {
4154
+ const { block_type, block_class, block_level, block_control_point, block_position, } = obj;
4155
+ this.blockType = block_type;
4156
+ this.blockClass = block_class;
4157
+ this.blockLevel = block_level;
4158
+ this.blockControlPoint = new UnionRaiderBlockControlPointDto(block_control_point);
4159
+ this.blockPosition = block_position
4160
+ ? block_position.map((position) => new UnionRaiderBlockPositionDto(position))
4161
+ : null;
4162
+ }
4163
+ }
4164
+
4165
+ /**
4166
+ * 유니온 공격대 배치 정보
4167
+ */
4168
+ class UnionRaiderInnerStatDto {
3675
4169
  /**
3676
- *강화 일시 (KST)
4170
+ * 공격대 배치 위치 (11시 방향부터 시계 방향 순서대로 0~7)
3677
4171
  */
3678
- dateCreate;
4172
+ statFieldId;
3679
4173
  /**
3680
- * 진행 중인 스타포스 강화 이벤트 정보
4174
+ * 해당 지역 점령 효과
3681
4175
  */
3682
- starforceEventList;
4176
+ statFieldEffect;
3683
4177
  constructor(obj) {
3684
- const { id, item_upgrade_result, before_starforce_count, after_starforce_count, starcatch_result, superior_item_flag, destroy_defence, chance_time, event_field_flag, upgrade_item, protect_shield, bonus_stat_upgrade, character_name, world_name, target_item, date_create, starforce_event_list, } = obj;
3685
- this.id = id;
3686
- this.itemUpgradeResult = item_upgrade_result;
3687
- this.beforeStarforceCount = before_starforce_count;
3688
- this.afterStarforceCount = after_starforce_count;
3689
- this.starCatchResult = starcatch_result;
3690
- this.superiorItemFlag = superior_item_flag;
3691
- this.destroyDefence = destroy_defence;
3692
- this.chanceTime = chance_time;
3693
- this.eventFieldFlag = event_field_flag;
3694
- this.upgradeItem = upgrade_item;
3695
- this.protectShield = protect_shield;
3696
- this.bonusStatUpgrade = bonus_stat_upgrade;
3697
- this.characterName = character_name;
3698
- this.worldName = world_name;
3699
- this.targetItem = target_item;
3700
- this.dateCreate = new Date(date_create);
3701
- this.starforceEventList = starforce_event_list.map((event) => new StarforceEventDto(event));
4178
+ const { stat_field_id, stat_field_effect } = obj;
4179
+ this.statFieldId = stat_field_id;
4180
+ this.statFieldEffect = stat_field_effect;
3702
4181
  }
3703
4182
  }
3704
4183
 
3705
4184
  /**
3706
- * 스타포스 히스토리 응답 정보
4185
+ * 유니온 공격대 정보
3707
4186
  */
3708
- class StarforceHistoryResponseDto {
4187
+ class UnionRaiderDto {
4188
+ date;
3709
4189
  /**
3710
- * 결과
4190
+ * 유니온 공격대원 효과
3711
4191
  */
3712
- count;
4192
+ unionRaiderStat;
3713
4193
  /**
3714
- * 스타포스 히스토리
4194
+ * 유니온 공격대 점령 효과
3715
4195
  */
3716
- starforceHistory;
4196
+ unionOccupiedStat;
3717
4197
  /**
3718
- * 페이징 처리를 위한 cursor
4198
+ * 유니온 공격대 배치
4199
+ */
4200
+ unionInnerStat;
4201
+ /**
4202
+ * 유니온 블록 정보
3719
4203
  */
3720
- nextCursor;
4204
+ unionBlock;
3721
4205
  constructor(obj) {
3722
- const { count, starforce_history, next_cursor } = obj;
3723
- this.count = count;
3724
- this.starforceHistory = starforce_history.map((origin) => new StarforceHistoryDto(origin));
3725
- this.nextCursor = next_cursor;
4206
+ const { date, union_raider_stat, union_occupied_stat, union_inner_stat, union_block, } = obj;
4207
+ this.date = new Date(date);
4208
+ this.unionRaiderStat = union_raider_stat;
4209
+ this.unionOccupiedStat = union_occupied_stat;
4210
+ this.unionInnerStat = union_inner_stat.map((stat) => new UnionRaiderInnerStatDto(stat));
4211
+ this.unionBlock = union_block.map((block) => new UnionRaiderBlockDto(block));
4212
+ }
4213
+ }
4214
+
4215
+ /**
4216
+ * MapleStory OpenAPI error.<br>
4217
+ * Please refer to <a href="https://openapi.nexon.com/guide/request-api/">MapleStory API guide</a> for the error details.
4218
+ */
4219
+ class MapleStoryApiError extends Error {
4220
+ name = 'MapleStoryApiError';
4221
+ errorCode;
4222
+ message;
4223
+ constructor(errorBody) {
4224
+ const { name, message } = errorBody.error;
4225
+ super(message);
4226
+ this.errorCode = errorMap[name];
4227
+ this.message = message;
3726
4228
  }
3727
4229
  }
4230
+ /**
4231
+ * MapleStory OpenAPI error codes.<br>
4232
+ * Please refer to <a href="https://openapi.nexon.com/guide/request-api/">MapleStory API guide</a> for the error code details.
4233
+ */
4234
+ exports.MapleStoryApiErrorCode = void 0;
4235
+ (function (MapleStoryApiErrorCode) {
4236
+ MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00001"] = 0] = "OPENAPI00001";
4237
+ MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00002"] = 1] = "OPENAPI00002";
4238
+ MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00003"] = 2] = "OPENAPI00003";
4239
+ MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00004"] = 3] = "OPENAPI00004";
4240
+ MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00005"] = 4] = "OPENAPI00005";
4241
+ MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00006"] = 5] = "OPENAPI00006";
4242
+ MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00007"] = 6] = "OPENAPI00007";
4243
+ MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00009"] = 7] = "OPENAPI00009";
4244
+ MapleStoryApiErrorCode[MapleStoryApiErrorCode["OPENAPI00010"] = 8] = "OPENAPI00010";
4245
+ })(exports.MapleStoryApiErrorCode || (exports.MapleStoryApiErrorCode = {}));
4246
+ const errorMap = {
4247
+ ['OPENAPI00001']: exports.MapleStoryApiErrorCode.OPENAPI00001,
4248
+ ['OPENAPI00002']: exports.MapleStoryApiErrorCode.OPENAPI00002,
4249
+ ['OPENAPI00003']: exports.MapleStoryApiErrorCode.OPENAPI00003,
4250
+ ['OPENAPI00004']: exports.MapleStoryApiErrorCode.OPENAPI00004,
4251
+ ['OPENAPI00005']: exports.MapleStoryApiErrorCode.OPENAPI00005,
4252
+ ['OPENAPI00006']: exports.MapleStoryApiErrorCode.OPENAPI00006,
4253
+ ['OPENAPI00007']: exports.MapleStoryApiErrorCode.OPENAPI00007,
4254
+ ['OPENAPI00009']: exports.MapleStoryApiErrorCode.OPENAPI00009,
4255
+ ['OPENAPI00010']: exports.MapleStoryApiErrorCode.OPENAPI00010,
4256
+ };
3728
4257
 
3729
4258
  dayjs__default["default"].extend(timezone);
3730
4259
  dayjs__default["default"].extend(utc);
@@ -3734,12 +4263,32 @@ dayjs__default["default"].extend(utc);
3734
4263
  */
3735
4264
  class MapleStoryApi {
3736
4265
  apiKey;
4266
+ client;
3737
4267
  static BASE_URL = 'https://open.api.nexon.com/';
4268
+ static DEFAULT_TIMEOUT = 5000;
3738
4269
  static kstOffset = 540;
3739
- timeout;
4270
+ get timeout() {
4271
+ return this.client.defaults.timeout;
4272
+ }
4273
+ set timeout(value) {
4274
+ this.client.defaults.timeout = value;
4275
+ }
3740
4276
  constructor(apiKey) {
3741
4277
  this.apiKey = apiKey;
3742
- this.timeout = 5000;
4278
+ this.client = axios__default["default"].create({
4279
+ baseURL: MapleStoryApi.BASE_URL,
4280
+ timeout: MapleStoryApi.DEFAULT_TIMEOUT,
4281
+ headers: {
4282
+ 'x-nxopen-api-key': this.apiKey,
4283
+ },
4284
+ });
4285
+ this.client.interceptors.response.use((response) => response, (error) => {
4286
+ if (error instanceof axios.AxiosError) {
4287
+ const errorBody = error.response.data;
4288
+ throw new MapleStoryApiError(errorBody);
4289
+ }
4290
+ throw error;
4291
+ });
3743
4292
  }
3744
4293
  //#region 캐릭터 정보 조회
3745
4294
  /**
@@ -3751,25 +4300,13 @@ class MapleStoryApi {
3751
4300
  * @param characterName 캐릭터 명
3752
4301
  */
3753
4302
  async getCharacter(characterName) {
3754
- try {
3755
- const path = 'maplestory/v1/id';
3756
- const response = await axios__default["default"].get(path, {
3757
- baseURL: MapleStoryApi.BASE_URL,
3758
- timeout: this.timeout,
3759
- headers: this.buildHeaders(),
3760
- params: {
3761
- character_name: characterName,
3762
- },
3763
- });
3764
- return new CharacterDto(response.data);
3765
- }
3766
- catch (e) {
3767
- if (e instanceof axios.AxiosError) {
3768
- const errorBody = e.response.data;
3769
- throw new MapleStoryApiError(errorBody);
3770
- }
3771
- throw e;
3772
- }
4303
+ const path = 'maplestory/v1/id';
4304
+ const { data } = await this.client.get(path, {
4305
+ params: {
4306
+ character_name: characterName,
4307
+ },
4308
+ });
4309
+ return new CharacterDto(data);
3773
4310
  }
3774
4311
  /**
3775
4312
  * 기본 정보를 조회합니다.
@@ -3783,8 +4320,9 @@ class MapleStoryApi {
3783
4320
  async getCharacterBasic(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
3784
4321
  hour: 1,
3785
4322
  minute: 0,
3786
- dateOffset: 1
4323
+ dateOffset: 1,
3787
4324
  })) {
4325
+ const path = 'maplestory/v1/character/basic';
3788
4326
  const query = {
3789
4327
  ocid: ocid,
3790
4328
  date: MapleStoryApi.toDateString({
@@ -3793,23 +4331,10 @@ class MapleStoryApi {
3793
4331
  day: 21,
3794
4332
  }, dateOptions),
3795
4333
  };
3796
- try {
3797
- const path = 'maplestory/v1/character/basic';
3798
- const response = await axios__default["default"].get(path, {
3799
- baseURL: MapleStoryApi.BASE_URL,
3800
- timeout: this.timeout,
3801
- headers: this.buildHeaders(),
3802
- params: query,
3803
- });
3804
- return new CharacterBasicDto(response.data);
3805
- }
3806
- catch (e) {
3807
- if (e instanceof axios.AxiosError) {
3808
- const errorBody = e.response.data;
3809
- throw new MapleStoryApiError(errorBody);
3810
- }
3811
- throw e;
3812
- }
4334
+ const { data } = await this.client.get(path, {
4335
+ params: query,
4336
+ });
4337
+ return new CharacterBasicDto(data);
3813
4338
  }
3814
4339
  /**
3815
4340
  * 인기도 정보를 조회합니다.
@@ -3823,8 +4348,9 @@ class MapleStoryApi {
3823
4348
  async getCharacterPopularity(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
3824
4349
  hour: 1,
3825
4350
  minute: 0,
3826
- dateOffset: 1
4351
+ dateOffset: 1,
3827
4352
  })) {
4353
+ const path = 'maplestory/v1/character/popularity';
3828
4354
  const query = {
3829
4355
  ocid: ocid,
3830
4356
  date: MapleStoryApi.toDateString({
@@ -3833,23 +4359,10 @@ class MapleStoryApi {
3833
4359
  day: 21,
3834
4360
  }, dateOptions),
3835
4361
  };
3836
- try {
3837
- const path = 'maplestory/v1/character/popularity';
3838
- const response = await axios__default["default"].get(path, {
3839
- baseURL: MapleStoryApi.BASE_URL,
3840
- timeout: this.timeout,
3841
- headers: this.buildHeaders(),
3842
- params: query,
3843
- });
3844
- return new CharacterPopularityDto(response.data);
3845
- }
3846
- catch (e) {
3847
- if (e instanceof axios.AxiosError) {
3848
- const errorBody = e.response.data;
3849
- throw new MapleStoryApiError(errorBody);
3850
- }
3851
- throw e;
3852
- }
4362
+ const { data } = await this.client.get(path, {
4363
+ params: query,
4364
+ });
4365
+ return new CharacterPopularityDto(data);
3853
4366
  }
3854
4367
  /**
3855
4368
  * 종합 능력치 정보를 조회합니다.
@@ -3863,8 +4376,9 @@ class MapleStoryApi {
3863
4376
  async getCharacterStat(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
3864
4377
  hour: 1,
3865
4378
  minute: 0,
3866
- dateOffset: 1
4379
+ dateOffset: 1,
3867
4380
  })) {
4381
+ const path = 'maplestory/v1/character/stat';
3868
4382
  const query = {
3869
4383
  ocid: ocid,
3870
4384
  date: MapleStoryApi.toDateString({
@@ -3873,23 +4387,10 @@ class MapleStoryApi {
3873
4387
  day: 21,
3874
4388
  }, dateOptions),
3875
4389
  };
3876
- try {
3877
- const path = 'maplestory/v1/character/stat';
3878
- const response = await axios__default["default"].get(path, {
3879
- baseURL: MapleStoryApi.BASE_URL,
3880
- timeout: this.timeout,
3881
- headers: this.buildHeaders(),
3882
- params: query,
3883
- });
3884
- return new CharacterStatDto(response.data);
3885
- }
3886
- catch (e) {
3887
- if (e instanceof axios.AxiosError) {
3888
- const errorBody = e.response.data;
3889
- throw new MapleStoryApiError(errorBody);
3890
- }
3891
- throw e;
3892
- }
4390
+ const { data } = await this.client.get(path, {
4391
+ params: query,
4392
+ });
4393
+ return new CharacterStatDto(data);
3893
4394
  }
3894
4395
  /**
3895
4396
  * 하이퍼스탯 정보를 조회합니다.
@@ -3903,8 +4404,9 @@ class MapleStoryApi {
3903
4404
  async getCharacterHyperStat(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
3904
4405
  hour: 1,
3905
4406
  minute: 0,
3906
- dateOffset: 1
4407
+ dateOffset: 1,
3907
4408
  })) {
4409
+ const path = 'maplestory/v1/character/hyper-stat';
3908
4410
  const query = {
3909
4411
  ocid: ocid,
3910
4412
  date: MapleStoryApi.toDateString({
@@ -3913,23 +4415,10 @@ class MapleStoryApi {
3913
4415
  day: 21,
3914
4416
  }, dateOptions),
3915
4417
  };
3916
- try {
3917
- const path = 'maplestory/v1/character/hyper-stat';
3918
- const response = await axios__default["default"].get(path, {
3919
- baseURL: MapleStoryApi.BASE_URL,
3920
- timeout: this.timeout,
3921
- headers: this.buildHeaders(),
3922
- params: query,
3923
- });
3924
- return new CharacterHyperStatDto(response.data);
3925
- }
3926
- catch (e) {
3927
- if (e instanceof axios.AxiosError) {
3928
- const errorBody = e.response.data;
3929
- throw new MapleStoryApiError(errorBody);
3930
- }
3931
- throw e;
3932
- }
4418
+ const { data } = await this.client.get(path, {
4419
+ params: query,
4420
+ });
4421
+ return new CharacterHyperStatDto(data);
3933
4422
  }
3934
4423
  /**
3935
4424
  * 성향 정보를 조회합니다.
@@ -3943,8 +4432,9 @@ class MapleStoryApi {
3943
4432
  async getCharacterPropensity(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
3944
4433
  hour: 1,
3945
4434
  minute: 0,
3946
- dateOffset: 1
4435
+ dateOffset: 1,
3947
4436
  })) {
4437
+ const path = 'maplestory/v1/character/propensity';
3948
4438
  const query = {
3949
4439
  ocid: ocid,
3950
4440
  date: MapleStoryApi.toDateString({
@@ -3953,23 +4443,10 @@ class MapleStoryApi {
3953
4443
  day: 21,
3954
4444
  }, dateOptions),
3955
4445
  };
3956
- try {
3957
- const path = 'maplestory/v1/character/propensity';
3958
- const response = await axios__default["default"].get(path, {
3959
- baseURL: MapleStoryApi.BASE_URL,
3960
- timeout: this.timeout,
3961
- headers: this.buildHeaders(),
3962
- params: query,
3963
- });
3964
- return new CharacterPropensityDto(response.data);
3965
- }
3966
- catch (e) {
3967
- if (e instanceof axios.AxiosError) {
3968
- const errorBody = e.response.data;
3969
- throw new MapleStoryApiError(errorBody);
3970
- }
3971
- throw e;
3972
- }
4446
+ const { data } = await this.client.get(path, {
4447
+ params: query,
4448
+ });
4449
+ return new CharacterPropensityDto(data);
3973
4450
  }
3974
4451
  /**
3975
4452
  * 어빌리티 정보를 조회합니다.
@@ -3983,8 +4460,9 @@ class MapleStoryApi {
3983
4460
  async getCharacterAbility(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
3984
4461
  hour: 1,
3985
4462
  minute: 0,
3986
- dateOffset: 1
4463
+ dateOffset: 1,
3987
4464
  })) {
4465
+ const path = 'maplestory/v1/character/ability';
3988
4466
  const query = {
3989
4467
  ocid: ocid,
3990
4468
  date: MapleStoryApi.toDateString({
@@ -3993,23 +4471,10 @@ class MapleStoryApi {
3993
4471
  day: 21,
3994
4472
  }, dateOptions),
3995
4473
  };
3996
- try {
3997
- const path = 'maplestory/v1/character/ability';
3998
- const response = await axios__default["default"].get(path, {
3999
- baseURL: MapleStoryApi.BASE_URL,
4000
- timeout: this.timeout,
4001
- headers: this.buildHeaders(),
4002
- params: query,
4003
- });
4004
- return new CharacterAbilityDto(response.data);
4005
- }
4006
- catch (e) {
4007
- if (e instanceof axios.AxiosError) {
4008
- const errorBody = e.response.data;
4009
- throw new MapleStoryApiError(errorBody);
4010
- }
4011
- throw e;
4012
- }
4474
+ const { data } = await this.client.get(path, {
4475
+ params: query,
4476
+ });
4477
+ return new CharacterAbilityDto(data);
4013
4478
  }
4014
4479
  /**
4015
4480
  * 장착한 장비 중 캐시 장비를 제외한 나머지 장비 정보를 조회합니다.
@@ -4023,8 +4488,9 @@ class MapleStoryApi {
4023
4488
  async getCharacterItemEquipment(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4024
4489
  hour: 1,
4025
4490
  minute: 0,
4026
- dateOffset: 1
4491
+ dateOffset: 1,
4027
4492
  })) {
4493
+ const path = 'maplestory/v1/character/item-equipment';
4028
4494
  const query = {
4029
4495
  ocid: ocid,
4030
4496
  date: MapleStoryApi.toDateString({
@@ -4033,23 +4499,10 @@ class MapleStoryApi {
4033
4499
  day: 21,
4034
4500
  }, dateOptions),
4035
4501
  };
4036
- try {
4037
- const path = 'maplestory/v1/character/item-equipment';
4038
- const response = await axios__default["default"].get(path, {
4039
- baseURL: MapleStoryApi.BASE_URL,
4040
- timeout: this.timeout,
4041
- headers: this.buildHeaders(),
4042
- params: query,
4043
- });
4044
- return new CharacterItemEquipmentDto(response.data);
4045
- }
4046
- catch (e) {
4047
- if (e instanceof axios.AxiosError) {
4048
- const errorBody = e.response.data;
4049
- throw new MapleStoryApiError(errorBody);
4050
- }
4051
- throw e;
4052
- }
4502
+ const { data } = await this.client.get(path, {
4503
+ params: query,
4504
+ });
4505
+ return new CharacterItemEquipmentDto(data);
4053
4506
  }
4054
4507
  /**
4055
4508
  * 장착한 캐시 장비 정보를 조회합니다.
@@ -4063,8 +4516,9 @@ class MapleStoryApi {
4063
4516
  async getCharacterCashItemEquipment(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4064
4517
  hour: 1,
4065
4518
  minute: 0,
4066
- dateOffset: 1
4519
+ dateOffset: 1,
4067
4520
  })) {
4521
+ const path = 'maplestory/v1/character/cashitem-equipment';
4068
4522
  const query = {
4069
4523
  ocid: ocid,
4070
4524
  date: MapleStoryApi.toDateString({
@@ -4073,23 +4527,10 @@ class MapleStoryApi {
4073
4527
  day: 21,
4074
4528
  }, dateOptions),
4075
4529
  };
4076
- try {
4077
- const path = 'maplestory/v1/character/cashitem-equipment';
4078
- const response = await axios__default["default"].get(path, {
4079
- baseURL: MapleStoryApi.BASE_URL,
4080
- timeout: this.timeout,
4081
- headers: this.buildHeaders(),
4082
- params: query,
4083
- });
4084
- return new CharacterCashItemEquipmentDto(response.data);
4085
- }
4086
- catch (e) {
4087
- if (e instanceof axios.AxiosError) {
4088
- const errorBody = e.response.data;
4089
- throw new MapleStoryApiError(errorBody);
4090
- }
4091
- throw e;
4092
- }
4530
+ const { data } = await this.client.get(path, {
4531
+ params: query,
4532
+ });
4533
+ return new CharacterCashItemEquipmentDto(data);
4093
4534
  }
4094
4535
  /**
4095
4536
  * 장착한 심볼 정보를 조회합니다.
@@ -4103,8 +4544,9 @@ class MapleStoryApi {
4103
4544
  async getCharacterSymbolEquipment(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4104
4545
  hour: 1,
4105
4546
  minute: 0,
4106
- dateOffset: 1
4547
+ dateOffset: 1,
4107
4548
  })) {
4549
+ const path = 'maplestory/v1/character/symbol-equipment';
4108
4550
  const query = {
4109
4551
  ocid: ocid,
4110
4552
  date: MapleStoryApi.toDateString({
@@ -4113,23 +4555,10 @@ class MapleStoryApi {
4113
4555
  day: 21,
4114
4556
  }, dateOptions),
4115
4557
  };
4116
- try {
4117
- const path = 'maplestory/v1/character/symbol-equipment';
4118
- const response = await axios__default["default"].get(path, {
4119
- baseURL: MapleStoryApi.BASE_URL,
4120
- timeout: this.timeout,
4121
- headers: this.buildHeaders(),
4122
- params: query,
4123
- });
4124
- return new CharacterSymbolEquipmentDto(response.data);
4125
- }
4126
- catch (e) {
4127
- if (e instanceof axios.AxiosError) {
4128
- const errorBody = e.response.data;
4129
- throw new MapleStoryApiError(errorBody);
4130
- }
4131
- throw e;
4132
- }
4558
+ const { data } = await this.client.get(path, {
4559
+ params: query,
4560
+ });
4561
+ return new CharacterSymbolEquipmentDto(data);
4133
4562
  }
4134
4563
  /**
4135
4564
  * 적용받고 있는 세트 효과 정보를 조회합니다.
@@ -4143,8 +4572,9 @@ class MapleStoryApi {
4143
4572
  async getCharacterSetEffect(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4144
4573
  hour: 1,
4145
4574
  minute: 0,
4146
- dateOffset: 1
4575
+ dateOffset: 1,
4147
4576
  })) {
4577
+ const path = 'maplestory/v1/character/set-effect';
4148
4578
  const query = {
4149
4579
  ocid: ocid,
4150
4580
  date: MapleStoryApi.toDateString({
@@ -4153,23 +4583,10 @@ class MapleStoryApi {
4153
4583
  day: 21,
4154
4584
  }, dateOptions),
4155
4585
  };
4156
- try {
4157
- const path = 'maplestory/v1/character/set-effect';
4158
- const response = await axios__default["default"].get(path, {
4159
- baseURL: MapleStoryApi.BASE_URL,
4160
- timeout: this.timeout,
4161
- headers: this.buildHeaders(),
4162
- params: query,
4163
- });
4164
- return new CharacterSetEffectDto(response.data);
4165
- }
4166
- catch (e) {
4167
- if (e instanceof axios.AxiosError) {
4168
- const errorBody = e.response.data;
4169
- throw new MapleStoryApiError(errorBody);
4170
- }
4171
- throw e;
4172
- }
4586
+ const { data } = await this.client.get(path, {
4587
+ params: query,
4588
+ });
4589
+ return new CharacterSetEffectDto(data);
4173
4590
  }
4174
4591
  /**
4175
4592
  * 장착 중인 헤어, 성형, 피부 정보를 조회합니다.
@@ -4183,8 +4600,9 @@ class MapleStoryApi {
4183
4600
  async getCharacterBeautyEquipment(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4184
4601
  hour: 1,
4185
4602
  minute: 0,
4186
- dateOffset: 1
4603
+ dateOffset: 1,
4187
4604
  })) {
4605
+ const path = 'maplestory/v1/character/beauty-equipment';
4188
4606
  const query = {
4189
4607
  ocid: ocid,
4190
4608
  date: MapleStoryApi.toDateString({
@@ -4193,23 +4611,10 @@ class MapleStoryApi {
4193
4611
  day: 21,
4194
4612
  }, dateOptions),
4195
4613
  };
4196
- try {
4197
- const path = 'maplestory/v1/character/beauty-equipment';
4198
- const response = await axios__default["default"].get(path, {
4199
- baseURL: MapleStoryApi.BASE_URL,
4200
- timeout: this.timeout,
4201
- headers: this.buildHeaders(),
4202
- params: query,
4203
- });
4204
- return new CharacterBeautyEquipmentDto(response.data);
4205
- }
4206
- catch (e) {
4207
- if (e instanceof axios.AxiosError) {
4208
- const errorBody = e.response.data;
4209
- throw new MapleStoryApiError(errorBody);
4210
- }
4211
- throw e;
4212
- }
4614
+ const { data } = await this.client.get(path, {
4615
+ params: query,
4616
+ });
4617
+ return new CharacterBeautyEquipmentDto(data);
4213
4618
  }
4214
4619
  /**
4215
4620
  * 장착한 안드로이드 정보를 조회합니다.
@@ -4223,8 +4628,9 @@ class MapleStoryApi {
4223
4628
  async getCharacterAndroidEquipment(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4224
4629
  hour: 1,
4225
4630
  minute: 0,
4226
- dateOffset: 1
4631
+ dateOffset: 1,
4227
4632
  })) {
4633
+ const path = 'maplestory/v1/character/android-equipment';
4228
4634
  const query = {
4229
4635
  ocid: ocid,
4230
4636
  date: MapleStoryApi.toDateString({
@@ -4233,23 +4639,10 @@ class MapleStoryApi {
4233
4639
  day: 21,
4234
4640
  }, dateOptions),
4235
4641
  };
4236
- try {
4237
- const path = 'maplestory/v1/character/android-equipment';
4238
- const response = await axios__default["default"].get(path, {
4239
- baseURL: MapleStoryApi.BASE_URL,
4240
- timeout: this.timeout,
4241
- headers: this.buildHeaders(),
4242
- params: query,
4243
- });
4244
- return new CharacterAndroidEquipmentDto(response.data);
4245
- }
4246
- catch (e) {
4247
- if (e instanceof axios.AxiosError) {
4248
- const errorBody = e.response.data;
4249
- throw new MapleStoryApiError(errorBody);
4250
- }
4251
- throw e;
4252
- }
4642
+ const { data } = await this.client.get(path, {
4643
+ params: query,
4644
+ });
4645
+ return new CharacterAndroidEquipmentDto(data);
4253
4646
  }
4254
4647
  /**
4255
4648
  * 장착한 펫 및 펫 스킬, 장비 정보를 조회합니다.
@@ -4263,8 +4656,9 @@ class MapleStoryApi {
4263
4656
  async getCharacterPetEquipment(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4264
4657
  hour: 1,
4265
4658
  minute: 0,
4266
- dateOffset: 1
4659
+ dateOffset: 1,
4267
4660
  })) {
4661
+ const path = 'maplestory/v1/character/pet-equipment';
4268
4662
  const query = {
4269
4663
  ocid: ocid,
4270
4664
  date: MapleStoryApi.toDateString({
@@ -4273,23 +4667,10 @@ class MapleStoryApi {
4273
4667
  day: 21,
4274
4668
  }, dateOptions),
4275
4669
  };
4276
- try {
4277
- const path = 'maplestory/v1/character/pet-equipment';
4278
- const response = await axios__default["default"].get(path, {
4279
- baseURL: MapleStoryApi.BASE_URL,
4280
- timeout: this.timeout,
4281
- headers: this.buildHeaders(),
4282
- params: query,
4283
- });
4284
- return new CharacterPetEquipmentDto(response.data);
4285
- }
4286
- catch (e) {
4287
- if (e instanceof axios.AxiosError) {
4288
- const errorBody = e.response.data;
4289
- throw new MapleStoryApiError(errorBody);
4290
- }
4291
- throw e;
4292
- }
4670
+ const { data } = await this.client.get(path, {
4671
+ params: query,
4672
+ });
4673
+ return new CharacterPetEquipmentDto(data);
4293
4674
  }
4294
4675
  /**
4295
4676
  * 캐릭터 스킬과 하이퍼 스킬 정보를 조회합니다.
@@ -4315,8 +4696,9 @@ class MapleStoryApi {
4315
4696
  async getCharacterSkill(ocid, characterSkillGrade, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4316
4697
  hour: 1,
4317
4698
  minute: 0,
4318
- dateOffset: 1
4699
+ dateOffset: 1,
4319
4700
  })) {
4701
+ const path = 'maplestory/v1/character/skill';
4320
4702
  const query = {
4321
4703
  ocid: ocid,
4322
4704
  character_skill_grade: characterSkillGrade,
@@ -4326,23 +4708,10 @@ class MapleStoryApi {
4326
4708
  day: 21,
4327
4709
  }, dateOptions),
4328
4710
  };
4329
- try {
4330
- const path = 'maplestory/v1/character/skill';
4331
- const response = await axios__default["default"].get(path, {
4332
- baseURL: MapleStoryApi.BASE_URL,
4333
- timeout: this.timeout,
4334
- headers: this.buildHeaders(),
4335
- params: query,
4336
- });
4337
- return new CharacterSkillDto(response.data);
4338
- }
4339
- catch (e) {
4340
- if (e instanceof axios.AxiosError) {
4341
- const errorBody = e.response.data;
4342
- throw new MapleStoryApiError(errorBody);
4343
- }
4344
- throw e;
4345
- }
4711
+ const { data } = await this.client.get(path, {
4712
+ params: query,
4713
+ });
4714
+ return new CharacterSkillDto(data);
4346
4715
  }
4347
4716
  /**
4348
4717
  * 장착 링크 스킬 정보를 조회합니다.
@@ -4356,8 +4725,9 @@ class MapleStoryApi {
4356
4725
  async getCharacterLinkSkill(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4357
4726
  hour: 1,
4358
4727
  minute: 0,
4359
- dateOffset: 1
4728
+ dateOffset: 1,
4360
4729
  })) {
4730
+ const path = 'maplestory/v1/character/link-skill';
4361
4731
  const query = {
4362
4732
  ocid: ocid,
4363
4733
  date: MapleStoryApi.toDateString({
@@ -4366,23 +4736,10 @@ class MapleStoryApi {
4366
4736
  day: 21,
4367
4737
  }, dateOptions),
4368
4738
  };
4369
- try {
4370
- const path = 'maplestory/v1/character/link-skill';
4371
- const response = await axios__default["default"].get(path, {
4372
- baseURL: MapleStoryApi.BASE_URL,
4373
- timeout: this.timeout,
4374
- headers: this.buildHeaders(),
4375
- params: query,
4376
- });
4377
- return new CharacterLinkSkillDto(response.data);
4378
- }
4379
- catch (e) {
4380
- if (e instanceof axios.AxiosError) {
4381
- const errorBody = e.response.data;
4382
- throw new MapleStoryApiError(errorBody);
4383
- }
4384
- throw e;
4385
- }
4739
+ const { data } = await this.client.get(path, {
4740
+ params: query,
4741
+ });
4742
+ return new CharacterLinkSkillDto(data);
4386
4743
  }
4387
4744
  /**
4388
4745
  * V매트릭스 슬롯 정보와 장착한 V코어 정보를 조회합니다.
@@ -4396,8 +4753,9 @@ class MapleStoryApi {
4396
4753
  async getCharacterVMatrix(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4397
4754
  hour: 1,
4398
4755
  minute: 0,
4399
- dateOffset: 1
4756
+ dateOffset: 1,
4400
4757
  })) {
4758
+ const path = 'maplestory/v1/character/vmatrix';
4401
4759
  const query = {
4402
4760
  ocid: ocid,
4403
4761
  date: MapleStoryApi.toDateString({
@@ -4406,23 +4764,10 @@ class MapleStoryApi {
4406
4764
  day: 21,
4407
4765
  }, dateOptions),
4408
4766
  };
4409
- try {
4410
- const path = 'maplestory/v1/character/vmatrix';
4411
- const response = await axios__default["default"].get(path, {
4412
- baseURL: MapleStoryApi.BASE_URL,
4413
- timeout: this.timeout,
4414
- headers: this.buildHeaders(),
4415
- params: query,
4416
- });
4417
- return new CharacterVMatrixDto(response.data);
4418
- }
4419
- catch (e) {
4420
- if (e instanceof axios.AxiosError) {
4421
- const errorBody = e.response.data;
4422
- throw new MapleStoryApiError(errorBody);
4423
- }
4424
- throw e;
4425
- }
4767
+ const { data } = await this.client.get(path, {
4768
+ params: query,
4769
+ });
4770
+ return new CharacterVMatrixDto(data);
4426
4771
  }
4427
4772
  /**
4428
4773
  * HEXA 매트릭스에 장착한 HEXA 코어 정보를 조회합니다.
@@ -4436,8 +4781,9 @@ class MapleStoryApi {
4436
4781
  async getCharacterHexaMatrix(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4437
4782
  hour: 1,
4438
4783
  minute: 0,
4439
- dateOffset: 1
4784
+ dateOffset: 1,
4440
4785
  })) {
4786
+ const path = 'maplestory/v1/character/hexamatrix';
4441
4787
  const query = {
4442
4788
  ocid: ocid,
4443
4789
  date: MapleStoryApi.toDateString({
@@ -4446,23 +4792,10 @@ class MapleStoryApi {
4446
4792
  day: 21,
4447
4793
  }, dateOptions),
4448
4794
  };
4449
- try {
4450
- const path = 'maplestory/v1/character/hexamatrix';
4451
- const response = await axios__default["default"].get(path, {
4452
- baseURL: MapleStoryApi.BASE_URL,
4453
- timeout: this.timeout,
4454
- headers: this.buildHeaders(),
4455
- params: query,
4456
- });
4457
- return new CharacterHexaMatrixDto(response.data);
4458
- }
4459
- catch (e) {
4460
- if (e instanceof axios.AxiosError) {
4461
- const errorBody = e.response.data;
4462
- throw new MapleStoryApiError(errorBody);
4463
- }
4464
- throw e;
4465
- }
4795
+ const { data } = await this.client.get(path, {
4796
+ params: query,
4797
+ });
4798
+ return new CharacterHexaMatrixDto(data);
4466
4799
  }
4467
4800
  /**
4468
4801
  * HEXA 매트릭스에 설정한 HEXA 스탯 정보를 조회합니다.
@@ -4476,8 +4809,9 @@ class MapleStoryApi {
4476
4809
  async getCharacterHexaMatrixStat(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4477
4810
  hour: 1,
4478
4811
  minute: 0,
4479
- dateOffset: 1
4812
+ dateOffset: 1,
4480
4813
  })) {
4814
+ const path = 'maplestory/v1/character/hexamatrix-stat';
4481
4815
  const query = {
4482
4816
  ocid: ocid,
4483
4817
  date: MapleStoryApi.toDateString({
@@ -4486,23 +4820,10 @@ class MapleStoryApi {
4486
4820
  day: 21,
4487
4821
  }, dateOptions),
4488
4822
  };
4489
- try {
4490
- const path = 'maplestory/v1/character/hexamatrix-stat';
4491
- const response = await axios__default["default"].get(path, {
4492
- baseURL: MapleStoryApi.BASE_URL,
4493
- timeout: this.timeout,
4494
- headers: this.buildHeaders(),
4495
- params: query,
4496
- });
4497
- return new CharacterHexaMatrixStatDto(response.data);
4498
- }
4499
- catch (e) {
4500
- if (e instanceof axios.AxiosError) {
4501
- const errorBody = e.response.data;
4502
- throw new MapleStoryApiError(errorBody);
4503
- }
4504
- throw e;
4505
- }
4823
+ const { data } = await this.client.get(path, {
4824
+ params: query,
4825
+ });
4826
+ return new CharacterHexaMatrixStatDto(data);
4506
4827
  }
4507
4828
  /**
4508
4829
  * 캐릭터 무릉도장 최고 기록 정보를 조회합니다.
@@ -4516,8 +4837,9 @@ class MapleStoryApi {
4516
4837
  async getCharacterDojang(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4517
4838
  hour: 1,
4518
4839
  minute: 0,
4519
- dateOffset: 1
4840
+ dateOffset: 1,
4520
4841
  })) {
4842
+ const path = 'maplestory/v1/character/dojang';
4521
4843
  const query = {
4522
4844
  ocid: ocid,
4523
4845
  date: MapleStoryApi.toDateString({
@@ -4526,23 +4848,10 @@ class MapleStoryApi {
4526
4848
  day: 21,
4527
4849
  }, dateOptions),
4528
4850
  };
4529
- try {
4530
- const path = 'maplestory/v1/character/dojang';
4531
- const response = await axios__default["default"].get(path, {
4532
- baseURL: MapleStoryApi.BASE_URL,
4533
- timeout: this.timeout,
4534
- headers: this.buildHeaders(),
4535
- params: query,
4536
- });
4537
- return new CharacterDojangDto(response.data);
4538
- }
4539
- catch (e) {
4540
- if (e instanceof axios.AxiosError) {
4541
- const errorBody = e.response.data;
4542
- throw new MapleStoryApiError(errorBody);
4543
- }
4544
- throw e;
4545
- }
4851
+ const { data } = await this.client.get(path, {
4852
+ params: query,
4853
+ });
4854
+ return new CharacterDojangDto(data);
4546
4855
  }
4547
4856
  //#endregion
4548
4857
  //#region 유니온 정보 조회
@@ -4555,11 +4864,12 @@ class MapleStoryApi {
4555
4864
  * @param ocid 캐릭터 식별자
4556
4865
  * @param dateOptions 조회 기준일 (KST)
4557
4866
  */
4558
- async getUnionInfo(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4867
+ async getUnion(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4559
4868
  hour: 1,
4560
4869
  minute: 0,
4561
- dateOffset: 1
4870
+ dateOffset: 1,
4562
4871
  })) {
4872
+ const path = 'maplestory/v1/user/union';
4563
4873
  const query = {
4564
4874
  ocid: ocid,
4565
4875
  date: MapleStoryApi.toDateString({
@@ -4568,23 +4878,10 @@ class MapleStoryApi {
4568
4878
  day: 21,
4569
4879
  }, dateOptions),
4570
4880
  };
4571
- try {
4572
- const path = 'maplestory/v1/user/union';
4573
- const response = await axios__default["default"].get(path, {
4574
- baseURL: MapleStoryApi.BASE_URL,
4575
- timeout: this.timeout,
4576
- headers: this.buildHeaders(),
4577
- params: query,
4578
- });
4579
- return new UnionDto(response.data);
4580
- }
4581
- catch (e) {
4582
- if (e instanceof axios.AxiosError) {
4583
- const errorBody = e.response.data;
4584
- throw new MapleStoryApiError(errorBody);
4585
- }
4586
- throw e;
4587
- }
4881
+ const { data } = await this.client.get(path, {
4882
+ params: query,
4883
+ });
4884
+ return new UnionDto(data);
4588
4885
  }
4589
4886
  /**
4590
4887
  * 유니온 공격대 정보를 조회합니다.
@@ -4595,11 +4892,12 @@ class MapleStoryApi {
4595
4892
  * @param ocid 캐릭터 식별자
4596
4893
  * @param dateOptions 조회 기준일 (KST)
4597
4894
  */
4598
- async getUnionRaiderInfo(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4895
+ async getUnionRaider(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4599
4896
  hour: 1,
4600
4897
  minute: 0,
4601
- dateOffset: 1
4898
+ dateOffset: 1,
4602
4899
  })) {
4900
+ const path = 'maplestory/v1/user/union-raider';
4603
4901
  const query = {
4604
4902
  ocid: ocid,
4605
4903
  date: MapleStoryApi.toDateString({
@@ -4608,23 +4906,38 @@ class MapleStoryApi {
4608
4906
  day: 21,
4609
4907
  }, dateOptions),
4610
4908
  };
4611
- try {
4612
- const path = 'maplestory/v1/user/union-raider';
4613
- const response = await axios__default["default"].get(path, {
4614
- baseURL: MapleStoryApi.BASE_URL,
4615
- timeout: this.timeout,
4616
- headers: this.buildHeaders(),
4617
- params: query
4618
- });
4619
- return new UnionRaiderDto(response.data);
4620
- }
4621
- catch (e) {
4622
- if (e instanceof axios.AxiosError) {
4623
- const errorBody = e.response.data;
4624
- throw new MapleStoryApiError(errorBody);
4625
- }
4626
- throw e;
4627
- }
4909
+ const { data } = await this.client.get(path, {
4910
+ params: query,
4911
+ });
4912
+ return new UnionRaiderDto(data);
4913
+ }
4914
+ /**
4915
+ * 유니온 아티팩트 정보를 조회합니다.
4916
+ * - 2023년 12월 21일 데이터부터 조회할 수 있습니다.
4917
+ * - 유니온 정보 조회 API는 일자별 데이터로 매일 오전 1시부터 전일 데이터 조회가 가능합니다. (예를 들어, 12월 22일 데이터를 조회하면 22일 00시부터 23일의 00시 사이의 데이터가 조회됩니다.)
4918
+ * - 게임 콘텐츠 변경으로 ocid가 변경될 수 있습니다. ocid 기반 서비스 갱신 시 유의해 주시길 바랍니다.
4919
+ *
4920
+ * @param ocid 캐릭터 식별자
4921
+ * @param dateOptions 조회 기준일 (KST)
4922
+ */
4923
+ async getUnionArtifact(ocid, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4924
+ hour: 1,
4925
+ minute: 0,
4926
+ dateOffset: 1,
4927
+ })) {
4928
+ const path = 'maplestory/v1/user/union-artifact';
4929
+ const query = {
4930
+ ocid: ocid,
4931
+ date: MapleStoryApi.toDateString({
4932
+ year: 2023,
4933
+ month: 12,
4934
+ day: 21,
4935
+ }, dateOptions),
4936
+ };
4937
+ const { data } = await this.client.get(path, {
4938
+ params: query,
4939
+ });
4940
+ return new UnionArtifactDto(data);
4628
4941
  }
4629
4942
  //#endregion
4630
4943
  //#region 길드 정보 조회
@@ -4638,26 +4951,14 @@ class MapleStoryApi {
4638
4951
  * @param worldName 월드 명
4639
4952
  */
4640
4953
  async getGuild(guildName, worldName) {
4641
- try {
4642
- const path = 'maplestory/v1/guild/id';
4643
- const response = await axios__default["default"].get(path, {
4644
- baseURL: MapleStoryApi.BASE_URL,
4645
- timeout: this.timeout,
4646
- headers: this.buildHeaders(),
4647
- params: {
4648
- guild_name: guildName,
4649
- world_name: worldName,
4650
- },
4651
- });
4652
- return new GuildDto(response.data);
4653
- }
4654
- catch (e) {
4655
- if (e instanceof axios.AxiosError) {
4656
- const errorBody = e.response.data;
4657
- throw new MapleStoryApiError(errorBody);
4658
- }
4659
- throw e;
4660
- }
4954
+ const path = 'maplestory/v1/guild/id';
4955
+ const { data } = await this.client.get(path, {
4956
+ params: {
4957
+ guild_name: guildName,
4958
+ world_name: worldName,
4959
+ },
4960
+ });
4961
+ return new GuildDto(data);
4661
4962
  }
4662
4963
  /**
4663
4964
  * 길드 기본 정보를 조회합니다.
@@ -4671,8 +4972,9 @@ class MapleStoryApi {
4671
4972
  async getGuildBasic(guildId, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4672
4973
  hour: 1,
4673
4974
  minute: 0,
4674
- dateOffset: 1
4975
+ dateOffset: 1,
4675
4976
  })) {
4977
+ const path = 'maplestory/v1/guild/basic';
4676
4978
  const query = {
4677
4979
  oguild_id: guildId,
4678
4980
  date: MapleStoryApi.toDateString({
@@ -4681,25 +4983,13 @@ class MapleStoryApi {
4681
4983
  day: 21,
4682
4984
  }, dateOptions),
4683
4985
  };
4684
- try {
4685
- const path = 'maplestory/v1/guild/basic';
4686
- const response = await axios__default["default"].get(path, {
4687
- baseURL: MapleStoryApi.BASE_URL,
4688
- timeout: this.timeout,
4689
- headers: this.buildHeaders(),
4690
- params: query,
4691
- });
4692
- return new GuildBasicDto(response.data);
4693
- }
4694
- catch (e) {
4695
- if (e instanceof axios.AxiosError) {
4696
- const errorBody = e.response.data;
4697
- throw new MapleStoryApiError(errorBody);
4698
- }
4699
- throw e;
4700
- }
4986
+ const { data } = await this.client.get(path, {
4987
+ params: query,
4988
+ });
4989
+ return new GuildBasicDto(data);
4701
4990
  }
4702
4991
  async getStarforceHistory(count, parameter) {
4992
+ const path = 'maplestory/v1/history/starforce';
4703
4993
  const query = {
4704
4994
  count,
4705
4995
  };
@@ -4711,65 +5001,67 @@ class MapleStoryApi {
4711
5001
  year: 2023,
4712
5002
  month: 12,
4713
5003
  day: 27,
4714
- }, parameter ?? MapleStoryApi.getProperDefaultDateOptions({
4715
- hour: 0,
4716
- minute: 0,
4717
- dateOffset: 0
4718
- }));
4719
- }
4720
- try {
4721
- const path = 'maplestory/v1/history/starforce';
4722
- const response = await axios__default["default"].get(path, {
4723
- baseURL: MapleStoryApi.BASE_URL,
4724
- timeout: this.timeout,
4725
- headers: this.buildHeaders(),
4726
- params: query,
4727
- });
4728
- return new StarforceHistoryResponseDto(response.data);
4729
- }
4730
- catch (e) {
4731
- if (e instanceof axios.AxiosError) {
4732
- const errorBody = e.response.data;
4733
- throw new MapleStoryApiError(errorBody);
4734
- }
4735
- throw e;
5004
+ }, parameter ??
5005
+ MapleStoryApi.getProperDefaultDateOptions({
5006
+ hour: 0,
5007
+ minute: 0,
5008
+ dateOffset: 0,
5009
+ }));
4736
5010
  }
5011
+ const { data } = await this.client.get(path, {
5012
+ params: query,
5013
+ });
5014
+ return new StarforceHistoryResponseDto(data);
4737
5015
  }
4738
5016
  async getCubeHistory(count, parameter) {
5017
+ const path = 'maplestory/v1/history/cube';
4739
5018
  const query = {
4740
5019
  count,
4741
5020
  };
4742
5021
  if (typeof parameter === 'string') {
4743
5022
  query.cursor = parameter;
4744
5023
  }
4745
- else if (typeof parameter === 'object') {
5024
+ else if (typeof parameter === 'object' || parameter === undefined) {
4746
5025
  query.date = MapleStoryApi.toDateString({
4747
5026
  year: 2022,
4748
5027
  month: 11,
4749
5028
  day: 25,
4750
- }, parameter ?? MapleStoryApi.getProperDefaultDateOptions({
4751
- hour: 4,
4752
- minute: 0,
4753
- dateOffset: 1
4754
- }));
5029
+ }, parameter ??
5030
+ MapleStoryApi.getProperDefaultDateOptions({
5031
+ hour: 4,
5032
+ minute: 0,
5033
+ dateOffset: 1,
5034
+ }));
4755
5035
  }
4756
- try {
4757
- const path = 'maplestory/v1/history/cube';
4758
- const response = await axios__default["default"].get(path, {
4759
- baseURL: MapleStoryApi.BASE_URL,
4760
- timeout: this.timeout,
4761
- headers: this.buildHeaders(),
4762
- params: query,
4763
- });
4764
- return new CubeHistoryResponseDto(response.data);
5036
+ const { data } = await this.client.get(path, {
5037
+ params: query,
5038
+ });
5039
+ return new CubeHistoryResponseDto(data);
5040
+ }
5041
+ async getPotentialHistory(count, parameter) {
5042
+ const path = 'maplestory/v1/history/potential';
5043
+ const query = {
5044
+ count,
5045
+ };
5046
+ if (typeof parameter === 'string') {
5047
+ query.cursor = parameter;
4765
5048
  }
4766
- catch (e) {
4767
- if (e instanceof axios.AxiosError) {
4768
- const errorBody = e.response.data;
4769
- throw new MapleStoryApiError(errorBody);
4770
- }
4771
- throw e;
5049
+ else if (typeof parameter === 'object' || parameter === undefined) {
5050
+ query.date = MapleStoryApi.toDateString({
5051
+ year: 2024,
5052
+ month: 1,
5053
+ day: 25,
5054
+ }, parameter ??
5055
+ MapleStoryApi.getProperDefaultDateOptions({
5056
+ hour: 4,
5057
+ minute: 0,
5058
+ dateOffset: 1,
5059
+ }));
4772
5060
  }
5061
+ const { data } = await this.client.get(path, {
5062
+ params: query,
5063
+ });
5064
+ return new PotentialHistoryResponseDto(data);
4773
5065
  }
4774
5066
  //#endregion
4775
5067
  //#region 랭킹 정보 조회
@@ -4786,8 +5078,9 @@ class MapleStoryApi {
4786
5078
  async getOverallRanking(filterOptions, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4787
5079
  hour: 8,
4788
5080
  minute: 30,
4789
- dateOffset: 0
5081
+ dateOffset: 0,
4790
5082
  })) {
5083
+ const path = 'maplestory/v1/ranking/overall';
4791
5084
  const query = {
4792
5085
  date: MapleStoryApi.toDateString({
4793
5086
  year: 2023,
@@ -4803,23 +5096,10 @@ class MapleStoryApi {
4803
5096
  query.ocid = ocid;
4804
5097
  query.page = page;
4805
5098
  }
4806
- try {
4807
- const path = 'maplestory/v1/ranking/overall';
4808
- const response = await axios__default["default"].get(path, {
4809
- baseURL: MapleStoryApi.BASE_URL,
4810
- timeout: this.timeout,
4811
- headers: this.buildHeaders(),
4812
- params: query,
4813
- });
4814
- return new OverallRankingResponseDto(response.data);
4815
- }
4816
- catch (e) {
4817
- if (e instanceof axios.AxiosError) {
4818
- const errorBody = e.response.data;
4819
- throw new MapleStoryApiError(errorBody);
4820
- }
4821
- throw e;
4822
- }
5099
+ const { data } = await this.client.get(path, {
5100
+ params: query,
5101
+ });
5102
+ return new OverallRankingResponseDto(data);
4823
5103
  }
4824
5104
  /**
4825
5105
  * 유니온 랭킹 정보를 조회합니다.
@@ -4833,8 +5113,9 @@ class MapleStoryApi {
4833
5113
  async getUnionRanking(filterOptions, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4834
5114
  hour: 8,
4835
5115
  minute: 30,
4836
- dateOffset: 0
5116
+ dateOffset: 0,
4837
5117
  })) {
5118
+ const path = 'maplestory/v1/ranking/union';
4838
5119
  const query = {
4839
5120
  date: MapleStoryApi.toDateString({
4840
5121
  year: 2023,
@@ -4848,23 +5129,10 @@ class MapleStoryApi {
4848
5129
  query.ocid = ocid;
4849
5130
  query.page = page;
4850
5131
  }
4851
- try {
4852
- const path = 'maplestory/v1/ranking/union';
4853
- const response = await axios__default["default"].get(path, {
4854
- baseURL: MapleStoryApi.BASE_URL,
4855
- timeout: this.timeout,
4856
- headers: this.buildHeaders(),
4857
- params: query,
4858
- });
4859
- return new UnionRankingResponseDto(response.data);
4860
- }
4861
- catch (e) {
4862
- if (e instanceof axios.AxiosError) {
4863
- const errorBody = e.response.data;
4864
- throw new MapleStoryApiError(errorBody);
4865
- }
4866
- throw e;
4867
- }
5132
+ const { data } = await this.client.get(path, {
5133
+ params: query,
5134
+ });
5135
+ return new UnionRankingResponseDto(data);
4868
5136
  }
4869
5137
  /**
4870
5138
  * 길드 랭킹 정보를 조회합니다.
@@ -4878,8 +5146,9 @@ class MapleStoryApi {
4878
5146
  async getGuildRanking(filterOptions, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4879
5147
  hour: 8,
4880
5148
  minute: 30,
4881
- dateOffset: 0
5149
+ dateOffset: 0,
4882
5150
  })) {
5151
+ const path = 'maplestory/v1/ranking/guild';
4883
5152
  const query = {
4884
5153
  date: MapleStoryApi.toDateString({
4885
5154
  year: 2023,
@@ -4895,23 +5164,10 @@ class MapleStoryApi {
4895
5164
  query.ocid = ocid;
4896
5165
  query.page = page;
4897
5166
  }
4898
- try {
4899
- const path = 'maplestory/v1/ranking/guild';
4900
- const response = await axios__default["default"].get(path, {
4901
- baseURL: MapleStoryApi.BASE_URL,
4902
- timeout: this.timeout,
4903
- headers: this.buildHeaders(),
4904
- params: query,
4905
- });
4906
- return new GuildRankingResponseDto(response.data);
4907
- }
4908
- catch (e) {
4909
- if (e instanceof axios.AxiosError) {
4910
- const errorBody = e.response.data;
4911
- throw new MapleStoryApiError(errorBody);
4912
- }
4913
- throw e;
4914
- }
5167
+ const { data } = await this.client.get(path, {
5168
+ params: query,
5169
+ });
5170
+ return new GuildRankingResponseDto(data);
4915
5171
  }
4916
5172
  /**
4917
5173
  * 무릉도장 랭킹 정보를 조회합니다.
@@ -4925,8 +5181,9 @@ class MapleStoryApi {
4925
5181
  async getDojangRanking(filterOptions, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4926
5182
  hour: 8,
4927
5183
  minute: 30,
4928
- dateOffset: 0
5184
+ dateOffset: 0,
4929
5185
  })) {
5186
+ const path = 'maplestory/v1/ranking/dojang';
4930
5187
  const query = {
4931
5188
  date: MapleStoryApi.toDateString({
4932
5189
  year: 2023,
@@ -4943,23 +5200,10 @@ class MapleStoryApi {
4943
5200
  query.ocid = ocid;
4944
5201
  query.page = page;
4945
5202
  }
4946
- try {
4947
- const path = 'maplestory/v1/ranking/dojang';
4948
- const response = await axios__default["default"].get(path, {
4949
- baseURL: MapleStoryApi.BASE_URL,
4950
- timeout: this.timeout,
4951
- headers: this.buildHeaders(),
4952
- params: query,
4953
- });
4954
- return new DojangRankingResponseDto(response.data);
4955
- }
4956
- catch (e) {
4957
- if (e instanceof axios.AxiosError) {
4958
- const errorBody = e.response.data;
4959
- throw new MapleStoryApiError(errorBody);
4960
- }
4961
- throw e;
4962
- }
5203
+ const { data } = await this.client.get(path, {
5204
+ params: query,
5205
+ });
5206
+ return new DojangRankingResponseDto(data);
4963
5207
  }
4964
5208
  /**
4965
5209
  * 더 시드 랭킹 정보를 조회합니다.
@@ -4973,8 +5217,9 @@ class MapleStoryApi {
4973
5217
  async getSeedRanking(filterOptions, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
4974
5218
  hour: 8,
4975
5219
  minute: 30,
4976
- dateOffset: 0
5220
+ dateOffset: 0,
4977
5221
  })) {
5222
+ const path = 'maplestory/v1/ranking/theseed';
4978
5223
  const query = {
4979
5224
  date: MapleStoryApi.toDateString({
4980
5225
  year: 2023,
@@ -4988,23 +5233,10 @@ class MapleStoryApi {
4988
5233
  query.ocid = ocid;
4989
5234
  query.page = page;
4990
5235
  }
4991
- try {
4992
- const path = 'maplestory/v1/ranking/theseed';
4993
- const response = await axios__default["default"].get(path, {
4994
- baseURL: MapleStoryApi.BASE_URL,
4995
- timeout: this.timeout,
4996
- headers: this.buildHeaders(),
4997
- params: query,
4998
- });
4999
- return new TheSeedRankingResponseDto(response.data);
5000
- }
5001
- catch (e) {
5002
- if (e instanceof axios.AxiosError) {
5003
- const errorBody = e.response.data;
5004
- throw new MapleStoryApiError(errorBody);
5005
- }
5006
- throw e;
5007
- }
5236
+ const { data } = await this.client.get(path, {
5237
+ params: query,
5238
+ });
5239
+ return new TheSeedRankingResponseDto(data);
5008
5240
  }
5009
5241
  /**
5010
5242
  * 업적 랭킹 정보를 조회합니다.
@@ -5018,8 +5250,9 @@ class MapleStoryApi {
5018
5250
  async getAchievementRanking(filterOptions, dateOptions = MapleStoryApi.getProperDefaultDateOptions({
5019
5251
  hour: 8,
5020
5252
  minute: 30,
5021
- dateOffset: 0
5253
+ dateOffset: 0,
5022
5254
  })) {
5255
+ const path = 'maplestory/v1/ranking/achievement';
5023
5256
  const query = {
5024
5257
  date: MapleStoryApi.toDateString({
5025
5258
  year: 2023,
@@ -5032,23 +5265,10 @@ class MapleStoryApi {
5032
5265
  query.ocid = ocid;
5033
5266
  query.page = page;
5034
5267
  }
5035
- try {
5036
- const path = 'maplestory/v1/ranking/achievement';
5037
- const response = await axios__default["default"].get(path, {
5038
- baseURL: MapleStoryApi.BASE_URL,
5039
- timeout: this.timeout,
5040
- headers: this.buildHeaders(),
5041
- params: query,
5042
- });
5043
- return new AchievementRankingResponseDto(response.data);
5044
- }
5045
- catch (e) {
5046
- if (e instanceof axios.AxiosError) {
5047
- const errorBody = e.response.data;
5048
- throw new MapleStoryApiError(errorBody);
5049
- }
5050
- throw e;
5051
- }
5268
+ const { data } = await this.client.get(path, {
5269
+ params: query,
5270
+ });
5271
+ return new AchievementRankingResponseDto(data);
5052
5272
  }
5053
5273
  //#endregion
5054
5274
  /**
@@ -5087,11 +5307,6 @@ class MapleStoryApi {
5087
5307
  const xml = (await xml2js__default["default"].parseStringPromise(response.data));
5088
5308
  return new InspectionInfoDto(xml);
5089
5309
  }
5090
- buildHeaders() {
5091
- return {
5092
- 'x-nxopen-api-key': this.apiKey,
5093
- };
5094
- }
5095
5310
  /**
5096
5311
  * API 서버의 데이터 갱신 시간에 따라 데이터가 조회 가능한 최신 날짜를 반환합니다.
5097
5312
  *
@@ -5116,7 +5331,7 @@ class MapleStoryApi {
5116
5331
  return {
5117
5332
  year: adjustedDate.year(),
5118
5333
  month: adjustedDate.month() + 1,
5119
- day: adjustedDate.date()
5334
+ day: adjustedDate.date(),
5120
5335
  };
5121
5336
  }
5122
5337
  /**
@@ -5134,7 +5349,9 @@ class MapleStoryApi {
5134
5349
  (year === minYear && month === minMonth && day < minDay)) {
5135
5350
  throw new Error(`You can only retrieve data after ${dayjs__default["default"](`${minYear}-${minMonth}-${minDay}`).format('YYYY-MM-DD')}.`);
5136
5351
  }
5137
- return dayjs__default["default"](`${year}-${month}-${day}`).utcOffset(MapleStoryApi.kstOffset).format('YYYY-MM-DD');
5352
+ return dayjs__default["default"](`${year}-${month}-${day}`)
5353
+ .utcOffset(MapleStoryApi.kstOffset)
5354
+ .format('YYYY-MM-DD');
5138
5355
  }
5139
5356
  }
5140
5357
 
@@ -5142,12 +5359,14 @@ exports.AchievementRankingDto = AchievementRankingDto;
5142
5359
  exports.AchievementRankingResponseDto = AchievementRankingResponseDto;
5143
5360
  exports.CharacterAbilityDto = CharacterAbilityDto;
5144
5361
  exports.CharacterAbilityInfoDto = CharacterAbilityInfoDto;
5362
+ exports.CharacterAbilityPresetDto = CharacterAbilityPresetDto;
5145
5363
  exports.CharacterAndroidCashItemEquipmentColoringPrismDto = CharacterAndroidCashItemEquipmentColoringPrismDto;
5146
5364
  exports.CharacterAndroidCashItemEquipmentDto = CharacterAndroidCashItemEquipmentDto;
5147
5365
  exports.CharacterAndroidCashItemEquipmentOptionDto = CharacterAndroidCashItemEquipmentOptionDto;
5148
5366
  exports.CharacterAndroidEquipmentDto = CharacterAndroidEquipmentDto;
5149
5367
  exports.CharacterAndroidEquipmentFaceDto = CharacterAndroidEquipmentFaceDto;
5150
5368
  exports.CharacterAndroidEquipmentHairDto = CharacterAndroidEquipmentHairDto;
5369
+ exports.CharacterAndroidEquipmentPresetDto = CharacterAndroidEquipmentPresetDto;
5151
5370
  exports.CharacterBasicDto = CharacterBasicDto;
5152
5371
  exports.CharacterBeautyEquipmentDto = CharacterBeautyEquipmentDto;
5153
5372
  exports.CharacterBeautyEquipmentFaceDto = CharacterBeautyEquipmentFaceDto;
@@ -5209,11 +5428,17 @@ exports.MapleStoryApi = MapleStoryApi;
5209
5428
  exports.MapleStoryApiError = MapleStoryApiError;
5210
5429
  exports.OverallRankingDto = OverallRankingDto;
5211
5430
  exports.OverallRankingResponseDto = OverallRankingResponseDto;
5431
+ exports.PotentialHistoryDto = PotentialHistoryDto;
5432
+ exports.PotentialHistoryResponseDto = PotentialHistoryResponseDto;
5433
+ exports.PotentialResultOptionDto = PotentialResultOptionDto;
5212
5434
  exports.StarforceEventDto = StarforceEventDto;
5213
5435
  exports.StarforceHistoryDto = StarforceHistoryDto;
5214
5436
  exports.StarforceHistoryResponseDto = StarforceHistoryResponseDto;
5215
5437
  exports.TheSeedRankingDto = TheSeedRankingDto;
5216
5438
  exports.TheSeedRankingResponseDto = TheSeedRankingResponseDto;
5439
+ exports.UnionArtifactCrystalDto = UnionArtifactCrystalDto;
5440
+ exports.UnionArtifactDto = UnionArtifactDto;
5441
+ exports.UnionArtifactEffectDto = UnionArtifactEffectDto;
5217
5442
  exports.UnionDto = UnionDto;
5218
5443
  exports.UnionRaiderBlockControlPointDto = UnionRaiderBlockControlPointDto;
5219
5444
  exports.UnionRaiderBlockDto = UnionRaiderBlockDto;