maplestory-openapi 3.5.1 → 3.7.0

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 (35) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/maplestory/api/common/mapleStoryApiError.js +2 -0
  3. package/dist/cjs/maplestory/api/common/mapleStoryFriendsApi.js +120 -0
  4. package/dist/cjs/maplestory/api/kms/dto/character/characterCashItemEquipment.js +42 -1
  5. package/dist/cjs/maplestory/api/kms/dto/character/characterSymbolEquipment.js +6 -1
  6. package/dist/cjs/maplestory/api/kms/dto/character/characterVMatrix.js +4 -0
  7. package/dist/cjs/maplestory/api/kms/dto/notice/cashshopNoticeList.js +6 -1
  8. package/dist/cjs/maplestory/api/kms/dto/notice/eventNoticeList.js +6 -1
  9. package/dist/cjs/maplestory/api/kms/kms.js +3 -0
  10. package/dist/cjs/maplestory/api/kms/mapleStoryFriendsApi.js +116 -0
  11. package/dist/esm/maplestory/api/common/mapleStoryApiError.js +2 -0
  12. package/dist/esm/maplestory/api/common/mapleStoryFriendsApi.js +111 -0
  13. package/dist/esm/maplestory/api/kms/dto/character/characterCashItemEquipment.js +42 -2
  14. package/dist/esm/maplestory/api/kms/dto/character/characterSymbolEquipment.js +6 -1
  15. package/dist/esm/maplestory/api/kms/dto/character/characterVMatrix.js +4 -0
  16. package/dist/esm/maplestory/api/kms/dto/notice/cashshopNoticeList.js +6 -1
  17. package/dist/esm/maplestory/api/kms/dto/notice/eventNoticeList.js +6 -1
  18. package/dist/esm/maplestory/api/kms/kms.js +2 -1
  19. package/dist/esm/maplestory/api/kms/mapleStoryFriendsApi.js +112 -0
  20. package/dist/index.min.js +1 -1
  21. package/package.json +1 -1
  22. package/types/maplestory/api/common/dto/character/characterVMatrix.d.ts +1 -1
  23. package/types/maplestory/api/common/mapleStoryApiError.d.ts +2 -1
  24. package/types/maplestory/api/common/mapleStoryFriendsApi.d.ts +49 -0
  25. package/types/maplestory/api/kms/dto/character/characterCashItemEquipment.d.ts +31 -1
  26. package/types/maplestory/api/kms/dto/character/characterSymbolEquipment.d.ts +4 -0
  27. package/types/maplestory/api/kms/dto/character/characterVMatrix.d.ts +5 -1
  28. package/types/maplestory/api/kms/dto/notice/cashshopNoticeList.d.ts +4 -0
  29. package/types/maplestory/api/kms/dto/notice/eventNoticeList.d.ts +4 -0
  30. package/types/maplestory/api/kms/index.d.ts +1 -0
  31. package/types/maplestory/api/kms/mapleStoryFriendsApi.d.ts +115 -0
  32. package/types/maplestory/api/kms/response/character/characterCashItemEquipmentBody.d.ts +8 -0
  33. package/types/maplestory/api/kms/response/character/characterSymbolEquipmentBody.d.ts +1 -0
  34. package/types/maplestory/api/kms/response/notice/cashshopNoticeListBody.d.ts +1 -0
  35. package/types/maplestory/api/kms/response/notice/eventNoticeListBody.d.ts +1 -0
@@ -40,6 +40,10 @@ class CharacterSymbolEquipmentInfoDto extends CharacterSymbolEquipmentInfoDto$1
40
40
  * 심볼 설명
41
41
  */
42
42
  symbolDescription;
43
+ /**
44
+ * 심볼 부가 효과 설명
45
+ */
46
+ symbolOtherEffectDescription;
43
47
  /**
44
48
  * 심볼로 인한 증가 수치
45
49
  */
@@ -90,10 +94,11 @@ class CharacterSymbolEquipmentInfoDto extends CharacterSymbolEquipmentInfoDto$1
90
94
  symbolRequireGrowthCount;
91
95
  constructor(obj) {
92
96
  super();
93
- const { symbol_name, symbol_icon, symbol_description, symbol_force, symbol_level, symbol_str, symbol_dex, symbol_int, symbol_luk, symbol_hp, symbol_drop_rate, symbol_meso_rate, symbol_exp_rate, symbol_growth_count, symbol_require_growth_count, } = obj;
97
+ const { symbol_name, symbol_icon, symbol_description, symbol_other_effect_description, symbol_force, symbol_level, symbol_str, symbol_dex, symbol_int, symbol_luk, symbol_hp, symbol_drop_rate, symbol_meso_rate, symbol_exp_rate, symbol_growth_count, symbol_require_growth_count, } = obj;
94
98
  this.symbolName = symbol_name;
95
99
  this.symbolIcon = symbol_icon;
96
100
  this.symbolDescription = symbol_description;
101
+ this.symbolOtherEffectDescription = symbol_other_effect_description;
97
102
  this.symbolForce = symbol_force;
98
103
  this.symbolLevel = symbol_level;
99
104
  this.symbolStr = symbol_str;
@@ -40,6 +40,7 @@ class CharacterVMatrixCodeEquipmentDto extends CharacterVMatrixCodeEquipmentDto$
40
40
  slotId;
41
41
  /**
42
42
  * 슬롯 레벨
43
+ * @deprecated 2025년 12월 18일 점검 이후부터 사용하지 않는 항목입니다.
43
44
  */
44
45
  slotLevel;
45
46
  /**
@@ -56,14 +57,17 @@ class CharacterVMatrixCodeEquipmentDto extends CharacterVMatrixCodeEquipmentDto$
56
57
  vCoreLevel;
57
58
  /**
58
59
  * 코어에 해당하는 스킬 명
60
+ * @deprecated 2025년 12월 18일 점검 이후부터 사용하지 않는 항목입니다.
59
61
  */
60
62
  vCoreSkill1;
61
63
  /**
62
64
  * (강화 코어인 경우) 코어에 해당하는 두 번째 스킬 명
65
+ * @deprecated 2025년 12월 18일 점검 이후부터 사용하지 않는 항목입니다.
63
66
  */
64
67
  vCoreSkill2;
65
68
  /**
66
69
  * (강화 코어인 경우) 코어에 해당하는 세 번째 스킬 명
70
+ * @deprecated 2025년 12월 18일 점검 이후부터 사용하지 않는 항목입니다.
67
71
  */
68
72
  vCoreSkill3;
69
73
  constructor(obj) {
@@ -23,6 +23,10 @@ class CashshopNoticeListItemDto {
23
23
  * 공지 링크
24
24
  */
25
25
  url;
26
+ /**
27
+ * 썸네일 링크
28
+ */
29
+ thumbnailUrl;
26
30
  /**
27
31
  * 공지 식별자
28
32
  */
@@ -44,9 +48,10 @@ class CashshopNoticeListItemDto {
44
48
  */
45
49
  ongoingFlag;
46
50
  constructor(obj) {
47
- const { title, url, notice_id, date, date_sale_start, date_sale_end, ongoing_flag, } = obj;
51
+ const { title, url, thumbnail_url, notice_id, date, date_sale_start, date_sale_end, ongoing_flag, } = obj;
48
52
  this.title = title;
49
53
  this.url = url;
54
+ this.thumbnailUrl = thumbnail_url;
50
55
  this.noticeId = notice_id;
51
56
  this.date = new Date(date);
52
57
  this.dateSaleStart = date_sale_start ? new Date(date_sale_start) : null;
@@ -23,6 +23,10 @@ class EventNoticeListItemDto {
23
23
  * 공지 링크
24
24
  */
25
25
  url;
26
+ /**
27
+ * 썸네일 링크
28
+ */
29
+ thumbnailUrl;
26
30
  /**
27
31
  * 공지 식별자
28
32
  */
@@ -40,9 +44,10 @@ class EventNoticeListItemDto {
40
44
  */
41
45
  dateEventEnd;
42
46
  constructor(obj) {
43
- const { title, url, notice_id, date, date_event_start, date_event_end } = obj;
47
+ const { title, url, thumbnail_url, notice_id, date, date_event_start, date_event_end } = obj;
44
48
  this.title = title;
45
49
  this.url = url;
50
+ this.thumbnailUrl = thumbnail_url;
46
51
  this.noticeId = notice_id;
47
52
  this.date = new Date(date);
48
53
  this.dateEventStart = new Date(date_event_start);
@@ -1,10 +1,11 @@
1
1
  export { MapleStoryApi } from './mapleStoryApi.js';
2
+ export { MapleStoryFriendsApi } from './mapleStoryFriendsApi.js';
2
3
  export { CharacterDto } from './dto/character/character.js';
3
4
  export { CharacterAbilityDto, CharacterAbilityInfoDto, CharacterAbilityPresetDto } from './dto/character/characterAbility.js';
4
5
  export { CharacterAndroidCashItemEquipmentColoringPrismDto, CharacterAndroidCashItemEquipmentDto, CharacterAndroidCashItemEquipmentOptionDto, CharacterAndroidEquipmentDto, CharacterAndroidEquipmentFaceDto, CharacterAndroidEquipmentHairDto, CharacterAndroidEquipmentPresetDto, CharacterAndroidEquipmentSkinDto } from './dto/character/characterAndroidEquipment.js';
5
6
  export { CharacterBasicDto } from './dto/character/characterBasic.js';
6
7
  export { CharacterBeautyEquipmentDto, CharacterBeautyEquipmentFaceDto, CharacterBeautyEquipmentHairDto, CharacterBeautyEquipmentSkinDto } from './dto/character/characterBeautyEquipment.js';
7
- export { CharacterCashItemEquipmentColoringPrismDto, CharacterCashItemEquipmentDto, CharacterCashItemEquipmentOptionDto, CharacterCashItemEquipmentPresetDto } from './dto/character/characterCashItemEquipment.js';
8
+ export { CharacterCashItemEquipmentColoringPrismDto, CharacterCashItemEquipmentDto, CharacterCashItemEquipmentEffectPrismDto, CharacterCashItemEquipmentOptionDto, CharacterCashItemEquipmentPresetDto } from './dto/character/characterCashItemEquipment.js';
8
9
  export { CharacterDojangDto } from './dto/character/characterDojang.js';
9
10
  export { CharacterHexaMatrixDto, CharacterHexaMatrixEquipmentDto, CharacterHexaMatrixEquipmentLinkedSkillDto } from './dto/character/characterHexaMatrix.js';
10
11
  export { CharacterHexaMatrixStatCoreDto, CharacterHexaMatrixStatDto } from './dto/character/characterHexaMatrixStat.js';
@@ -0,0 +1,112 @@
1
+ import { CubeHistoryResponseDto } from './dto/history/cubeHistory.js';
2
+ import { PotentialHistoryResponseDto } from './dto/history/potentialHistory.js';
3
+ import { StarforceHistoryResponseDto } from './dto/history/starforceHistory.js';
4
+ import { AchievementDto } from './dto/user/achievement.js';
5
+ import { CharacterListDto } from './dto/user/characterList.js';
6
+ import { MapleStoryFriendsApi as MapleStoryFriendsApi$1 } from '../common/mapleStoryFriendsApi.js';
7
+
8
+ /**
9
+ * MapleStory Friends API client for KMS<br>
10
+ * This is an implementation of <a href="https://openapi.nexon.com/ko/friends/maplestory/?id=36">MapleStory Friends API</a>
11
+ */
12
+ class MapleStoryFriendsApi extends MapleStoryFriendsApi$1 {
13
+ subUrl = 'maplestory';
14
+ timezoneOffset = 540;
15
+ constructor(accessToken) {
16
+ super(accessToken);
17
+ }
18
+ //#region 계정 정보 조회
19
+ /**
20
+ * 계정의 보유 캐릭터 목록을 조회합니다.
21
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '캐릭터 목록'을 활용 데이터 항목으로 선택해주세요.
22
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
23
+ */
24
+ async getCharacterList() {
25
+ const path = `${this.subUrl}/v1/character/list`;
26
+ const { data } = await this.client.get(path);
27
+ return new CharacterListDto(data);
28
+ }
29
+ /**
30
+ * 계정의 업적 정보를 조회합니다.
31
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '업적 정보'를 활용 데이터 항목으로 선택해주세요.
32
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
33
+ */
34
+ async getAchievement() {
35
+ const path = `${this.subUrl}/v1/user/achievement`;
36
+ const { data } = await this.client.get(path);
37
+ return new AchievementDto(data);
38
+ }
39
+ async getStarforceHistory(count, parameter) {
40
+ const path = `${this.subUrl}/v1/history/starforce`;
41
+ const query = {
42
+ count,
43
+ };
44
+ if (typeof parameter === 'string') {
45
+ query.cursor = parameter;
46
+ }
47
+ else if (typeof parameter === 'object' || parameter === undefined) {
48
+ query.date = this.toDateString(parameter ??
49
+ this.getProperDefaultDateOptions({
50
+ hour: 0,
51
+ minute: 0,
52
+ dateOffset: 0,
53
+ }), {
54
+ year: 2023,
55
+ month: 12,
56
+ day: 27,
57
+ });
58
+ }
59
+ const { data } = await this.client.get(path, {
60
+ params: query,
61
+ });
62
+ return new StarforceHistoryResponseDto(data);
63
+ }
64
+ async getCubeHistory(count, parameter) {
65
+ const path = `${this.subUrl}/v1/history/cube`;
66
+ const query = {
67
+ count,
68
+ };
69
+ if (typeof parameter === 'string') {
70
+ query.cursor = parameter;
71
+ }
72
+ else if (typeof parameter === 'object' || parameter === undefined) {
73
+ query.date = this.toDateString(parameter ??
74
+ this.getProperDefaultDateOptions({
75
+ hour: 0,
76
+ minute: 0,
77
+ dateOffset: 0,
78
+ }));
79
+ }
80
+ const { data } = await this.client.get(path, {
81
+ params: query,
82
+ });
83
+ return new CubeHistoryResponseDto(data);
84
+ }
85
+ async getPotentialHistory(count, parameter) {
86
+ const path = `${this.subUrl}/v1/history/potential`;
87
+ const query = {
88
+ count,
89
+ };
90
+ if (typeof parameter === 'string') {
91
+ query.cursor = parameter;
92
+ }
93
+ else if (typeof parameter === 'object' || parameter === undefined) {
94
+ query.date = this.toDateString(parameter ??
95
+ this.getProperDefaultDateOptions({
96
+ hour: 0,
97
+ minute: 0,
98
+ dateOffset: 0,
99
+ }), {
100
+ year: 2024,
101
+ month: 1,
102
+ day: 25,
103
+ });
104
+ }
105
+ const { data } = await this.client.get(path, {
106
+ params: query,
107
+ });
108
+ return new PotentialHistoryResponseDto(data);
109
+ }
110
+ }
111
+
112
+ export { MapleStoryFriendsApi };
package/dist/index.min.js CHANGED
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("axios"),require("dayjs")):"function"==typeof define&&define.amd?define(["exports","axios","dayjs"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["maplestory-openapi"]={},t.axios,t.dayjs)}(this,function(t,e,a){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=r(e),i=r(a),s=("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self,{exports:{}});!function(t){var e,a;t.exports=(e={year:0,month:1,day:2,hour:3,minute:4,second:5},a={},function(t,r,o){var i,s=function(t,e,r){void 0===r&&(r={});var o=new Date(t),i=function(t,e){void 0===e&&(e={});var r=e.timeZoneName||"short",o=t+"|"+r,i=a[o];return i||(i=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:r}),a[o]=i),i}(e,r);return i.formatToParts(o)},n=function(t,a){for(var r=s(t,a),i=[],n=0;n<r.length;n+=1){var c=r[n],l=c.type,u=c.value,f=e[l];f>=0&&(i[f]=parseInt(u,10))}var h=i[3],m=24===h?0:h,d=i[0]+"-"+i[1]+"-"+i[2]+" "+m+":"+i[4]+":"+i[5]+":000",E=+t;return(o.utc(d).valueOf()-(E-=E%1e3))/6e4},c=r.prototype;c.tz=function(t,e){void 0===t&&(t=i);var a,r=this.utcOffset(),s=this.toDate(),n=s.toLocaleString("en-US",{timeZone:t}),c=Math.round((s-new Date(n))/1e3/60),l=15*-Math.round(s.getTimezoneOffset()/15)-c;if(Number(l)){if(a=o(n,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(l,!0),e){var u=a.utcOffset();a=a.add(r-u,"minute")}}else a=this.utcOffset(0,e);return a.$x.$timezone=t,a},c.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),a=s(this.valueOf(),e,{timeZoneName:t}).find(function(t){return"timezonename"===t.type.toLowerCase()});return a&&a.value};var l=c.startOf;c.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return l.call(this,t,e);var a=o(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return l.call(a,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,a){var r=a&&e,s=a||e||i,c=n(+o(),s);if("string"!=typeof t)return o(t).tz(s);var l=function(t,e,a){var r=t-60*e*1e3,o=n(r,a);if(e===o)return[r,e];var i=n(r-=60*(o-e)*1e3,a);return o===i?[r,o]:[t-60*Math.min(o,i)*1e3,Math.max(o,i)]}(o.utc(t,r).valueOf(),c,s),u=l[0],f=l[1],h=o(u).utcOffset(f);return h.$x.$timezone=s,h},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){i=t}})}(s);var n=s.exports,c={exports:{}};!function(t){var e,a,r;t.exports=(e="minute",a=/[+-]\d\d(?::?\d\d)?/g,r=/([+-]|\d\d)/g,function(t,o,i){var s=o.prototype;i.utc=function(t){return new o({date:t,utc:!0,args:arguments})},s.utc=function(t){var a=i(this.toDate(),{locale:this.$L,utc:!0});return t?a.add(this.utcOffset(),e):a},s.local=function(){return i(this.toDate(),{locale:this.$L,utc:!1})};var n=s.parse;s.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),n.call(this,t)};var c=s.init;s.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else c.call(this)};var l=s.utcOffset;s.utcOffset=function(t,o){var i=this.$utils().u;if(i(t))return this.$u?0:i(this.$offset)?l.call(this):this.$offset;if("string"==typeof t&&(t=function(t){void 0===t&&(t="");var e=t.match(a);if(!e)return null;var o=(""+e[0]).match(r)||["-",0,0],i=o[0],s=60*+o[1]+ +o[2];return 0===s?0:"+"===i?s:-s}(t),null===t))return this;var s=Math.abs(t)<=16?60*t:t;if(0===s)return this.utc(o);var n=this.clone();if(o)return n.$offset=s,n.$u=!1,n;var c=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(n=this.local().add(s+c,e)).$offset=s,n.$x.$localOffset=c,n};var u=s.format;s.format=function(t){var e=t||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return u.call(this,e)},s.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},s.isUTC=function(){return!!this.$u},s.toISOString=function(){return this.toDate().toISOString()},s.toString=function(){return this.toDate().toUTCString()};var f=s.toDate;s.toDate=function(t){return"s"===t&&this.$offset?i(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():f.call(this)};var h=s.diff;s.diff=function(t,e,a){if(t&&this.$u===t.$u)return h.call(this,t,e,a);var r=this.local(),o=i(t).local();return h.call(r,o,e,a)}})}(c);var l,u=c.exports;class f extends Error{name="MapleStoryApiError";errorCode;message;constructor(t){const{name:e,message:a}=t.error;super(a),this.errorCode=h[e],this.message=a}}t.MapleStoryApiErrorCode=void 0,(l=t.MapleStoryApiErrorCode||(t.MapleStoryApiErrorCode={}))[l.OPENAPI00001=0]="OPENAPI00001",l[l.OPENAPI00002=1]="OPENAPI00002",l[l.OPENAPI00003=2]="OPENAPI00003",l[l.OPENAPI00004=3]="OPENAPI00004",l[l.OPENAPI00005=4]="OPENAPI00005",l[l.OPENAPI00006=5]="OPENAPI00006",l[l.OPENAPI00007=6]="OPENAPI00007",l[l.OPENAPI00009=7]="OPENAPI00009",l[l.OPENAPI00010=8]="OPENAPI00010",l[l.OPENAPI00011=9]="OPENAPI00011";const h={OPENAPI00001:t.MapleStoryApiErrorCode.OPENAPI00001,OPENAPI00002:t.MapleStoryApiErrorCode.OPENAPI00002,OPENAPI00003:t.MapleStoryApiErrorCode.OPENAPI00003,OPENAPI00004:t.MapleStoryApiErrorCode.OPENAPI00004,OPENAPI00005:t.MapleStoryApiErrorCode.OPENAPI00005,OPENAPI00006:t.MapleStoryApiErrorCode.OPENAPI00006,OPENAPI00007:t.MapleStoryApiErrorCode.OPENAPI00007,OPENAPI00009:t.MapleStoryApiErrorCode.OPENAPI00009,OPENAPI00010:t.MapleStoryApiErrorCode.OPENAPI00010,OPENAPI00011:t.MapleStoryApiErrorCode.OPENAPI00011};i.default.extend(n),i.default.extend(u);class m{apiKey;client;static BASE_URL="https://open.api.nexon.com/";static DEFAULT_TIMEOUT=5e3;get timeout(){return this.client.defaults.timeout}set timeout(t){this.client.defaults.timeout=t}constructor(t){this.apiKey=t,this.client=o.default.create({baseURL:m.BASE_URL,timeout:m.DEFAULT_TIMEOUT,headers:{"x-nxopen-api-key":this.apiKey}}),this.client.interceptors.response.use(t=>t,t=>{if(t instanceof e.AxiosError){const e=t.response.data;throw new f(e)}throw t})}getProperDefaultDateOptions(t){const{hour:e,minute:a,dateOffset:r}=t,o=i.default().utcOffset(this.timezoneOffset),s=i.default().utcOffset(this.timezoneOffset).hour(e).minute(a);let n;return n=o.isAfter(s)?o:o.subtract(1,"day"),n=n.subtract(r??0,"day"),{year:n.year(),month:n.month()+1,day:n.date()}}toDateString(t,e){const a=t=>{let e,a,r,o;return t instanceof Date?(o=i.default(t).utcOffset(this.timezoneOffset),e=o.year(),a=o.month()+1,r=o.date()):(e=t.year,a=t.month,r=t.day,o=i.default(`${e}-${a}-${r}`).utcOffset(this.timezoneOffset)),{year:e,month:a,day:r,d:o}},{year:r,month:o,day:s,d:n}=a(t),c=n.format("YYYY-MM-DD");if(e){const{year:t,month:n,day:c}=a(e);if(r<t||r===t&&o<n||r===t&&o===n&&s<c)throw new Error(`You can only retrieve data after ${i.default(`${t}-${n}-${c}`).format("YYYY-MM-DD")}.`)}return c}isEmptyResponse(t){for(const[e,a]of Object.entries(t))if("date"!==e&&null!=a&&(!Array.isArray(a)||0!==a.length))return!1;return!0}}var d,E,p,A;t.CharacterImageAction=void 0,(d=t.CharacterImageAction||(t.CharacterImageAction={})).Stand1="A00",d.Stand2="A01",d.Walk1="A02",d.Walk2="A03",d.Prone="A04",d.Fly="A05",d.Jump="A06",d.Sit="A07",d.Ladder="A08",d.Rope="A09",d.Heal="A10",d.Alert="A11",d.ProneStab="A12",d.SwingO1="A13",d.SwingO2="A14",d.SwingO3="A15",d.SwingOF="A16",d.SwingP1="A17",d.SwingP2="A18",d.SwingPF="A19",d.SwingT1="A20",d.SwingT2="A21",d.SwingT3="A22",d.SwingTF="A23",d.StabO1="A24",d.StabO2="A25",d.StabOF="A26",d.StabT1="A27",d.StabT2="A28",d.StabTF="A29",d.Shoot1="A30",d.Shoot2="A31",d.ShootF="A32",d.Dead="A33",d.GhostWalk="A34",d.GhostStand="A35",d.GhostJump="A36",d.GhostProneStab="A37",d.GhostLadder="A38",d.GhostRope="A39",d.GhostFly="A40",d.GhostSit="A41",t.CharacterImageEmotion=void 0,(E=t.CharacterImageEmotion||(t.CharacterImageEmotion={})).Default="E00",E.Wink="E01",E.Smile="E02",E.Cry="E03",E.Angry="E04",E.Bewildered="E05",E.Blink="E06",E.Blaze="E07",E.Bowing="E08",E.Cheers="E09",E.Chu="E10",E.Dam="E11",E.Despair="E12",E.Glitter="E13",E.Hit="E14",E.Hot="E15",E.Hum="E16",E.Love="E17",E.Oops="E18",E.Pain="E19",E.Troubled="E20",E.QBlue="E21",E.Shine="E22",E.Stunned="E23",E.Vomit="E24",t.CharacterImageWeaponMotion=void 0,(p=t.CharacterImageWeaponMotion||(t.CharacterImageWeaponMotion={})).Default="W00",p.OneHand="W01",p.TwoHands="W02",p.Gun="W03",p.Nothing="W04",t.PotentialOptionGrade=void 0,(A=t.PotentialOptionGrade||(t.PotentialOptionGrade={}))[A.RARE=0]="RARE",A[A.EPIC=1]="EPIC",A[A.UNIQUE=2]="UNIQUE",A[A.LEGENDARY=3]="LEGENDARY";t.CharacterAbilityDto=class{},t.CharacterAbilityInfoDto=class{},t.CharacterAbilityPresetDto=class{},t.CharacterAndroidCashItemEquipmentColoringPrismDto=class{},t.CharacterAndroidCashItemEquipmentDto=class{},t.CharacterAndroidCashItemEquipmentOptionDto=class{},t.CharacterAndroidEquipmentDto=class{},t.CharacterAndroidEquipmentFaceDto=class{},t.CharacterAndroidEquipmentHairDto=class{},t.CharacterAndroidEquipmentPresetDto=class{},t.CharacterAndroidEquipmentSkinDto=class{},t.CharacterBasicDto=class{get isAccessFlag(){return"true"===this.accessFlag}},t.CharacterBeautyEquipmentDto=class{},t.CharacterBeautyEquipmentFaceDto=class{},t.CharacterBeautyEquipmentHairDto=class{},t.CharacterBeautyEquipmentSkinDto=class{},t.CharacterCashItemEquipmentColoringPrismDto=class{},t.CharacterCashItemEquipmentDto=class{},t.CharacterCashItemEquipmentOptionDto=class{},t.CharacterCashItemEquipmentPresetDto=class{},t.CharacterDojangDto=class{},t.CharacterDto=class{},t.CharacterFinalStatDto=class{},t.CharacterHexaMatrixDto=class{},t.CharacterHexaMatrixEquipmentDto=class{},t.CharacterHexaMatrixEquipmentLinkedSkillDto=class{},t.CharacterHexaMatrixStatCoreDto=class{},t.CharacterHexaMatrixStatDto=class{},t.CharacterHyperStatDto=class{},t.CharacterHyperStatPresetDto=class{},t.CharacterImageDto=class{},t.CharacterItemEquipmentAddOptionDto=class{},t.CharacterItemEquipmentBaseOptionDto=class{},t.CharacterItemEquipmentDragonInfoDto=class{},t.CharacterItemEquipmentDto=class{},t.CharacterItemEquipmentEtcOptionDto=class{},t.CharacterItemEquipmentExceptionalOptionDto=class{},t.CharacterItemEquipmentInfoDto=class{},t.CharacterItemEquipmentMechanicInfoDto=class{},t.CharacterItemEquipmentStarforceOptionDto=class{},t.CharacterItemEquipmentTitleDto=class{},t.CharacterItemEquipmentTotalOptionDto=class{},t.CharacterLinkSkillDto=class{},t.CharacterLinkSkillInfoDto=class{},t.CharacterPetEquipmentAutoSkillDto=class{},t.CharacterPetEquipmentDto=class{},t.CharacterPetEquipmentItemDto=class{},t.CharacterPetEquipmentItemOptionDto=class{},t.CharacterPopularityDto=class{},t.CharacterPropensityDto=class{},t.CharacterSetEffectDto=class{},t.CharacterSetEffectInfoDto=class{},t.CharacterSetEffectOptionFullDto=class{},t.CharacterSetEffectSetDto=class{},t.CharacterSkillDto=class{},t.CharacterSkillInfoDto=class{},t.CharacterStatDto=class{},t.CharacterSymbolEquipmentDto=class{},t.CharacterSymbolEquipmentInfoDto=class{},t.CharacterVMatrixCodeEquipmentDto=class{},t.CharacterVMatrixDto=class{},t.GuildBasicDto=class{},t.GuildDto=class{},t.GuildSkillDto=class{},t.MapleStoryApi=m,t.MapleStoryApiError=f,t.UnionArtifactCrystalDto=class{},t.UnionArtifactDto=class{},t.UnionArtifactEffectDto=class{},t.UnionDto=class{},t.UnionRaiderBlockControlPointDto=class{},t.UnionRaiderBlockDto=class{},t.UnionRaiderBlockPositionDto=class{},t.UnionRaiderDto=class{},t.UnionRaiderInnerStatDto=class{},t.UnionRaiderPresetDto=class{}});
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("axios"),require("dayjs")):"function"==typeof define&&define.amd?define(["exports","axios","dayjs"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["maplestory-openapi"]={},t.axios,t.dayjs)}(this,function(t,e,a){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=r(e),i=r(a),s=("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self,{exports:{}});!function(t){var e,a;t.exports=(e={year:0,month:1,day:2,hour:3,minute:4,second:5},a={},function(t,r,o){var i,s=function(t,e,r){void 0===r&&(r={});var o=new Date(t),i=function(t,e){void 0===e&&(e={});var r=e.timeZoneName||"short",o=t+"|"+r,i=a[o];return i||(i=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:r}),a[o]=i),i}(e,r);return i.formatToParts(o)},n=function(t,a){for(var r=s(t,a),i=[],n=0;n<r.length;n+=1){var c=r[n],l=c.type,u=c.value,f=e[l];f>=0&&(i[f]=parseInt(u,10))}var h=i[3],m=24===h?0:h,d=i[0]+"-"+i[1]+"-"+i[2]+" "+m+":"+i[4]+":"+i[5]+":000",E=+t;return(o.utc(d).valueOf()-(E-=E%1e3))/6e4},c=r.prototype;c.tz=function(t,e){void 0===t&&(t=i);var a,r=this.utcOffset(),s=this.toDate(),n=s.toLocaleString("en-US",{timeZone:t}),c=Math.round((s-new Date(n))/1e3/60),l=15*-Math.round(s.getTimezoneOffset()/15)-c;if(Number(l)){if(a=o(n,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(l,!0),e){var u=a.utcOffset();a=a.add(r-u,"minute")}}else a=this.utcOffset(0,e);return a.$x.$timezone=t,a},c.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),a=s(this.valueOf(),e,{timeZoneName:t}).find(function(t){return"timezonename"===t.type.toLowerCase()});return a&&a.value};var l=c.startOf;c.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return l.call(this,t,e);var a=o(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return l.call(a,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,a){var r=a&&e,s=a||e||i,c=n(+o(),s);if("string"!=typeof t)return o(t).tz(s);var l=function(t,e,a){var r=t-60*e*1e3,o=n(r,a);if(e===o)return[r,e];var i=n(r-=60*(o-e)*1e3,a);return o===i?[r,o]:[t-60*Math.min(o,i)*1e3,Math.max(o,i)]}(o.utc(t,r).valueOf(),c,s),u=l[0],f=l[1],h=o(u).utcOffset(f);return h.$x.$timezone=s,h},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){i=t}})}(s);var n=s.exports,c={exports:{}};!function(t){var e,a,r;t.exports=(e="minute",a=/[+-]\d\d(?::?\d\d)?/g,r=/([+-]|\d\d)/g,function(t,o,i){var s=o.prototype;i.utc=function(t){return new o({date:t,utc:!0,args:arguments})},s.utc=function(t){var a=i(this.toDate(),{locale:this.$L,utc:!0});return t?a.add(this.utcOffset(),e):a},s.local=function(){return i(this.toDate(),{locale:this.$L,utc:!1})};var n=s.parse;s.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),n.call(this,t)};var c=s.init;s.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else c.call(this)};var l=s.utcOffset;s.utcOffset=function(t,o){var i=this.$utils().u;if(i(t))return this.$u?0:i(this.$offset)?l.call(this):this.$offset;if("string"==typeof t&&(t=function(t){void 0===t&&(t="");var e=t.match(a);if(!e)return null;var o=(""+e[0]).match(r)||["-",0,0],i=o[0],s=60*+o[1]+ +o[2];return 0===s?0:"+"===i?s:-s}(t),null===t))return this;var s=Math.abs(t)<=16?60*t:t;if(0===s)return this.utc(o);var n=this.clone();if(o)return n.$offset=s,n.$u=!1,n;var c=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(n=this.local().add(s+c,e)).$offset=s,n.$x.$localOffset=c,n};var u=s.format;s.format=function(t){var e=t||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return u.call(this,e)},s.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},s.isUTC=function(){return!!this.$u},s.toISOString=function(){return this.toDate().toISOString()},s.toString=function(){return this.toDate().toUTCString()};var f=s.toDate;s.toDate=function(t){return"s"===t&&this.$offset?i(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():f.call(this)};var h=s.diff;s.diff=function(t,e,a){if(t&&this.$u===t.$u)return h.call(this,t,e,a);var r=this.local(),o=i(t).local();return h.call(r,o,e,a)}})}(c);var l,u=c.exports;class f extends Error{name="MapleStoryApiError";errorCode;message;constructor(t){const{name:e,message:a}=t.error;super(a),this.errorCode=h[e],this.message=a}}t.MapleStoryApiErrorCode=void 0,(l=t.MapleStoryApiErrorCode||(t.MapleStoryApiErrorCode={}))[l.OPENAPI00001=0]="OPENAPI00001",l[l.OPENAPI00002=1]="OPENAPI00002",l[l.OPENAPI00003=2]="OPENAPI00003",l[l.OPENAPI00004=3]="OPENAPI00004",l[l.OPENAPI00005=4]="OPENAPI00005",l[l.OPENAPI00006=5]="OPENAPI00006",l[l.OPENAPI00007=6]="OPENAPI00007",l[l.OPENAPI00009=7]="OPENAPI00009",l[l.OPENAPI00010=8]="OPENAPI00010",l[l.OPENAPI00011=9]="OPENAPI00011",l[l.OPENAPI00012=10]="OPENAPI00012";const h={OPENAPI00001:t.MapleStoryApiErrorCode.OPENAPI00001,OPENAPI00002:t.MapleStoryApiErrorCode.OPENAPI00002,OPENAPI00003:t.MapleStoryApiErrorCode.OPENAPI00003,OPENAPI00004:t.MapleStoryApiErrorCode.OPENAPI00004,OPENAPI00005:t.MapleStoryApiErrorCode.OPENAPI00005,OPENAPI00006:t.MapleStoryApiErrorCode.OPENAPI00006,OPENAPI00007:t.MapleStoryApiErrorCode.OPENAPI00007,OPENAPI00009:t.MapleStoryApiErrorCode.OPENAPI00009,OPENAPI00010:t.MapleStoryApiErrorCode.OPENAPI00010,OPENAPI00011:t.MapleStoryApiErrorCode.OPENAPI00011,OPENAPI00012:t.MapleStoryApiErrorCode.OPENAPI00012};i.default.extend(n),i.default.extend(u);class m{apiKey;client;static BASE_URL="https://open.api.nexon.com/";static DEFAULT_TIMEOUT=5e3;get timeout(){return this.client.defaults.timeout}set timeout(t){this.client.defaults.timeout=t}constructor(t){this.apiKey=t,this.client=o.default.create({baseURL:m.BASE_URL,timeout:m.DEFAULT_TIMEOUT,headers:{"x-nxopen-api-key":this.apiKey}}),this.client.interceptors.response.use(t=>t,t=>{if(t instanceof e.AxiosError){const e=t.response.data;throw new f(e)}throw t})}getProperDefaultDateOptions(t){const{hour:e,minute:a,dateOffset:r}=t,o=i.default().utcOffset(this.timezoneOffset),s=i.default().utcOffset(this.timezoneOffset).hour(e).minute(a);let n;return n=o.isAfter(s)?o:o.subtract(1,"day"),n=n.subtract(r??0,"day"),{year:n.year(),month:n.month()+1,day:n.date()}}toDateString(t,e){const a=t=>{let e,a,r,o;return t instanceof Date?(o=i.default(t).utcOffset(this.timezoneOffset),e=o.year(),a=o.month()+1,r=o.date()):(e=t.year,a=t.month,r=t.day,o=i.default(`${e}-${a}-${r}`).utcOffset(this.timezoneOffset)),{year:e,month:a,day:r,d:o}},{year:r,month:o,day:s,d:n}=a(t),c=n.format("YYYY-MM-DD");if(e){const{year:t,month:n,day:c}=a(e);if(r<t||r===t&&o<n||r===t&&o===n&&s<c)throw new Error(`You can only retrieve data after ${i.default(`${t}-${n}-${c}`).format("YYYY-MM-DD")}.`)}return c}isEmptyResponse(t){for(const[e,a]of Object.entries(t))if("date"!==e&&null!=a&&(!Array.isArray(a)||0!==a.length))return!1;return!0}}var d,E,p,A;t.CharacterImageAction=void 0,(d=t.CharacterImageAction||(t.CharacterImageAction={})).Stand1="A00",d.Stand2="A01",d.Walk1="A02",d.Walk2="A03",d.Prone="A04",d.Fly="A05",d.Jump="A06",d.Sit="A07",d.Ladder="A08",d.Rope="A09",d.Heal="A10",d.Alert="A11",d.ProneStab="A12",d.SwingO1="A13",d.SwingO2="A14",d.SwingO3="A15",d.SwingOF="A16",d.SwingP1="A17",d.SwingP2="A18",d.SwingPF="A19",d.SwingT1="A20",d.SwingT2="A21",d.SwingT3="A22",d.SwingTF="A23",d.StabO1="A24",d.StabO2="A25",d.StabOF="A26",d.StabT1="A27",d.StabT2="A28",d.StabTF="A29",d.Shoot1="A30",d.Shoot2="A31",d.ShootF="A32",d.Dead="A33",d.GhostWalk="A34",d.GhostStand="A35",d.GhostJump="A36",d.GhostProneStab="A37",d.GhostLadder="A38",d.GhostRope="A39",d.GhostFly="A40",d.GhostSit="A41",t.CharacterImageEmotion=void 0,(E=t.CharacterImageEmotion||(t.CharacterImageEmotion={})).Default="E00",E.Wink="E01",E.Smile="E02",E.Cry="E03",E.Angry="E04",E.Bewildered="E05",E.Blink="E06",E.Blaze="E07",E.Bowing="E08",E.Cheers="E09",E.Chu="E10",E.Dam="E11",E.Despair="E12",E.Glitter="E13",E.Hit="E14",E.Hot="E15",E.Hum="E16",E.Love="E17",E.Oops="E18",E.Pain="E19",E.Troubled="E20",E.QBlue="E21",E.Shine="E22",E.Stunned="E23",E.Vomit="E24",t.CharacterImageWeaponMotion=void 0,(p=t.CharacterImageWeaponMotion||(t.CharacterImageWeaponMotion={})).Default="W00",p.OneHand="W01",p.TwoHands="W02",p.Gun="W03",p.Nothing="W04",t.PotentialOptionGrade=void 0,(A=t.PotentialOptionGrade||(t.PotentialOptionGrade={}))[A.RARE=0]="RARE",A[A.EPIC=1]="EPIC",A[A.UNIQUE=2]="UNIQUE",A[A.LEGENDARY=3]="LEGENDARY";t.CharacterAbilityDto=class{},t.CharacterAbilityInfoDto=class{},t.CharacterAbilityPresetDto=class{},t.CharacterAndroidCashItemEquipmentColoringPrismDto=class{},t.CharacterAndroidCashItemEquipmentDto=class{},t.CharacterAndroidCashItemEquipmentOptionDto=class{},t.CharacterAndroidEquipmentDto=class{},t.CharacterAndroidEquipmentFaceDto=class{},t.CharacterAndroidEquipmentHairDto=class{},t.CharacterAndroidEquipmentPresetDto=class{},t.CharacterAndroidEquipmentSkinDto=class{},t.CharacterBasicDto=class{get isAccessFlag(){return"true"===this.accessFlag}},t.CharacterBeautyEquipmentDto=class{},t.CharacterBeautyEquipmentFaceDto=class{},t.CharacterBeautyEquipmentHairDto=class{},t.CharacterBeautyEquipmentSkinDto=class{},t.CharacterCashItemEquipmentColoringPrismDto=class{},t.CharacterCashItemEquipmentDto=class{},t.CharacterCashItemEquipmentOptionDto=class{},t.CharacterCashItemEquipmentPresetDto=class{},t.CharacterDojangDto=class{},t.CharacterDto=class{},t.CharacterFinalStatDto=class{},t.CharacterHexaMatrixDto=class{},t.CharacterHexaMatrixEquipmentDto=class{},t.CharacterHexaMatrixEquipmentLinkedSkillDto=class{},t.CharacterHexaMatrixStatCoreDto=class{},t.CharacterHexaMatrixStatDto=class{},t.CharacterHyperStatDto=class{},t.CharacterHyperStatPresetDto=class{},t.CharacterImageDto=class{},t.CharacterItemEquipmentAddOptionDto=class{},t.CharacterItemEquipmentBaseOptionDto=class{},t.CharacterItemEquipmentDragonInfoDto=class{},t.CharacterItemEquipmentDto=class{},t.CharacterItemEquipmentEtcOptionDto=class{},t.CharacterItemEquipmentExceptionalOptionDto=class{},t.CharacterItemEquipmentInfoDto=class{},t.CharacterItemEquipmentMechanicInfoDto=class{},t.CharacterItemEquipmentStarforceOptionDto=class{},t.CharacterItemEquipmentTitleDto=class{},t.CharacterItemEquipmentTotalOptionDto=class{},t.CharacterLinkSkillDto=class{},t.CharacterLinkSkillInfoDto=class{},t.CharacterPetEquipmentAutoSkillDto=class{},t.CharacterPetEquipmentDto=class{},t.CharacterPetEquipmentItemDto=class{},t.CharacterPetEquipmentItemOptionDto=class{},t.CharacterPopularityDto=class{},t.CharacterPropensityDto=class{},t.CharacterSetEffectDto=class{},t.CharacterSetEffectInfoDto=class{},t.CharacterSetEffectOptionFullDto=class{},t.CharacterSetEffectSetDto=class{},t.CharacterSkillDto=class{},t.CharacterSkillInfoDto=class{},t.CharacterStatDto=class{},t.CharacterSymbolEquipmentDto=class{},t.CharacterSymbolEquipmentInfoDto=class{},t.CharacterVMatrixCodeEquipmentDto=class{},t.CharacterVMatrixDto=class{},t.GuildBasicDto=class{},t.GuildDto=class{},t.GuildSkillDto=class{},t.MapleStoryApi=m,t.MapleStoryApiError=f,t.UnionArtifactCrystalDto=class{},t.UnionArtifactDto=class{},t.UnionArtifactEffectDto=class{},t.UnionDto=class{},t.UnionRaiderBlockControlPointDto=class{},t.UnionRaiderBlockDto=class{},t.UnionRaiderBlockPositionDto=class{},t.UnionRaiderDto=class{},t.UnionRaiderInnerStatDto=class{},t.UnionRaiderPresetDto=class{}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maplestory-openapi",
3
- "version": "3.5.1",
3
+ "version": "3.7.0",
4
4
  "description": "This JavaScript library enables the use of the MapleStory OpenAPI of Nexon.",
5
5
  "keywords": [
6
6
  "maplestory",
@@ -10,7 +10,7 @@ export declare abstract class CharacterVMatrixCodeEquipmentDto {
10
10
  abstract vCoreName: string | null;
11
11
  abstract vCoreType: string | null;
12
12
  abstract vCoreLevel: number;
13
- abstract vCoreSkill1: string;
13
+ abstract vCoreSkill1: string | null;
14
14
  abstract vCoreSkill2: string | null;
15
15
  abstract vCoreSkill3: string | null;
16
16
  }
@@ -23,5 +23,6 @@ export declare enum MapleStoryApiErrorCode {
23
23
  OPENAPI00007 = 6,
24
24
  OPENAPI00009 = 7,
25
25
  OPENAPI00010 = 8,
26
- OPENAPI00011 = 9
26
+ OPENAPI00011 = 9,
27
+ OPENAPI00012 = 10
27
28
  }
@@ -0,0 +1,49 @@
1
+ import { Axios } from 'axios';
2
+ /**
3
+ * MapleStory Friends API client.
4
+ */
5
+ export declare abstract class MapleStoryFriendsApi {
6
+ private readonly accessToken;
7
+ protected readonly client: Axios;
8
+ private static readonly BASE_URL;
9
+ private static readonly DEFAULT_TIMEOUT;
10
+ protected abstract subUrl: string;
11
+ protected abstract timezoneOffset: number;
12
+ get timeout(): number;
13
+ set timeout(value: number);
14
+ constructor(accessToken: string);
15
+ /**
16
+ * API 서버의 데이터 갱신 시간에 따라 데이터가 조회 가능한 최신 날짜를 반환합니다.
17
+ *
18
+ * @param options
19
+ */
20
+ protected getProperDefaultDateOptions(options: LatestApiUpdateTimeOptions): DateOptions;
21
+ /**
22
+ * 날짜 정보를 API 서버에서 요구하는 포맷으로 변환합니다.
23
+ *
24
+ * @param dateOptions 조회 하려는 날짜
25
+ * @param minDateOptions API 호출 가능한 최소 날짜
26
+ */
27
+ protected toDateString(dateOptions: DateOptions, minDateOptions?: DateOptions): string | never;
28
+ }
29
+ /**
30
+ * API 서버의 데이터 갱신 시각과 조회 가능한 최근 날짜와 현재 날짜와의 차이
31
+ */
32
+ type LatestApiUpdateTimeOptions = {
33
+ hour: number;
34
+ minute: number;
35
+ dateOffset?: number;
36
+ };
37
+ type YMD = {
38
+ year: number;
39
+ month: number;
40
+ day: number;
41
+ };
42
+ /**
43
+ * 날짜 옵션
44
+ * - Date 객체 또는 YMD 형식의 객체를 사용할 수 있습니다.
45
+ * - 날짜는 해당 서비스 지역의 표준 시를 사용 합니다.
46
+ * - Date 객체의 offset이 해당 서비스 지역의 offset과 다를 경우 자동으로 변환 됩니다.
47
+ */
48
+ export type DateOptions = YMD | Date;
49
+ export {};
@@ -1,5 +1,5 @@
1
1
  import * as base from '../../../common/dto/character/characterCashItemEquipment';
2
- import { CharacterCashItemEquipmentBody, CharacterCashItemEquipmentColoringPrismBody, CharacterCashItemEquipmentOptionBody, CharacterCashItemEquipmentPresetBody } from '../../response/character/characterCashItemEquipmentBody';
2
+ import { CharacterCashItemEquipmentBody, CharacterCashItemEquipmentColoringPrismBody, CharacterCashItemEquipmentEffectPrismBody, CharacterCashItemEquipmentOptionBody, CharacterCashItemEquipmentPresetBody } from '../../response/character/characterCashItemEquipmentBody';
3
3
  /**
4
4
  * 캐릭터 캐시 장비 아이템 정보
5
5
  */
@@ -80,6 +80,28 @@ export declare class CharacterCashItemEquipmentColoringPrismDto extends base.Cha
80
80
  value: number;
81
81
  constructor(obj: CharacterCashItemEquipmentColoringPrismBody);
82
82
  }
83
+ /**
84
+ * 캐릭터 캐시 장비(무기) 이펙트 프리즘
85
+ */
86
+ export declare class CharacterCashItemEquipmentEffectPrismDto {
87
+ /**
88
+ * 이펙트 프리즘 색상 범위
89
+ */
90
+ colorRange: string;
91
+ /**
92
+ * 이펙트 프리즘 색조
93
+ */
94
+ hue: number;
95
+ /**
96
+ * 이펙트 프리즘 채도
97
+ */
98
+ saturation: number;
99
+ /**
100
+ * 이펙트 프리즘 명도
101
+ */
102
+ value: number;
103
+ constructor(obj: CharacterCashItemEquipmentEffectPrismBody);
104
+ }
83
105
  /**
84
106
  * 캐릭터 캐시 장비 옵션
85
107
  */
@@ -146,6 +168,10 @@ export declare class CharacterCashItemEquipmentPresetDto extends base.CharacterC
146
168
  * 캐시 장비 컬러링프리즘 정보
147
169
  */
148
170
  cashItemColoringPrism: CharacterCashItemEquipmentColoringPrismDto | null;
171
+ /**
172
+ * 캐시 장비(무기) 이펙트 프리즘 정보
173
+ */
174
+ cashItemEffectPrism: CharacterCashItemEquipmentEffectPrismDto | null;
149
175
  /**
150
176
  * 아이템 장착 가능 성별
151
177
  */
@@ -158,6 +184,10 @@ export declare class CharacterCashItemEquipmentPresetDto extends base.CharacterC
158
184
  * 프리스타일 쿠폰 적용 여부 (0:미적용, 1:적용)
159
185
  */
160
186
  freestyleFlag: string | null;
187
+ /**
188
+ * 표정 합성 정보
189
+ */
190
+ emotion_name: string | null;
161
191
  constructor(obj: CharacterCashItemEquipmentPresetBody);
162
192
  /**
163
193
  * 프리스타일 쿠폰 적용 여부
@@ -34,6 +34,10 @@ export declare class CharacterSymbolEquipmentInfoDto extends base.CharacterSymbo
34
34
  * 심볼 설명
35
35
  */
36
36
  symbolDescription: string;
37
+ /**
38
+ * 심볼 부가 효과 설명
39
+ */
40
+ symbolOtherEffectDescription: string | null;
37
41
  /**
38
42
  * 심볼로 인한 증가 수치
39
43
  */
@@ -32,6 +32,7 @@ export declare class CharacterVMatrixCodeEquipmentDto extends base.CharacterVMat
32
32
  slotId: string;
33
33
  /**
34
34
  * 슬롯 레벨
35
+ * @deprecated 2025년 12월 18일 점검 이후부터 사용하지 않는 항목입니다.
35
36
  */
36
37
  slotLevel: number;
37
38
  /**
@@ -48,14 +49,17 @@ export declare class CharacterVMatrixCodeEquipmentDto extends base.CharacterVMat
48
49
  vCoreLevel: number;
49
50
  /**
50
51
  * 코어에 해당하는 스킬 명
52
+ * @deprecated 2025년 12월 18일 점검 이후부터 사용하지 않는 항목입니다.
51
53
  */
52
- vCoreSkill1: string;
54
+ vCoreSkill1: string | null;
53
55
  /**
54
56
  * (강화 코어인 경우) 코어에 해당하는 두 번째 스킬 명
57
+ * @deprecated 2025년 12월 18일 점검 이후부터 사용하지 않는 항목입니다.
55
58
  */
56
59
  vCoreSkill2: string | null;
57
60
  /**
58
61
  * (강화 코어인 경우) 코어에 해당하는 세 번째 스킬 명
62
+ * @deprecated 2025년 12월 18일 점검 이후부터 사용하지 않는 항목입니다.
59
63
  */
60
64
  vCoreSkill3: string | null;
61
65
  constructor(obj: CharacterVMatrixCoreEquipmentDtoBody);
@@ -21,6 +21,10 @@ export declare class CashshopNoticeListItemDto {
21
21
  * 공지 링크
22
22
  */
23
23
  url: string;
24
+ /**
25
+ * 썸네일 링크
26
+ */
27
+ thumbnailUrl: string;
24
28
  /**
25
29
  * 공지 식별자
26
30
  */
@@ -21,6 +21,10 @@ export declare class EventNoticeListItemDto {
21
21
  * 공지 링크
22
22
  */
23
23
  url: string;
24
+ /**
25
+ * 썸네일 링크
26
+ */
27
+ thumbnailUrl: string;
24
28
  /**
25
29
  * 공지 식별자
26
30
  */
@@ -1,4 +1,5 @@
1
1
  export * from './mapleStoryApi';
2
+ export * from './mapleStoryFriendsApi';
2
3
  export * from './dto/character/character';
3
4
  export * from './dto/character/characterAbility';
4
5
  export * from './dto/character/characterAndroidEquipment';
@@ -0,0 +1,115 @@
1
+ import { CubeHistoryResponseDto } from './dto/history/cubeHistory';
2
+ import { PotentialHistoryResponseDto } from './dto/history/potentialHistory';
3
+ import { StarforceHistoryResponseDto } from './dto/history/starforceHistory';
4
+ import { AchievementDto } from './dto/user/achievement';
5
+ import { CharacterListDto } from './dto/user/characterList';
6
+ import { DateOptions } from '../common/mapleStoryFriendsApi';
7
+ import * as base from '../common/mapleStoryFriendsApi';
8
+ /**
9
+ * MapleStory Friends API client for KMS<br>
10
+ * This is an implementation of <a href="https://openapi.nexon.com/ko/friends/maplestory/?id=36">MapleStory Friends API</a>
11
+ */
12
+ export declare class MapleStoryFriendsApi extends base.MapleStoryFriendsApi {
13
+ protected subUrl: string;
14
+ protected timezoneOffset: number;
15
+ constructor(accessToken: string);
16
+ /**
17
+ * 계정의 보유 캐릭터 목록을 조회합니다.
18
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '캐릭터 목록'을 활용 데이터 항목으로 선택해주세요.
19
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
20
+ */
21
+ getCharacterList(): Promise<CharacterListDto>;
22
+ /**
23
+ * 계정의 업적 정보를 조회합니다.
24
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '업적 정보'를 활용 데이터 항목으로 선택해주세요.
25
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
26
+ */
27
+ getAchievement(): Promise<AchievementDto>;
28
+ /**
29
+ * 스타포스 강화 결과를 조회합니다.
30
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '스타포스 강화 결과'를 활용 데이터 항목으로 선택해주세요.
31
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
32
+ * - 스타포스 확률 정보는 최대 5분 후 확인 가능합니다.
33
+ * - 스타포스 강화 결과는 2023년 12월 27일 데이터부터 조회 가능하며, 최대 2년동안의 데이터만 제공됩니다.
34
+ * @param count 한번에 가져오려는 결과의 개수(최소 10, 최대 1000)
35
+ */
36
+ getStarforceHistory(count: number): Promise<StarforceHistoryResponseDto>;
37
+ /**
38
+ * 지목한 날짜의 스타포스 강화 결과를 조회합니다.
39
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '스타포스 강화 결과'를 활용 데이터 항목으로 선택해주세요.
40
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
41
+ * - 스타포스 확률 정보는 최대 5분 후 확인 가능합니다.
42
+ * - 스타포스 강화 결과는 2023년 12월 27일 데이터부터 조회 가능하며, 최대 2년동안의 데이터만 제공됩니다.
43
+ * @param count 한번에 가져오려는 결과의 개수(최소 10, 최대 1000)
44
+ * @param dateOptions 조회 기준일 (KST)
45
+ */
46
+ getStarforceHistory(count: number, dateOptions: DateOptions): Promise<StarforceHistoryResponseDto>;
47
+ /**
48
+ * 스타포스 강화 결과를 조회합니다.
49
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '스타포스 강화 결과'를 활용 데이터 항목으로 선택해주세요.
50
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
51
+ * - 스타포스 확률 정보는 최대 5분 후 확인 가능합니다.
52
+ * - 스타포스 강화 결과는 2023년 12월 27일 데이터부터 조회 가능하며, 최대 2년동안의 데이터만 제공됩니다.
53
+ * @param count 한번에 가져오려는 결과의 개수(최소 10, 최대 1000)
54
+ * @param cursor 페이징 처리를 위한 cursor
55
+ */
56
+ getStarforceHistory(count: number, cursor: string): Promise<StarforceHistoryResponseDto>;
57
+ /**
58
+ * 큐브 사용 결과를 조회합니다.
59
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '큐브 사용 결과'를 활용 데이터 항목으로 선택해주세요.
60
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
61
+ * - 큐브 확률 정보는 최대 30분 후 확인 가능합니다.
62
+ * - 큐브 사용 결과는 최근 2년 데이터만 조회 가능합니다.
63
+ * @param count 한번에 가져오려는 결과의 개수(최소 10, 최대 1000). 옵션 재설정을 3회 진행한 결과가 포함될 경우 입력한 count보다 적은 수로 조회될 수 있습니다.
64
+ */
65
+ getCubeHistory(count: number): Promise<CubeHistoryResponseDto>;
66
+ /**
67
+ * 지목한 날짜의 큐브 사용 결과를 조회합니다.
68
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '큐브 사용 결과'를 활용 데이터 항목으로 선택해주세요.
69
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
70
+ * - 큐브 확률 정보는 최대 30분 후 확인 가능합니다.
71
+ * - 큐브 사용 결과는 최근 2년 데이터만 조회 가능합니다.
72
+ * @param count 한번에 가져오려는 결과의 개수(최소 10, 최대 1000). 옵션 재설정을 3회 진행한 결과가 포함될 경우 입력한 count보다 적은 수로 조회될 수 있습니다.
73
+ * @param dateOptions 조회 기준일 (KST)
74
+ */
75
+ getCubeHistory(count: number, dateOptions: DateOptions): Promise<CubeHistoryResponseDto>;
76
+ /**
77
+ * 큐브 사용 결과를 조회합니다.
78
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '큐브 사용 결과'를 활용 데이터 항목으로 선택해주세요.
79
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
80
+ * - 큐브 확률 정보는 최대 30분 후 확인 가능합니다.
81
+ * - 큐브 사용 결과는 최근 2년 데이터만 조회 가능합니다.
82
+ * @param count 한번에 가져오려는 결과의 개수(최소 10, 최대 1000). 옵션 재설정을 3회 진행한 결과가 포함될 경우 입력한 count보다 적은 수로 조회될 수 있습니다.
83
+ * @param cursor 페이징 처리를 위한 cursor
84
+ */
85
+ getCubeHistory(count: number, cursor: string): Promise<CubeHistoryResponseDto>;
86
+ /**
87
+ * 잠재능력 재설정 이용 결과를 조회합니다.
88
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '잠재능력 재설정 이용 결과'를 활용 데이터 항목으로 선택해주세요.
89
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
90
+ * - 잠재능력 재설정 정보는 최대 30분 후 확인 가능합니다.
91
+ * - 잠재능력 재설정 이용 결과는 2024년 01월 25일 데이터부터 조회 가능하며, 최대 2년동안의 데이터만 제공됩니다.
92
+ * @param count 한번에 가져오려는 결과의 개수(최소 10, 최대 1000). 옵션 재설정을 3회 진행한 결과가 포함될 경우 입력한 count보다 적은 수로 조회될 수 있습니다.
93
+ */
94
+ getPotentialHistory(count: number): Promise<PotentialHistoryResponseDto>;
95
+ /**
96
+ * 지목한 날짜의 잠재능력 재설정 이용 결과를 조회합니다.
97
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '잠재능력 재설정 이용 결과'를 활용 데이터 항목으로 선택해주세요.
98
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
99
+ * - 잠재능력 재설정 정보는 최대 30분 후 확인 가능합니다.
100
+ * - 잠재능력 재설정 이용 결과는 2024년 01월 25일 데이터부터 조회 가능하며, 최대 2년동안의 데이터만 제공됩니다.
101
+ * @param count 한번에 가져오려는 결과의 개수(최소 10, 최대 1000). 옵션 재설정을 3회 진행한 결과가 포함될 경우 입력한 count보다 적은 수로 조회될 수 있습니다.
102
+ * @param dateOptions 조회 기준일 (KST)
103
+ */
104
+ getPotentialHistory(count: number, dateOptions: DateOptions): Promise<PotentialHistoryResponseDto>;
105
+ /**
106
+ * 잠재능력 재설정 이용 결과를 조회합니다.
107
+ * - 이 항목을 조회하시려면 NEXON Open ID 클라이언트 설정에서 '잠재능력 재설정 이용 결과'를 활용 데이터 항목으로 선택해주세요.
108
+ * - 이후 자세한 데이터 호출 및 활용 방법은 <a href="https://openapi.nexon.com/ko/open-id/development-guide/">NEXON Open ID 개발 가이드 문서</a>를 참조해주세요.
109
+ * - 잠재능력 재설정 정보는 최대 30분 후 확인 가능합니다.
110
+ * - 잠재능력 재설정 이용 결과는 2024년 01월 25일 데이터부터 조회 가능하며, 최대 2년동안의 데이터만 제공됩니다.
111
+ * @param count 한번에 가져오려는 결과의 개수(최소 10, 최대 1000). 옵션 재설정을 3회 진행한 결과가 포함될 경우 입력한 count보다 적은 수로 조회될 수 있습니다.
112
+ * @param cursor 페이징 처리를 위한 cursor
113
+ */
114
+ getPotentialHistory(count: number, cursor: string): Promise<PotentialHistoryResponseDto>;
115
+ }
@@ -24,9 +24,11 @@ export type CharacterCashItemEquipmentPresetBody = {
24
24
  date_option_expire: string | null;
25
25
  cash_item_label: string | null;
26
26
  cash_item_coloring_prism: CharacterCashItemEquipmentColoringPrismBody | null;
27
+ cash_item_effect_prism: CharacterCashItemEquipmentEffectPrismBody | null;
27
28
  item_gender: string | null;
28
29
  skills: string[];
29
30
  freestyle_flag: string | null;
31
+ emotion_name: string | null;
30
32
  };
31
33
  export type CharacterCashItemEquipmentOptionBody = {
32
34
  option_type: string;
@@ -38,3 +40,9 @@ export type CharacterCashItemEquipmentColoringPrismBody = {
38
40
  saturation: number;
39
41
  value: number;
40
42
  };
43
+ export type CharacterCashItemEquipmentEffectPrismBody = {
44
+ color_range: string;
45
+ hue: number;
46
+ saturation: number;
47
+ value: number;
48
+ };
@@ -7,6 +7,7 @@ export type CharacterSymbolEquipmentInfoBody = {
7
7
  symbol_name: string;
8
8
  symbol_icon: string;
9
9
  symbol_description: string;
10
+ symbol_other_effect_description: string | null;
10
11
  symbol_force: string;
11
12
  symbol_level: number;
12
13
  symbol_str: string;