diff --git a/.gitignore b/.gitignore index a547bf3..4b95297 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,10 @@ node_modules dist dist-ssr *.local +.env + +# Vercel +.vercel # Editor directories and files .vscode/* diff --git a/src/components/Modal/ExperimentDetail/ExperimentDetail.tsx b/src/components/Modal/ExperimentDetail/ExperimentDetail.tsx index dde0ea3..2c23aff 100644 --- a/src/components/Modal/ExperimentDetail/ExperimentDetail.tsx +++ b/src/components/Modal/ExperimentDetail/ExperimentDetail.tsx @@ -41,7 +41,6 @@ const ExperimentDetail = ({ modalData: { experimentId } }: { modalData: Experime if (!experimentDetail) return []; const { buyAt, status, buyScore, buyPrice, currentScore, currentPrice, roi, country } = experimentDetail; - console.log(roi); const currency = STOCK_COUNTRY_MAP[country].currency; return [ { diff --git a/src/components/Search/StockChart/StockChart.tsx b/src/components/Search/StockChart/StockChart.tsx index c9610ea..b458edb 100644 --- a/src/components/Search/StockChart/StockChart.tsx +++ b/src/components/Search/StockChart/StockChart.tsx @@ -1167,7 +1167,6 @@ const StockChart = ({ const [chartData, updateChartData] = useStockChartQuery(stockId, selectedPeriod); const handlePeriodClick = (period: PERIOD_CODE) => (e: React.MouseEvent) => { - console.log(period); e.preventDefault(); e.stopPropagation(); setSelectedPeriod(period); diff --git a/src/components/SearchBar/PopularStocks/PopularStocks.tsx b/src/components/SearchBar/PopularStocks/PopularStocks.tsx index fd4ab95..dc1e8f7 100644 --- a/src/components/SearchBar/PopularStocks/PopularStocks.tsx +++ b/src/components/SearchBar/PopularStocks/PopularStocks.tsx @@ -14,7 +14,6 @@ const PopularStocks = () => { const { addRecentStock } = useRecentStocks(); const [popularStocks] = usePopularStockFetchQuery(); - console.log(popularStocks); const handlePopularStockClick = (symbolName: string, country: StockCountryKey) => () => { addRecentStock(symbolName, country); diff --git a/src/components/ShortView/Tutorial/Tutorial.tsx b/src/components/ShortView/Tutorial/Tutorial.tsx index 1f02c9b..8b9dd52 100644 --- a/src/components/ShortView/Tutorial/Tutorial.tsx +++ b/src/components/ShortView/Tutorial/Tutorial.tsx @@ -74,7 +74,6 @@ const ShortViewTutorial = () => { const [tutorialWatched, setTutorialWatched] = useLocalStorageState('tutorial_watched_shortview'); const handleClickTutorialEnd = () => { - console.log('tutorial end'); setTutorialWatched(true); }; diff --git a/src/controllers/common/base.ts b/src/controllers/common/base.ts index 2b56c56..d9372f9 100644 --- a/src/controllers/common/base.ts +++ b/src/controllers/common/base.ts @@ -47,10 +47,7 @@ const fetchAuthData = async (path: string, init: RequestInit = {}, isFormData: b }); if (res.status === 401) { - // console.log('Error 401: 인증 에러 발생. refetch 시도'); - const refreshToken = localStorage.getItem('refresh_token'); - console.log(1, refreshToken); const reissueRes = await fetch(`${baseURL}/auth/reissue`, { method: 'POST', diff --git a/src/hooks/useAuthInfo.ts b/src/hooks/useAuthInfo.ts index ef6387c..0caa936 100644 --- a/src/hooks/useAuthInfo.ts +++ b/src/hooks/useAuthInfo.ts @@ -42,7 +42,6 @@ const useAuthInfo = () => { }; const setAuthInfo = (accessToken: string, refreshToken: string, userInfo: UserInfo) => { - console.log(2, accessToken); setAccessToken(accessToken); setRefreshToken(refreshToken); setUserInfo(userInfo); diff --git a/src/hooks/useSocialAuth.ts b/src/hooks/useSocialAuth.ts index d07a487..8a97487 100644 --- a/src/hooks/useSocialAuth.ts +++ b/src/hooks/useSocialAuth.ts @@ -79,9 +79,7 @@ export const useSocialAuth = () => { ); const handleOAuthCallback = useCallback( - async (code: string, provider: string, state: string) => { - console.log('🔵 [웹] handleOAuthCallback 시작:', { code, provider, state }); - + async (code: string, provider: string, _state: string) => { clearAuthInfo(); setIsLoading(true); setError(null); @@ -90,10 +88,7 @@ export const useSocialAuth = () => { // API는 state로 redirect URI의 base64 인코딩 값을 기대합니다 const redirectUri = window.location.origin + `/login/oauth2/code/${provider}`; const apiState = btoa(redirectUri); - - console.log('🔵 [웹] fetchOAuth2Login 호출 시작', { redirectUri, apiState }); const res = await fetchOAuth2Login(code, apiState, provider as ProviderKey); - console.log('🔵 [웹] fetchOAuth2Login 응답:', res); if (res.state === 'NEED_REGISTER') { // WebView에서는 네이티브에 메시지 전송 @@ -167,12 +162,9 @@ export const useSocialAuth = () => { const handleWebViewMessage = useCallback( (event: MessageEvent) => { try { - console.log('🔔 [웹] WebView 메시지 수신:', event.data); const { type, data } = JSON.parse(event.data); - console.log('🔔 [웹] 파싱된 메시지:', { type, data }); if (type === MESSAGE_TYPES.AUTH_SUCCESS) { - console.log('✅ [웹] AUTH_SUCCESS 처리:', data); handleOAuthCallback(data.code, data.provider, data.state || ''); } else if (type === MESSAGE_TYPES.AUTH_ERROR) { console.error('OAuth auth error:', data.error); @@ -234,16 +226,13 @@ export const useSocialAuth = () => { // WebView 메시지 리스너 등록 useEffect(() => { if (!isWebView) { - console.log('⚠️ [웹] WebView 환경이 아님 - 메시지 리스너 미등록'); return; } - console.log('✅ [웹] WebView 메시지 리스너 등록'); window.addEventListener('message', handleWebViewMessage); document.addEventListener('message', handleWebViewMessage as EventListener); return () => { - console.log('🗑️ [웹] WebView 메시지 리스너 제거'); window.removeEventListener('message', handleWebViewMessage); document.removeEventListener('message', handleWebViewMessage as EventListener); }; diff --git a/src/pages/Favorites/Favorites.tsx b/src/pages/Favorites/Favorites.tsx index 22a5d12..ce01c3c 100644 --- a/src/pages/Favorites/Favorites.tsx +++ b/src/pages/Favorites/Favorites.tsx @@ -80,7 +80,6 @@ const Favorites = () => { }; const handleNotificationToggle = () => { - console.log(currentNotificationItemRef.current); if (!currentNotificationItemRef.current) return; toggleNotification(currentNotificationItemRef.current); closeOffNotificationModal(); diff --git a/src/pages/Register/Register.tsx b/src/pages/Register/Register.tsx index 84135a2..24c793a 100644 --- a/src/pages/Register/Register.tsx +++ b/src/pages/Register/Register.tsx @@ -255,8 +255,6 @@ const Register = () => { provider.toUpperCase(), ); - console.log(profileImage); - if (!res) return; // sessionStorage 정리 diff --git a/src/pages/ShortView/ShortView.tsx b/src/pages/ShortView/ShortView.tsx index f998be9..3d3c1c4 100644 --- a/src/pages/ShortView/ShortView.tsx +++ b/src/pages/ShortView/ShortView.tsx @@ -57,7 +57,6 @@ const ShortView = () => { if (isFetchingNextShortview) return; if (shortviewStocks.length === 0) return; if (currentIdx >= shortviewStocks.length - 2) { - console.log('fetch next'); fetchNextShortview(); } }, [currentIdx, shortviewStocks, isFetchingNextShortview]); diff --git a/src/router/index.tsx b/src/router/index.tsx index 6571520..fc693e6 100644 --- a/src/router/index.tsx +++ b/src/router/index.tsx @@ -1,24 +1,27 @@ +import { Suspense, lazy } from 'react'; import { Outlet, ScrollRestoration, createBrowserRouter } from 'react-router-dom'; -import AboutPage from '@pages/About/About'; -import Favorites from '@pages/Favorites/Favorites'; -import Lab from '@pages/Lab/Lab'; -import RecordSheet from '@pages/Lab/RecordSheet/RecordSheet'; -import LabStep from '@pages/Lab/Step/Step'; -import Login from '@pages/Login/Login'; -import Done from '@pages/MyPage/Done/Done'; -import EditProfile from '@pages/MyPage/Edit/Edit'; -import MyPage from '@pages/MyPage/MyPage'; -import NotificationPage from '@pages/Notification/Notification'; -import OAuthCallback from '@pages/OAuthCallback/OAuthCallback'; -import Register from '@pages/Register/Register'; -import ShortView from '@pages/ShortView/ShortView'; -import Term from '@pages/Term/Term'; -import Usage from '@pages/Usage/Usage'; -import Withdraw from '@pages/Withdraw/Withdraw'; -import WithdrawDone from '@pages/WithdrawDone/WithdrawDone'; import Mainlayout from '../layout/Mainlayout/Mainlayout'; -import Home from '../pages/Home/Home'; -import Search from '../pages/Search/Search'; + +// Lazy load all pages for code splitting +const Home = lazy(() => import('../pages/Home/Home')); +const Search = lazy(() => import('../pages/Search/Search')); +const AboutPage = lazy(() => import('@pages/About/About')); +const Favorites = lazy(() => import('@pages/Favorites/Favorites')); +const Lab = lazy(() => import('@pages/Lab/Lab')); +const RecordSheet = lazy(() => import('@pages/Lab/RecordSheet/RecordSheet')); +const LabStep = lazy(() => import('@pages/Lab/Step/Step')); +const Login = lazy(() => import('@pages/Login/Login')); +const Done = lazy(() => import('@pages/MyPage/Done/Done')); +const EditProfile = lazy(() => import('@pages/MyPage/Edit/Edit')); +const MyPage = lazy(() => import('@pages/MyPage/MyPage')); +const NotificationPage = lazy(() => import('@pages/Notification/Notification')); +const OAuthCallback = lazy(() => import('@pages/OAuthCallback/OAuthCallback')); +const Register = lazy(() => import('@pages/Register/Register')); +const ShortView = lazy(() => import('@pages/ShortView/ShortView')); +const Term = lazy(() => import('@pages/Term/Term')); +const Usage = lazy(() => import('@pages/Usage/Usage')); +const Withdraw = lazy(() => import('@pages/Withdraw/Withdraw')); +const WithdrawDone = lazy(() => import('@pages/WithdrawDone/WithdrawDone')); export type TermKey = 'agreeTerm' | 'agreePrivacy' | 'agreeMarketing'; @@ -48,7 +51,9 @@ export const webPath = { const Root = () => { return ( - + + + ); diff --git a/src/utils/wasm/WordCloudWasm.ts b/src/utils/wasm/WordCloudWasm.ts index bd0fbb5..e2309f9 100644 --- a/src/utils/wasm/WordCloudWasm.ts +++ b/src/utils/wasm/WordCloudWasm.ts @@ -4,7 +4,6 @@ export async function LoadWordCloudWASM(width: number, height: number): Promise< // const response = await fetch('/wasm/wordcloud.wasm'); // const buffer = await response.arrayBuffer(); // const module = await WebAssembly.compile(buffer); - // console.log(WebAssembly.Module.imports(module)); return new Promise((resolve, reject) => { Module({ @@ -17,9 +16,6 @@ export async function LoadWordCloudWASM(width: number, height: number): Promise< }, }) .then(({ exports }) => { - // console.log('WASM exports:', exports); - // console.log('Available functions:', Object.keys(exports)); - // 타입 안전성을 위한 타입 단언 const wasmExports = exports as any; diff --git a/tsconfig.app.tsbuildinfo b/tsconfig.app.tsbuildinfo index eef1550..c2b3baa 100644 --- a/tsconfig.app.tsbuildinfo +++ b/tsconfig.app.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/app.tsx","./src/main.tsx","./src/queryclient.ts","./src/vite-env.d.ts","./src/components/cardlist/cardlist.style.ts","./src/components/cardlist/cardlist.tsx","./src/components/cardlist/stockcard/stockcard.style.ts","./src/components/cardlist/stockcard/stockcard.tsx","./src/components/common/button.ts","./src/components/common/common.props.ts","./src/components/common/common.type.ts","./src/components/common/common.tsx","./src/components/common/contentsitem.style.ts","./src/components/common/errorcomponent.tsx","./src/components/common/header.tsx","./src/components/common/loadingcomponent.tsx","./src/components/common/stockimage.tsx","./src/components/common/scrolltopbutton/scrolltopbutton.tsx","./src/components/event/disquiet.style.ts","./src/components/event/disquiet.tsx","./src/components/home/banner/banner.style.ts","./src/components/home/banner/banner.tsx","./src/components/home/indexscore/homeinfo.style.ts","./src/components/home/indexscore/homeinfo.tsx","./src/components/home/keywords/keywords.style.tsx","./src/components/home/keywords/keywords.tsx","./src/components/home/stocktable/stocktable.style.ts","./src/components/home/stocktable/stocktable.tsx","./src/components/home/title/title.style.ts","./src/components/lab/common.style.ts","./src/components/lab/experimentitem/experimentitem.style.ts","./src/components/lab/experimentitem/experimentitem.tsx","./src/components/lab/reportclasschart/reportclasschart.style.ts","./src/components/lab/reportclasschart/reportclasschart.type.tsx","./src/components/lab/reportclasschart/reportclasschart.tsx","./src/components/lab/reportpatternchart/reportpatternchart.style.ts","./src/components/lab/reportpatternchart/reportpatternchart.type.tsx","./src/components/lab/reportpatternchart/reportpatternchart.tsx","./src/components/loading/loading.tsx","./src/components/modal/common.style.ts","./src/components/modal/usemodal.tsx","./src/components/modal/aboutreportclass/aboutreportclass.tsx","./src/components/modal/aboutreportclass/useaboutreportclass.ts","./src/components/modal/aboutreportpattern/aboutreportpattern.tsx","./src/components/modal/aboutreportpattern/useaboutreportpattern.ts","./src/components/modal/centertutorial/centertutotial.style.ts","./src/components/modal/centertutorial/layout.tsx","./src/components/modal/centertutorial/aboutantvoice/aboutantvoice.tsx","./src/components/modal/centertutorial/aboutantvoice/useaboutantvoice.tsx","./src/components/modal/centertutorial/abouthumanzipyo/abouthumanzipyo.tsx","./src/components/modal/centertutorial/abouthumanzipyo/useabouthumanzipyo.tsx","./src/components/modal/confirm/confirmmodal.tsx","./src/components/modal/experimentdetail/experimentdetail.style.ts","./src/components/modal/experimentdetail/experimentdetail.tsx","./src/components/modal/experimentdetail/useexperimentdetail.ts","./src/components/modal/layout/bottomupcancel/bottomupcancel.tsx","./src/components/mypage/mypage.style.ts","./src/components/mypage/mypageinput/mypageinput.tsx","./src/components/mypage/profilecircle/profilecircle.tsx","./src/components/nologinwrapper/nologinwrapper.style.ts","./src/components/nologinwrapper/nologinwrapper.tsx","./src/components/popup/commonpopup.style.ts","./src/components/popup/commonpopup.tsx","./src/components/popup/descentpopup/descentpopup.tsx","./src/components/popup/fearpopup/fearpopup.tsx","./src/components/popup/hotpopup/hotpopup.tsx","./src/components/popup/keywordpopup/keywordpopup.tsx","./src/components/popup/pwainfopopup/pwainfopopup.tsx","./src/components/popup/pwainfopopup/pwainfopopup.style.ts","./src/components/popup/risingpopup/risingpopup.tsx","./src/components/search/guagechart/guagechart.style.ts","./src/components/search/guagechart/guagechart.tsx","./src/components/search/searchtitle/searchtitle.style.ts","./src/components/search/searchtitle/searchtitle.tsx","./src/components/search/stockchart/stockchart.style.ts","./src/components/search/stockchart/stockchart.tsx","./src/components/search/stockwordcloud/stockwordcloud.style.ts","./src/components/search/stockwordcloud/stockwordcloud.tsx","./src/components/searchbar/searchbar.style.ts","./src/components/searchbar/searchbar.tsx","./src/components/searchbar/autocomplete/autocomplete.style.ts","./src/components/searchbar/autocomplete/keywords/keywords.tsx","./src/components/searchbar/autocomplete/stocks/stocks.style.ts","./src/components/searchbar/autocomplete/stocks/stocks.tsx","./src/components/searchbar/popularkeywords/popularkeywords.tsx","./src/components/searchbar/popularstocks/popularstocks.style.ts","./src/components/searchbar/popularstocks/popularstocks.tsx","./src/components/searchbar/recentstocks/recentstocks.style.ts","./src/components/searchbar/recentstocks/recentstocks.tsx","./src/components/shortview/tutorial/tutorial.style.ts","./src/components/shortview/tutorial/tutorial.tsx","./src/components/slideview/slideview.style.ts","./src/components/slideview/slideview.tsx","./src/components/text/text.props.ts","./src/components/text/text.ts","./src/components/toast/toast.tsx","./src/config/oauth.ts","./src/config/webview.ts","./src/constants/patterntypes.ts","./src/constants/stockscore.ts","./src/controllers/auth/api.ts","./src/controllers/common/base.ts","./src/controllers/common/query.ts","./src/controllers/experiment/api.ts","./src/controllers/experiment/query.ts","./src/controllers/notification/api.ts","./src/controllers/notification/mock.ts","./src/controllers/notification/query.ts","./src/controllers/preference/api.ts","./src/controllers/preference/query.ts","./src/controllers/score/api.ts","./src/controllers/score/mock.ts","./src/controllers/score/query.ts","./src/controllers/shortview/api.ts","./src/controllers/shortview/mock.ts","./src/controllers/shortview/query.ts","./src/controllers/stocks/api.ts","./src/controllers/stocks/mock.ts","./src/controllers/stocks/query.ts","./src/controllers/stocks/types.ts","./src/hooks/useauthinfo.ts","./src/hooks/usecanvas.ts","./src/hooks/useismobile.ts","./src/hooks/uselocalstoragestate.ts","./src/hooks/usemodal.tsx","./src/hooks/usepreventscroll.ts","./src/hooks/usequerycomponent.tsx","./src/hooks/userecentstocks.ts","./src/hooks/usesnapindex.ts","./src/hooks/usesocialauth.ts","./src/hooks/usetoast.tsx","./src/hooks/useworker.ts","./src/layout/bottomnavigation/bottomnavigation.style.ts","./src/layout/bottomnavigation/bottomnavigation.tsx","./src/layout/footer/footer.style.ts","./src/layout/footer/footer.tsx","./src/layout/header/header.style.ts","./src/layout/header/header.tsx","./src/layout/mainlayout/mainlayout.props.ts","./src/layout/mainlayout/mainlayout.style.ts","./src/layout/mainlayout/mainlayout.tsx","./src/layout/searchheader/searchheader.tsx","./src/pages/about/about.style.ts","./src/pages/about/about.tsx","./src/pages/about/howto/howto.style.ts","./src/pages/about/howto/howto.tsx","./src/pages/favorites/favorites.style.ts","./src/pages/favorites/favorites.tsx","./src/pages/home/home.style.ts","./src/pages/home/home.tsx","./src/pages/lab/lab.style.ts","./src/pages/lab/lab.tsx","./src/pages/lab/labcurrent/labcurrent.style.ts","./src/pages/lab/labcurrent/labcurrent.tsx","./src/pages/lab/labresult/labresult.style.ts","./src/pages/lab/labresult/labresult.tsx","./src/pages/lab/recordsheet/recordsheet.style.ts","./src/pages/lab/recordsheet/recordsheet.tsx","./src/pages/lab/step/step.style.ts","./src/pages/lab/step/step.tsx","./src/pages/lab/step/country/country.style.ts","./src/pages/lab/step/country/country.tsx","./src/pages/lab/step/done/done.style.ts","./src/pages/lab/step/done/done.tsx","./src/pages/lab/step/purchase/purchase.style.ts","./src/pages/lab/step/purchase/purchase.tsx","./src/pages/lab/step/search/search.style.ts","./src/pages/lab/step/search/search.tsx","./src/pages/lab/step/tutorial/tutorial.style.ts","./src/pages/lab/step/tutorial/tutorial.tsx","./src/pages/login/login.style.ts","./src/pages/login/login.tsx","./src/pages/mypage/mypage.style.ts","./src/pages/mypage/mypage.tsx","./src/pages/mypage/done/done.tsx","./src/pages/mypage/edit/edit.tsx","./src/pages/mypage/profile/profile.tsx","./src/pages/notification/notification.style.ts","./src/pages/notification/notification.tsx","./src/pages/oauthcallback/oauthcallback.style.ts","./src/pages/oauthcallback/oauthcallback.tsx","./src/pages/register/register.style.ts","./src/pages/register/register.tsx","./src/pages/search/search.style.ts","./src/pages/search/search.tsx","./src/pages/shortview/shortview.style.ts","./src/pages/shortview/shortview.tsx","./src/pages/shortview/tindercard/tindercard.style.ts","./src/pages/shortview/tindercard/tindercard.tsx","./src/pages/term/term.style.ts","./src/pages/term/term.tsx","./src/pages/usage/usage.style.ts","./src/pages/usage/usage.tsx","./src/pages/withdraw/withdraw.tsx","./src/pages/withdrawdone/withdrawdone.tsx","./src/router/index.tsx","./src/styles/keyframes.ts","./src/styles/themes.ts","./src/ts/constants.ts","./src/ts/enums.ts","./src/ts/interfaces.ts","./src/ts/searchcategory.ts","./src/ts/stockcountry.ts","./src/ts/stocksector.ts","./src/ts/term.ts","./src/ts/types.ts","./src/utils/canvas.ts","./src/utils/date.ts","./src/utils/delta.ts","./src/utils/detector.ts","./src/utils/scoreconvert.ts","./src/utils/chunkarray.ts","./src/utils/dateformatter.ts","./src/utils/extractmatchedsegments.ts","./src/utils/getbusinessdayslater.ts","./src/utils/getframerate.ts","./src/utils/humanindexutils.ts","./src/utils/notificationmapper.ts","./src/utils/stockimage.ts","./src/utils/wasm/wordcloudwasm.ts","./src/utils/wasm/wordcloud.wasm.d.ts","./src/utils/worker/generatewordcloud.ts"],"errors":true,"version":"5.9.3"} \ No newline at end of file +{"root":["./src/app.tsx","./src/main.tsx","./src/queryclient.ts","./src/vite-env.d.ts","./src/components/cardlist/cardlist.style.ts","./src/components/cardlist/cardlist.tsx","./src/components/cardlist/stockcard/stockcard.style.ts","./src/components/cardlist/stockcard/stockcard.tsx","./src/components/common/button.ts","./src/components/common/common.props.ts","./src/components/common/common.type.ts","./src/components/common/common.tsx","./src/components/common/contentsitem.style.ts","./src/components/common/errorcomponent.tsx","./src/components/common/header.tsx","./src/components/common/loadingcomponent.tsx","./src/components/common/stockimage.tsx","./src/components/common/scrolltopbutton/scrolltopbutton.tsx","./src/components/event/disquiet.style.ts","./src/components/event/disquiet.tsx","./src/components/home/banner/banner.style.ts","./src/components/home/banner/banner.tsx","./src/components/home/indexscore/homeinfo.style.ts","./src/components/home/indexscore/homeinfo.tsx","./src/components/home/keywords/keywords.style.tsx","./src/components/home/keywords/keywords.tsx","./src/components/home/stocktable/stocktable.style.ts","./src/components/home/stocktable/stocktable.tsx","./src/components/home/title/title.style.ts","./src/components/lab/common.style.ts","./src/components/lab/experimentitem/experimentitem.style.ts","./src/components/lab/experimentitem/experimentitem.tsx","./src/components/lab/reportclasschart/reportclasschart.style.ts","./src/components/lab/reportclasschart/reportclasschart.type.tsx","./src/components/lab/reportclasschart/reportclasschart.tsx","./src/components/lab/reportpatternchart/reportpatternchart.style.ts","./src/components/lab/reportpatternchart/reportpatternchart.type.tsx","./src/components/lab/reportpatternchart/reportpatternchart.tsx","./src/components/loading/loading.tsx","./src/components/modal/common.style.ts","./src/components/modal/usemodal.tsx","./src/components/modal/aboutreportclass/aboutreportclass.tsx","./src/components/modal/aboutreportclass/useaboutreportclass.ts","./src/components/modal/aboutreportpattern/aboutreportpattern.tsx","./src/components/modal/aboutreportpattern/useaboutreportpattern.ts","./src/components/modal/centertutorial/centertutotial.style.ts","./src/components/modal/centertutorial/layout.tsx","./src/components/modal/centertutorial/aboutantvoice/aboutantvoice.tsx","./src/components/modal/centertutorial/aboutantvoice/useaboutantvoice.tsx","./src/components/modal/centertutorial/abouthumanzipyo/abouthumanzipyo.tsx","./src/components/modal/centertutorial/abouthumanzipyo/useabouthumanzipyo.tsx","./src/components/modal/confirm/confirmmodal.tsx","./src/components/modal/experimentdetail/experimentdetail.style.ts","./src/components/modal/experimentdetail/experimentdetail.tsx","./src/components/modal/experimentdetail/useexperimentdetail.ts","./src/components/modal/layout/bottomupcancel/bottomupcancel.tsx","./src/components/mypage/mypage.style.ts","./src/components/mypage/mypageinput/mypageinput.tsx","./src/components/mypage/profilecircle/profilecircle.tsx","./src/components/nologinwrapper/nologinwrapper.style.ts","./src/components/nologinwrapper/nologinwrapper.tsx","./src/components/popup/commonpopup.style.ts","./src/components/popup/commonpopup.tsx","./src/components/popup/descentpopup/descentpopup.tsx","./src/components/popup/fearpopup/fearpopup.tsx","./src/components/popup/hotpopup/hotpopup.tsx","./src/components/popup/keywordpopup/keywordpopup.tsx","./src/components/popup/pwainfopopup/pwainfopopup.tsx","./src/components/popup/pwainfopopup/pwainfopopup.style.ts","./src/components/popup/risingpopup/risingpopup.tsx","./src/components/search/guagechart/guagechart.style.ts","./src/components/search/guagechart/guagechart.tsx","./src/components/search/searchtitle/searchtitle.style.ts","./src/components/search/searchtitle/searchtitle.tsx","./src/components/search/stockchart/stockchart.style.ts","./src/components/search/stockchart/stockchart.tsx","./src/components/search/stockwordcloud/stockwordcloud.style.ts","./src/components/search/stockwordcloud/stockwordcloud.tsx","./src/components/searchbar/searchbar.style.ts","./src/components/searchbar/searchbar.tsx","./src/components/searchbar/autocomplete/autocomplete.style.ts","./src/components/searchbar/autocomplete/keywords/keywords.tsx","./src/components/searchbar/autocomplete/stocks/stocks.style.ts","./src/components/searchbar/autocomplete/stocks/stocks.tsx","./src/components/searchbar/popularkeywords/popularkeywords.tsx","./src/components/searchbar/popularstocks/popularstocks.style.ts","./src/components/searchbar/popularstocks/popularstocks.tsx","./src/components/searchbar/recentstocks/recentstocks.style.ts","./src/components/searchbar/recentstocks/recentstocks.tsx","./src/components/shortview/tutorial/tutorial.style.ts","./src/components/shortview/tutorial/tutorial.tsx","./src/components/slideview/slideview.style.ts","./src/components/slideview/slideview.tsx","./src/components/text/text.props.ts","./src/components/text/text.ts","./src/components/toast/toast.tsx","./src/config/oauth.ts","./src/config/webview.ts","./src/constants/patterntypes.ts","./src/constants/stockscore.ts","./src/controllers/auth/api.ts","./src/controllers/common/base.ts","./src/controllers/common/query.ts","./src/controllers/experiment/api.ts","./src/controllers/experiment/query.ts","./src/controllers/notification/api.ts","./src/controllers/notification/mock.ts","./src/controllers/notification/query.ts","./src/controllers/preference/api.ts","./src/controllers/preference/query.ts","./src/controllers/score/api.ts","./src/controllers/score/mock.ts","./src/controllers/score/query.ts","./src/controllers/shortview/api.ts","./src/controllers/shortview/mock.ts","./src/controllers/shortview/query.ts","./src/controllers/stocks/api.ts","./src/controllers/stocks/mock.ts","./src/controllers/stocks/query.ts","./src/controllers/stocks/types.ts","./src/hooks/useauthinfo.ts","./src/hooks/usecanvas.ts","./src/hooks/useismobile.ts","./src/hooks/uselocalstoragestate.ts","./src/hooks/usemodal.tsx","./src/hooks/usepreventscroll.ts","./src/hooks/usequerycomponent.tsx","./src/hooks/userecentstocks.ts","./src/hooks/usesnapindex.ts","./src/hooks/usesocialauth.ts","./src/hooks/usetoast.tsx","./src/hooks/useworker.ts","./src/layout/bottomnavigation/bottomnavigation.style.ts","./src/layout/bottomnavigation/bottomnavigation.tsx","./src/layout/footer/footer.style.ts","./src/layout/footer/footer.tsx","./src/layout/header/header.style.ts","./src/layout/header/header.tsx","./src/layout/mainlayout/mainlayout.props.ts","./src/layout/mainlayout/mainlayout.style.ts","./src/layout/mainlayout/mainlayout.tsx","./src/layout/searchheader/searchheader.tsx","./src/pages/about/about.style.ts","./src/pages/about/about.tsx","./src/pages/about/howto/howto.style.ts","./src/pages/about/howto/howto.tsx","./src/pages/favorites/favorites.style.ts","./src/pages/favorites/favorites.tsx","./src/pages/home/home.style.ts","./src/pages/home/home.tsx","./src/pages/lab/lab.style.ts","./src/pages/lab/lab.tsx","./src/pages/lab/labcurrent/labcurrent.style.ts","./src/pages/lab/labcurrent/labcurrent.tsx","./src/pages/lab/labresult/labresult.style.ts","./src/pages/lab/labresult/labresult.tsx","./src/pages/lab/recordsheet/recordsheet.style.ts","./src/pages/lab/recordsheet/recordsheet.tsx","./src/pages/lab/step/step.style.ts","./src/pages/lab/step/step.tsx","./src/pages/lab/step/country/country.style.ts","./src/pages/lab/step/country/country.tsx","./src/pages/lab/step/done/done.style.ts","./src/pages/lab/step/done/done.tsx","./src/pages/lab/step/purchase/purchase.style.ts","./src/pages/lab/step/purchase/purchase.tsx","./src/pages/lab/step/search/search.style.ts","./src/pages/lab/step/search/search.tsx","./src/pages/lab/step/tutorial/tutorial.style.ts","./src/pages/lab/step/tutorial/tutorial.tsx","./src/pages/login/login.style.ts","./src/pages/login/login.tsx","./src/pages/mypage/mypage.style.ts","./src/pages/mypage/mypage.tsx","./src/pages/mypage/done/done.tsx","./src/pages/mypage/edit/edit.tsx","./src/pages/mypage/profile/profile.tsx","./src/pages/notification/notification.style.ts","./src/pages/notification/notification.tsx","./src/pages/oauthcallback/oauthcallback.style.ts","./src/pages/oauthcallback/oauthcallback.tsx","./src/pages/register/register.style.ts","./src/pages/register/register.tsx","./src/pages/search/search.style.ts","./src/pages/search/search.tsx","./src/pages/shortview/shortview.style.ts","./src/pages/shortview/shortview.tsx","./src/pages/shortview/tindercard/tindercard.style.ts","./src/pages/shortview/tindercard/tindercard.tsx","./src/pages/term/term.style.ts","./src/pages/term/term.tsx","./src/pages/usage/usage.style.ts","./src/pages/usage/usage.tsx","./src/pages/withdraw/withdraw.tsx","./src/pages/withdrawdone/withdrawdone.tsx","./src/router/index.tsx","./src/styles/keyframes.ts","./src/styles/themes.ts","./src/ts/constants.ts","./src/ts/enums.ts","./src/ts/interfaces.ts","./src/ts/searchcategory.ts","./src/ts/stockcountry.ts","./src/ts/stocksector.ts","./src/ts/term.ts","./src/ts/types.ts","./src/utils/canvas.ts","./src/utils/date.ts","./src/utils/delta.ts","./src/utils/detector.ts","./src/utils/scoreconvert.ts","./src/utils/chunkarray.ts","./src/utils/dateformatter.ts","./src/utils/extractmatchedsegments.ts","./src/utils/getbusinessdayslater.ts","./src/utils/getframerate.ts","./src/utils/humanindexutils.ts","./src/utils/notificationmapper.ts","./src/utils/stockimage.ts","./src/utils/wasm/wordcloudwasm.ts","./src/utils/wasm/wordcloud.wasm.d.ts","./src/utils/worker/generatewordcloud.ts"],"version":"5.9.3"} \ No newline at end of file diff --git a/tsconfig.node.tsbuildinfo b/tsconfig.node.tsbuildinfo index 2798722..c77c415 100644 --- a/tsconfig.node.tsbuildinfo +++ b/tsconfig.node.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/app.tsx","./src/main.tsx","./src/queryclient.ts","./src/vite-env.d.ts","./src/components/cardlist/cardlist.style.ts","./src/components/cardlist/cardlist.tsx","./src/components/cardlist/stockcard/stockcard.style.ts","./src/components/cardlist/stockcard/stockcard.tsx","./src/components/common/button.ts","./src/components/common/common.props.ts","./src/components/common/common.type.ts","./src/components/common/common.tsx","./src/components/common/contentsitem.style.ts","./src/components/common/errorcomponent.tsx","./src/components/common/header.tsx","./src/components/common/loadingcomponent.tsx","./src/components/common/stockimage.tsx","./src/components/common/scrolltopbutton/scrolltopbutton.tsx","./src/components/event/disquiet.style.ts","./src/components/event/disquiet.tsx","./src/components/home/banner/banner.style.ts","./src/components/home/banner/banner.tsx","./src/components/home/indexscore/homeinfo.style.ts","./src/components/home/indexscore/homeinfo.tsx","./src/components/home/keywords/keywords.style.tsx","./src/components/home/keywords/keywords.tsx","./src/components/home/stocktable/stocktable.style.ts","./src/components/home/stocktable/stocktable.tsx","./src/components/home/title/title.style.ts","./src/components/lab/common.style.ts","./src/components/lab/experimentitem/experimentitem.style.ts","./src/components/lab/experimentitem/experimentitem.tsx","./src/components/lab/reportclasschart/reportclasschart.style.ts","./src/components/lab/reportclasschart/reportclasschart.type.tsx","./src/components/lab/reportclasschart/reportclasschart.tsx","./src/components/lab/reportpatternchart/reportpatternchart.style.ts","./src/components/lab/reportpatternchart/reportpatternchart.type.tsx","./src/components/lab/reportpatternchart/reportpatternchart.tsx","./src/components/loading/loading.tsx","./src/components/modal/common.style.ts","./src/components/modal/usemodal.tsx","./src/components/modal/aboutreportclass/aboutreportclass.tsx","./src/components/modal/aboutreportclass/useaboutreportclass.ts","./src/components/modal/aboutreportpattern/aboutreportpattern.tsx","./src/components/modal/aboutreportpattern/useaboutreportpattern.ts","./src/components/modal/centertutorial/centertutotial.style.ts","./src/components/modal/centertutorial/layout.tsx","./src/components/modal/centertutorial/aboutantvoice/aboutantvoice.tsx","./src/components/modal/centertutorial/aboutantvoice/useaboutantvoice.tsx","./src/components/modal/centertutorial/abouthumanzipyo/abouthumanzipyo.tsx","./src/components/modal/centertutorial/abouthumanzipyo/useabouthumanzipyo.tsx","./src/components/modal/confirm/confirmmodal.tsx","./src/components/modal/experimentdetail/experimentdetail.style.ts","./src/components/modal/experimentdetail/experimentdetail.tsx","./src/components/modal/experimentdetail/useexperimentdetail.ts","./src/components/modal/layout/bottomupcancel/bottomupcancel.tsx","./src/components/mypage/mypage.style.ts","./src/components/mypage/mypageinput/mypageinput.tsx","./src/components/mypage/profilecircle/profilecircle.tsx","./src/components/nologinwrapper/nologinwrapper.style.ts","./src/components/nologinwrapper/nologinwrapper.tsx","./src/components/popup/commonpopup.style.ts","./src/components/popup/commonpopup.tsx","./src/components/popup/descentpopup/descentpopup.tsx","./src/components/popup/fearpopup/fearpopup.tsx","./src/components/popup/hotpopup/hotpopup.tsx","./src/components/popup/keywordpopup/keywordpopup.tsx","./src/components/popup/pwainfopopup/pwainfopopup.tsx","./src/components/popup/pwainfopopup/pwainfopopup.style.ts","./src/components/popup/risingpopup/risingpopup.tsx","./src/components/search/guagechart/guagechart.style.ts","./src/components/search/guagechart/guagechart.tsx","./src/components/search/searchtitle/searchtitle.style.ts","./src/components/search/searchtitle/searchtitle.tsx","./src/components/search/stockchart/stockchart.style.ts","./src/components/search/stockchart/stockchart.tsx","./src/components/search/stockwordcloud/stockwordcloud.style.ts","./src/components/search/stockwordcloud/stockwordcloud.tsx","./src/components/searchbar/searchbar.style.ts","./src/components/searchbar/searchbar.tsx","./src/components/searchbar/autocomplete/autocomplete.style.ts","./src/components/searchbar/autocomplete/keywords/keywords.tsx","./src/components/searchbar/autocomplete/stocks/stocks.style.ts","./src/components/searchbar/autocomplete/stocks/stocks.tsx","./src/components/searchbar/popularkeywords/popularkeywords.tsx","./src/components/searchbar/popularstocks/popularstocks.style.ts","./src/components/searchbar/popularstocks/popularstocks.tsx","./src/components/searchbar/recentstocks/recentstocks.style.ts","./src/components/searchbar/recentstocks/recentstocks.tsx","./src/components/shortview/tutorial/tutorial.style.ts","./src/components/shortview/tutorial/tutorial.tsx","./src/components/slideview/slideview.style.ts","./src/components/slideview/slideview.tsx","./src/components/text/text.props.ts","./src/components/text/text.ts","./src/components/toast/toast.tsx","./src/config/oauth.ts","./src/config/webview.ts","./src/constants/patterntypes.ts","./src/constants/stockscore.ts","./src/controllers/auth/api.ts","./src/controllers/common/base.ts","./src/controllers/common/query.ts","./src/controllers/experiment/api.ts","./src/controllers/experiment/query.ts","./src/controllers/notification/api.ts","./src/controllers/notification/mock.ts","./src/controllers/notification/query.ts","./src/controllers/preference/api.ts","./src/controllers/preference/query.ts","./src/controllers/score/api.ts","./src/controllers/score/mock.ts","./src/controllers/score/query.ts","./src/controllers/shortview/api.ts","./src/controllers/shortview/mock.ts","./src/controllers/shortview/query.ts","./src/controllers/stocks/api.ts","./src/controllers/stocks/mock.ts","./src/controllers/stocks/query.ts","./src/controllers/stocks/types.ts","./src/hooks/useauthinfo.ts","./src/hooks/usecanvas.ts","./src/hooks/useismobile.ts","./src/hooks/uselocalstoragestate.ts","./src/hooks/usemodal.tsx","./src/hooks/usepreventscroll.ts","./src/hooks/usequerycomponent.tsx","./src/hooks/userecentstocks.ts","./src/hooks/usesnapindex.ts","./src/hooks/usesocialauth.ts","./src/hooks/usetoast.tsx","./src/hooks/useworker.ts","./src/layout/bottomnavigation/bottomnavigation.style.ts","./src/layout/bottomnavigation/bottomnavigation.tsx","./src/layout/footer/footer.style.ts","./src/layout/footer/footer.tsx","./src/layout/header/header.style.ts","./src/layout/header/header.tsx","./src/layout/mainlayout/mainlayout.props.ts","./src/layout/mainlayout/mainlayout.style.ts","./src/layout/mainlayout/mainlayout.tsx","./src/layout/searchheader/searchheader.tsx","./src/pages/about/about.style.ts","./src/pages/about/about.tsx","./src/pages/about/howto/howto.style.ts","./src/pages/about/howto/howto.tsx","./src/pages/favorites/favorites.style.ts","./src/pages/favorites/favorites.tsx","./src/pages/home/home.style.ts","./src/pages/home/home.tsx","./src/pages/lab/lab.style.ts","./src/pages/lab/lab.tsx","./src/pages/lab/labcurrent/labcurrent.style.ts","./src/pages/lab/labcurrent/labcurrent.tsx","./src/pages/lab/labresult/labresult.style.ts","./src/pages/lab/labresult/labresult.tsx","./src/pages/lab/recordsheet/recordsheet.style.ts","./src/pages/lab/recordsheet/recordsheet.tsx","./src/pages/lab/step/step.style.ts","./src/pages/lab/step/step.tsx","./src/pages/lab/step/country/country.style.ts","./src/pages/lab/step/country/country.tsx","./src/pages/lab/step/done/done.style.ts","./src/pages/lab/step/done/done.tsx","./src/pages/lab/step/purchase/purchase.style.ts","./src/pages/lab/step/purchase/purchase.tsx","./src/pages/lab/step/search/search.style.ts","./src/pages/lab/step/search/search.tsx","./src/pages/lab/step/tutorial/tutorial.style.ts","./src/pages/lab/step/tutorial/tutorial.tsx","./src/pages/login/login.style.ts","./src/pages/login/login.tsx","./src/pages/mypage/mypage.style.ts","./src/pages/mypage/mypage.tsx","./src/pages/mypage/done/done.tsx","./src/pages/mypage/edit/edit.tsx","./src/pages/mypage/profile/profile.tsx","./src/pages/notification/notification.style.ts","./src/pages/notification/notification.tsx","./src/pages/oauthcallback/oauthcallback.style.ts","./src/pages/oauthcallback/oauthcallback.tsx","./src/pages/register/register.style.ts","./src/pages/register/register.tsx","./src/pages/search/search.style.ts","./src/pages/search/search.tsx","./src/pages/shortview/shortview.style.ts","./src/pages/shortview/shortview.tsx","./src/pages/shortview/tindercard/tindercard.style.ts","./src/pages/shortview/tindercard/tindercard.tsx","./src/pages/term/term.style.ts","./src/pages/term/term.tsx","./src/pages/usage/usage.style.ts","./src/pages/usage/usage.tsx","./src/pages/withdraw/withdraw.tsx","./src/pages/withdrawdone/withdrawdone.tsx","./src/router/index.tsx","./src/styles/keyframes.ts","./src/styles/themes.ts","./src/ts/constants.ts","./src/ts/enums.ts","./src/ts/interfaces.ts","./src/ts/searchcategory.ts","./src/ts/stockcountry.ts","./src/ts/stocksector.ts","./src/ts/term.ts","./src/ts/types.ts","./src/utils/canvas.ts","./src/utils/date.ts","./src/utils/delta.ts","./src/utils/detector.ts","./src/utils/scoreconvert.ts","./src/utils/chunkarray.ts","./src/utils/dateformatter.ts","./src/utils/extractmatchedsegments.ts","./src/utils/getbusinessdayslater.ts","./src/utils/getframerate.ts","./src/utils/humanindexutils.ts","./src/utils/notificationmapper.ts","./src/utils/stockimage.ts","./src/utils/wasm/wordcloudwasm.ts","./src/utils/wasm/wordcloud.wasm.d.ts","./src/utils/worker/generatewordcloud.ts","./vite.config.ts"],"errors":true,"version":"5.9.3"} \ No newline at end of file +{"root":["./src/app.tsx","./src/main.tsx","./src/queryclient.ts","./src/vite-env.d.ts","./src/components/cardlist/cardlist.style.ts","./src/components/cardlist/cardlist.tsx","./src/components/cardlist/stockcard/stockcard.style.ts","./src/components/cardlist/stockcard/stockcard.tsx","./src/components/common/button.ts","./src/components/common/common.props.ts","./src/components/common/common.type.ts","./src/components/common/common.tsx","./src/components/common/contentsitem.style.ts","./src/components/common/errorcomponent.tsx","./src/components/common/header.tsx","./src/components/common/loadingcomponent.tsx","./src/components/common/stockimage.tsx","./src/components/common/scrolltopbutton/scrolltopbutton.tsx","./src/components/event/disquiet.style.ts","./src/components/event/disquiet.tsx","./src/components/home/banner/banner.style.ts","./src/components/home/banner/banner.tsx","./src/components/home/indexscore/homeinfo.style.ts","./src/components/home/indexscore/homeinfo.tsx","./src/components/home/keywords/keywords.style.tsx","./src/components/home/keywords/keywords.tsx","./src/components/home/stocktable/stocktable.style.ts","./src/components/home/stocktable/stocktable.tsx","./src/components/home/title/title.style.ts","./src/components/lab/common.style.ts","./src/components/lab/experimentitem/experimentitem.style.ts","./src/components/lab/experimentitem/experimentitem.tsx","./src/components/lab/reportclasschart/reportclasschart.style.ts","./src/components/lab/reportclasschart/reportclasschart.type.tsx","./src/components/lab/reportclasschart/reportclasschart.tsx","./src/components/lab/reportpatternchart/reportpatternchart.style.ts","./src/components/lab/reportpatternchart/reportpatternchart.type.tsx","./src/components/lab/reportpatternchart/reportpatternchart.tsx","./src/components/loading/loading.tsx","./src/components/modal/common.style.ts","./src/components/modal/usemodal.tsx","./src/components/modal/aboutreportclass/aboutreportclass.tsx","./src/components/modal/aboutreportclass/useaboutreportclass.ts","./src/components/modal/aboutreportpattern/aboutreportpattern.tsx","./src/components/modal/aboutreportpattern/useaboutreportpattern.ts","./src/components/modal/centertutorial/centertutotial.style.ts","./src/components/modal/centertutorial/layout.tsx","./src/components/modal/centertutorial/aboutantvoice/aboutantvoice.tsx","./src/components/modal/centertutorial/aboutantvoice/useaboutantvoice.tsx","./src/components/modal/centertutorial/abouthumanzipyo/abouthumanzipyo.tsx","./src/components/modal/centertutorial/abouthumanzipyo/useabouthumanzipyo.tsx","./src/components/modal/confirm/confirmmodal.tsx","./src/components/modal/experimentdetail/experimentdetail.style.ts","./src/components/modal/experimentdetail/experimentdetail.tsx","./src/components/modal/experimentdetail/useexperimentdetail.ts","./src/components/modal/layout/bottomupcancel/bottomupcancel.tsx","./src/components/mypage/mypage.style.ts","./src/components/mypage/mypageinput/mypageinput.tsx","./src/components/mypage/profilecircle/profilecircle.tsx","./src/components/nologinwrapper/nologinwrapper.style.ts","./src/components/nologinwrapper/nologinwrapper.tsx","./src/components/popup/commonpopup.style.ts","./src/components/popup/commonpopup.tsx","./src/components/popup/descentpopup/descentpopup.tsx","./src/components/popup/fearpopup/fearpopup.tsx","./src/components/popup/hotpopup/hotpopup.tsx","./src/components/popup/keywordpopup/keywordpopup.tsx","./src/components/popup/pwainfopopup/pwainfopopup.tsx","./src/components/popup/pwainfopopup/pwainfopopup.style.ts","./src/components/popup/risingpopup/risingpopup.tsx","./src/components/search/guagechart/guagechart.style.ts","./src/components/search/guagechart/guagechart.tsx","./src/components/search/searchtitle/searchtitle.style.ts","./src/components/search/searchtitle/searchtitle.tsx","./src/components/search/stockchart/stockchart.style.ts","./src/components/search/stockchart/stockchart.tsx","./src/components/search/stockwordcloud/stockwordcloud.style.ts","./src/components/search/stockwordcloud/stockwordcloud.tsx","./src/components/searchbar/searchbar.style.ts","./src/components/searchbar/searchbar.tsx","./src/components/searchbar/autocomplete/autocomplete.style.ts","./src/components/searchbar/autocomplete/keywords/keywords.tsx","./src/components/searchbar/autocomplete/stocks/stocks.style.ts","./src/components/searchbar/autocomplete/stocks/stocks.tsx","./src/components/searchbar/popularkeywords/popularkeywords.tsx","./src/components/searchbar/popularstocks/popularstocks.style.ts","./src/components/searchbar/popularstocks/popularstocks.tsx","./src/components/searchbar/recentstocks/recentstocks.style.ts","./src/components/searchbar/recentstocks/recentstocks.tsx","./src/components/shortview/tutorial/tutorial.style.ts","./src/components/shortview/tutorial/tutorial.tsx","./src/components/slideview/slideview.style.ts","./src/components/slideview/slideview.tsx","./src/components/text/text.props.ts","./src/components/text/text.ts","./src/components/toast/toast.tsx","./src/config/oauth.ts","./src/config/webview.ts","./src/constants/patterntypes.ts","./src/constants/stockscore.ts","./src/controllers/auth/api.ts","./src/controllers/common/base.ts","./src/controllers/common/query.ts","./src/controllers/experiment/api.ts","./src/controllers/experiment/query.ts","./src/controllers/notification/api.ts","./src/controllers/notification/mock.ts","./src/controllers/notification/query.ts","./src/controllers/preference/api.ts","./src/controllers/preference/query.ts","./src/controllers/score/api.ts","./src/controllers/score/mock.ts","./src/controllers/score/query.ts","./src/controllers/shortview/api.ts","./src/controllers/shortview/mock.ts","./src/controllers/shortview/query.ts","./src/controllers/stocks/api.ts","./src/controllers/stocks/mock.ts","./src/controllers/stocks/query.ts","./src/controllers/stocks/types.ts","./src/hooks/useauthinfo.ts","./src/hooks/usecanvas.ts","./src/hooks/useismobile.ts","./src/hooks/uselocalstoragestate.ts","./src/hooks/usemodal.tsx","./src/hooks/usepreventscroll.ts","./src/hooks/usequerycomponent.tsx","./src/hooks/userecentstocks.ts","./src/hooks/usesnapindex.ts","./src/hooks/usesocialauth.ts","./src/hooks/usetoast.tsx","./src/hooks/useworker.ts","./src/layout/bottomnavigation/bottomnavigation.style.ts","./src/layout/bottomnavigation/bottomnavigation.tsx","./src/layout/footer/footer.style.ts","./src/layout/footer/footer.tsx","./src/layout/header/header.style.ts","./src/layout/header/header.tsx","./src/layout/mainlayout/mainlayout.props.ts","./src/layout/mainlayout/mainlayout.style.ts","./src/layout/mainlayout/mainlayout.tsx","./src/layout/searchheader/searchheader.tsx","./src/pages/about/about.style.ts","./src/pages/about/about.tsx","./src/pages/about/howto/howto.style.ts","./src/pages/about/howto/howto.tsx","./src/pages/favorites/favorites.style.ts","./src/pages/favorites/favorites.tsx","./src/pages/home/home.style.ts","./src/pages/home/home.tsx","./src/pages/lab/lab.style.ts","./src/pages/lab/lab.tsx","./src/pages/lab/labcurrent/labcurrent.style.ts","./src/pages/lab/labcurrent/labcurrent.tsx","./src/pages/lab/labresult/labresult.style.ts","./src/pages/lab/labresult/labresult.tsx","./src/pages/lab/recordsheet/recordsheet.style.ts","./src/pages/lab/recordsheet/recordsheet.tsx","./src/pages/lab/step/step.style.ts","./src/pages/lab/step/step.tsx","./src/pages/lab/step/country/country.style.ts","./src/pages/lab/step/country/country.tsx","./src/pages/lab/step/done/done.style.ts","./src/pages/lab/step/done/done.tsx","./src/pages/lab/step/purchase/purchase.style.ts","./src/pages/lab/step/purchase/purchase.tsx","./src/pages/lab/step/search/search.style.ts","./src/pages/lab/step/search/search.tsx","./src/pages/lab/step/tutorial/tutorial.style.ts","./src/pages/lab/step/tutorial/tutorial.tsx","./src/pages/login/login.style.ts","./src/pages/login/login.tsx","./src/pages/mypage/mypage.style.ts","./src/pages/mypage/mypage.tsx","./src/pages/mypage/done/done.tsx","./src/pages/mypage/edit/edit.tsx","./src/pages/mypage/profile/profile.tsx","./src/pages/notification/notification.style.ts","./src/pages/notification/notification.tsx","./src/pages/oauthcallback/oauthcallback.style.ts","./src/pages/oauthcallback/oauthcallback.tsx","./src/pages/register/register.style.ts","./src/pages/register/register.tsx","./src/pages/search/search.style.ts","./src/pages/search/search.tsx","./src/pages/shortview/shortview.style.ts","./src/pages/shortview/shortview.tsx","./src/pages/shortview/tindercard/tindercard.style.ts","./src/pages/shortview/tindercard/tindercard.tsx","./src/pages/term/term.style.ts","./src/pages/term/term.tsx","./src/pages/usage/usage.style.ts","./src/pages/usage/usage.tsx","./src/pages/withdraw/withdraw.tsx","./src/pages/withdrawdone/withdrawdone.tsx","./src/router/index.tsx","./src/styles/keyframes.ts","./src/styles/themes.ts","./src/ts/constants.ts","./src/ts/enums.ts","./src/ts/interfaces.ts","./src/ts/searchcategory.ts","./src/ts/stockcountry.ts","./src/ts/stocksector.ts","./src/ts/term.ts","./src/ts/types.ts","./src/utils/canvas.ts","./src/utils/date.ts","./src/utils/delta.ts","./src/utils/detector.ts","./src/utils/scoreconvert.ts","./src/utils/chunkarray.ts","./src/utils/dateformatter.ts","./src/utils/extractmatchedsegments.ts","./src/utils/getbusinessdayslater.ts","./src/utils/getframerate.ts","./src/utils/humanindexutils.ts","./src/utils/notificationmapper.ts","./src/utils/stockimage.ts","./src/utils/wasm/wordcloudwasm.ts","./src/utils/wasm/wordcloud.wasm.d.ts","./src/utils/worker/generatewordcloud.ts","./vite.config.ts"],"version":"5.9.3"} \ No newline at end of file diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..77e1a5d --- /dev/null +++ b/vercel.json @@ -0,0 +1,71 @@ +{ + "$schema": "https://openapi.vercel.sh/vercel.json", + "buildCommand": "npm run build", + "outputDirectory": "dist", + "framework": "vite", + "rewrites": [ + { + "source": "/(.*)", + "destination": "/index.html" + } + ], + "headers": [ + { + "source": "/assets/(.*)", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=31536000, immutable" + } + ] + }, + { + "source": "/(.*\\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|webp|avif))", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=31536000, immutable" + } + ] + }, + { + "source": "/sw.js", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=0, must-revalidate" + } + ] + }, + { + "source": "/manifest.webmanifest", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=0, must-revalidate" + } + ] + }, + { + "source": "/(.*)", + "headers": [ + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "X-XSS-Protection", + "value": "1; mode=block" + }, + { + "key": "Referrer-Policy", + "value": "strict-origin-when-cross-origin" + } + ] + } + ] +} diff --git a/vite.config.ts b/vite.config.ts index 067a820..deab325 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -6,6 +6,9 @@ import svgr from 'vite-plugin-svgr'; import wasm from 'vite-plugin-wasm'; export default defineConfig({ + esbuild: { + drop: ['console', 'debugger'], // production 빌드 시 console과 debugger 제거 + }, plugins: [ react(), svgr(), @@ -62,6 +65,37 @@ export default defineConfig({ }, }), ], + build: { + rollupOptions: { + output: { + manualChunks: { + // React 관련 라이브러리를 별도 청크로 분리 + 'react-vendor': ['react', 'react-dom', 'react-router-dom'], + // React Query를 별도 청크로 분리 + 'query-vendor': ['react-query'], + // UI 라이브러리를 별도 청크로 분리 + 'ui-vendor': ['@emotion/react', '@emotion/styled', 'framer-motion'], + }, + // 파일명 해시 추가로 브라우저 캐싱 최적화 + entryFileNames: 'assets/[name]-[hash].js', + chunkFileNames: 'assets/[name]-[hash].js', + assetFileNames: 'assets/[name]-[hash].[ext]', + }, + }, + // 500KB 목표로 설정 (Vercel 권장) + chunkSizeWarningLimit: 500, + // 소스맵 비활성화로 빌드 크기 감소 + sourcemap: false, + // 최소화 옵션 + minify: 'terser', + terserOptions: { + compress: { + drop_console: true, + drop_debugger: true, + pure_funcs: ['console.log', 'console.info', 'console.debug'], + }, + }, + }, resolve: { alias: [ { find: '@ts', replacement: '/src/ts' },