kms-open-api 1.0.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.
- package/README.md +147 -0
- package/dist/index.d.mts +2874 -0
- package/dist/index.d.ts +2874 -0
- package/dist/index.js +811 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +765 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/common.ts","../src/api/base.ts","../src/errors.ts","../src/api/character.ts","../src/api/guild.ts","../src/api/history.ts","../src/api/notice.ts","../src/api/ranking.ts","../src/api/union.ts","../src/client.ts"],"sourcesContent":["/**\n * Common types for MapleStory Open API Client\n */\n\n/**\n * Date input type - accepts both Date objects and YYYY-MM-DD format strings\n */\nexport type DateInput = Date | string;\n\n/**\n * API call options for extensibility\n */\nexport interface ApiOptions {\n\t/** AbortSignal for request cancellation */\n\tsignal?: AbortSignal;\n}\n\n/**\n * API error response structure from Nexon API\n */\nexport interface ApiErrorResponse {\n\terror: {\n\t\tname: string;\n\t\tmessage: string;\n\t};\n}\n\n/**\n * Formats a DateInput to YYYY-MM-DD string format\n */\nexport function formatDate(input: DateInput): string {\n\tif (typeof input === \"string\") {\n\t\treturn input;\n\t}\n\treturn input.toISOString().split(\"T\")[0];\n}\n\n/**\n * Gets yesterday's date in YYYY-MM-DD format\n * Most MapleStory API endpoints use yesterday's date as default\n */\nexport function getYesterdayDate(): string {\n\tconst yesterday = new Date();\n\tyesterday.setDate(yesterday.getDate() - 1);\n\treturn formatDate(yesterday);\n}\n","import ky, { type KyInstance, type Options } from \"ky\";\nimport { MapleApiError, MapleNetworkError } from \"../errors.js\";\nimport type { ApiErrorResponse, ApiOptions } from \"../types/common.js\";\n\n/**\n * Base API class providing common HTTP functionality for all API categories\n *\n * Features:\n * - Centralized ky instance with base URL and headers\n * - Automatic error transformation to MapleApiError\n * - Network error handling\n */\nexport class BaseApi {\n\tprotected readonly client: KyInstance;\n\n\tconstructor(apiKey: string) {\n\t\tthis.client = ky.create({\n\t\t\tprefixUrl: \"https://open.api.nexon.com\",\n\t\t\theaders: {\n\t\t\t\t\"x-nxopen-api-key\": apiKey,\n\t\t\t},\n\t\t\thooks: {\n\t\t\t\tafterResponse: [\n\t\t\t\t\tasync (_request, _options, response) => {\n\t\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\t\tawait this.handleErrorResponse(response);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn response;\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Handles error responses and throws appropriate error types\n\t */\n\tprivate async handleErrorResponse(response: Response): Promise<never> {\n\t\tlet errorData: ApiErrorResponse | null = null;\n\n\t\ttry {\n\t\t\terrorData = (await response.json()) as ApiErrorResponse;\n\t\t} catch {\n\t\t\t// Failed to parse error response\n\t\t}\n\n\t\tconst retryAfter = response.headers.get(\"Retry-After\");\n\n\t\tthrow new MapleApiError({\n\t\t\tname: errorData?.error?.name ?? \"UNKNOWN_ERROR\",\n\t\t\tmessage: errorData?.error?.message ?? `HTTP ${response.status} Error`,\n\t\t\tcode: errorData?.error?.name ?? \"UNKNOWN\",\n\t\t\thttpStatus: response.status,\n\t\t\tretryAfter: retryAfter ? Number.parseInt(retryAfter, 10) : undefined,\n\t\t});\n\t}\n\n\t/**\n\t * Makes a GET request with proper error handling\n\t */\n\tprotected async get<T>(\n\t\tendpoint: string,\n\t\tsearchParams?: Record<string, string | number | undefined>,\n\t\toptions?: ApiOptions,\n\t): Promise<T> {\n\t\ttry {\n\t\t\t// Filter out undefined values from searchParams\n\t\t\tconst filteredParams: Record<string, string | number> = {};\n\t\t\tif (searchParams) {\n\t\t\t\tfor (const [key, value] of Object.entries(searchParams)) {\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\tfilteredParams[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst kyOptions: Options = {\n\t\t\t\tsearchParams:\n\t\t\t\t\tObject.keys(filteredParams).length > 0 ? filteredParams : undefined,\n\t\t\t};\n\n\t\t\tif (options?.signal) {\n\t\t\t\tkyOptions.signal = options.signal;\n\t\t\t}\n\n\t\t\t// Remove leading slash for ky's prefixUrl compatibility\n\t\t\tconst normalizedEndpoint = endpoint.startsWith(\"/\")\n\t\t\t\t? endpoint.slice(1)\n\t\t\t\t: endpoint;\n\n\t\t\treturn await this.client.get(normalizedEndpoint, kyOptions).json<T>();\n\t\t} catch (error) {\n\t\t\t// Re-throw MapleApiError as is\n\t\t\tif (error instanceof MapleApiError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\t// Handle network errors\n\t\t\tif (error instanceof TypeError && error.message.includes(\"fetch\")) {\n\t\t\t\tthrow new MapleNetworkError({\n\t\t\t\t\tmessage: \"Network error: Unable to connect to API\",\n\t\t\t\t\toriginalError: error,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Handle timeout errors\n\t\t\tif (error instanceof DOMException && error.name === \"AbortError\") {\n\t\t\t\tthrow new MapleNetworkError({\n\t\t\t\t\tmessage: \"Request was aborted\",\n\t\t\t\t\toriginalError: error,\n\t\t\t\t\tisTimeout: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Re-throw unknown errors\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n","/**\n * MapleApiError - Standardized error class for all API errors\n *\n * Wraps all API errors with consistent structure including:\n * - Error code from Nexon API\n * - HTTP status code\n * - Original error for debugging\n */\nexport class MapleApiError extends Error {\n\t/** Error code from Nexon API (e.g., \"OPENAPI00001\") */\n\treadonly code: string;\n\n\t/** HTTP status code (400, 403, 429, 500, etc.) */\n\treadonly httpStatus: number;\n\n\t/** Original error for debugging purposes */\n\treadonly originalError?: Error;\n\n\t/** Retry-After header value in seconds (for rate limit errors) */\n\treadonly retryAfter?: number;\n\n\tconstructor(options: {\n\t\tname: string;\n\t\tmessage: string;\n\t\tcode: string;\n\t\thttpStatus: number;\n\t\toriginalError?: Error;\n\t\tretryAfter?: number;\n\t}) {\n\t\tsuper(options.message);\n\t\tthis.name = options.name;\n\t\tthis.code = options.code;\n\t\tthis.httpStatus = options.httpStatus;\n\t\tthis.originalError = options.originalError;\n\t\tthis.retryAfter = options.retryAfter;\n\n\t\t// Maintains proper stack trace for where error was thrown\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, MapleApiError);\n\t\t}\n\t}\n\n\t/**\n\t * Check if this is an authentication error (403)\n\t */\n\tisAuthError(): boolean {\n\t\treturn this.httpStatus === 403;\n\t}\n\n\t/**\n\t * Check if this is a rate limit error (429)\n\t */\n\tisRateLimitError(): boolean {\n\t\treturn this.httpStatus === 429;\n\t}\n\n\t/**\n\t * Check if this is a bad request error (400)\n\t */\n\tisBadRequestError(): boolean {\n\t\treturn this.httpStatus === 400;\n\t}\n\n\t/**\n\t * Check if this is a server error (5xx)\n\t */\n\tisServerError(): boolean {\n\t\treturn this.httpStatus >= 500 && this.httpStatus < 600;\n\t}\n\n\t/**\n\t * Creates a string representation of the error\n\t */\n\ttoString(): string {\n\t\treturn `MapleApiError: [${this.code}] ${this.message} (HTTP ${this.httpStatus})`;\n\t}\n}\n\n/**\n * MapleNetworkError - Error for network-related issues\n *\n * Distinguishes network errors from API errors for proper handling\n */\nexport class MapleNetworkError extends Error {\n\t/** Original error for debugging */\n\treadonly originalError?: Error;\n\n\t/** Whether this is a timeout error */\n\treadonly isTimeout: boolean;\n\n\tconstructor(options: {\n\t\tmessage: string;\n\t\toriginalError?: Error;\n\t\tisTimeout?: boolean;\n\t}) {\n\t\tsuper(options.message);\n\t\tthis.name = \"MapleNetworkError\";\n\t\tthis.originalError = options.originalError;\n\t\tthis.isTimeout = options.isTimeout ?? false;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, MapleNetworkError);\n\t\t}\n\t}\n}\n","/**\n * 캐릭터 정보 조회 API\n * Auto-generated from JSON schema - DO NOT EDIT\n * Generated at: 2025-12-24T23:59:23.304Z\n */\n\nimport type { ApiOptions } from \"../types/common.js\";\nimport { formatDate } from \"../types/common.js\";\nimport type {\n\tCharacterAbilityResponse,\n\tCharacterAchievementResponse,\n\tCharacterAndroidEquipmentResponse,\n\tCharacterBasicResponse,\n\tCharacterBeautyEquipmentResponse,\n\tCharacterCashitemEquipmentResponse,\n\tCharacterDojangResponse,\n\tCharacterHexamatrixResponse,\n\tCharacterHexamatrixStatResponse,\n\tCharacterHyperStatResponse,\n\tCharacterIdResponse,\n\tCharacterItemEquipmentResponse,\n\tCharacterLinkSkillResponse,\n\tCharacterListResponse,\n\tCharacterOtherStatResponse,\n\tCharacterPetEquipmentResponse,\n\tCharacterPopularityResponse,\n\tCharacterPropensityResponse,\n\tCharacterRingExchangeSkillEquipmentResponse,\n\tCharacterSetEffectResponse,\n\tCharacterSkillResponse,\n\tCharacterStatResponse,\n\tCharacterSymbolEquipmentResponse,\n\tCharacterVmatrixResponse,\n\tGetCharacterAbilityParams,\n\tGetCharacterAndroidEquipmentParams,\n\tGetCharacterBasicParams,\n\tGetCharacterBeautyEquipmentParams,\n\tGetCharacterCashitemEquipmentParams,\n\tGetCharacterDojangParams,\n\tGetCharacterHexamatrixParams,\n\tGetCharacterHexamatrixStatParams,\n\tGetCharacterHyperStatParams,\n\tGetCharacterIdParams,\n\tGetCharacterItemEquipmentParams,\n\tGetCharacterLinkSkillParams,\n\tGetCharacterOtherStatParams,\n\tGetCharacterPetEquipmentParams,\n\tGetCharacterPopularityParams,\n\tGetCharacterPropensityParams,\n\tGetCharacterRingExchangeSkillEquipmentParams,\n\tGetCharacterSetEffectParams,\n\tGetCharacterSkillParams,\n\tGetCharacterStatParams,\n\tGetCharacterSymbolEquipmentParams,\n\tGetCharacterVmatrixParams,\n} from \"../types/character.js\";\nimport { BaseApi } from \"./base.js\";\n\n/**\n * 캐릭터 정보 조회 API Class\n */\nexport class CharacterApi extends BaseApi {\n\n\t/**\n\t * 캐릭터 목록 조회\n\t */\n\tasync getList(options?: ApiOptions): Promise<CharacterListResponse> {\n\t\treturn this.get<CharacterListResponse>(\"/maplestory/v1/character/list\", undefined, options);\n\t}\n\n\t/**\n\t * 업적 정보 조회\n\t */\n\tasync getAchievement(options?: ApiOptions): Promise<CharacterAchievementResponse> {\n\t\treturn this.get<CharacterAchievementResponse>(\"/maplestory/v1/user/achievement\", undefined, options);\n\t}\n\n\t/**\n\t * 캐릭터 식별자(ocid) 조회\n\t */\n\tasync getId(params: GetCharacterIdParams, options?: ApiOptions): Promise<CharacterIdResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.character_name = String(params.characterName);\n\n\t\treturn this.get<CharacterIdResponse>(\"/maplestory/v1/id\", searchParams, options);\n\t}\n\n\t/**\n\t * 기본 정보 조회\n\t */\n\tasync getBasic(params: GetCharacterBasicParams, options?: ApiOptions): Promise<CharacterBasicResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterBasicResponse>(\"/maplestory/v1/character/basic\", searchParams, options);\n\t}\n\n\t/**\n\t * 인기도 정보 조회\n\t */\n\tasync getPopularity(params: GetCharacterPopularityParams, options?: ApiOptions): Promise<CharacterPopularityResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterPopularityResponse>(\"/maplestory/v1/character/popularity\", searchParams, options);\n\t}\n\n\t/**\n\t * 종합 능력치 정보 조회\n\t */\n\tasync getStat(params: GetCharacterStatParams, options?: ApiOptions): Promise<CharacterStatResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterStatResponse>(\"/maplestory/v1/character/stat\", searchParams, options);\n\t}\n\n\t/**\n\t * 하이퍼스탯 정보 조회\n\t */\n\tasync getHyperstat(params: GetCharacterHyperStatParams, options?: ApiOptions): Promise<CharacterHyperStatResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterHyperStatResponse>(\"/maplestory/v1/character/hyper-stat\", searchParams, options);\n\t}\n\n\t/**\n\t * 성향 정보 조회\n\t */\n\tasync getPropensity(params: GetCharacterPropensityParams, options?: ApiOptions): Promise<CharacterPropensityResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterPropensityResponse>(\"/maplestory/v1/character/propensity\", searchParams, options);\n\t}\n\n\t/**\n\t * 어빌리티 정보 조회\n\t */\n\tasync getAbility(params: GetCharacterAbilityParams, options?: ApiOptions): Promise<CharacterAbilityResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterAbilityResponse>(\"/maplestory/v1/character/ability\", searchParams, options);\n\t}\n\n\t/**\n\t * 장착 장비 정보 조회 (캐시 장비 제외)\n\t */\n\tasync getItemequipment(params: GetCharacterItemEquipmentParams, options?: ApiOptions): Promise<CharacterItemEquipmentResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterItemEquipmentResponse>(\"/maplestory/v1/character/item-equipment\", searchParams, options);\n\t}\n\n\t/**\n\t * 장착 캐시 장비 정보 조회\n\t */\n\tasync getCashitemequipment(params: GetCharacterCashitemEquipmentParams, options?: ApiOptions): Promise<CharacterCashitemEquipmentResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterCashitemEquipmentResponse>(\"/maplestory/v1/character/cashitem-equipment\", searchParams, options);\n\t}\n\n\t/**\n\t * 장착 심볼 정보 조회\n\t */\n\tasync getSymbolequipment(params: GetCharacterSymbolEquipmentParams, options?: ApiOptions): Promise<CharacterSymbolEquipmentResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterSymbolEquipmentResponse>(\"/maplestory/v1/character/symbol-equipment\", searchParams, options);\n\t}\n\n\t/**\n\t * 적용 세트 효과 정보 조회\n\t */\n\tasync getSeteffect(params: GetCharacterSetEffectParams, options?: ApiOptions): Promise<CharacterSetEffectResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterSetEffectResponse>(\"/maplestory/v1/character/set-effect\", searchParams, options);\n\t}\n\n\t/**\n\t * 장착 헤어, 성형, 피부 정보 조회\n\t */\n\tasync getBeautyequipment(params: GetCharacterBeautyEquipmentParams, options?: ApiOptions): Promise<CharacterBeautyEquipmentResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterBeautyEquipmentResponse>(\"/maplestory/v1/character/beauty-equipment\", searchParams, options);\n\t}\n\n\t/**\n\t * 장착 안드로이드 정보 조회\n\t */\n\tasync getAndroidequipment(params: GetCharacterAndroidEquipmentParams, options?: ApiOptions): Promise<CharacterAndroidEquipmentResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterAndroidEquipmentResponse>(\"/maplestory/v1/character/android-equipment\", searchParams, options);\n\t}\n\n\t/**\n\t * 장착 펫 정보 조회\n\t */\n\tasync getPetequipment(params: GetCharacterPetEquipmentParams, options?: ApiOptions): Promise<CharacterPetEquipmentResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterPetEquipmentResponse>(\"/maplestory/v1/character/pet-equipment\", searchParams, options);\n\t}\n\n\t/**\n\t * 스킬 정보 조회\n\t */\n\tasync getSkill(params: GetCharacterSkillParams, options?: ApiOptions): Promise<CharacterSkillResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\t\tsearchParams.character_skill_grade = String(params.characterSkillGrade);\n\n\t\treturn this.get<CharacterSkillResponse>(\"/maplestory/v1/character/skill\", searchParams, options);\n\t}\n\n\t/**\n\t * 장착 링크 스킬 정보 조회\n\t */\n\tasync getLinkskill(params: GetCharacterLinkSkillParams, options?: ApiOptions): Promise<CharacterLinkSkillResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterLinkSkillResponse>(\"/maplestory/v1/character/link-skill\", searchParams, options);\n\t}\n\n\t/**\n\t * V매트릭스 정보 조회\n\t */\n\tasync getVmatrix(params: GetCharacterVmatrixParams, options?: ApiOptions): Promise<CharacterVmatrixResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterVmatrixResponse>(\"/maplestory/v1/character/vmatrix\", searchParams, options);\n\t}\n\n\t/**\n\t * HEXA 코어 정보 조회\n\t */\n\tasync getHexamatrix(params: GetCharacterHexamatrixParams, options?: ApiOptions): Promise<CharacterHexamatrixResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterHexamatrixResponse>(\"/maplestory/v1/character/hexamatrix\", searchParams, options);\n\t}\n\n\t/**\n\t * HEXA 매트릭스 설정 HEXA 스탯 정보 조회\n\t */\n\tasync getHexamatrixstat(params: GetCharacterHexamatrixStatParams, options?: ApiOptions): Promise<CharacterHexamatrixStatResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterHexamatrixStatResponse>(\"/maplestory/v1/character/hexamatrix-stat\", searchParams, options);\n\t}\n\n\t/**\n\t * 무릉도장 최고 기록 정보 조회\n\t */\n\tasync getDojang(params: GetCharacterDojangParams, options?: ApiOptions): Promise<CharacterDojangResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterDojangResponse>(\"/maplestory/v1/character/dojang\", searchParams, options);\n\t}\n\n\t/**\n\t * 기타 능력치 영향 요소 정보 조회\n\t */\n\tasync getOtherstat(params: GetCharacterOtherStatParams, options?: ApiOptions): Promise<CharacterOtherStatResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterOtherStatResponse>(\"/maplestory/v1/character/other-stat\", searchParams, options);\n\t}\n\n\t/**\n\t * 링 익스체인지 스킬 등록 장비 조회\n\t */\n\tasync getRingexchangeskillequipment(params: GetCharacterRingExchangeSkillEquipmentParams, options?: ApiOptions): Promise<CharacterRingExchangeSkillEquipmentResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<CharacterRingExchangeSkillEquipmentResponse>(\"/maplestory/v1/character/ring-exchange-skill-equipment\", searchParams, options);\n\t}\n}\n","/**\n * 길드 정보 조회 API\n * Auto-generated from JSON schema - DO NOT EDIT\n * Generated at: 2025-12-24T23:59:23.305Z\n */\n\nimport type { ApiOptions } from \"../types/common.js\";\nimport { formatDate } from \"../types/common.js\";\nimport type {\n\tGetGuildBasicParams,\n\tGetGuildIdParams,\n\tGuildBasicResponse,\n\tGuildIdResponse,\n} from \"../types/guild.js\";\nimport { BaseApi } from \"./base.js\";\n\n/**\n * 길드 정보 조회 API Class\n */\nexport class GuildApi extends BaseApi {\n\n\t/**\n\t * 길드 식별자(oguild_id) 정보 조회\n\t */\n\tasync getId(params: GetGuildIdParams, options?: ApiOptions): Promise<GuildIdResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.guild_name = String(params.guildName);\n\t\tsearchParams.world_name = String(params.worldName);\n\n\t\treturn this.get<GuildIdResponse>(\"/maplestory/v1/guild/id\", searchParams, options);\n\t}\n\n\t/**\n\t * 기본 정보 조회\n\t */\n\tasync getBasic(params: GetGuildBasicParams, options?: ApiOptions): Promise<GuildBasicResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.oguild_id = String(params.oguildId);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<GuildBasicResponse>(\"/maplestory/v1/guild/basic\", searchParams, options);\n\t}\n}\n","/**\n * 확률 정보 조회 API\n * Auto-generated from JSON schema - DO NOT EDIT\n * Generated at: 2025-12-24T23:59:23.305Z\n */\n\nimport type { ApiOptions } from \"../types/common.js\";\nimport { formatDate } from \"../types/common.js\";\nimport type {\n\tGetHistoryCubeParams,\n\tGetHistoryPotentialParams,\n\tGetHistoryStarforceParams,\n\tHistoryCubeResponse,\n\tHistoryLegacyOuidResponse,\n\tHistoryOuidResponse,\n\tHistoryPotentialResponse,\n\tHistoryStarforceResponse,\n} from \"../types/history.js\";\nimport { BaseApi } from \"./base.js\";\n\n/**\n * 확률 정보 조회 API Class\n */\nexport class HistoryApi extends BaseApi {\n\n\t/**\n\t * 계정 식별자(ouid) 조회 (구 API KEY 사용)\n\t */\n\tasync getLegacyouid(options?: ApiOptions): Promise<HistoryLegacyOuidResponse> {\n\t\treturn this.get<HistoryLegacyOuidResponse>(\"/maplestory/legacy/ouid\", undefined, options);\n\t}\n\n\t/**\n\t * 계정 식별자(ouid) 조회\n\t */\n\tasync getOuid(options?: ApiOptions): Promise<HistoryOuidResponse> {\n\t\treturn this.get<HistoryOuidResponse>(\"/maplestory/v1/ouid\", undefined, options);\n\t}\n\n\t/**\n\t * 스타포스 강화 결과 조회\n\t */\n\tasync getStarforce(params: GetHistoryStarforceParams, options?: ApiOptions): Promise<HistoryStarforceResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.count = String(params.count);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\t\tif (params.cursor !== undefined) {\n\t\t\tsearchParams.cursor = String(params.cursor);\n\t\t}\n\n\t\treturn this.get<HistoryStarforceResponse>(\"/maplestory/v1/history/starforce\", searchParams, options);\n\t}\n\n\t/**\n\t * 잠재능력 재설정 이용 결과 조회\n\t */\n\tasync getPotential(params: GetHistoryPotentialParams, options?: ApiOptions): Promise<HistoryPotentialResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.count = String(params.count);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\t\tif (params.cursor !== undefined) {\n\t\t\tsearchParams.cursor = String(params.cursor);\n\t\t}\n\n\t\treturn this.get<HistoryPotentialResponse>(\"/maplestory/v1/history/potential\", searchParams, options);\n\t}\n\n\t/**\n\t * 큐브 사용 결과 조회\n\t */\n\tasync getCube(params: GetHistoryCubeParams, options?: ApiOptions): Promise<HistoryCubeResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.count = String(params.count);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\t\tif (params.cursor !== undefined) {\n\t\t\tsearchParams.cursor = String(params.cursor);\n\t\t}\n\n\t\treturn this.get<HistoryCubeResponse>(\"/maplestory/v1/history/cube\", searchParams, options);\n\t}\n}\n","/**\n * 공지 정보 조회 API\n * Auto-generated from JSON schema - DO NOT EDIT\n * Generated at: 2025-12-24T23:59:23.305Z\n */\n\nimport type { ApiOptions } from \"../types/common.js\";\nimport type {\n\tGetNoticeCashshopDetailParams,\n\tGetNoticeDetailParams,\n\tGetNoticeEventDetailParams,\n\tGetNoticeUpdateDetailParams,\n\tNoticeCashshopDetailResponse,\n\tNoticeDetailResponse,\n\tNoticeEventDetailResponse,\n\tNoticeNoticeCashshopResponse,\n\tNoticeNoticeEventResponse,\n\tNoticeNoticeResponse,\n\tNoticeNoticeUpdateResponse,\n\tNoticeUpdateDetailResponse,\n} from \"../types/notice.js\";\nimport { BaseApi } from \"./base.js\";\n\n/**\n * 공지 정보 조회 API Class\n */\nexport class NoticeApi extends BaseApi {\n\n\t/**\n\t * 공지사항 목록 조회\n\t */\n\tasync getNotice(options?: ApiOptions): Promise<NoticeNoticeResponse> {\n\t\treturn this.get<NoticeNoticeResponse>(\"/maplestory/v1/notice\", undefined, options);\n\t}\n\n\t/**\n\t * 공지사항 상세 조회\n\t */\n\tasync getDetail(params: GetNoticeDetailParams, options?: ApiOptions): Promise<NoticeDetailResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.notice_id = String(params.noticeId);\n\n\t\treturn this.get<NoticeDetailResponse>(\"/maplestory/v1/notice/detail\", searchParams, options);\n\t}\n\n\t/**\n\t * 업데이트 목록 조회\n\t */\n\tasync getNoticeupdate(options?: ApiOptions): Promise<NoticeNoticeUpdateResponse> {\n\t\treturn this.get<NoticeNoticeUpdateResponse>(\"/maplestory/v1/notice-update\", undefined, options);\n\t}\n\n\t/**\n\t * 업데이트 상세 조회\n\t */\n\tasync getUpdatedetail(params: GetNoticeUpdateDetailParams, options?: ApiOptions): Promise<NoticeUpdateDetailResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.notice_id = String(params.noticeId);\n\n\t\treturn this.get<NoticeUpdateDetailResponse>(\"/maplestory/v1/notice-update/detail\", searchParams, options);\n\t}\n\n\t/**\n\t * 진행 중 이벤트 목록 조회\n\t */\n\tasync getNoticeevent(options?: ApiOptions): Promise<NoticeNoticeEventResponse> {\n\t\treturn this.get<NoticeNoticeEventResponse>(\"/maplestory/v1/notice-event\", undefined, options);\n\t}\n\n\t/**\n\t * 진행 중 이벤트 상세 조회\n\t */\n\tasync getEventdetail(params: GetNoticeEventDetailParams, options?: ApiOptions): Promise<NoticeEventDetailResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.notice_id = String(params.noticeId);\n\n\t\treturn this.get<NoticeEventDetailResponse>(\"/maplestory/v1/notice-event/detail\", searchParams, options);\n\t}\n\n\t/**\n\t * 캐시샵 공지 목록 조회\n\t */\n\tasync getNoticecashshop(options?: ApiOptions): Promise<NoticeNoticeCashshopResponse> {\n\t\treturn this.get<NoticeNoticeCashshopResponse>(\"/maplestory/v1/notice-cashshop\", undefined, options);\n\t}\n\n\t/**\n\t * 캐시샵 공지 상세 조회\n\t */\n\tasync getCashshopdetail(params: GetNoticeCashshopDetailParams, options?: ApiOptions): Promise<NoticeCashshopDetailResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.notice_id = String(params.noticeId);\n\n\t\treturn this.get<NoticeCashshopDetailResponse>(\"/maplestory/v1/notice-cashshop/detail\", searchParams, options);\n\t}\n}\n","/**\n * 랭킹 정보 조회 API\n * Auto-generated from JSON schema - DO NOT EDIT\n * Generated at: 2025-12-24T23:59:23.305Z\n */\n\nimport type { ApiOptions } from \"../types/common.js\";\nimport { formatDate } from \"../types/common.js\";\nimport type {\n\tGetRankingAchievementParams,\n\tGetRankingDojangParams,\n\tGetRankingGuildParams,\n\tGetRankingOverallParams,\n\tGetRankingTheseedParams,\n\tGetRankingUnionParams,\n\tRankingAchievementResponse,\n\tRankingDojangResponse,\n\tRankingGuildResponse,\n\tRankingOverallResponse,\n\tRankingTheseedResponse,\n\tRankingUnionResponse,\n} from \"../types/ranking.js\";\nimport { BaseApi } from \"./base.js\";\n\n/**\n * 랭킹 정보 조회 API Class\n */\nexport class RankingApi extends BaseApi {\n\n\t/**\n\t * 종합 랭킹 정보 조회\n\t */\n\tasync getOverall(params: GetRankingOverallParams, options?: ApiOptions): Promise<RankingOverallResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.date = formatDate(params.date);\n\t\tif (params.worldName !== undefined) {\n\t\t\tsearchParams.world_name = String(params.worldName);\n\t\t}\n\t\tif (params.worldType !== undefined) {\n\t\t\tsearchParams.world_type = String(params.worldType);\n\t\t}\n\t\tif (params.class !== undefined) {\n\t\t\tsearchParams.class = String(params.class);\n\t\t}\n\t\tif (params.ocid !== undefined) {\n\t\t\tsearchParams.ocid = String(params.ocid);\n\t\t}\n\t\tif (params.page !== undefined) {\n\t\t\tsearchParams.page = String(params.page);\n\t\t}\n\n\t\treturn this.get<RankingOverallResponse>(\"/maplestory/v1/ranking/overall\", searchParams, options);\n\t}\n\n\t/**\n\t * 유니온 랭킹 정보 조회\n\t */\n\tasync getUnion(params: GetRankingUnionParams, options?: ApiOptions): Promise<RankingUnionResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.date = formatDate(params.date);\n\t\tif (params.worldName !== undefined) {\n\t\t\tsearchParams.world_name = String(params.worldName);\n\t\t}\n\t\tif (params.ocid !== undefined) {\n\t\t\tsearchParams.ocid = String(params.ocid);\n\t\t}\n\t\tif (params.page !== undefined) {\n\t\t\tsearchParams.page = String(params.page);\n\t\t}\n\n\t\treturn this.get<RankingUnionResponse>(\"/maplestory/v1/ranking/union\", searchParams, options);\n\t}\n\n\t/**\n\t * 길드 랭킹 정보 조회\n\t */\n\tasync getGuild(params: GetRankingGuildParams, options?: ApiOptions): Promise<RankingGuildResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.date = formatDate(params.date);\n\t\tif (params.worldName !== undefined) {\n\t\t\tsearchParams.world_name = String(params.worldName);\n\t\t}\n\t\tsearchParams.ranking_type = String(params.rankingType);\n\t\tif (params.guildName !== undefined) {\n\t\t\tsearchParams.guild_name = String(params.guildName);\n\t\t}\n\t\tif (params.page !== undefined) {\n\t\t\tsearchParams.page = String(params.page);\n\t\t}\n\n\t\treturn this.get<RankingGuildResponse>(\"/maplestory/v1/ranking/guild\", searchParams, options);\n\t}\n\n\t/**\n\t * 무릉도장 랭킹 정보 조회\n\t */\n\tasync getDojang(params: GetRankingDojangParams, options?: ApiOptions): Promise<RankingDojangResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.date = formatDate(params.date);\n\t\tif (params.worldName !== undefined) {\n\t\t\tsearchParams.world_name = String(params.worldName);\n\t\t}\n\t\tsearchParams.difficulty = String(params.difficulty);\n\t\tif (params.class !== undefined) {\n\t\t\tsearchParams.class = String(params.class);\n\t\t}\n\t\tif (params.ocid !== undefined) {\n\t\t\tsearchParams.ocid = String(params.ocid);\n\t\t}\n\t\tif (params.page !== undefined) {\n\t\t\tsearchParams.page = String(params.page);\n\t\t}\n\n\t\treturn this.get<RankingDojangResponse>(\"/maplestory/v1/ranking/dojang\", searchParams, options);\n\t}\n\n\t/**\n\t * 더 시드 랭킹 정보 조회\n\t */\n\tasync getTheseed(params: GetRankingTheseedParams, options?: ApiOptions): Promise<RankingTheseedResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.date = formatDate(params.date);\n\t\tif (params.worldName !== undefined) {\n\t\t\tsearchParams.world_name = String(params.worldName);\n\t\t}\n\t\tif (params.ocid !== undefined) {\n\t\t\tsearchParams.ocid = String(params.ocid);\n\t\t}\n\t\tif (params.page !== undefined) {\n\t\t\tsearchParams.page = String(params.page);\n\t\t}\n\n\t\treturn this.get<RankingTheseedResponse>(\"/maplestory/v1/ranking/theseed\", searchParams, options);\n\t}\n\n\t/**\n\t * 업적 랭킹 정보 조회\n\t */\n\tasync getAchievement(params: GetRankingAchievementParams, options?: ApiOptions): Promise<RankingAchievementResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.date = formatDate(params.date);\n\t\tif (params.ocid !== undefined) {\n\t\t\tsearchParams.ocid = String(params.ocid);\n\t\t}\n\t\tif (params.page !== undefined) {\n\t\t\tsearchParams.page = String(params.page);\n\t\t}\n\n\t\treturn this.get<RankingAchievementResponse>(\"/maplestory/v1/ranking/achievement\", searchParams, options);\n\t}\n}\n","/**\n * 유니온 정보 조회 API\n * Auto-generated from JSON schema - DO NOT EDIT\n * Generated at: 2025-12-24T23:59:23.305Z\n */\n\nimport type { ApiOptions } from \"../types/common.js\";\nimport { formatDate } from \"../types/common.js\";\nimport type {\n\tGetUnionUnionArtifactParams,\n\tGetUnionUnionChampionParams,\n\tGetUnionUnionParams,\n\tGetUnionUnionRaiderParams,\n\tUnionUnionArtifactResponse,\n\tUnionUnionChampionResponse,\n\tUnionUnionRaiderResponse,\n\tUnionUnionResponse,\n} from \"../types/union.js\";\nimport { BaseApi } from \"./base.js\";\n\n/**\n * 유니온 정보 조회 API Class\n */\nexport class UnionApi extends BaseApi {\n\n\t/**\n\t * 유니온 정보 조회\n\t */\n\tasync getUnion(params: GetUnionUnionParams, options?: ApiOptions): Promise<UnionUnionResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<UnionUnionResponse>(\"/maplestory/v1/user/union\", searchParams, options);\n\t}\n\n\t/**\n\t * 유니온 공격대 정보 조회\n\t */\n\tasync getUnionraider(params: GetUnionUnionRaiderParams, options?: ApiOptions): Promise<UnionUnionRaiderResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<UnionUnionRaiderResponse>(\"/maplestory/v1/user/union-raider\", searchParams, options);\n\t}\n\n\t/**\n\t * 유니온 아티팩트 정보 조회\n\t */\n\tasync getUnionartifact(params: GetUnionUnionArtifactParams, options?: ApiOptions): Promise<UnionUnionArtifactResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<UnionUnionArtifactResponse>(\"/maplestory/v1/user/union-artifact\", searchParams, options);\n\t}\n\n\t/**\n\t * 유니온 챔피언 정보 조회\n\t */\n\tasync getUnionchampion(params: GetUnionUnionChampionParams, options?: ApiOptions): Promise<UnionUnionChampionResponse> {\n\t\tconst searchParams: Record<string, string> = {};\n\n\t\tsearchParams.ocid = String(params.ocid);\n\t\tif (params.date !== undefined) {\n\t\t\tsearchParams.date = formatDate(params.date);\n\t\t}\n\n\t\treturn this.get<UnionUnionChampionResponse>(\"/maplestory/v1/user/union-champion\", searchParams, options);\n\t}\n}\n","/**\n * MapleStory Open API Client\n * Auto-generated - DO NOT EDIT\n * Generated at: 2025-12-24T23:59:23.306Z\n */\n\nimport { CharacterApi } from \"./api/character.js\";\nimport { GuildApi } from \"./api/guild.js\";\nimport { HistoryApi } from \"./api/history.js\";\nimport { NoticeApi } from \"./api/notice.js\";\nimport { RankingApi } from \"./api/ranking.js\";\nimport { UnionApi } from \"./api/union.js\";\n\n/**\n * Client configuration options\n */\nexport interface MapleStoryClientOptions {\n\t/**\n\t * Nexon Open API key\n\t * Obtain from https://openapi.nexon.com\n\t */\n\tapiKey: string;\n}\n\n/**\n * MapleStory Open API Client\n */\nexport class MapleStoryClient {\n\treadonly character: CharacterApi;\n\treadonly guild: GuildApi;\n\treadonly history: HistoryApi;\n\treadonly notice: NoticeApi;\n\treadonly ranking: RankingApi;\n\treadonly union: UnionApi;\n\n\tconstructor(options: MapleStoryClientOptions) {\n\t\tif (!options.apiKey) {\n\t\t\tthrow new Error(\"API key is required\");\n\t\t}\n\n\t\tthis.character = new CharacterApi(options.apiKey);\n\t\tthis.guild = new GuildApi(options.apiKey);\n\t\tthis.history = new HistoryApi(options.apiKey);\n\t\tthis.notice = new NoticeApi(options.apiKey);\n\t\tthis.ranking = new RankingApi(options.apiKey);\n\t\tthis.union = new UnionApi(options.apiKey);\n\t}\n}\n"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "kms-open-api",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "TypeScript client for Nexon MapleStory Open API",
|
|
5
|
+
"author": "rsptursf",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/ursfrspt/maplestory-open-api.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/ursfrspt/maplestory-open-api#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/ursfrspt/maplestory-open-api/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"maplestory",
|
|
17
|
+
"nexon",
|
|
18
|
+
"openapi",
|
|
19
|
+
"api-client",
|
|
20
|
+
"typescript"
|
|
21
|
+
],
|
|
22
|
+
"main": "./dist/index.js",
|
|
23
|
+
"module": "./dist/index.mjs",
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"import": "./dist/index.mjs",
|
|
29
|
+
"require": "./dist/index.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsup",
|
|
37
|
+
"test": "vitest",
|
|
38
|
+
"test:run": "vitest run",
|
|
39
|
+
"test:watch": "vitest watch",
|
|
40
|
+
"crawl": "npx tsx tools/crawl-docs.ts",
|
|
41
|
+
"generate": "npx tsx tools/generate.ts"
|
|
42
|
+
},
|
|
43
|
+
"packageManager": "pnpm@10.10.0",
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"ky": "^1.14.1"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@biomejs/biome": "2.3.10",
|
|
49
|
+
"@types/node": "^25.0.3",
|
|
50
|
+
"dotenv": "^17.2.3",
|
|
51
|
+
"playwright": "^1.57.0",
|
|
52
|
+
"tsup": "^8.5.0",
|
|
53
|
+
"tsx": "^4.21.0",
|
|
54
|
+
"typescript": "^5.9.3",
|
|
55
|
+
"vitest": "^4.0.16"
|
|
56
|
+
}
|
|
57
|
+
}
|