/** * 포맷 유틸리티 함수 * @description 포맷 처리에 필요한 유틸리티 함수를 제공합니다. */ /** * JWT 디코딩 * @param base64EncodeVal JWT 인코딩 값 * @returns JWT 디코딩 값 */ export const csrFormatJWT = (base64EncodeVal: string) => { const decodeVal = JSON.parse( decodeURIComponent( window .atob(base64EncodeVal) .split('') .map(function (c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2) }) .join('') ) ) return decodeVal } /** * 배열 또는 객체를 배열로 변환합니다. * @param value 변환할 값 (배열, 객체, 또는 undefined/null) * @returns 배열 */ export const formatToArray = ( value: T[] | Record | undefined | null ): T[] => { if (!value) return [] return Array.isArray(value) ? value : Object.values(value) } /** * URL 경로에서 로케일 접두사를 제거합니다. * @param path 경로 문자열 * @returns 로케일 접두사가 제거된 경로 */ export const formatPathWithoutLocale = (path: string): string => { return path.replace(/^\/[a-z]{2}(?=\/|$)/, '') || '/' } /** * URL이 내부 링크인지 확인합니다. * @param url 확인할 URL * @returns 내부 링크 여부 */ export const isInternalUrl = (url?: string): boolean => { return !!url && !url.startsWith('http') }