{"version":3,"file":"static/chunks/1811-538ed87441fac88c.js","mappings":"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","sources":["webpack://_N_E/../common/hooks/useBodyScrollLock/useBodyScrollLock.ts","webpack://_N_E/../common/hooks/useClipboard.ts","webpack://_N_E/../common/hooks/useDebouncedValue.ts","webpack://_N_E/../common/hooks/useModalClosing.ts","webpack://_N_E/../common/hooks/useMountedEffect.ts","webpack://_N_E/../common/hooks/useSubscribedState.ts","webpack://_N_E/../common/hooks/useToast/icon/fail.svg","webpack://_N_E/../common/hooks/useToast/icon/info.svg","webpack://_N_E/../common/hooks/useToast/icon/success.svg","webpack://_N_E/../common/hooks/useToast/icon/warning.svg","webpack://_N_E/../common/hooks/useToast/useToast.tsx","webpack://_N_E/../common/hooks/index.ts","webpack://_N_E/../common/utils/cn.ts","webpack://_N_E/../common/utils/assert.ts","webpack://_N_E/../common/utils/cleanClassName.ts","webpack://_N_E/../common/utils/createFormSchema.ts","webpack://_N_E/../common/utils/createUuid.ts","webpack://_N_E/../common/utils/createYupSchemaResolver.ts","webpack://_N_E/../common/utils/format.ts","webpack://_N_E/../common/utils/getOsType.ts","webpack://_N_E/../common/utils/getSubDomain.ts","webpack://_N_E/../common/utils/isCurrentUrl.ts","webpack://_N_E/../common/utils/isDev.tsx","webpack://_N_E/../common/utils/isEnumValue.ts","webpack://_N_E/../common/utils/optimizeImageUrl.ts","webpack://_N_E/../common/utils/regex.ts","webpack://_N_E/../common/utils/socialOAuthUrl.ts","webpack://_N_E/../common/utils/sitemapHash.ts","webpack://_N_E/../common/utils/customEditor.ts","webpack://_N_E/../common/utils/createQueryKeys.ts","webpack://_N_E/../common/utils/index.ts","webpack://_N_E/../common/utils/hasKey.ts","webpack://_N_E/../common/utils/normalizeServerRequest.ts","webpack://_N_E/./src/constants/env.ts","webpack://_N_E/./src/constants/certification.ts","webpack://_N_E/./src/constants/cookies.ts","webpack://_N_E/./src/constants/point.ts","webpack://_N_E/./src/constants/search-params.ts","webpack://_N_E/./src/constants/selector.ts","webpack://_N_E/./src/constants/seo.ts","webpack://_N_E/./src/constants/tabs.ts","webpack://_N_E/./src/constants/index.ts","webpack://_N_E/./src/constants/routes.ts","webpack://_N_E/./src/constants/storage-key.ts","webpack://_N_E/./src/utils/createRoute.ts","webpack://_N_E/./src/utils/findRoute.ts","webpack://_N_E/./src/utils/getMetadata.ts","webpack://_N_E/./src/utils/index.ts","webpack://_N_E/../common/hooks/useBodyScrollLock/useBodyScrollLock.module.scss?c739"],"sourcesContent":["import { useLayoutEffect } from 'react';\n\nimport styles from './useBodyScrollLock.module.scss';\n\ninterface UseBodyScrollLockOptions {\n selector?: string;\n}\n\nexport const useBodyScrollLock = (\n enabled: boolean,\n options?: UseBodyScrollLockOptions,\n) => {\n const selector = options?.selector;\n useLayoutEffect(() => {\n if (typeof document === 'undefined' || !enabled) return;\n\n let target = document.body;\n\n if (selector) {\n const optionTarget = document.getElementById(selector);\n\n if (optionTarget) {\n target = optionTarget;\n }\n }\n\n const { classList } = target;\n\n classList.add(styles['body-size'], styles['fixed-body']);\n\n return () => {\n classList.remove(styles['body-size'], styles['fixed-body']);\n };\n }, [enabled, selector]);\n};\n","'use client';\n\nimport { useCallback } from 'react';\n\nimport { useToast } from '@common/hooks';\n\ninterface CopyToClipboardParams {\n value?: string;\n message?: string;\n}\n\nexport const useClipboard = () => {\n const { toast } = useToast();\n /** 파라미터가 없으면 URL을 복사함 */\n const copyToClipboard = useCallback(\n (args?: CopyToClipboardParams) => {\n const value = args?.value ?? window.location.href;\n const message =\n args?.message ?? `${args?.value ? '' : 'URL을 '}클립보드에 저장했어요`;\n\n if (navigator.clipboard) {\n navigator.clipboard\n .writeText(value)\n .then(() => toast({ message }))\n .catch(() =>\n toast({ message: '클립보드 복사를 실패했어요', type: 'fail' }),\n );\n } else {\n try {\n const textarea = document.createElement('textarea');\n textarea.value = value;\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n toast({ message });\n } catch (err) {\n console.error(err);\n toast({ message: '클립보드 복사를 실패했어요', type: 'fail' });\n }\n }\n },\n [toast],\n );\n\n return copyToClipboard;\n};\n","import { useEffect, useMemo, useState } from 'react';\n\nimport { debounce } from 'es-toolkit';\n\nexport const useDebouncedValue = (value: T, delay = 500) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n const debounced = useMemo(\n () =>\n debounce((value: T) => {\n setDebouncedValue(value);\n }, delay),\n [delay],\n );\n\n useEffect(() => {\n debounced(value);\n\n return debounced.cancel;\n }, [value, debounced]);\n\n return debouncedValue;\n};\n","import { useEffect, useState } from 'react';\n\ninterface UseModalClosingParams {\n opened: boolean;\n closingDuration?: number;\n}\n\nexport enum MODAL_CLOSING_STATE {\n CLOSED = 0,\n CLOSING = 1,\n OPENED = 2,\n}\n\nexport const useModalClosing = ({\n opened,\n closingDuration,\n}: UseModalClosingParams) => {\n const [state, setState] = useState(\n opened ? MODAL_CLOSING_STATE.OPENED : MODAL_CLOSING_STATE.CLOSED,\n );\n\n useEffect(() => {\n if (opened) setState(MODAL_CLOSING_STATE.OPENED);\n else {\n setState((prev) => {\n if (prev === MODAL_CLOSING_STATE.OPENED)\n return MODAL_CLOSING_STATE.CLOSING;\n\n return prev;\n });\n }\n }, [opened]);\n\n useEffect(() => {\n if (state === MODAL_CLOSING_STATE.CLOSING) {\n const closeTimer = setTimeout(\n () => setState(MODAL_CLOSING_STATE.CLOSED),\n closingDuration,\n );\n\n return () => clearTimeout(closeTimer);\n }\n }, [state, closingDuration]);\n\n return state;\n};\n","import { useEffect, useRef } from 'react';\n\n/**\n * @description 컴포넌트가 마운트된 이후에만 실행되는 useEffect입니다.\n */\nexport function useMountedEffect(\n effect: () => void | (() => void),\n deps?: React.DependencyList,\n) {\n const isMounted = useRef(false);\n\n useEffect(() => {\n if (isMounted.current) {\n return effect();\n } else {\n isMounted.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n","import type { Dispatch, SetStateAction } from 'react';\nimport { useState } from 'react';\n\nimport { isEqual } from 'es-toolkit';\n\nimport { useMountedEffect } from './useMountedEffect';\n\nexport type DisableSetter = () => void;\n\n/**\n * @returns [value, setter, disableSetter]\n * @description 구독된 상태가 변경되면 업데이트 되는 상태값과 setter를 반환합니다.\n */\nexport function useSubscribedState(\n subscribedState: T | (() => T),\n dependencyList?: React.DependencyList | false,\n): [T, Dispatch>] {\n const valueState = useState(subscribedState);\n\n const [value, setValue] = valueState;\n\n const subscribedValue =\n subscribedState instanceof Function ? subscribedState() : subscribedState;\n\n useMountedEffect(\n () => {\n if (dependencyList) return;\n\n const subscribedValueType = typeof subscribedValue;\n\n switch (subscribedValueType) {\n case 'object':\n case 'function':\n if (!isEqual(value, subscribedValue)) setValue(subscribedValue);\n break;\n default:\n setValue(subscribedValue);\n }\n },\n dependencyList || [subscribedValue],\n );\n\n return dependencyList === false\n ? [\n subscribedValue,\n () => {\n console.info('disabled setter');\n },\n ]\n : valueState;\n}\n\nexport type SubscribedState = ReturnType>;\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgFail = function SvgFail(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 20 21\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FC3933\",\n stroke: \"#FC3933\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.667,\n d: \"M11.166 2.708a1.31 1.31 0 0 0-2.331 0L1.632 17.113a1.31 1.31 0 0 0 1.166 1.899h14.404a1.31 1.31 0 0 0 1.166-1.899z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.667,\n d: \"M10 7.881v4.256M10 15.738a.327.327 0 1 1 0-.655M10 15.738a.327.327 0 1 0 0-.655\"\n })));\n};\nexport default SvgFail;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgInfo = function SvgInfo(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 20 21\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#36F\",\n stroke: \"#36F\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.667,\n d: \"M10 19.012a8.512 8.512 0 1 0 0-17.024 8.512 8.512 0 0 0 0 17.024\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.667,\n d: \"M8.036 14.429h3.928M10 14.429V9.845H8.69M10 6.899a.327.327 0 1 1 0-.655M10 6.899a.327.327 0 1 0 0-.655\"\n })));\n};\nexport default SvgInfo;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgSuccess = function SvgSuccess(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 20 21\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#34B78F\",\n stroke: \"#34B78F\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.667,\n d: \"M14.583 1.988H5.417a3.93 3.93 0 0 0-3.929 3.929v9.166a3.93 3.93 0 0 0 3.929 3.929h9.166a3.93 3.93 0 0 0 3.929-3.929V5.917a3.93 3.93 0 0 0-3.929-3.929\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.667,\n d: \"M13.82 7.554 8.582 14.1l-2.62-1.964\"\n })));\n};\nexport default SvgSuccess;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgWarning = function SvgWarning(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 20 21\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FCC319\",\n stroke: \"#FCC319\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.667,\n d: \"M11.166 2.708a1.31 1.31 0 0 0-2.331 0L1.632 17.113a1.31 1.31 0 0 0 1.166 1.899h14.404a1.31 1.31 0 0 0 1.166-1.899z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.667,\n d: \"M10 7.881v4.256M10 15.738a.327.327 0 1 1 0-.655M10 15.738a.327.327 0 1 0 0-.655\"\n })));\n};\nexport default SvgWarning;","import { useRef } from 'react';\nimport { toast as toastifyToast } from 'react-toastify';\n\nimport { isDev, type ServerResponse } from '@common/utils';\n\nimport FailIcon from './icon/fail.svg';\nimport InfoIcon from './icon/info.svg';\nimport SuccessIcon from './icon/success.svg';\nimport WarningIcon from './icon/warning.svg';\n\nexport interface ToastOptions {\n type?: 'fail' | 'success' | 'warning' | 'info';\n message: string;\n holdTime?: number;\n}\n\ninterface ToastErrorOptions extends Omit {\n error: unknown;\n exceptionOptions?: { [code: number]: string };\n}\n\nconst toastQueue = new Map();\n\nexport const useToast = () => {\n const toast = ({\n message,\n holdTime = 3_000,\n type = 'success',\n }: Omit) => {\n const Icon = {\n success: SuccessIcon,\n fail: FailIcon,\n warning: WarningIcon,\n info: InfoIcon,\n }[type];\n\n const toastKey = `${message}-${type}`;\n\n if (toastQueue.has(toastKey)) {\n return;\n }\n\n toastQueue.set(toastKey, { message, holdTime, type });\n\n toastifyToast(message, {\n autoClose: holdTime,\n icon: ,\n onClose: () => {\n toastQueue.delete(toastKey);\n },\n });\n };\n\n const { current } = useRef({\n toast,\n toastError: ({\n error,\n type = 'fail',\n exceptionOptions,\n ...restOptions\n }: ToastErrorOptions) => {\n const { return_code: errorCode, return_message: errorMessage } =\n error as ServerResponse;\n\n console.error(error);\n\n const toastErrorMessage = (message: string) =>\n toast({ ...restOptions, type, message });\n\n if (!errorCode || !errorMessage) {\n return toastErrorMessage(\n '서버로 부터 정상적인 응답을 받지 못했습니다.',\n );\n }\n\n const exceptedErrorMessage = exceptionOptions?.[errorCode];\n\n if (exceptedErrorMessage) {\n return toastErrorMessage(exceptedErrorMessage);\n }\n\n //TODO: 30000 이상 에러 메시지 백엔드와 논의 재필요\n if (30000 <= errorCode) {\n return toastErrorMessage(errorMessage);\n }\n\n return toastErrorMessage(\n `일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요. (${errorCode})`,\n );\n },\n devToast: (message: string) => {\n if (isDev) {\n toast({ message, type: 'warning' });\n }\n },\n });\n\n return current;\n};\n","export * from './useBodyScrollLock/useBodyScrollLock';\nexport * from './useClipboard';\nexport * from './useDebouncedValue';\nexport * from './useModalClosing';\nexport * from './useMountedEffect';\nexport * from './useSubscribedState';\nexport * from './useToast/useToast';\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { CustomError } from '.';\n\nexport function assert(\n condition: unknown,\n error: Error | string = new Error(),\n): asserts condition {\n if (!condition) {\n if (typeof error === 'string') {\n throw new CustomError({ return_message: error });\n } else {\n throw new CustomError();\n }\n }\n}\n","export const cleanClassName = (\n className: string | undefined | null | false,\n) => {\n if (className) {\n return className\n .replace(/(undefined)|(false)|\\n/g, '')\n .replace(/ +(?= )/g, '')\n .replace(/^ */g, '')\n .replace(/ *$/g, '');\n }\n};\n","import * as yup from 'yup';\n\ntype Yup = typeof yup;\n\n/** @deprecated createYupSchemaResolver를 사용해주세요. */\nexport const createFormSchema = (\n factory: (yup: Yup) => {\n [K in keyof TBaseInterface]: any;\n },\n) => yup.object().shape(factory(yup));\n","import { v4, v3 } from 'uuid';\n\nexport const createUuid = (seed?: string) =>\n seed ? v3(seed, '6ba70a63-4f32-3af3-a8ad-12095131c69c') : v4();\n","import { yupResolver } from '@hookform/resolvers/yup';\nimport type { Resolver } from 'react-hook-form';\nimport * as yup from 'yup';\n\ntype Yup = typeof yup;\n\nexport type FormSchemaGuide = Partial<{\n [K in keyof T]: yup.AnySchema;\n}>;\n\nexport const createYupSchemaResolver = (\n factory: (yup: Yup) => { [K in keyof T]: yup.AnySchema },\n) => {\n const customYup = {\n ...yup,\n number: () =>\n yup\n .number()\n .transform((value, originalValue) =>\n originalValue === '' ? undefined : value,\n ),\n };\n\n const schema = yup.object().shape(factory(customYup));\n\n return yupResolver(schema as any) as unknown as Resolver;\n};\n\nexport { yup };\n\nexport const customYup = {\n stringDate: (options?: { onlyPast?: boolean; message?: string }) => {\n const message = options?.message ?? '정상적인 날짜 형식이 아닙니다.';\n\n let checkDate = yup\n .string()\n .required(message)\n .min(8, message)\n .max(10, message)\n .test('is-date', message, (value) => {\n let dateValue = value;\n\n const regex = /^\\d{4}-\\d{2}-\\d{2}$/;\n if (!dateValue.match(regex)) {\n dateValue = `${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)}`;\n if (!dateValue.match(regex)) {\n return false;\n }\n }\n\n const date = new Date(dateValue);\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n\n const parts = dateValue.split('-');\n const yearFromStr = parseInt(parts[0], 10);\n const monthFromStr = parseInt(parts[1], 10);\n const dayFromStr = parseInt(parts[2], 10);\n\n if (\n year !== yearFromStr ||\n month !== monthFromStr ||\n day !== dayFromStr\n ) {\n return false;\n }\n\n if (yearFromStr < 1900) {\n return false;\n }\n\n if (month === 2) {\n //! 윤년 확인\n if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {\n return day <= 29;\n } else {\n return day <= 28;\n }\n } else if ([4, 6, 9, 11].includes(month)) {\n return day <= 30;\n } else {\n return day <= 31;\n }\n });\n\n if (options?.onlyPast) {\n checkDate = checkDate.test(\n 'is-past-or-present',\n '과거의 날짜만 입력할 수 있습니다.',\n (value) => {\n if (!value) return false;\n const inputDate = new Date(\n value.replace(/(\\d{4})(\\d{2})(\\d{2})/, '$1-$2-$3'),\n );\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n return inputDate <= today;\n },\n );\n }\n\n return checkDate;\n },\n stringPhone: (message = '올바른 전화번호를 입력해주세요.') =>\n yup\n .string()\n .min(10, message)\n .max(11, message)\n .test('is-010-prefix', message, (value) => {\n return /^010/.test(value ?? '');\n })\n .test('is-valid-fourth-digit', message, (value) => {\n if (value === undefined) return;\n const fourthDigit = value.charAt(3);\n\n return !['0', '1'].includes(fourthDigit);\n }),\n};\n","interface StorageOptions {\n unit?: 'bytes' | 'KB' | 'MB' | 'GB';\n precision?: number;\n}\n\nexport const format = {\n phone: (phone?: string) => {\n if (phone?.length !== 11) return phone;\n\n return `${phone.slice(0, 3)}-${phone.slice(3, 7)}-${phone.slice(7)}`;\n },\n storage: (\n bytes = 0,\n options: StorageOptions = { unit: 'MB', precision: 2 },\n ) => {\n const kiloBytes = bytes / 1024;\n const megaBytes = bytes / 1048576; // 1024 * 1024\n const gigaBytes = bytes / 1073741824; // 1024 * 1024 * 1024\n\n const { unit = 'MB', precision = 2 } = options;\n\n switch (unit) {\n case 'bytes':\n return `${bytes} bytes`;\n case 'KB':\n return `${kiloBytes.toFixed(precision)}KB`;\n case 'MB':\n return `${megaBytes.toFixed(precision)}MB`;\n case 'GB':\n return `${gigaBytes.toFixed(precision)}GB`;\n default:\n throw new Error('정의하지 않은 단위 유형이에요.');\n }\n },\n number: (num: number) => {\n const units = ['경', '조', '억', '만', ''];\n let remainder = num;\n let result = '';\n\n for (let i = 0; i < units.length; i++) {\n const unitValue = Math.pow(10000, units.length - 1 - i);\n const currentUnit = Math.floor(remainder / unitValue);\n remainder %= unitValue;\n\n if (currentUnit > 0) {\n result += currentUnit.toLocaleString() + units[i] + ' ';\n }\n }\n\n return result.trim() || '0';\n },\n};\n","export const getOsType = () => {\n const { userAgent } = navigator;\n\n return /windows/i.test(userAgent)\n ? 'windows'\n : /android/i.test(userAgent)\n ? 'android'\n : /iPad|iPhone|iPod|ios/.test(userAgent)\n ? 'ios'\n : /Mac/.test(userAgent)\n ? 'mac'\n : null;\n};\n","export const getSubDomain = (value?: string) => {\n const hostname = value ?? location.hostname;\n\n const mainDomain = hostname.split('.').slice(-2).join('.');\n const subDomain = hostname\n .replace(`.${mainDomain}`, '')\n .replace(/^(http:\\/\\/|https:\\/\\/)/, '');\n\n return subDomain || null;\n};\n","interface CheckOptions {\n skipPathname?: boolean;\n skipSearch?: boolean;\n}\n\nexport const isCurrentUrl = (href: string, options?: CheckOptions) => {\n if (typeof window === 'undefined') return false;\n\n const targetUrl = new URL(href, location.origin);\n\n return (\n (options?.skipPathname || targetUrl.pathname === location.pathname) &&\n (options?.skipSearch || targetUrl.search === location.search)\n );\n};\n","export const isDev = process.env.NODE_ENV === 'development';\n","export const isEnumValue = >(\n enumType: TEnum,\n value?: string | null,\n): value is TEnum[keyof TEnum] =>\n value ? Object.values(enumType).includes(value) : false;\n\nexport const isEnumKey = >(\n enumType: TEnum,\n key: string | number | symbol,\n): key is keyof TEnum => Object.keys(enumType).includes(String(key));\n\nexport const isArrayItem = (array: readonly T[], value: any): value is T =>\n array.includes(value);\n\nexport const hasObjectKey = (\n obj: Record | object | unknown,\n key: TKey,\n): obj is Record => {\n return typeof obj === 'object' && obj !== null && key in obj;\n};\n","interface ImageOptimizationOptions {\n format?: 'webp' | 'avif' | 'original';\n width?: number;\n height?: number;\n quality?: number;\n}\n\nexport const optimizeImageUrl = (\n originalUrl?: string,\n options: ImageOptimizationOptions = {},\n) => {\n if (!originalUrl) return '';\n\n try {\n const url = new URL(originalUrl);\n\n if (!url.origin.startsWith('https://cdn.welfarehello')) return originalUrl;\n\n const params = new URLSearchParams(url.search);\n\n const { format = 'webp', width, height, quality = 80 } = options;\n\n if (format !== 'original') params.set('f', format);\n\n if (height) params.set('h', height.toString());\n if (quality) params.set('q', quality.toString());\n\n //* 너비 조절 시 화질 저하\n if (width) params.set('w', width.toString());\n\n url.search = params.toString();\n\n return url.toString();\n } catch (e) {\n console.error(e);\n\n return originalUrl;\n }\n};\n","export const REGEX = {\n EMAIL: /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}$/,\n PHONE: /^01(?:0|1|[6-9])[.-]?(\\\\d{3}|\\\\d{4})[.-]?(\\\\d{4})$/,\n DATE: /^(19[0-9][0-9]|20\\d{2})-(0[0-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/,\n 'YYYY-MM': /^(19[0-9][0-9]|20\\d{2})-(0[0-9]|1[0-2])$/,\n PASSWORD: /^(?=.*[A-Za-z])(?=.*\\d)(?=.*[!@#$%^_])[A-Za-z\\d!@#$%^_]{8,}$/,\n};\n","export type SocialType = 'kakao' | 'naver' | 'google' | 'apple';\n\nconst SOCIAL_OAUTH_URL = {\n kakao: 'https://kauth.kakao.com/oauth/authorize',\n naver: 'https://nid.naver.com/oauth2.0/authorize',\n google: 'https://accounts.google.com/o/oauth2/auth/oauthchooseaccount',\n apple: 'https://appleid.apple.com/auth/authorize',\n} as const;\n\nconst encodeOAuthState = (type: SocialType, redirectPath: string) => {\n const obj = { type, redirectPath };\n const json = JSON.stringify(obj);\n const base64Encoded = btoa(unescape(encodeURIComponent(json)));\n\n return base64Encoded;\n};\n\ninterface CreateOAuthUrlParams {\n /** NEXT_PUBLIC_DOMAIN */\n domain: string | undefined;\n type: SocialType;\n /** NEXT_PUBLIC_{TYPE}_ID */\n clientId: string | undefined;\n scope?: string;\n /** Apple은 응답을 POST로 보내서 API Route에서 받아야 함 */\n appleApiRoutePath?: string;\n /** OAuth 응답을 핸들링할 페이지 */\n redirectPath?: string;\n}\n\n/** 인증 받기위해 들렀다 오는 소셜 로그인 URL 만들어주는 함수 */\nexport const createOAuthUrl = ({\n domain,\n type,\n clientId,\n scope,\n appleApiRoutePath = '/api/auth/apple',\n redirectPath = '/auth',\n}: CreateOAuthUrlParams) => {\n if (!domain || !clientId) throw new Error('domain, clientId 는 필수입니다.');\n\n const url = SOCIAL_OAUTH_URL[type];\n\n const searchParams = new URLSearchParams({\n response_type: 'code',\n client_id: clientId,\n state: encodeOAuthState(type, redirectPath),\n });\n\n if (scope) searchParams.append('scope', scope);\n\n switch (type) {\n case 'apple': {\n searchParams.append(\n 'redirect_uri',\n `${domain.replace('https://', 'https://www.')}${appleApiRoutePath}`,\n );\n searchParams.append('response_mode', 'form_post');\n break;\n }\n\n default: {\n searchParams.append('redirect_uri', `${domain}${redirectPath}`);\n break;\n }\n }\n\n return `${url}?${searchParams.toString()}`;\n};\n","import { createUuid } from './createUuid';\n\nconst monthText = '2024-03';\nconst hash = createUuid(monthText);\n\nexport const sitemapHash = {\n monthText,\n hash,\n};\n","import type { Transaction } from '@tiptap/pm/state';\nimport type { Editor } from '@tiptap/react';\n\nexport const customEditor = {\n getImageUrls: (doc: Transaction['doc'] | Editor['$doc']) => {\n const imageList: string[] = [];\n doc.content.forEach((content) => {\n if (content.type.name === 'image') {\n imageList.push(content.attrs.src);\n }\n });\n\n return imageList;\n },\n};\n","export const createQueryKeys = (\n name: TName,\n keys: [...TKeys],\n) => {\n const result = {} as Record;\n\n keys.forEach((key) => {\n result[key] = `${name}.${key}`;\n });\n\n return result;\n};\n","export * from './cn';\nexport * from './assert';\nexport * from './cleanClassName';\nexport * from './createFormSchema';\nexport * from './createUuid';\nexport * from './createYupSchemaResolver';\nexport * from './format';\nexport * from './getOsType';\nexport * from './getSubDomain';\nexport * from './hasKey';\nexport * from './isCurrentUrl';\nexport * from './isDev';\nexport * from './isEnumValue';\nexport * from './normalizeServerRequest';\nexport * from './optimizeImageUrl';\nexport * from './regex';\nexport * from './socialOAuthUrl';\nexport * from './timeAgo';\nexport * from './sitemapHash';\nexport * from './customNextUrl';\nexport * from './customEditor';\nexport * from './createQueryKeys';\nexport * from './customQueryOption';\n","export const hasKey = (obj: unknown, key: string): boolean => {\n return typeof obj === 'object' && obj !== null && key in obj;\n};\n","import type { CustomRequest } from '../api';\nimport { hasKey } from './hasKey';\n\nexport interface ServerResponse {\n result_code?: number;\n return_code?: number;\n return_message?: string;\n request?: CustomRequest;\n context?: T;\n}\n\nexport enum ERROR_CODE {\n HIDDEN = 20019,\n UNKNOWN_BY_CLIENT = 40000,\n UNKNOWN_REQUEST = 40500,\n NO_REQUEST_FUNCTION = 40400,\n NO_ENV = 40401,\n UNKNOWN_UNAUTHORIZED = 40403,\n UNAUTHORIZED_BY_CLIENT = 40404,\n}\n\nexport const isNormalizedResponse = (res: any): res is ServerResponse =>\n hasKey(res, 'result_code') &&\n hasKey(res, 'return_code') &&\n hasKey(res, 'return_message');\n\nexport class CustomError extends Error {\n status: number;\n return_code: number;\n return_message: string;\n constructor(params?: ServerResponse) {\n super(\n params?.return_message ??\n '일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요.',\n );\n this.return_message = params?.return_message ?? '';\n this.status = params?.result_code ?? 500;\n this.return_code = params?.return_code ?? ERROR_CODE.UNKNOWN_BY_CLIENT;\n this.name = params?.result_code === 200 ? 'Server Error' : 'Client Error';\n\n if (params?.request) {\n this.name = 'Request Error';\n this.cause = JSON.stringify(params.request);\n }\n }\n}\n\nlet errorNum = 0;\n\n//* 서버 요청에 대한 응답을 항상 통일된 형태로 받기 위한 함수\nexport const normalizeServerRequest = <\n TParams extends any[],\n TResponse extends ServerResponse,\n>(\n requestFn: (...args: TParams) => Promise,\n) => {\n if (!requestFn) {\n errorNum += 1;\n throw new CustomError({\n return_message: `변환된 요청함수가 없습니다. (${errorNum})`,\n result_code: 400,\n return_code: ERROR_CODE.NO_REQUEST_FUNCTION,\n });\n }\n\n return async (...args: TParams) => {\n try {\n const res: TResponse = await requestFn(...args);\n\n const { return_code } = res;\n\n //* result_code가 0인 경우에만 정상적인 응답\n if (return_code === 0) return res;\n\n if (return_code) throw new CustomError(res);\n\n throw new CustomError({\n ...res,\n return_message: '잘못된 형식의 응답을 받았습니다.',\n });\n } catch (error) {\n if (error instanceof CustomError) throw error;\n\n if (error instanceof Error) {\n const errorObject: ServerResponse = {\n return_message: error.message,\n result_code: 500,\n return_code: ERROR_CODE.UNKNOWN_REQUEST,\n };\n\n if ('request' in error) {\n errorObject.request = error.request as CustomRequest;\n }\n\n throw new CustomError(errorObject);\n }\n\n throw new CustomError({\n return_code: ERROR_CODE.UNKNOWN_REQUEST,\n });\n }\n };\n};\n\nexport const checkServerResponse = async (res: Response) => {\n if (!res.headers.get('content-type')?.includes('application/json')) return;\n\n const clonedRes = res.clone();\n\n const getRequest = async () => ({\n body: clonedRes.body,\n headers: clonedRes.headers,\n endpoint: clonedRes.url,\n });\n\n try {\n const data = await clonedRes.json();\n\n if (typeof data !== 'object' || !isNormalizedResponse(data)) {\n throw new CustomError({\n request: await getRequest(),\n return_message: '잘못된 형식의 응답을 받았습니다.',\n result_code: 500,\n return_code: ERROR_CODE.UNKNOWN_REQUEST,\n });\n }\n\n if (data.return_code === 0) return;\n\n throw new CustomError(data);\n } catch (e) {\n if (e instanceof CustomError) throw e;\n\n if (e instanceof Error) {\n throw new CustomError({\n request: await getRequest(),\n return_message: e.message,\n result_code: 500,\n return_code: ERROR_CODE.UNKNOWN_REQUEST,\n });\n }\n\n throw new CustomError({\n request: await getRequest(),\n return_code: ERROR_CODE.UNKNOWN_REQUEST,\n });\n }\n};\n","//TODO: 추후 환경변수는 모두 해당 파일에서 관리\n\nexport const PRODUCT_DOMAIN = 'https://welfarehello.com';\n\nconst ENV = {\n NODE_ENV: process.env.NODE_ENV,\n NEXT_PUBLIC_DOMAIN: process.env.NEXT_PUBLIC_DOMAIN as string,\n NEXT_PUBLIC_API_DOMAIN: process.env.NEXT_PUBLIC_API_DOMAIN as string,\n NEXT_PUBLIC_GOOGLE_CLIENT_ID: process.env\n .NEXT_PUBLIC_GOOGLE_CLIENT_ID as string,\n NEXT_PUBLIC_KAKAO_CLIENT_ID: process.env\n .NEXT_PUBLIC_KAKAO_CLIENT_ID as string,\n NEXT_PUBLIC_NAVER_CLIENT_ID: process.env\n .NEXT_PUBLIC_NAVER_CLIENT_ID as string,\n NEXT_PUBLIC_APPLE_CLIENT_ID: process.env\n .NEXT_PUBLIC_APPLE_CLIENT_ID as string,\n NEXT_PUBLIC_JEJU_API_DOMAIN: process.env\n .NEXT_PUBLIC_JEJU_API_DOMAIN as string,\n NEXT_PUBLIC_JEJU_YOUTHDREAM_API_KEY: process.env\n .NEXT_PUBLIC_JEJU_YOUTHDREAM_API_KEY as string,\n NEXT_PUBLIC_DPG_API_DOMAIN: process.env.NEXT_PUBLIC_DPG_API_DOMAIN as string,\n NEXT_PUBLIC_NAVER_CLOUD_CLIENT_ID: process.env\n .NEXT_PUBLIC_NAVER_CLOUD_CLIENT_ID as string,\n NEXT_PUBLIC_MOBILE_OK_URL: process.env.NEXT_PUBLIC_MOBILE_OK_URL as string,\n NEXT_PUBLIC_EZ_IOK_URL: process.env.NEXT_PUBLIC_EZ_IOK_URL as string,\n};\n\nfor (const key in ENV) {\n if (!ENV[key as keyof typeof ENV]) {\n throw new Error(`환경변수 ${key}이 없습니다.`);\n }\n}\n\nconst IS_PRODUCT = ENV.NEXT_PUBLIC_DOMAIN === PRODUCT_DOMAIN;\nconst IS_DEV = ENV.NODE_ENV === 'development';\n\nlet BASE_URL = ENV.NEXT_PUBLIC_DOMAIN;\n\nif (!IS_DEV) {\n BASE_URL = BASE_URL.replace('https://', 'https://www.');\n}\n\nexport { BASE_URL,ENV, IS_DEV, IS_PRODUCT };\n","export const CERTIFICATION_LIST = [\n { id: 'toss', name: '토스', icon: '/assets/pngs/ok/toss.png' },\n {\n id: 'kakaobank',\n name: '카카오뱅크',\n icon: '/assets/pngs/ok/kakaobank.png',\n },\n {\n id: 'banksalad',\n name: '뱅크샐러드',\n icon: '/assets/pngs/ok/banksalad.png',\n },\n {\n id: 'signgate',\n name: '삼성패스',\n icon: '/assets/pngs/ok/signgate.png',\n },\n { id: 'dreamsign', name: '드림인증', icon: '/assets/pngs/ok/dreamsign.png' },\n { id: 'kbstar', name: '국민인증서', icon: '/assets/pngs/ok/kbstar.png' },\n { id: 'shinhan', name: '신한인증서', icon: '/assets/pngs/ok/shinhan.png' },\n { id: 'kebhana', name: '하나인증서', icon: '/assets/pngs/ok/kebhana.png' },\n {\n id: 'mobile-ok',\n name: '휴대폰 본인인증',\n icon: '/assets/pngs/ok/mobile-ok.png',\n },\n] as const;\n","export enum COOKIES_KEYS {\n ACCESS_TOKEN = 'accessToken',\n REFRESH_TOKEN = 'refreshToken',\n\n ORIGIN_HOST = 'hostOrigin',\n LOGIN_PARAMS = 'loginParams',\n\n LOGOUT_OPTIONS = 'logoutOptions',\n}\n\nexport const COOKIE_OPTIONS = {\n domain:\n process.env.NODE_ENV === 'development'\n ? 'localhost'\n : `.${(process.env.NEXT_PUBLIC_DOMAIN ?? '').replace('https://', '')}`,\n path: '/',\n secure: true,\n};\n","export const POINT = {\n MIN_EXCHANGE: 500,\n EXCHANGE_UNIT: 100,\n DAY_MAX_EXCHANGE: 50_000,\n};\n","import type { UNAUTH_API } from '@/api';\n\nexport enum SEARCH_PARAMS {\n ORIGINAL_PATH = 'original-path',\n POST_REDIRECT = 'post-redirect',\n APP_LOGIN_TYPE = 'app-login',\n ACCESS_TOKEN = 'accessToken',\n REFRESH_TOKEN = 'refreshToken',\n /**\n * @description redirect pathname\n */\n REDIRECT = 'redirect',\n /**\n * @description redirect searchParams\n */\n REDIRECT_SEARCH_PARAMS = 'redirectSearchParams',\n VERIFICATION = 'verification',\n ENTER_TYPE = 'enter-type',\n SHARE_BY = 'share-by',\n MEMBER_CODE = 'memberCode',\n POLICY_FILTER = 'policyFilter',\n\n //! 응급생활 관련 파라미터\n SYMPTOM_CODE = 'symptomCode',\n EMERGENCY_ROOM_TIME = 'emergencyRoomTime',\n IS_REAL_DISTANCE = 'isRealDistance',\n RADIUS = 'radius',\n EMERGENCY_ROOM_PARAMS = 'emergencyRoomParams',\n SELECTED_REGION = 'selectedRegion',\n PARENT_COMMENT_ID = 'parentCommentId',\n SORT_TYPE = 'sortType',\n HOME_BOTTOM_DRAWER = 'home-bottom-drawer',\n}\n\nexport namespace SEARCH_PARAMS_TYPE {\n export interface EMERGENCY_ROOM_PARAMS\n extends Omit<\n Parameters[number],\n 'page' | 'size'\n > {\n isRealDistance?: boolean;\n }\n\n export interface SELECTED_REGION {\n mainRegionCode?: string;\n subRegionCode?: string;\n }\n}\n","export enum SELECTOR {\n MAIN_WRAPPER = 'main-wrapper',\n MAIN = 'main',\n PAGE_NAV_WRAPPER = 'page-nav-wrapper',\n VOUCHER_MAP_NAVIGATION = 'voucher-map-navigation',\n VOUCHER_CONTENTS_CONTAINER = 'voucher-contents-container',\n COMMENT_LIST_TOP = 'comment-list-top',\n COMMENT_PREFIX = 'comment-id-',\n GLOBAL_NAVIGATION = 'global-navigation',\n}\n","import type { Metadata, Viewport } from 'next';\n\nimport { BASE_URL } from './env';\n\nexport const DEFAULT_META = {\n generator: 'Next.js',\n applicationName: '웰로',\n metadataBase: new URL(BASE_URL),\n appLinks: {\n android: {\n package: 'com.wello.welfarehello',\n app_name: '웰로 - 맞춤정책 추천·신청 서비스',\n url: 'https://play.google.com/store/apps/details?id=com.wello.welfarehello',\n },\n ios: {\n app_store_id: 6444814937,\n url: 'https://apps.apple.com/kr/app/%EC%9B%B0%EB%A1%9C-wello-%EB%A7%9E%EC%B6%A4-%EC%A0%95%EC%B1%85-%EC%B6%94%EC%B2%9C-%EC%8B%A0%EC%B2%AD-%EC%84%9C%EB%B9%84%EC%8A%A4/id6444814937',\n app_name: '웰로 Wello - 맞춤 정착 추천 신청 서비스',\n },\n },\n manifest: '/manifest.json',\n keywords: ['웰로', '정책', '취업', '육아', '정부', '보조금', '혜택'],\n title: '웰로 - 5,200만 국민을 위한 개인 맞춤형 정책 추천 서비스',\n authors: [\n {\n name: '주식회사 웰로',\n url: 'https://www.wello.info',\n },\n ],\n publisher: '주식회사 웰로',\n description:\n '내게 딱 맞는 정책을 매일 추천해드려요. ㅡ 청년부터 노년까지, 취업&창업·육아·대출 등 다양한 분야의 보조금·지원금 혜택을 찾아보세요!',\n openGraph: {\n images: 'https://cdn.welfarehello.com/common/ogimg.png',\n title: '웰로 - 5,200만 국민을 위한 개인 맞춤형 정책 추천 서비스',\n siteName: '웰로',\n type: 'website',\n },\n} satisfies Metadata;\n\nexport const DEFAULT_VIEWPORT = {\n width: 'device-width',\n initialScale: 1,\n maximumScale: 1,\n minimumScale: 1,\n userScalable: false,\n themeColor: '#ffffff',\n} satisfies Viewport;\n","export enum MENU_TITLE {\n TARGET = 'TARGET',\n SUPPORT = 'SUPPORT',\n INFO = 'INFO',\n APPLY = 'APPLY',\n}\n\nexport const COMMUNITY_HEADER_ITEMS = {\n welloNews: {\n key: 'welloNews',\n title: '웰로소식',\n pathname: 'welloNews',\n },\n policyInfo: {\n key: 'policyInfo',\n title: '정책소식',\n pathname: 'policyInfo',\n },\n hometownNews: {\n key: 'hometownNews',\n title: '동네소식',\n pathname: 'hometownNews',\n },\n policyTalk: {\n key: 'policyTalk',\n title: '정책수다',\n pathname: 'policyTalk',\n },\n freeTalk: {\n key: 'freeTalk',\n title: '자유수다',\n pathname: 'freeTalk',\n },\n} as const;\n\nexport type CommunityKeys = keyof typeof COMMUNITY_HEADER_ITEMS;\n","import { IS_PRODUCT } from './env';\n\nexport * from './certification';\nexport * from './cookies';\nexport * from './env';\nexport * from './point';\nexport * from './routes';\nexport * from './search-params';\nexport * from './selector';\nexport * from './seo';\nexport * from './storage-key';\nexport * from './tabs';\n\nexport const [GTM_ID, GA_ID] = IS_PRODUCT\n ? ['GTM-WF9XK27', 'G-WKDK663EEQ']\n : ['GTM-NJCCF8P', 'G-7FCSFN8PD7'];\n","import type { ERROR_CODE } from '@common/utils';\n\nimport type {\n COMMENT_SORT_TYPE,\n COMMENT_TYPE,\n DETAIL_POLICY_APPLICATION_TYPE,\n EASY_LOGIN_USAGE_CODE,\n LOGIN_TYPE,\n POLICY_CASE_BABY_CHILD_COUNT,\n POLICY_CASE_TYPE,\n TERM_CATEGORY,\n VERIFICATION_SERVICE_TYPE,\n} from '@/api';\nimport type { DLP_SEOUL_AUTH_STEP } from '@/app/(private)/dlp/seoul/auth/constants';\nimport type { PROXY_TARGET } from '@/pages/api/proxy/[...all]';\nimport type { OsType } from '@/stores/DeviceStore';\nimport type {\n EasyCertificationParams,\n FAMILY_PROFILE_UPDATE_PAGE_TYPE,\n} from '@/types';\nimport { createRoute } from '@/utils';\n\nexport const ROUTES = {\n TEST: createRoute('/test'),\n\n HOME: createRoute('/', {\n hasBottomNav: true,\n }),\n\n LOGIN: createRoute<{\n searchParams: {\n logout?: boolean;\n redirect?: string;\n disableOutlink?: boolean;\n memberCode?: string;\n };\n }>('/login'),\n\n LOGIN_POINT: createRoute('/login/point'),\n\n PEEC_EVENT: createRoute('/event/peec'),\n\n PEEC_APPLY: createRoute('/event/peec/apply'),\n\n AUTH: createRoute<{\n searchParams: {\n 'login-type'?: LOGIN_TYPE;\n 'social-login-token'?: string;\n code?: string;\n state?: string;\n };\n }>('/login/auth'),\n\n COMMUNITY: createRoute('/community', {\n hasBottomNav: true,\n }),\n COMMUNITY_CATEGORY: createRoute<{\n dynamicPath: { category: string; idIdx?: string };\n }>(\n ({ category, idIdx }) =>\n `/community/${category}${idIdx ? `/${idIdx}` : ''}`,\n {\n hasBottomNav: true,\n },\n ),\n WELLO_NEWS_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/community/welloNews/${idIdx}`),\n POLICY_TALK_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/community/policyTalk/${idIdx}`),\n FREE_TALK_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/community/freeTalk/${idIdx}`),\n HOMETOWN_NEWS_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/community/hometownNews/${idIdx}`),\n POLICY_INFO_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/community/policyInfo/${idIdx}`),\n\n POLICY_TALK_POST_EDIT: createRoute<{\n dynamicPath: {\n idx: string;\n };\n }>(({ idx }) => `/community/policyTalk/posting/${idx}`),\n POLICY_TALK_POST_NEW: createRoute<{\n searchParams: {\n code?: string;\n idx?: string;\n detailApplyType?: DETAIL_POLICY_APPLICATION_TYPE;\n };\n }>('/community/policyTalk/posting/new'),\n FREE_TALK_POST_EDIT: createRoute<{\n dynamicPath: {\n idx: string;\n };\n }>(({ idx }) => `/community/freeTalk/posting/${idx}`),\n FREE_TALK_POST_NEW: createRoute('/community/freeTalk/posting/new'),\n\n PROFILE: createRoute('/my-info', {\n hasBottomNav: true,\n }),\n\n PROFILE_SCRAP: createRoute('/my-info/my-scrap', {\n hasBottomNav: true,\n }),\n\n PROFILE_COMMUNITY_POSTED: createRoute('/my-info/my-community/posted', {\n hasBottomNav: true,\n }),\n PROFILE_COMMUNITY_COMMENTED: createRoute('/my-info/my-community/commented', {\n hasBottomNav: true,\n }),\n\n PROFILE_APPLY: createRoute('/my-info/my-apply', {\n hasBottomNav: true,\n }),\n\n PROFILE_APPLY_RECOMMEND_INQUIRY: createRoute(\n '/my-info/my-apply/recommend-inquiry',\n ),\n\n RANDOM_TICKET: createRoute('/my-info/random-ticket', {\n hasBottomNav: false,\n }),\n\n RECOMMEND_POLICY_SITUATION_MAIN: createRoute<{\n dynamicPath: { caseType: POLICY_CASE_TYPE | 'ALL' };\n }>(({ caseType }) => `/recommend-policy/situation/main/${caseType}`),\n\n RECOMMEND_POLICY_SITUATION_BABY_FORM: createRoute(\n '/recommend-policy/situation/baby',\n ),\n\n RECOMMEND_POLICY_SITUATION_BABY_REPORT: createRoute<{\n dynamicPath: {\n subRegionCode: string;\n childCount: POLICY_CASE_BABY_CHILD_COUNT;\n };\n }>(\n ({ subRegionCode, childCount }) =>\n `/recommend-policy/situation/baby/report/${subRegionCode}/${childCount}`,\n ),\n\n RECOMMEND_POLICY_SITUATION_EMERGENCY_FORM: createRoute(\n '/recommend-policy/situation/emergency',\n ),\n RECOMMEND_POLICY_SITUATION_EMERGENCY_HOSPITAL_LIST: createRoute(\n '/recommend-policy/situation/emergency/list',\n ),\n RECOMMEND_POLICY_SITUATION_EMERGENCY_MAP: createRoute(\n '/recommend-policy/situation/emergency/map',\n ),\n RECOMMEND_POLICY_SITUATION_EMERGENCY_DETAIL: createRoute<{\n dynamicPath: { id: number };\n searchParams: {\n symptomCode?: string;\n isEmergency?: boolean;\n };\n }>(({ id }) => `/recommend-policy/situation/emergency/${id}`),\n MEDICAL_POLICY_LIST: createRoute('/recommend-policy/medical'),\n\n PUSH: createRoute('/push'),\n\n PROFILE_EDIT: createRoute<{\n searchParams: {\n redirect?: string;\n };\n }>('/my-info/edit'),\n\n FAMILY_PROFILE: createRoute('/my-info/settings/family'),\n\n FAMILY_PROFILE_UPDATE: createRoute<{\n dynamicPath: {\n updateType: FAMILY_PROFILE_UPDATE_PAGE_TYPE;\n };\n searchParams: {\n familyId?: number;\n };\n }>(({ updateType }) => `/my-info/settings/family/${updateType}`),\n\n FAMILY_FILTER_UPDATE: createRoute<{\n dynamicPath: {\n updateType: FAMILY_PROFILE_UPDATE_PAGE_TYPE;\n };\n searchParams: {\n familyId?: number;\n };\n }>(({ updateType }) => `/my-info/settings/family/${updateType}/filter`),\n\n SEARCH: createRoute<{\n searchParams: {\n /** @description 검색어 */\n q: string;\n };\n }>('/search'),\n\n RECOMMEND_POLICY_LIST: createRoute<{\n searchParams: { familyId?: number };\n }>('/recommend-policy', {\n hasBottomNav: true,\n }),\n\n POLICY_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/policy/${idIdx}`),\n\n COMMENT_LIST: createRoute<{\n dynamicPath: {\n commentType: COMMENT_TYPE;\n contentId: number;\n commentId: number;\n };\n searchParams: {\n sortType?: COMMENT_SORT_TYPE;\n parentCommentId?: number;\n policyTalkContentIdx?: string;\n };\n }>(\n ({ commentType, contentId, commentId }) =>\n `/comment/${commentType}/${contentId}/${commentId}`,\n ),\n COMMENT_EDIT: createRoute<{\n dynamicPath: { commentId: number };\n }>(({ commentId }) => `/comment/edit/${commentId}`),\n\n POLICY_TALK_COMMENT_NEW: createRoute<{\n dynamicPath: { contentIdx: string };\n }>(\n ({ contentIdx }) =>\n `/community/policyTalk/posting/${contentIdx}/comment/new`,\n ),\n POLICY_TALK_COMMENT_EDIT: createRoute<{\n dynamicPath: { contentIdx: string; commentId: number };\n }>(\n ({ contentIdx, commentId }) =>\n `/community/policyTalk/posting/${contentIdx}/comment/${commentId}`,\n ),\n\n HOMETOWN_NEWS_SEARCH: createRoute('/community/hometownNews/search'),\n\n /**@name 설정 */\n SETTINGS: createRoute('/my-info/settings'),\n\n /**@name 알림설정 */\n NOTIFICATION_SETTINGS: createRoute('/my-info/settings/notifications'),\n\n /**@name 계정연동 */\n ACCOUNT_LINKING: createRoute('/my-info/settings/account-linking'),\n\n /**@name 공지사항*/\n NOTICE: createRoute('/my-info/settings/notice'),\n\n /**@name 공지사항_상세 */\n NOTICE_DETAIL: createRoute<{\n dynamicPath: { id: number };\n }>(({ id }) => `/my-info/settings/notice/${id}`),\n\n /**@name 자주_묻는_질문 */\n FAQ: createRoute('/my-info/settings/faq'),\n\n /**@name 고객_문의 */\n INQUIRY_LIST: createRoute('/my-info/settings/inquiry'),\n\n /**@name 문의_하기 */\n INQUIRY_EDIT: createRoute<{\n searchParams: {\n category?: string;\n };\n }>('/my-info/settings/inquiry/register'),\n\n /**@name 문의_상세 */\n INQUIRY_DETAIL: createRoute<{\n dynamicPath: { id: number };\n }>(({ id }) => `/my-info/settings/inquiry/${id}`),\n\n /**@name 회원탈퇴 */\n RESIGN_MEMBER: createRoute('/my-info/settings/resign-member'),\n\n PICK_POLICY_LIST: createRoute<{ dynamicPath: { id: number } }>(\n ({ id }) => `/pick/${id}`,\n ),\n\n /** @name 맞춤_정책_필터_수정 */\n MY_POLICY_FILTER: createRoute('/my-info/edit/filter'),\n\n /**@name 장학재단 관련 */\n POLICY_KOSAF_APPLY: createRoute('/policy/apply/1'),\n POLICY_REPORT: createRoute('/policy/report'),\n\n POLICY_REPORT_DETAIL: createRoute<{\n searchParams: {\n /** @description 장학재단 신고 내역 상세 */\n report: string;\n reportYear: string;\n reportDate: string;\n };\n }>('/policy/report/detail'),\n\n /**@name 제주도 관련 */\n JEJU_APPLY: createRoute('/jeju/apply'),\n JEJU_REPORT: createRoute('/jeju/report'),\n JEJU_REPORT_DETAIL: createRoute<{\n dynamicPath: { id: number };\n }>(({ id }) => `/jeju/report/${id}`),\n\n POLICY_CONSENT: createRoute('/policy/consent'),\n POLICY_NOTICE: createRoute('/policy/notice'),\n POLICY_NOTICE_DETAIL: createRoute<{\n dynamicPath: { year: number };\n }>(({ year }) => `/policy/notice/${year}`),\n\n CROSS_DOMAIN_AUTH: createRoute<{\n searchParams: {\n accessToken: string;\n refreshToken: string;\n };\n }>('/login/auth/cross-domain'),\n\n CROSS_DOMAIN_CALLBACK: createRoute<{\n searchParams: {\n accessToken: string;\n refreshToken: string;\n redirect?: string;\n redirectSearchParams?: string;\n };\n }>('/login/auth/cross-domain/callback'),\n\n JOIN_COMMON: createRoute<{\n searchParams: {\n step?: number;\n };\n }>('/join/common'),\n\n JOIN_COMPLETE: createRoute('/join/complete'),\n\n JOIN_USER_INFO: createRoute<{\n searchParams: {\n verificationId?: number;\n };\n }>('/join/user-info'),\n\n POLICY_FILTER: createRoute<{\n dynamicPath: { situation: string };\n }>(({ situation }) => `/filter/policy/${situation}`),\n\n INTEREST_POLICY_FILTER: createRoute<{\n dynamicPath: { situation: string };\n }>(({ situation }) => `/filter/policy/interest/${situation}`),\n\n KB_PAY_FILTER: createRoute('/filter/kb-pay'),\n\n TERMS: createRoute<{\n dynamicPath: { terms: TERM_CATEGORY };\n }>(({ terms }) => `/terms/${terms}`),\n\n TERMS_PRIVATE: createRoute<{\n dynamicPath: { terms: TERM_CATEGORY };\n }>(({ terms }) => `/my-info/settings/terms/${terms}`),\n\n EASY_CERTIFICATION: createRoute<{\n searchParams: EasyCertificationParams;\n }>('/easy-certification'),\n EASY_CERTIFICATION_CALLBACK: createRoute<{\n searchParams: EasyCertificationParams & {\n encryptMOKKeyToken?: string;\n serviceType?: string;\n txId?: string;\n usageCode?: EASY_LOGIN_USAGE_CODE;\n };\n }>('/easy-certification/callback'),\n\n ERROR: createRoute<{\n dynamicPath: { code: ERROR_CODE };\n }>(({ code }) => `/error/${code}`),\n\n NICE_CERTIFICATION: createRoute('/easy-certification/nice'),\n NICE_RESULT: createRoute<{\n dynamicPath: {\n result: 'pending' | 'success' | 'fail';\n };\n }>(({ result }) => `/easy-certification/nice/${result}`),\n /** default request categoryId: 0 */\n VOUCHER_CATEGORY: createRoute<{\n dynamicPath: {\n categoryId: number;\n };\n }>(({ categoryId }) => `/voucher/${categoryId}`, {\n hasBottomNav: true,\n }),\n VOUCHER_MAIN: createRoute(`/voucher/main`, {\n hasBottomNav: true,\n }),\n VOUCHER_MAIN_NOTICE: createRoute(`/voucher/main/notice`),\n VOUCHER_PRODUCT_INTRODUCE: createRoute<{\n dynamicPath: {\n categoryId: number;\n };\n }>(({ categoryId }) => `/voucher/introduce/${categoryId}`),\n VOUCHER_DETAIL: createRoute<{\n dynamicPath: {\n voucherId: string;\n };\n }>(({ voucherId }) => `/voucher/detail/${voucherId}`),\n VOUCHER_INVITE: createRoute('/voucher/invite'),\n VOUCHER_MY_WAITING: createRoute('/voucher/my-waiting'),\n VOUCHER_QNA: createRoute<{\n dynamicPath: {\n categoryId: number;\n };\n searchParams?: {\n subcategory?: number;\n };\n }>(({ categoryId }) => `/voucher/qna/${categoryId}`),\n VOUCHER_QNA_DETAIL: createRoute<{\n dynamicPath: {\n categoryId: number;\n idx: string;\n };\n }>(({ categoryId, idx }) => `/voucher/qna/${categoryId}/${idx}`),\n VOUCHER_QNA_POSTING: createRoute<{\n dynamicPath: {\n categoryId: number;\n idx: string;\n };\n searchParams?: {\n subcategory?: number;\n };\n }>(({ categoryId, idx }) => `/voucher/qna/${categoryId}/${idx}/posting`),\n /** default request categoryId: 0 */\n VOUCHER_DESCRIPTION_SERVICE_CATEGORY: createRoute<{\n dynamicPath: {\n categoryId: number;\n };\n }>(({ categoryId }) => `/voucher/description/service/${categoryId}`),\n VOUCHER_DESCRIPTION_CARD: createRoute('/voucher/description/card'),\n VOUCHER_LIST: createRoute<{\n dynamicPath: { category: number };\n }>(({ category }) => `/voucher/list/${category}`),\n VOUCHER_MAP: createRoute<{\n searchParams: { category: number };\n }>('/voucher/map', {\n toastDirection: 'top',\n }),\n /** default request categoryId: 0 */\n VOUCHER_ONLINE_CATEGORY: createRoute<{\n dynamicPath: { category: number };\n }>(({ category }) => `/voucher/online/${category}`),\n CHILD_CARE_SERVICE_VOUCHER: createRoute('/voucher/child-care-service'),\n NATIONAL_HAPPINESS_CARD_VOUCHER_ONLINE: createRoute(\n '/voucher/national-happiness-card/online',\n ),\n NATIONAL_HAPPINESS_CARD_VOUCHER_OFFLINE: createRoute(\n '/voucher/national-happiness-card/offline',\n ),\n CONTENT_COMPLIANCE_INFORMATION: createRoute(\n '/content-compliance-information',\n ),\n WELLPER_INTRODUCTION: createRoute('/wellper/introduction'),\n WELLPER_APPLY: createRoute('/wellper/apply'),\n WELLPER_VERIFY_PHONE: createRoute('/wellper/verify-phone'),\n WELLPER_DOCUMENTS_UPLOAD: createRoute('/wellper/documents-upload'),\n WELLPER_DOCUMENTS_UPLOAD_INPUT: createRoute(\n '/wellper/documents-upload-input',\n ),\n WELLPER_APPLICATION_COMPLETED: createRoute('/wellper/application-completed'),\n POINTS: createRoute('/points'),\n POINTS_OVERVIEW: createRoute('/points/overview'),\n POINTS_FORM: createRoute('/points/form'),\n POINTS_WITHDRAWAL_SUCCESS: createRoute('/points/withdrawal-success'),\n /** 친구 초대 */\n POINTS_INVITE: createRoute('/points/invite'),\n /** 매일 출석 체크 */\n ATTENDANCE_DAILY_CHECK: createRoute('/attendance/daily-check'),\n\n CARD: createRoute('/card'),\n REWARD: createRoute('/card/reward'),\n CARD_BENEFIT: createRoute('/card/benefit'),\n CARD_INVITE: createRoute('/card/invite'),\n CARD_UPLOAD: createRoute<{\n searchParams: { cardName: string; memberCardId: number };\n }>('/card/upload'),\n\n K_PASS_APPLY: createRoute('/card/k-pass/apply'),\n HAPPINESS_CARD_APPLY: createRoute('/card/happiness/apply'),\n CEO_CARD_APPLY: createRoute('/card/ceo/apply'),\n\n K_PASS_BENEFIT: createRoute('/card/k-pass/benefit'),\n HAPPINESS_CARD_BENEFIT: createRoute('/card/happiness/benefit'),\n\n BENEFIT_NOTIFICATION: createRoute<{\n searchParams: {\n retry?: 'true';\n };\n }>('/benefit-notification'),\n BENEFIT_NOTIFICATION_AGREEMENT: createRoute(\n '/benefit-notification/agreement',\n ),\n BENEFIT_NOTIFICATION_CALLBACK: createRoute<{\n searchParams: {\n svcSeq: string;\n grpSeq: string;\n fixesGuidanceRequstSeq: string;\n };\n }>('/benefit-notification/callback'),\n\n /** DLP 서울 */\n DLP_SEOUL_AUTH: createRoute<{\n searchParams: {\n redirect?: string;\n };\n }>('/dlp/seoul/auth'),\n DLP_SEOUL_AUTH_TERMS_PRIVACY: createRoute('/dlp/seoul/auth/terms-privacy'),\n DLP_SEOUL_AUTH_CHECK_VERIFICATION: createRoute(\n '/dlp/seoul/auth/check-verification',\n ),\n DLP_SEOUL_AUTH_CHANGE_PASSWORD_NOTICE: createRoute(\n '/dlp/seoul/auth/change-password-notice',\n ),\n DLP_SEOUL_AUTH_CHECK_MY_VERIFICATION_INFO: createRoute<{\n searchParams: {\n redirectAnotherStep?: DLP_SEOUL_AUTH_STEP;\n };\n }>('/dlp/seoul/auth/check-my-verification-info'),\n DLP_SEOUL_AUTH_SELECT_MOBILE_AGENCY: createRoute<{\n searchParams: {\n redirectAnotherStep?: DLP_SEOUL_AUTH_STEP;\n };\n }>('/dlp/seoul/auth/select-mobile-agency'),\n DLP_SEOUL_AUTH_CHECK_SEOUL_MEMBER: createRoute(\n '/dlp/seoul/auth/check-seoul-member',\n ),\n DLP_SEOUL_AUTH_NEED_VERIFICATION: createRoute(\n '/dlp/seoul/auth/need-verification',\n ),\n DLP_SEOUL_AUTH_NEED_SIGNUP_NOTICE: createRoute(\n '/dlp/seoul/auth/need-signup-notice',\n ),\n DLP_SEOUL_AUTH_TERMS_AGREEMENT: createRoute(\n '/dlp/seoul/auth/terms-agreement',\n ),\n DLP_SEOUL_AUTH_SIGNUP_FORM: createRoute('/dlp/seoul/auth/signup-form'),\n DLP_SEOUL_AUTH_ALREADY_SIGNUP_NOTICE: createRoute(\n '/dlp/seoul/auth/already-signup-notice',\n ),\n DLP_SEOUL_AUTH_AUTO_LOGIN_ACTIVE: createRoute(\n '/dlp/seoul/auth/auto-login-active',\n ),\n DLP_SEOUL_AUTH_CHANGE_PASSWORD_INPUT_AUTH_NUMBER: createRoute(\n '/dlp/seoul/auth/change-password-input-auth-number',\n ),\n DLP_SEOUL_AUTH_CHANGE_PASSWORD_FORM: createRoute(\n '/dlp/seoul/auth/change-password-form',\n ),\n DLP_SEOUL_AUTH_COMPLETE: createRoute('/dlp/seoul/auth/complete'),\n DLP_SEOUL_APPLY_CLTR_PASS_TERMS: createRoute(\n '/dlp/seoul/apply/cltr-pass/terms',\n ),\n DLP_SEOUL_APPLY_CLTR_PASS_FORM: createRoute(\n '/dlp/seoul/apply/cltr-pass/form',\n ),\n DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_TERMS: createRoute(\n '/dlp/seoul/apply/loan-crdt-rcvr/terms',\n ),\n DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_FORM: createRoute(\n '/dlp/seoul/apply/loan-crdt-rcvr/form',\n ),\n DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_TERMS: createRoute(\n '/dlp/seoul/apply/islt-youth-sprt/terms',\n ),\n DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_FORM: createRoute(\n '/dlp/seoul/apply/islt-youth-sprt/form',\n ),\n DLP_SEOUL_APPLY_COMPLETE: createRoute('/dlp/seoul/apply/complete'),\n DLP_SEOUL_REPORT: createRoute<{\n searchParams: {\n detailType: DETAIL_POLICY_APPLICATION_TYPE;\n };\n }>('/dlp/seoul/report'),\n DLP_REVIEW: createRoute<{\n searchParams: {\n detailApplyType: DETAIL_POLICY_APPLICATION_TYPE;\n };\n }>('/dlp/review'),\n\n INSPECTION: createRoute<{\n searchParams: {\n redirect?: string;\n };\n }>('/inspection'),\n} as const;\n\nexport const API_ROUTES = {\n NAVER_AUTH: createRoute('/api/auth/naver'),\n GOOGLE_AUTH: createRoute('/api/auth/google'),\n APPLE_AUTH: createRoute('/api/auth/apple'),\n APPLE_TOKEN: createRoute('/api/auth/apple/token'),\n REDIRECT: createRoute('/api/redirect'),\n MOBILE_OK_REQUEST: createRoute<{\n searchParams: EasyCertificationParams & {\n usageCode: EASY_LOGIN_USAGE_CODE;\n };\n }>('/api/mobile-ok'),\n MOBILE_OK_CALLBACK: createRoute<{\n searchParams: EasyCertificationParams & {\n usageCode: EASY_LOGIN_USAGE_CODE;\n txId: string;\n serviceType: VERIFICATION_SERVICE_TYPE;\n };\n }>('/api/mobile-ok/callback'),\n IOK_REQUEST: createRoute<{\n searchParams: EasyCertificationParams & {\n usageCode: EASY_LOGIN_USAGE_CODE;\n authProviderCode: string;\n };\n }>('/api/iok'),\n IOK_CALLBACK: createRoute<{\n searchParams: EasyCertificationParams & {\n usageCode: EASY_LOGIN_USAGE_CODE;\n txId: string;\n serviceType: VERIFICATION_SERVICE_TYPE;\n };\n }>('/api/iok/callback'),\n JEJU_APP_API: createRoute('/api/jeju-app'),\n DOWNLOAD_APP: createRoute('/api/download-app'),\n PROXY: createRoute<{\n dynamicPath: { endpoint: keyof typeof PROXY_TARGET };\n }>(({ endpoint }) => `/api/proxy/${endpoint}`),\n\n BENEFIT_NOTIFICATION: createRoute<{\n dynamicPath: { dynamicPath: string };\n searchParams?: {\n svcSeq?: string;\n grpSeq?: string;\n fixesGuidanceRequstSeq?: string;\n osType?: OsType;\n accessToken: string | null;\n refreshToken: string | null;\n isWelloApp?: boolean;\n };\n }>(({ dynamicPath }) => `/api/benefit-notification/${dynamicPath}`),\n} as const;\n\nexport const MODULE_ROUTES = {\n KB_HOME: createRoute('/kb-home', {\n hasBottomNav: true,\n }),\n};\n","export enum STORAGE_KEY {\n SEARCH_HISTORY = 'searchHistory',\n EASY_CERTIFICATION = 'easyCertification',\n KOSAF_PROCESS = 'kosafProcess',\n JEJU_YOUTHDREAM = 'jejuYouthdream',\n NICE_FORM_VALUES = 'niceFormValues',\n LOGOUT_TOAST = 'logoutToast',\n POLICY_FILTER_LANDING = 'policyFilterLanding',\n POLICY_FILTER_LANDING_FROM = 'policyFilterFrom',\n POLICY_FILTER = 'policyFilter',\n HOMETOWN_NEWS_DETAIL_BOTTOM_DRAWER_PATH = 'hometownNewsDetailBottomDrawerPath',\n IS_NOT_SEE_AGAIN_VOUCHER_RECOMMEND = 'isNotSeeAgainVoucherRecommend',\n VOUCHER_MAIN_SCROLL = 'voucherMainScroll',\n VOUCHER_DETAIL_SCROLL = 'voucherDetailScroll',\n MY_INFO_PROFILE_SCRAP_ACTIVE_TAB = 'myInfoProfileScrapActiveTab',\n /** 회원 가입시 어떤 사용자가 추천했는지를 구분할 수 있는 코드 */\n MEMBER_CODE = 'memberCode',\n /** 웰퍼 신청 프로세스 중에 임시로 저장해 놓는 정책 분야 태그들 */\n WELLPER_APPLY_POLICY_TEMP_VALUES = 'wellperApplyPolicyTempValues',\n //* DLP 서울특별시\n DLP_SEOUL_AUTH_POLICY_ID_IDX = 'dlpSeoulAuthPolicyIdIdx',\n DLP_SEOUL_AUTH_DETAIL_APPLY_TYPE = 'dlpSeoulAuthDetailApplyType',\n DLP_SEOUL_AUTH_STEP = 'dlpSeoulAuthStep',\n DLP_SEOUL_AUTH_VERIFICATION_INFO = 'dlpSeoulAuthVerificationInfo',\n DLP_SEOUL_AUTH_SESSION_ID = 'dlpSeoulAuthSessionId',\n DLP_SEOUL_AUTH_USER_ID = 'dlpSeoulAuthUserId',\n DLP_SEOUL_AUTH_USER_ID_MASKING = 'dlpSeoulAuthUserIdMasking',\n DLP_SEOUL_AUTH_REDIRECT = 'dlpSeoulAuthRedirect',\n DLP_SEOUL_LOGIN_SESSION_ID = 'dlpSeoulLoginSessionId',\n DLP_SEOUL_ISLT_YOUTH_SPRT_FORM = 'dlpSeoulIsltYouthSprtForm',\n\n /** history 관련 정보 */\n HISTORY = 'history',\n HISTORY_EXPIRE = 'historyExpire',\n HISTORY_INDEX = 'historyIndex',\n REPLACE_MARK = 'replaceMark',\n}\n\nexport namespace STORAGE_TYPE {\n export type HISTORY = [number, string][];\n}\n","interface RouteOptions {\n hasBottomNav?: boolean;\n toastDirection?: 'top' | 'bottom';\n}\n\ntype DynamicParams = Record;\n\nlet routeId = 0;\n\nexport const createRoute = <\n TDynamicParams extends {\n dynamicPath?: DynamicParams;\n searchParams?: DynamicParams;\n } = {\n dynamicPath: undefined;\n searchParams: undefined;\n },\n>(\n pathname: TDynamicParams['dynamicPath'] extends DynamicParams\n ? (dynamicPath: TDynamicParams['dynamicPath']) => string\n : string,\n options?: RouteOptions,\n) => {\n routeId += 1;\n\n return Object.freeze({\n id: routeId,\n pathname,\n withSearchParams: (dynamicParams: TDynamicParams) => {\n const params = dynamicParams.searchParams ?? {};\n const searchParams = new URLSearchParams();\n\n for (const key in params) {\n const value = params[key];\n\n if (value === undefined) continue;\n\n searchParams.append(key, String(value));\n }\n\n const search = searchParams.toString();\n\n const _pathname =\n typeof pathname === 'function'\n ? pathname(dynamicParams.dynamicPath ?? {})\n : pathname;\n\n return `${_pathname}${search ? `?${search}` : ''}`;\n },\n hasBottomNav: options?.hasBottomNav ?? false,\n toastDirection: options?.toastDirection ?? 'bottom',\n } as const);\n};\n","import { MODULE_ROUTES,ROUTES } from '@/constants';\n\nexport const findRoute = (pathname: string | null) => {\n if (!pathname) return;\n\n const allRoutes = { ...ROUTES, ...MODULE_ROUTES };\n\n let matchedRoute: {\n name?: keyof typeof allRoutes;\n point: number;\n } = {\n point: 0,\n };\n\n for (const key in allRoutes) {\n const routeName = key as keyof typeof allRoutes;\n\n const route = allRoutes[routeName];\n\n if (typeof route.pathname === 'string') {\n if (route.pathname === pathname) {\n return route;\n }\n } else {\n const splitedRoutePathname = route.pathname({} as any).split('/');\n const splitedCurrentPathname = pathname.split('/');\n\n if (splitedRoutePathname.length !== splitedCurrentPathname.length)\n continue;\n\n let matchPoint = 0;\n\n const isAllSame = splitedCurrentPathname.every((path, index) => {\n const partOfRoutePathname = splitedRoutePathname[index];\n\n //! 동적 경로인 경우 더 일치도가 높은 라우트를 설정\n\n if (partOfRoutePathname === 'undefined') {\n matchPoint += 1;\n\n return true;\n }\n\n if (path === partOfRoutePathname) {\n matchPoint += 2;\n\n return true;\n }\n\n return false;\n });\n\n if (isAllSame && matchedRoute.point < matchPoint) {\n matchedRoute = {\n name: routeName,\n point: matchPoint,\n };\n }\n }\n }\n\n if (matchedRoute.name) return allRoutes[matchedRoute.name];\n};\n","import type { Metadata } from 'next';\n\nimport { DEFAULT_META } from '@/constants';\n\ninterface GetMetadataProps {\n title?: string;\n description?: string;\n keywords?: string[];\n canonical?: string;\n images?: string;\n name?: string;\n url?: string;\n type?: string;\n}\n\n/**\n * 기본 SEO 메타데이터에 추가된 값만 변경해주는 함수\n */\nexport const getMetadata = ({\n title,\n description,\n keywords,\n images,\n name,\n canonical,\n url,\n type,\n}: GetMetadataProps): Metadata => {\n return {\n ...DEFAULT_META,\n\n ...(title && { title }),\n ...(description && { description }),\n ...(keywords && { keywords }),\n ...(canonical && {\n alternates: {\n canonical,\n },\n }),\n openGraph: {\n ...DEFAULT_META.openGraph,\n ...(title && { title }),\n ...(images && { images }),\n ...(description && { description }),\n ...(type && { type }),\n ...(url && { url }),\n },\n authors: name\n ? [\n {\n name,\n url: DEFAULT_META.authors[0].url,\n },\n ]\n : DEFAULT_META.authors,\n };\n};\n","export * from './createRoute';\nexport * from './findRoute';\nexport * from './getMetadata';\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fixed-body\":\"useBodyScrollLock_fixed-body__A6g2O\",\"body-size\":\"useBodyScrollLock_body-size__jqphR\"};"],"names":["MODAL_CLOSING_STATE","_path","_path2","info_path","info_path2","success_path","success_path2","warning_path","warning_path2","useBodyScrollLock","enabled","options","selector","useLayoutEffect","document","target","body","optionTarget","getElementById","classList","add","styles","remove","useClipboard","toast","useToast","useCallback","args","value","window","location","href","message","concat","navigator","clipboard","writeText","then","catch","type","textarea","createElement","appendChild","select","execCommand","removeChild","err","console","error","useDebouncedValue","delay","debouncedValue","setDebouncedValue","useState","debounced","useMemo","debounce","useEffect","cancel","useSubscribedState","subscribedState","dependencyList","valueState","setValue","subscribedValue","Function","useMountedEffect","effect","deps","isMounted","useRef","current","isEqual","info","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","fail","props","node_modules_react","xmlns","width","height","fill","viewBox","stroke","strokeLinecap","strokeLinejoin","strokeWidth","d","info_extends","success_extends","success","warning_extends","warning","toastQueue","Map","holdTime","param","Icon","SuccessIcon","FailIcon","WarningIcon","InfoIcon","toastKey","has","set","toastifyToast","autoClose","icon","jsx_runtime","jsx","className","onClose","delete","toastError","exceptionOptions","restOptions","return_code","errorCode","return_message","errorMessage","toastErrorMessage","exceptedErrorMessage","devToast","isDev","cn","_len","inputs","_key","twMerge","clsx","assert","condition","CustomError","cleanClassName","replace","createUuid","seed","v3","v4","createYupSchemaResolver","customYup","yup","number","transform","originalValue","undefined","schema","shape","factory","yupResolver","stringDate","checkDate","required","min","max","test","dateValue","regex","match","substring","date","Date","year","getFullYear","month","getMonth","day","getDate","parts","split","yearFromStr","parseInt","monthFromStr","dayFromStr","includes","onlyPast","inputDate","today","setHours","stringPhone","charAt","format","phone","slice","storage","bytes","unit","precision","kiloBytes","toFixed","megaBytes","gigaBytes","units","remainder","num","result","i","unitValue","Math","pow","currentUnit","floor","toLocaleString","trim","getOsType","userAgent","getSubDomain","hostname","mainDomain","join","subDomain","isCurrentUrl","targetUrl","URL","origin","skipPathname","pathname","skipSearch","search","process","isEnumValue","enumType","values","isArrayItem","array","hasObjectKey","obj","key","optimizeImageUrl","originalUrl","url","startsWith","params","URLSearchParams","quality","toString","SOCIAL_OAUTH_URL","kakao","naver","google","apple","encodeOAuthState","redirectPath","btoa","unescape","encodeURIComponent","JSON","stringify","createOAuthUrl","domain","clientId","scope","appleApiRoutePath","searchParams","response_type","client_id","state","append","monthText","hash","sitemapHash","customEditor","getImageUrls","imageList","doc","content","forEach","name","push","attrs","src","createQueryKeys","keys","ERROR_CODE","hasKey","isNormalizedResponse","res","Error","constructor","status","result_code","request","cause","errorNum","normalizeServerRequest","requestFn","errorObject","checkServerResponse","headers","get","clonedRes","clone","getRequest","endpoint","data","json","ENV","NODE_ENV","NEXT_PUBLIC_DOMAIN","NEXT_PUBLIC_API_DOMAIN","NEXT_PUBLIC_GOOGLE_CLIENT_ID","NEXT_PUBLIC_KAKAO_CLIENT_ID","NEXT_PUBLIC_NAVER_CLIENT_ID","NEXT_PUBLIC_APPLE_CLIENT_ID","NEXT_PUBLIC_JEJU_API_DOMAIN","NEXT_PUBLIC_JEJU_YOUTHDREAM_API_KEY","NEXT_PUBLIC_DPG_API_DOMAIN","NEXT_PUBLIC_NAVER_CLOUD_CLIENT_ID","NEXT_PUBLIC_MOBILE_OK_URL","NEXT_PUBLIC_EZ_IOK_URL","IS_PRODUCT","IS_DEV","BASE_URL","CERTIFICATION_LIST","id","COOKIES_KEYS","COOKIE_OPTIONS","path","secure","POINT","MIN_EXCHANGE","EXCHANGE_UNIT","DAY_MAX_EXCHANGE","SEARCH_PARAMS","SELECTOR","MENU_TITLE","DEFAULT_META","generator","applicationName","metadataBase","appLinks","android","package","app_name","ios","app_store_id","manifest","keywords","title","authors","publisher","description","openGraph","images","siteName","COMMUNITY_HEADER_ITEMS","welloNews","policyInfo","hometownNews","policyTalk","freeTalk","GTM_ID","GA_ID","ROUTES","TEST","createRoute","HOME","hasBottomNav","LOGIN","LOGIN_POINT","PEEC_EVENT","PEEC_APPLY","AUTH","COMMUNITY","COMMUNITY_CATEGORY","category","idIdx","WELLO_NEWS_DETAIL","POLICY_TALK_DETAIL","FREE_TALK_DETAIL","HOMETOWN_NEWS_DETAIL","POLICY_INFO_DETAIL","POLICY_TALK_POST_EDIT","idx","POLICY_TALK_POST_NEW","FREE_TALK_POST_EDIT","FREE_TALK_POST_NEW","PROFILE","PROFILE_SCRAP","PROFILE_COMMUNITY_POSTED","PROFILE_COMMUNITY_COMMENTED","PROFILE_APPLY","PROFILE_APPLY_RECOMMEND_INQUIRY","RANDOM_TICKET","RECOMMEND_POLICY_SITUATION_MAIN","caseType","RECOMMEND_POLICY_SITUATION_BABY_FORM","RECOMMEND_POLICY_SITUATION_BABY_REPORT","subRegionCode","childCount","RECOMMEND_POLICY_SITUATION_EMERGENCY_FORM","RECOMMEND_POLICY_SITUATION_EMERGENCY_HOSPITAL_LIST","RECOMMEND_POLICY_SITUATION_EMERGENCY_MAP","RECOMMEND_POLICY_SITUATION_EMERGENCY_DETAIL","MEDICAL_POLICY_LIST","PUSH","PROFILE_EDIT","FAMILY_PROFILE","FAMILY_PROFILE_UPDATE","updateType","FAMILY_FILTER_UPDATE","SEARCH","RECOMMEND_POLICY_LIST","POLICY_DETAIL","COMMENT_LIST","commentType","contentId","commentId","COMMENT_EDIT","POLICY_TALK_COMMENT_NEW","contentIdx","POLICY_TALK_COMMENT_EDIT","HOMETOWN_NEWS_SEARCH","SETTINGS","NOTIFICATION_SETTINGS","ACCOUNT_LINKING","NOTICE","NOTICE_DETAIL","FAQ","INQUIRY_LIST","INQUIRY_EDIT","INQUIRY_DETAIL","RESIGN_MEMBER","PICK_POLICY_LIST","MY_POLICY_FILTER","POLICY_KOSAF_APPLY","POLICY_REPORT","POLICY_REPORT_DETAIL","JEJU_APPLY","JEJU_REPORT","JEJU_REPORT_DETAIL","POLICY_CONSENT","POLICY_NOTICE","POLICY_NOTICE_DETAIL","CROSS_DOMAIN_AUTH","CROSS_DOMAIN_CALLBACK","JOIN_COMMON","JOIN_COMPLETE","JOIN_USER_INFO","POLICY_FILTER","situation","INTEREST_POLICY_FILTER","KB_PAY_FILTER","TERMS","terms","TERMS_PRIVATE","EASY_CERTIFICATION","EASY_CERTIFICATION_CALLBACK","ERROR","code","NICE_CERTIFICATION","NICE_RESULT","VOUCHER_CATEGORY","categoryId","VOUCHER_MAIN","VOUCHER_MAIN_NOTICE","VOUCHER_PRODUCT_INTRODUCE","VOUCHER_DETAIL","voucherId","VOUCHER_INVITE","VOUCHER_MY_WAITING","VOUCHER_QNA","VOUCHER_QNA_DETAIL","VOUCHER_QNA_POSTING","VOUCHER_DESCRIPTION_SERVICE_CATEGORY","VOUCHER_DESCRIPTION_CARD","VOUCHER_LIST","VOUCHER_MAP","toastDirection","VOUCHER_ONLINE_CATEGORY","CHILD_CARE_SERVICE_VOUCHER","NATIONAL_HAPPINESS_CARD_VOUCHER_ONLINE","NATIONAL_HAPPINESS_CARD_VOUCHER_OFFLINE","CONTENT_COMPLIANCE_INFORMATION","WELLPER_INTRODUCTION","WELLPER_APPLY","WELLPER_VERIFY_PHONE","WELLPER_DOCUMENTS_UPLOAD","WELLPER_DOCUMENTS_UPLOAD_INPUT","WELLPER_APPLICATION_COMPLETED","POINTS","POINTS_OVERVIEW","POINTS_FORM","POINTS_WITHDRAWAL_SUCCESS","POINTS_INVITE","ATTENDANCE_DAILY_CHECK","CARD","REWARD","CARD_BENEFIT","CARD_INVITE","CARD_UPLOAD","K_PASS_APPLY","HAPPINESS_CARD_APPLY","CEO_CARD_APPLY","K_PASS_BENEFIT","HAPPINESS_CARD_BENEFIT","BENEFIT_NOTIFICATION","BENEFIT_NOTIFICATION_AGREEMENT","BENEFIT_NOTIFICATION_CALLBACK","DLP_SEOUL_AUTH","DLP_SEOUL_AUTH_TERMS_PRIVACY","DLP_SEOUL_AUTH_CHECK_VERIFICATION","DLP_SEOUL_AUTH_CHANGE_PASSWORD_NOTICE","DLP_SEOUL_AUTH_CHECK_MY_VERIFICATION_INFO","DLP_SEOUL_AUTH_SELECT_MOBILE_AGENCY","DLP_SEOUL_AUTH_CHECK_SEOUL_MEMBER","DLP_SEOUL_AUTH_NEED_VERIFICATION","DLP_SEOUL_AUTH_NEED_SIGNUP_NOTICE","DLP_SEOUL_AUTH_TERMS_AGREEMENT","DLP_SEOUL_AUTH_SIGNUP_FORM","DLP_SEOUL_AUTH_ALREADY_SIGNUP_NOTICE","DLP_SEOUL_AUTH_AUTO_LOGIN_ACTIVE","DLP_SEOUL_AUTH_CHANGE_PASSWORD_INPUT_AUTH_NUMBER","DLP_SEOUL_AUTH_CHANGE_PASSWORD_FORM","DLP_SEOUL_AUTH_COMPLETE","DLP_SEOUL_APPLY_CLTR_PASS_TERMS","DLP_SEOUL_APPLY_CLTR_PASS_FORM","DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_TERMS","DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_FORM","DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_TERMS","DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_FORM","DLP_SEOUL_APPLY_COMPLETE","DLP_SEOUL_REPORT","DLP_REVIEW","INSPECTION","API_ROUTES","NAVER_AUTH","GOOGLE_AUTH","APPLE_AUTH","APPLE_TOKEN","REDIRECT","MOBILE_OK_REQUEST","MOBILE_OK_CALLBACK","IOK_REQUEST","IOK_CALLBACK","JEJU_APP_API","DOWNLOAD_APP","PROXY","dynamicPath","MODULE_ROUTES","KB_HOME","STORAGE_KEY","routeId","freeze","withSearchParams","dynamicParams","String","_pathname","findRoute","allRoutes","matchedRoute","point","route","splitedRoutePathname","splitedCurrentPathname","matchPoint","every","index","partOfRoutePathname","module","exports"],"sourceRoot":""}