fix. 개발 도구 적용. (typescript, prettier, es-lint)

This commit is contained in:
clkim
2025-09-16 13:01:17 +09:00
parent be15192e59
commit 2c07ff4fce
65 changed files with 6849 additions and 2548 deletions

View File

@@ -1,317 +1,331 @@
// API 요청 파라미터 타입
export interface GameDataRequest {
game_alias: string;
lang_code: string;
q?: string;
qc?: string;
game_alias: string
lang_code: string
q?: string
qc?: string
}
// API 응답 데이터 타입
export interface GameDataResponse {
code: number;
message: string;
value: GameDataValue;
code: number
message: string
value: GameDataValue
}
// API 응답의 value 객체 타입
export interface GameDataValue {
game_id: string;
game_code: number;
s3_folder_name: string;
game_name: string;
ga_code: string;
favicon_path: string;
design_theme: number;
lang_codes: string; // JSON 문자열로 변경
key_color_codes: string; // JSON 문자열로 변경
use_game_font: boolean;
footer_dev_ci_img_yn: boolean;
footer_dev_ci_img_path: string;
game_font: string; // JSON 문자열로 변경
globals: GameDataGlobal[]; // 배열로 변경
gnb: GameDataGnb;
intro: GameDataIntro;
inspection: Record<string, any>; // 동적 객체
stove_gnb: string; // JSON 문자열로 변경
meta_tag: string; // JSON 문자열로 변경
sns: string; // JSON 문자열로 변경
footer: string; // JSON 문자열로 변경
game_id: string
game_code: number
s3_folder_name: string
game_name: string
ga_code: string
design_theme: number
lang_codes: string // JSON 문자열로 변경
key_color_codes: string // JSON 문자열로 변경
use_game_font: boolean
comm_sns_bg_color_code: string
comm_multilang_filename: string
footer_dev_ci_img_yn: boolean
footer_dev_ci_img_path: string
default_lang_code?: string // 기본 언어 코드 추가
game_font: string // JSON 문자열로 변경
globals: GameDataGlobal[] // 배열로 변경
gnb: GameDataGnb
intro: GameDataIntro
inspection: Record<string, any> // 동적 객체
stove_gnb: GameDataStoveGnb // JSON 문자열로 변경
favicon_path: string // JSON 문자열로 변경
meta_tag: string // JSON 문자열로 변경
sns: string // JSON 문자열로 변경
footer: string // JSON 문자열로 변경
}
// Global 설정 타입
export interface GameDataGlobal {
system_font: string; // JSON 문자열로 변경
lang: string; // JSON 문자열로 변경
system_font: string // JSON 문자열로 변경
lang: string // JSON 문자열로 변경
}
// 폰트 타입
export interface GameDataFont {
"font-family": string;
'font-family': string
}
// 언어 설정 타입
export interface GameDataLang {
dir: string;
iso: string;
code: string;
name: string;
dir: string
iso: string
code: string
name: string
}
// GNB 설정 타입
export interface GameDataGnb {
game_gnb_ver: string;
display_start_dt: string; // ISO 문자열로 변경
theme_type: string;
bi_path: string;
lang_codes: string; // JSON 문자열로 변경
buttons: GameDataButton[];
menus: Record<string, GameDataMenu>; // 동적 객체로 변경
game_gnb_ver: string
display_start_dt: string // ISO 문자열로 변경
theme_type: string
bi_path: string
lang_codes: string // JSON 문자열로 변경
buttons: GameDataButton[]
menus: Record<string, GameDataMenu> // 동적 객체로 변경
}
// 버튼 타입
export interface GameDataButton {
depth_type: number;
button: string; // JSON 문자열로 변경
depth_type: number
button: string // JSON 문자열로 변경
}
// 메뉴 타입
export interface GameDataMenu {
path_code: string;
depth: number;
sort_order: number;
menu_name: string;
click_action_type: number;
url_path: string;
link_target: string;
children: Record<string, GameDataMenu>; // 중첩 메뉴를 위한 children 속성 추가
tracking: string; // JSON 문자열로 변경
path_code: string
depth: number
sort_order: number
menu_name: string
click_action_type: number
url_path: string
link_target: string
children: Record<string, GameDataMenu> // 중첩 메뉴를 위한 children 속성 추가
tracking: string | GameDataTracking // JSON 문자열 또는 객체로 변경
}
// 인트로 타입
export interface GameDataIntro {
seq: number;
display_start_dt: string;
display_end_dt: string;
page_url: string;
seq: number
display_start_dt: string
display_end_dt: string
page_url: string
}
// 트래킹 타입
export interface GameDataTracking {
viewType: string;
actionType: string;
clickSarea: string;
viewType: string
actionType: string
clickSarea: string
}
// 퀵 메뉴 타입
export interface GameDataQuickMenu {
banner_seq: number;
promotion_name: string;
thumbnail: string;
page_url_type: number;
page_url: string;
link_type: number;
display_start_dt: string;
display_end_dt: string;
sort_order: number;
banner_title: string;
banner_seq: number
promotion_name: string
thumbnail: string
page_url_type: number
page_url: string
link_type: number
display_start_dt: string
display_end_dt: string
sort_order: number
banner_title: string
}
// Stove GNB Skin Type
export type StoveGnbSkinType =
| 'gnb-default'
| 'gnb-default-fixed'
| 'gnb-dark-theme'
| 'gnb-dark-mix'
| 'gnb-dark-mini'
| 'gnb-dark-mix-mini'
| 'gnb-default-mini'
| 'gnb-mobile-timeline'
// Stove GNB 타입
export interface GameDataStoveGnb {
skin_type: string;
stove_install_button_visible: string;
skin_type: StoveGnbSkinType
stove_install_button_visible: string
}
// 파비콘 경로 타입
export interface GameDataFaviconPath {
"16_16": string;
"32_32": string;
"72_72": string;
"180_180": string;
"192_192": string;
'16_16': string
'32_32': string
'72_72': string
'180_180': string
'192_192': string
}
// 공통 이미지 타입
export interface GameDataCommImg {
groups: GameDataCommImgGroup[];
groups: GameDataCommImgGroup[]
}
// 공통 이미지 그룹 타입
export interface GameDataCommImgGroup {
img_path: GameDataImgPath;
required: boolean;
img_scope: string;
group_code: string;
group_label: string;
img_path: GameDataImgPath
required: boolean
img_scope: string
group_code: string
group_label: string
}
// 이미지 경로 타입
export interface GameDataImgPath {
comm: string;
comm: string
}
// 메타 태그 타입
export interface GameDataMetaTag {
x_desc: string;
og_desc: string;
x_image: string;
x_title: string;
og_image: string;
og_title: string;
page_desc: string;
page_title: string;
x_desc: string
og_desc: string
x_image: string
x_title: string
og_image: string
og_title: string
page_desc: string
page_title: string
}
// YouTube 설정 타입
export interface GameDataYoutube {
use_yn: number;
api_key: string;
use_yn: number
api_key: string
}
// SNS 설정 타입
export interface GameDataSns {
kakao: GameDataSnsItem;
tiktok: GameDataSnsItem;
discord: GameDataSnsItem;
twitter: GameDataSnsItem;
youtube: GameDataSnsItem;
facebook: GameDataSnsItem;
instagram: GameDataSnsItem;
kakao: GameDataSnsItem
tiktok: GameDataSnsItem
discord: GameDataSnsItem
twitter: GameDataSnsItem
youtube: GameDataSnsItem
facebook: GameDataSnsItem
instagram: GameDataSnsItem
}
// SNS 아이템 타입
export interface GameDataSnsItem {
url: string | null;
use_yn: number;
url: string | null
use_yn: number
}
// 마켓 설정 타입
export interface GameDataMarket {
pc: GameDataMarketItem;
app_store: GameDataMarketItem;
google_play: GameDataMarketItem;
pc: GameDataMarketItem
app_store: GameDataMarketItem
google_play: GameDataMarketItem
}
// 마켓 아이템 타입
export interface GameDataMarketItem {
url: string | null;
use_yn: number;
url: string | null
use_yn: number
}
// 푸터 설정 타입
export interface GameDataFooter {
dev_ci_url: string;
use_dev_ci_url: boolean;
fund_display_yn: boolean;
use_game_rating: boolean;
fund_display_url: string;
game_rating_info: GameDataGameRatingInfo;
dev_ci_url: string
use_dev_ci_url: boolean
fund_display_yn: boolean
use_game_rating: boolean
fund_display_url: string
game_rating_info: GameDataGameRatingInfo
}
// 게임 등급 정보 타입
export interface GameDataGameRatingInfo {
title: string;
reg_no: string;
prod_date: string;
rating_type: string;
company_name: string;
content_info: string;
rating_grade: string;
rating_class_no: string;
title: string
reg_no: string
prod_date: string
rating_type: string
company_name: string
content_info: string
rating_grade: string
rating_class_no: string
}
// API 에러 응답 타입
export interface GameDataErrorResponse {
code: number;
message: string;
error?: string;
code: number
message: string
error?: string
}
// API 응답 래퍼 타입 (성공/실패 통합)
export type GameDataApiResponse = GameDataResponse | GameDataErrorResponse;
export type GameDataApiResponse = GameDataResponse | GameDataErrorResponse
// API 호출 옵션 타입
export interface GameDataApiOptions {
gameAlias: string;
langCode: string;
q: string;
qc: string;
baseUrl?: string;
gameAlias: string
langCode: string
q: string
qc: string
baseUrl?: string
}
// API 상태 타입
export type GameDataApiStatus = "idle" | "loading" | "success" | "error";
export type GameDataApiStatus = 'idle' | 'loading' | 'success' | 'error'
// API 결과 타입 (상태와 데이터를 함께 관리)
export interface GameDataApiResult {
status: GameDataApiStatus;
data: GameDataResponse | null;
error: string | null;
status: GameDataApiStatus
data: GameDataResponse | null
error: string | null
}
// JSON 문자열 파싱을 위한 유틸리티 타입들
export interface ParsedKeyColorCodes {
extra: string;
primary: string;
secondary: string;
"text-primary": string;
"text-secondary": string;
extra: string
primary: string
secondary: string
'text-primary': string
'text-secondary': string
}
export interface ParsedGameFont {
"font-family": string;
'font-family': string
}
export interface ParsedGlobal {
system_font: ParsedGameFont;
lang: GameDataLang;
system_font: ParsedGameFont
lang: GameDataLang
}
export interface ParsedButton {
google_play: {
label: Record<string, string>;
url: string;
tracking: GameDataTracking;
};
label: Record<string, string>
url: string
tracking: GameDataTracking
}
app_store: {
label: Record<string, string>;
url: string;
tracking: GameDataTracking;
};
label: Record<string, string>
url: string
tracking: GameDataTracking
}
}
export interface ParsedStoveGnb {
skin_type: string;
stove_install_button_visible: string;
skin_type: StoveGnbSkinType
stove_install_button_visible: string
}
export interface ParsedSns {
kakao: GameDataSnsItem;
twitter: GameDataSnsItem;
discord: GameDataSnsItem;
youtube: GameDataSnsItem;
instagram: GameDataSnsItem;
facebook: GameDataSnsItem;
tiktok: GameDataSnsItem;
kakao: GameDataSnsItem
twitter: GameDataSnsItem
discord: GameDataSnsItem
youtube: GameDataSnsItem
instagram: GameDataSnsItem
facebook: GameDataSnsItem
tiktok: GameDataSnsItem
}
export interface ParsedFooter {
use_game_rating: boolean;
game_rating_info: GameDataGameRatingInfo;
use_dev_ci_url: boolean;
dev_ci_url: string;
fund_display_yn: boolean;
fund_display_url: string;
use_game_rating: boolean
game_rating_info: GameDataGameRatingInfo
use_dev_ci_url: boolean
dev_ci_url: string
fund_display_yn: boolean
fund_display_url: string
}
// 파비콘 경로 파싱 타입
export interface ParsedFaviconPath {
"16_16": string;
"32_32": string;
"72_72": string;
"180_180": string;
"192_192": string;
'16_16': string
'32_32': string
'72_72': string
'180_180': string
'192_192': string
}
// 기존 gameData 타입과의 호환성을 위한 별칭
export type gameData = GameDataValue;
export type gameData = GameDataValue

View File

@@ -1,147 +1,170 @@
// API 요청 파라미터 타입
export interface PageDataRequest {
game_alias: string;
lang_code: string;
page_url: string;
q?: string;
qc?: string;
game_alias: string
lang_code: string
page_url: string
q?: string
qc?: string
}
// API 요청 헤더 타입
export interface PageDataRequestHeaders {
"caller-Detail"?: string;
"caller-ID"?: string;
Authorization?: string;
'caller-Detail'?: string
'caller-ID'?: string
Authorization?: string
}
// API 응답 데이터 타입
export interface PageDataResponse {
code: number;
message: string;
value: PageDataValue;
code: number
message: string
value: PageDataValue
}
// API 응답의 value 객체 타입
export interface PageDataValue {
page_seq: number;
page_type: number;
page_name: string;
page_name_en: string;
page_ver: number;
display_start_dt: string;
lang_codes: string; // JSON string
is_login_required: boolean;
meta_tag_type: number;
fit_page_height: boolean;
use_top_btn: boolean;
use_sns_btn: boolean;
use_lnb: boolean;
lnb_menus: PageDataLnbMenu[];
templates: PageDataTemplate[];
meta_tag: PageDataMetaTag;
page_seq: number
page_type: number
page_name: string
page_name_en: string
page_ver: number
display_start_dt: string
lang_codes: string // JSON string
is_login_required: boolean
meta_tag_type: number
fit_page_height: boolean
use_top_btn: boolean
use_sns_btn: boolean
use_lnb: boolean
lnb_menus: PageDataLnbMenu[]
templates: PageDataTemplate[]
meta_tag: PageDataMetaTag // JSON string
}
// 메타 태그 타입
export interface PageDataMetaTag {
x_desc: string;
og_desc: string;
x_image: string;
x_title: string;
og_image: string;
og_title: string;
page_desc: string;
page_title: string;
x_desc: string
og_desc: string
x_image: string
x_title: string
og_image: string
og_title: string
page_desc: string
page_title: string
}
// LNB 메뉴 타입
export interface PageDataLnbMenu {
text_color_code_active: string;
text_color_code_deactive: string;
path_code: string;
depth: number;
sort_order: number;
menu_name: string;
target_type: number;
page_ver_tmpl_name_en: string;
tracking: string; // JSON string
text_color_code_active: string
text_color_code_deactive: string
path_code: string
depth: number
sort_order: number
menu_name: string
target_type: number
page_ver_tmpl_name_en: string
tracking: string // JSON string
}
// 템플릿 타입
export interface PageDataTemplate {
tmpl_sort_order: number;
page_ver_tmpl_name: string;
page_ver_tmpl_name_en: string;
template_code: string;
template_type_code: string;
template_category: string;
template_name: string;
template_sample_img_path: string;
template_sample_zip_path: string;
template_type_name: string;
is_selectable_on_create: boolean;
components: Record<string, PageDataComponent>;
tmpl_sort_order: number
page_ver_tmpl_name: string
page_ver_tmpl_name_en: string
template_code: string
components: Record<string, PageDataComponent>
}
// 컴포넌트 타입
export interface PageDataComponent {
component_sort_order: number;
component_type: string;
set_count: number;
component_name: string;
is_required: boolean;
has_operational_resource: boolean;
min_count: number;
max_count: number;
component_id: string;
operate_resources: PageDataOperateResource[];
[key: string]: any; // Additional Properties
component_sort_order: number
set_count: number
component_name: string
has_operational_resource: boolean
resources: PageDataResource[]
list_resources: PageDataListResource[]
flag_resources: PageDataFlagResource[]
}
// 운영 리소스 타입
// 리소스 타입
export interface PageDataResource {
resource_sort_order: number
resource_name: string
resource_type: string
groups: Record<string, any>
group_sets: Record<string, any>
}
// 리스트 리소스 타입
export interface PageDataListResource {
seq: number
title: string
img_path: string
url: string
link_target: string
display_start_dt: string
display_end_dt: string
is_display_status: number
display_status: number
option01: number
option02: number
option03: string
}
// 플래그 리소스 타입
export interface PageDataFlagResource {
seq: number
flag_type: number
option01: number
option02: number
option03: string
}
// 운영 리소스 타입 (기존 호환성 유지)
export interface PageDataOperateResource {
seq: number;
col: string;
col2: string;
col3: string;
col4: string;
col5: string;
col6: string;
col7: string;
resource_control_type: number;
resource_type: string;
[key: string]: any; // Additional Properties
seq: number
col: string
col2: string
col3: string
col4: string
col5: string
col6: string
col7: string
resource_control_type: number
resource_type: string
[key: string]: any // Additional Properties
}
// API 에러 응답 타입
export interface PageDataErrorResponse {
code: number;
message: string;
error?: string;
code: number
message: string
error?: string
}
// API 응답 래퍼 타입 (성공/실패 통합)
export type PageDataApiResponse = PageDataResponse | PageDataErrorResponse;
export type PageDataApiResponse = PageDataResponse | PageDataErrorResponse
// API 호출 옵션 타입
export interface PageDataApiOptions {
gameAlias: string;
langCode: string;
pageUrl: string;
q?: string;
qc?: string;
headers?: PageDataRequestHeaders;
baseUrl?: string;
gameAlias: string
langCode: string
pageUrl: string
q?: string
qc?: string
headers?: PageDataRequestHeaders
baseUrl?: string
}
// API 상태 타입
export type PageDataApiStatus = "idle" | "loading" | "success" | "error";
export type PageDataApiStatus = 'idle' | 'loading' | 'success' | 'error'
// API 결과 타입 (상태와 데이터를 함께 관리)
export interface PageDataApiResult {
status: PageDataApiStatus;
data: PageDataResponse | null;
error: string | null;
status: PageDataApiStatus
data: PageDataResponse | null
error: string | null
}
// 페이지 데이터 별칭 (기존 호환성)
export type pageData = PageDataValue;
export type pageData = PageDataValue