{name}
{opens.map(({ day_of_week, open_time, close_time }) => (
diff --git a/src/components/TimetablePage/components/MainTimetable/index.tsx b/src/components/TimetablePage/components/MainTimetable/index.tsx
index 9342bd694..bd78f8b4a 100644
--- a/src/components/TimetablePage/components/MainTimetable/index.tsx
+++ b/src/components/TimetablePage/components/MainTimetable/index.tsx
@@ -2,7 +2,7 @@ import React from 'react';
import { useRouter } from 'next/router';
import { useSuspenseQuery } from '@tanstack/react-query';
import { deptQueries } from 'api/dept/queries';
-import { Lecture, MyLectureInfo } from 'api/timetable/entity';
+import { Lecture, MyLectureInfo, SemesterCheckResponse, TimetableFrameListResponse } from 'api/timetable/entity';
import { isValidTimetableFrameId } from 'api/timetable/queries';
import DownloadIcon from 'assets/svg/download-icon.svg';
import GraduationIcon from 'assets/svg/graduation-icon.svg';
@@ -24,13 +24,30 @@ import DownloadTimetableModal from './DownloadTimetableModal';
import styles from './MyLectureTimetable.module.scss';
interface MainTimetableLayoutProps {
- curriculum: React.ReactNode;
- myLectures: Lecture[] | MyLectureInfo[] | undefined;
- onClickDownloadImage: (e: React.MouseEvent
) => void;
- onClickEdit: () => void;
- onClickGraduation: () => void;
- timetableContent: React.ReactNode;
- footer?: React.ReactNode;
+ readonly curriculum: React.ReactNode;
+ readonly myLectures: Lecture[] | MyLectureInfo[] | undefined;
+ readonly onClickDownloadImage: (e: React.MouseEvent) => void;
+ readonly onClickEdit: () => void;
+ readonly onClickGraduation: () => void;
+ readonly timetableContent: React.ReactNode;
+ readonly footer?: React.ReactNode;
+}
+
+function checkSemesterAndTimetable(
+ mySemester: SemesterCheckResponse | null | undefined,
+ frameList: TimetableFrameListResponse,
+): boolean {
+ if (mySemester?.semesters.length === 0) {
+ toast.error('학기가 존재하지 않습니다. 학기를 추가해주세요.');
+ return false;
+ }
+
+ if (!frameList.some((frame) => isValidTimetableFrameId(frame.id))) {
+ toast.error('시간표가 존재하지 않습니다. 시간표를 추가해주세요.');
+ return false;
+ }
+
+ return true;
}
function MainTimetableLayout({
@@ -79,27 +96,13 @@ function InvalidMainTimetable() {
const { data: deptList } = useSuspenseQuery(deptQueries.list());
const { data: mySemester } = useSemesterCheck(token);
- const isSemesterAndTimetableExist = () => {
- if (mySemester?.semesters.length === 0) {
- toast.error('학기가 존재하지 않습니다. 학기를 추가해주세요.');
- return false;
- }
-
- if (!timeTableFrameList.some((frame) => isValidTimetableFrameId(frame.id))) {
- toast.error('시간표가 존재하지 않습니다. 시간표를 추가해주세요.');
- return false;
- }
-
- return true;
- };
-
const onClickDownloadImage = (e: React.MouseEvent) => {
e.stopPropagation();
- isSemesterAndTimetableExist();
+ checkSemesterAndTimetable(mySemester, timeTableFrameList);
};
const onClickEdit = () => {
- isSemesterAndTimetableExist();
+ checkSemesterAndTimetable(mySemester, timeTableFrameList);
};
return (
@@ -121,7 +124,7 @@ function InvalidMainTimetable() {
);
}
-function ValidMainTimetable({ timetableFrameId }: { timetableFrameId: number }) {
+function ValidMainTimetable({ timetableFrameId }: { readonly timetableFrameId: number }) {
const [isModalOpen, openModal, closeModal] = useBooleanState(false);
const token = useTokenState();
const semester = useSemester();
@@ -132,24 +135,10 @@ function ValidMainTimetable({ timetableFrameId }: { timetableFrameId: number })
const { data: deptList } = useSuspenseQuery(deptQueries.list());
const { data: mySemester } = useSemesterCheck(token);
- const isSemesterAndTimetableExist = () => {
- if (mySemester?.semesters.length === 0) {
- toast.error('학기가 존재하지 않습니다. 학기를 추가해주세요.');
- return false;
- }
-
- if (!timeTableFrameList.some((frame) => isValidTimetableFrameId(frame.id))) {
- toast.error('시간표가 존재하지 않습니다. 시간표를 추가해주세요.');
- return false;
- }
-
- return true;
- };
-
const onClickDownloadImage = (e: React.MouseEvent) => {
e.stopPropagation();
- if (isSemesterAndTimetableExist()) {
+ if (checkSemesterAndTimetable(mySemester, timeTableFrameList)) {
logger.actionEventClick({
team: 'USER',
event_label: 'timetable',
@@ -161,7 +150,7 @@ function ValidMainTimetable({ timetableFrameId }: { timetableFrameId: number })
};
const onClickEdit = () => {
- if (isSemesterAndTimetableExist()) {
+ if (checkSemesterAndTimetable(mySemester, timeTableFrameList)) {
router.push(
`/${ROUTES.TimetableModify({ id: String(timetableFrameId), type: 'regular' })}&year=${semester?.year}&term=${semester?.term}`,
);
@@ -190,7 +179,7 @@ function ValidMainTimetable({ timetableFrameId }: { timetableFrameId: number })
);
}
-function MainTimetable({ timetableFrameId }: { timetableFrameId: number }) {
+function MainTimetable({ timetableFrameId }: { readonly timetableFrameId: number }) {
if (!isValidTimetableFrameId(timetableFrameId)) {
return ;
}
diff --git a/src/components/TimetablePage/components/TimetableGridPlaceholder/index.tsx b/src/components/TimetablePage/components/TimetableGridPlaceholder/index.tsx
index fc9735f50..47c37cd3c 100644
--- a/src/components/TimetablePage/components/TimetableGridPlaceholder/index.tsx
+++ b/src/components/TimetablePage/components/TimetableGridPlaceholder/index.tsx
@@ -8,10 +8,10 @@ const DEFAULT_TIME_STRING = ['9', '10', '11', '12', '13', '14', '15', '16', '17'
]);
interface TimetableGridPlaceholderProps {
- firstColumnWidth: number;
- columnWidth: number;
- rowHeight: number;
- totalHeight: number;
+ readonly firstColumnWidth: number;
+ readonly columnWidth: number;
+ readonly rowHeight: number;
+ readonly totalHeight: number;
}
export default function TimetableGridPlaceholder({
diff --git a/src/components/cafeteria/MobileCafeteriaPage/MobileCafeteriaPage.module.scss b/src/components/cafeteria/MobileCafeteriaPage/MobileCafeteriaPage.module.scss
index 1e3d9d4e5..175a71bed 100644
--- a/src/components/cafeteria/MobileCafeteriaPage/MobileCafeteriaPage.module.scss
+++ b/src/components/cafeteria/MobileCafeteriaPage/MobileCafeteriaPage.module.scss
@@ -71,7 +71,7 @@
border-radius: 16px;
display: flex;
align-items: center;
- margin-top: 12px;
+ margin: 16px 24px;
box-shadow:
0 2px 4px rgb(0 0 0 / 4%),
0 1px 1px rgb(0 0 0 / 2%);
@@ -91,4 +91,8 @@
line-height: 160%;
font-weight: 600;
}
+
+ &__arrow {
+ margin-left: auto;
+ }
}
diff --git a/src/components/cafeteria/MobileCafeteriaPage/components/MobileDiningBlocks/MobileDiningBlocks.module.scss b/src/components/cafeteria/MobileCafeteriaPage/components/MobileDiningBlocks/MobileDiningBlocks.module.scss
index 70a27489b..5cf133823 100644
--- a/src/components/cafeteria/MobileCafeteriaPage/components/MobileDiningBlocks/MobileDiningBlocks.module.scss
+++ b/src/components/cafeteria/MobileCafeteriaPage/components/MobileDiningBlocks/MobileDiningBlocks.module.scss
@@ -1,7 +1,9 @@
.category {
display: block;
- margin: 0;
background-color: #fff;
+ margin: 0 24px 16px;
+ border-radius: 16px;
+ overflow: hidden;
&__menu-list-row {
display: flex;
diff --git a/src/pages/callvan/index.tsx b/src/pages/callvan/index.tsx
index e7c266f84..79a1530c1 100644
--- a/src/pages/callvan/index.tsx
+++ b/src/pages/callvan/index.tsx
@@ -50,7 +50,7 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
queryClient.prefetchInfiniteQuery(callvanQueries.infiniteList(token ?? '', apiParams)),
token
? queryClient.prefetchQuery(callvanQueries.notifications(token))
- : queryClient.setQueryData(callvanQueryKeys.notifications, []),
+ : queryClient.setQueryData(callvanQueryKeys.notifications(''), []),
]);
} catch (error) {
console.error('[SSR] callvan prefetch failed:', error);
diff --git a/src/pages/callvan/notifications/index.tsx b/src/pages/callvan/notifications/index.tsx
index 404c25107..2b15049a2 100644
--- a/src/pages/callvan/notifications/index.tsx
+++ b/src/pages/callvan/notifications/index.tsx
@@ -27,7 +27,7 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
if (token) {
await queryClient.prefetchQuery(callvanQueries.notifications(token));
} else {
- queryClient.setQueryData(callvanQueryKeys.notifications, []);
+ queryClient.setQueryData(callvanQueryKeys.notifications(''), []);
}
} catch (error) {
console.error('[SSR] callvan notifications prefetch failed:', error);
diff --git a/src/pages/campusinfo/index.tsx b/src/pages/campusinfo/index.tsx
index b2d8212c7..d0b23e470 100644
--- a/src/pages/campusinfo/index.tsx
+++ b/src/pages/campusinfo/index.tsx
@@ -1,180 +1 @@
-import { cn } from '@bcsdlab/utils';
-import { useSuspenseQuery } from '@tanstack/react-query';
-import { coopshopQueries } from 'api/coopshop/queries';
-import Book from 'components/CampusInfo/svg/book.svg';
-import Cafe from 'components/CampusInfo/svg/cafe.svg';
-import Cut from 'components/CampusInfo/svg/cut.svg';
-import Flatware from 'components/CampusInfo/svg/flatware.svg';
-import Glasses from 'components/CampusInfo/svg/glasses.svg';
-import Laundry from 'components/CampusInfo/svg/laundry.svg';
-import PostOffice from 'components/CampusInfo/svg/post-office.svg';
-import Print from 'components/CampusInfo/svg/print.svg';
-import styles from './CampusInfo.module.scss';
-
-const CAFETERIA_HEAD_TABLE = {
- row: ['평일', '주말'],
- col: ['아침', '점심', '저녁'],
-};
-
-const SHOP_ICON = {
- 서점: ,
- 대즐: ,
- 미용실: ,
- 세탁소: ,
- 우체국: ,
- '복지관 참빛관 편의점': ,
- 복사실: ,
- 학생식당: ,
- 복지관식당: ,
- 오락실: ,
- 안경원: ,
- 우편취급국: ,
-};
-
-const formatDateRange = (fromDate: string, toDate: string) => {
- const from = new Date(fromDate);
- const to = new Date(toDate);
-
- const options: Intl.DateTimeFormatOptions = {
- year: 'numeric',
- month: 'long',
- day: 'numeric',
- };
-
- const fromFormatted = from.toLocaleDateString('ko-KR', options);
- let toFormatted = to.toLocaleDateString('ko-KR', options);
-
- if (from.getFullYear() === to.getFullYear()) {
- const toOptions: Intl.DateTimeFormatOptions = {
- month: 'long',
- day: 'numeric',
- };
-
- toFormatted = to.toLocaleDateString('ko-KR', toOptions);
- }
-
- return `기간 : ${fromFormatted} - ${toFormatted}`;
-};
-
-function CampusInfo() {
- const { data: campusInfo } = useSuspenseQuery(coopshopQueries.allShopInfo());
-
- const cafeteriaInfo = campusInfo?.coop_shops.find((shop) => shop.name === '학생식당');
- const filteredCampusInfo = campusInfo?.coop_shops.filter((shop) => shop.name !== '학생식당');
-
- const getFormattedShopTime = (open: string, close: string) => {
- if (open === close) {
- return open;
- }
-
- return `${open} - ${close}`;
- };
-
- const getTimeToTypeAndDay = (type: string, day: string) => {
- const target = cafeteriaInfo?.opens?.find((open) => open.day_of_week === day && open.type === type);
-
- return target ? getFormattedShopTime(target.open_time, target.close_time) : '미운영';
- };
-
- return (
-
-
-
{`${campusInfo.semester} 시설물 운영 시간`}
-
{formatDateRange(campusInfo.from_date, campusInfo.to_date)}
-
-
-
-
-
-
-
-
-
- | 시간 |
- {CAFETERIA_HEAD_TABLE.row.map((type) => (
-
- {type}
- |
- ))}
-
-
-
- {CAFETERIA_HEAD_TABLE.col.map((type) => (
-
- | {type} |
- {CAFETERIA_HEAD_TABLE.row.map((day) => (
-
- {getTimeToTypeAndDay(type, day)}
- |
- ))}
-
- ))}
-
-
-
-
-
- {filteredCampusInfo.slice(0, 2).map(({ id, name, opens }) => (
-
-
{SHOP_ICON[name as keyof typeof SHOP_ICON]}
-
-
{name}
- {opens.map(({ day_of_week, open_time, close_time }) => (
-
{`${day_of_week}: ${getFormattedShopTime(open_time, close_time)}`}
- ))}
-
-
- ))}
-
-
- {filteredCampusInfo.slice(2, 6).map(({ id, name, opens }) => (
-
-
{SHOP_ICON[name as keyof typeof SHOP_ICON]}
-
-
{name}
- {opens.map(({ day_of_week, open_time, close_time }) => (
-
{`${day_of_week}: ${getFormattedShopTime(open_time, close_time)}`}
- ))}
-
-
- ))}
-
-
- {filteredCampusInfo.slice(6).map(({ id, name, opens }) => (
-
-
{SHOP_ICON[name as keyof typeof SHOP_ICON]}
-
-
{name}
- {opens.map(({ day_of_week, open_time, close_time }) => (
-
{`${day_of_week}: ${getFormattedShopTime(open_time, close_time)}`}
- ))}
-
-
- ))}
-
-
-
- );
-}
-
-export default CampusInfo;
+export { default } from 'components/CampusInfo';
diff --git a/src/pages/room/[id]/index.tsx b/src/pages/room/[id]/index.tsx
index ed15734a8..225656b65 100644
--- a/src/pages/room/[id]/index.tsx
+++ b/src/pages/room/[id]/index.tsx
@@ -20,7 +20,7 @@ import {
import styles from './RoomDetailPage.module.scss';
interface RoomDetailPageProps {
- id: string;
+ readonly id: string;
}
export const getStaticPaths: GetStaticPaths = async () => {
diff --git a/src/pages/timetable/index.tsx b/src/pages/timetable/index.tsx
index 5c6323ffd..e7eac02e3 100644
--- a/src/pages/timetable/index.tsx
+++ b/src/pages/timetable/index.tsx
@@ -30,6 +30,43 @@ const MobilePage = dynamic(
{ ssr: true },
);
+async function prefetchTimetableData(
+ queryClient: QueryClient,
+ context: GetServerSidePropsContext,
+ token: string,
+ year: number,
+ term: Term,
+ validatedFrameId: number | null,
+): Promise {
+ try {
+ const mySemesterData = await queryClient.fetchQuery(timetableQueries.mySemester(token));
+ const userSemester = mySemesterData?.semesters?.[0];
+ const semester = year && term ? { year, term } : userSemester || getRecentSemester();
+
+ const timetableFrameList = await queryClient.fetchQuery(timetableQueries.frameList(token, semester));
+
+ const mainFrame = timetableFrameList.find((frame) => frame.is_main);
+ const currentFrameId = validatedFrameId ?? mainFrame?.id ?? null;
+
+ const prefetchPromises = [
+ queryClient.prefetchQuery(timetableQueries.semesterInfo()),
+ queryClient.prefetchQuery(deptQueries.list()),
+ ];
+
+ if (currentFrameId !== null) {
+ prefetchPromises.push(queryClient.prefetchQuery(timetableQueries.lectureInfo(token, currentFrameId)));
+ }
+
+ await Promise.all(prefetchPromises);
+ } catch (error) {
+ const isAuthError = isServerAuthError(error);
+ const isForbiddenError = isKoinError(error) && error.status === 403;
+ if (!isAuthError && !isForbiddenError) throw error;
+ if (isAuthError) clearServerAuthCookies(context);
+ queryClient.setQueryData(timetableQueryKeys.frameList(getRecentSemester()), createDefaultTimetableFrameList());
+ }
+}
+
export const getServerSideProps = withCacheControl(async (context: GetServerSidePropsContext, cacheControl) => {
const queryClient = new QueryClient();
const { token, query } = parseServerSideParams(context);
@@ -39,38 +76,9 @@ export const getServerSideProps = withCacheControl(async (context: GetServerSide
const validatedFrameId = isValidTimetableFrameId(frameId) ? frameId : null;
if (token) {
- try {
- const mySemesterData = await queryClient.fetchQuery(timetableQueries.mySemester(token));
- const userSemester = mySemesterData?.semesters?.[0];
- const semester = year && term ? { year, term } : userSemester || getRecentSemester();
-
- const timetableFrameList = await queryClient.fetchQuery(timetableQueries.frameList(token, semester));
-
- const mainFrame = timetableFrameList.find((frame) => frame.is_main);
- const currentFrameId = validatedFrameId ?? mainFrame?.id ?? null;
-
- const prefetchPromises = [
- queryClient.prefetchQuery(timetableQueries.semesterInfo()),
- queryClient.prefetchQuery(deptQueries.list()),
- ];
-
- if (currentFrameId !== null) {
- prefetchPromises.push(queryClient.prefetchQuery(timetableQueries.lectureInfo(token, currentFrameId)));
- }
-
- await Promise.all(prefetchPromises);
- } catch (error) {
- if (!isServerAuthError(error) && !(isKoinError(error) && error.status === 403)) throw error;
- if (isServerAuthError(error)) clearServerAuthCookies(context);
- const semester = getRecentSemester();
- queryClient.setQueryData(timetableQueryKeys.frameList(semester), createDefaultTimetableFrameList());
- }
+ await prefetchTimetableData(queryClient, context, token, year, term, validatedFrameId);
} else {
- const semester = getRecentSemester();
- queryClient.setQueryData(timetableQueryKeys.frameList(semester), createDefaultTimetableFrameList());
- }
-
- if (!token) {
+ queryClient.setQueryData(timetableQueryKeys.frameList(getRecentSemester()), createDefaultTimetableFrameList());
cacheControl.enablePublicCache();
}
diff --git a/src/utils/ts/withCacheControl.ts b/src/utils/ts/withCacheControl.ts
index 41c969123..c90b6a1db 100644
--- a/src/utils/ts/withCacheControl.ts
+++ b/src/utils/ts/withCacheControl.ts
@@ -4,7 +4,7 @@ import type {
GetServerSidePropsResult,
PreviewData,
} from 'next';
-import type { ParsedUrlQuery } from 'querystring';
+import type { ParsedUrlQuery } from 'node:querystring';
export const PUBLIC_SSR_CACHE_CONTROL = 'public, s-maxage=60, stale-while-revalidate=300';
export const STORE_PUBLIC_SSR_CACHE_CONTROL = 'public, s-maxage=300, stale-while-revalidate=1800';
@@ -16,26 +16,22 @@ export interface SSRCacheControl {
enablePublicCache: (cacheControl?: string) => void;
}
-export interface GetServerSidePropsWithCacheControl<
+export type GetServerSidePropsWithCacheControl<
Props extends SSRPageProps = SSRPageProps,
Params extends ParsedUrlQuery = ParsedUrlQuery,
Preview extends PreviewData = PreviewData,
-> {
- (
- context: GetServerSidePropsContext,
- cacheControl: SSRCacheControl,
- ): Promise>;
-}
+> = (
+ context: GetServerSidePropsContext,
+ cacheControl: SSRCacheControl,
+) => Promise>;
-export interface WithCacheControl {
- <
- Props extends SSRPageProps = SSRPageProps,
- Params extends ParsedUrlQuery = ParsedUrlQuery,
- Preview extends PreviewData = PreviewData,
- >(
- getServerSideProps: GetServerSidePropsWithCacheControl,
- ): GetServerSideProps;
-}
+export type WithCacheControl = <
+ Props extends SSRPageProps = SSRPageProps,
+ Params extends ParsedUrlQuery = ParsedUrlQuery,
+ Preview extends PreviewData = PreviewData,
+>(
+ getServerSideProps: GetServerSidePropsWithCacheControl,
+) => GetServerSideProps;
export const withCacheControl: WithCacheControl = (getServerSideProps) => async (context) => {
let shouldCachePublicResponse = false;
diff --git a/yarn.lock b/yarn.lock
index dd76946b1..8ae15ed1d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1937,11 +1937,9 @@ __metadata:
linkType: hard
"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.9.2":
- version: 7.23.9
- resolution: "@babel/runtime@npm:7.23.9"
- dependencies:
- regenerator-runtime: "npm:^0.14.0"
- checksum: 10/9a520fe1bf72249f7dd60ff726434251858de15cccfca7aa831bd19d0d3fb17702e116ead82724659b8da3844977e5e13de2bae01eb8a798f2823a669f122be6
+ version: 7.29.2
+ resolution: "@babel/runtime@npm:7.29.2"
+ checksum: 10/f55ba4052aa0255055b34371a145fbe69c29b37b49eaea14805b095bfb4153701486416e89392fd27ec8abafa53868be86e960b9f8f959fff91f2c8ac2a14b02
languageName: node
linkType: hard
@@ -3157,10 +3155,10 @@ __metadata:
languageName: node
linkType: hard
-"@next/env@npm:15.5.15":
- version: 15.5.15
- resolution: "@next/env@npm:15.5.15"
- checksum: 10/563340390668c717ca179067c3caf7f9e12b282b66a05a5f6b3dec1ab64cfdd93e08d7f2ac4fdb37fffcb8c32911054a35e6c9d3a443fba990c2a0c868db0514
+"@next/env@npm:15.5.16":
+ version: 15.5.16
+ resolution: "@next/env@npm:15.5.16"
+ checksum: 10/4ba5975b7b4e887eec3b15e68fa30b687412bde3c7167c82023f054b66b53932ff9cb18af454b8b380be8a51a0eb04700635be52ecaa42816bfd12314c11ad01
languageName: node
linkType: hard
@@ -3173,58 +3171,58 @@ __metadata:
languageName: node
linkType: hard
-"@next/swc-darwin-arm64@npm:15.5.15":
- version: 15.5.15
- resolution: "@next/swc-darwin-arm64@npm:15.5.15"
+"@next/swc-darwin-arm64@npm:15.5.16":
+ version: 15.5.16
+ resolution: "@next/swc-darwin-arm64@npm:15.5.16"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@next/swc-darwin-x64@npm:15.5.15":
- version: 15.5.15
- resolution: "@next/swc-darwin-x64@npm:15.5.15"
+"@next/swc-darwin-x64@npm:15.5.16":
+ version: 15.5.16
+ resolution: "@next/swc-darwin-x64@npm:15.5.16"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@next/swc-linux-arm64-gnu@npm:15.5.15":
- version: 15.5.15
- resolution: "@next/swc-linux-arm64-gnu@npm:15.5.15"
+"@next/swc-linux-arm64-gnu@npm:15.5.16":
+ version: 15.5.16
+ resolution: "@next/swc-linux-arm64-gnu@npm:15.5.16"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@next/swc-linux-arm64-musl@npm:15.5.15":
- version: 15.5.15
- resolution: "@next/swc-linux-arm64-musl@npm:15.5.15"
+"@next/swc-linux-arm64-musl@npm:15.5.16":
+ version: 15.5.16
+ resolution: "@next/swc-linux-arm64-musl@npm:15.5.16"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@next/swc-linux-x64-gnu@npm:15.5.15":
- version: 15.5.15
- resolution: "@next/swc-linux-x64-gnu@npm:15.5.15"
+"@next/swc-linux-x64-gnu@npm:15.5.16":
+ version: 15.5.16
+ resolution: "@next/swc-linux-x64-gnu@npm:15.5.16"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@next/swc-linux-x64-musl@npm:15.5.15":
- version: 15.5.15
- resolution: "@next/swc-linux-x64-musl@npm:15.5.15"
+"@next/swc-linux-x64-musl@npm:15.5.16":
+ version: 15.5.16
+ resolution: "@next/swc-linux-x64-musl@npm:15.5.16"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@next/swc-win32-arm64-msvc@npm:15.5.15":
- version: 15.5.15
- resolution: "@next/swc-win32-arm64-msvc@npm:15.5.15"
+"@next/swc-win32-arm64-msvc@npm:15.5.16":
+ version: 15.5.16
+ resolution: "@next/swc-win32-arm64-msvc@npm:15.5.16"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@next/swc-win32-x64-msvc@npm:15.5.15":
- version: 15.5.15
- resolution: "@next/swc-win32-x64-msvc@npm:15.5.15"
+"@next/swc-win32-x64-msvc@npm:15.5.16":
+ version: 15.5.16
+ resolution: "@next/swc-win32-x64-msvc@npm:15.5.16"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
@@ -4661,13 +4659,6 @@ __metadata:
languageName: node
linkType: hard
-"@trysound/sax@npm:0.2.0":
- version: 0.2.0
- resolution: "@trysound/sax@npm:0.2.0"
- checksum: 10/7379713eca480ac0d9b6c7b063e06b00a7eac57092354556c81027066eb65b61ea141a69d0cc2e15d32e05b2834d4c9c2184793a5e36bbf5daf05ee5676af18c
- languageName: node
- linkType: hard
-
"@tybys/wasm-util@npm:^0.10.0":
version: 0.10.1
resolution: "@tybys/wasm-util@npm:0.10.1"
@@ -4986,12 +4977,12 @@ __metadata:
languageName: node
linkType: hard
-"@types/react@npm:^19.2.10":
- version: 19.2.10
- resolution: "@types/react@npm:19.2.10"
+"@types/react@npm:^19.2.14":
+ version: 19.2.14
+ resolution: "@types/react@npm:19.2.14"
dependencies:
csstype: "npm:^3.2.2"
- checksum: 10/0e34a0e42db02f4b3f4bed446128c555446c2854b833d71d597e6c8b08800dd90519a03a226ad250cccc4a0c9e51bd3f9c54cdcb79ee1219f4d5b318fb3a3813
+ checksum: 10/fbff239089ee64b6bd9b00543594db498278b06de527ef1b0f71bb0eb09cc4445a71b5dd3c0d3d0257255c4eed94406be40a74ad4a987ade8a8d5dd65c82bc5f
languageName: node
linkType: hard
@@ -5749,14 +5740,14 @@ __metadata:
languageName: node
linkType: hard
-"axios@npm:^0.31.0":
- version: 0.31.0
- resolution: "axios@npm:0.31.0"
+"axios@npm:^0.31.1":
+ version: 0.31.1
+ resolution: "axios@npm:0.31.1"
dependencies:
follow-redirects: "npm:^1.15.4"
form-data: "npm:^4.0.4"
proxy-from-env: "npm:^1.1.0"
- checksum: 10/80536a915c36ff9e31f32a25e93f558963a89b4182b90a829c0fab44d5c9ee84ebbe34501c45448f422a181db75b8bab4272076a6b128184da2bfa340943d0d5
+ checksum: 10/097dffdc0ab1229fd2f2e792d038e81272568e8280217933f4ad68234761ffebe2b51468f6190f5d98eb3df9511800083f74f78dda4c6229b24b4f9d98d300e5
languageName: node
linkType: hard
@@ -5925,12 +5916,12 @@ __metadata:
linkType: hard
"brace-expansion@npm:^1.1.7":
- version: 1.1.11
- resolution: "brace-expansion@npm:1.1.11"
+ version: 1.1.14
+ resolution: "brace-expansion@npm:1.1.14"
dependencies:
balanced-match: "npm:^1.0.0"
concat-map: "npm:0.0.1"
- checksum: 10/faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07
+ checksum: 10/2de747a5891ea0d3a1946ea1ae26e056a47f7ea8d42a3009e1736ec3a31a5aa69a3c5da59d998426773553afe4c258e5b12d7953b534fa7f2cf12ce92eed4931
languageName: node
linkType: hard
@@ -5953,11 +5944,11 @@ __metadata:
linkType: hard
"braces@npm:^3.0.2, braces@npm:~3.0.2":
- version: 3.0.2
- resolution: "braces@npm:3.0.2"
+ version: 3.0.3
+ resolution: "braces@npm:3.0.3"
dependencies:
- fill-range: "npm:^7.0.1"
- checksum: 10/966b1fb48d193b9d155f810e5efd1790962f2c4e0829f8440b8ad236ba009222c501f70185ef732fef17a4c490bb33a03b90dab0631feafbdf447da91e8165b1
+ fill-range: "npm:^7.1.1"
+ checksum: 10/fad11a0d4697a27162840b02b1fad249c1683cbc510cd5bf1a471f2f8085c046d41094308c577a50a03a579dd99d5a6b3724c4b5e8b14df2c4443844cfcda2c6
languageName: node
linkType: hard
@@ -7888,12 +7879,12 @@ __metadata:
languageName: node
linkType: hard
-"fill-range@npm:^7.0.1":
- version: 7.0.1
- resolution: "fill-range@npm:7.0.1"
+"fill-range@npm:^7.1.1":
+ version: 7.1.1
+ resolution: "fill-range@npm:7.1.1"
dependencies:
to-regex-range: "npm:^5.0.1"
- checksum: 10/e260f7592fd196b4421504d3597cc76f4a1ca7a9488260d533b611fc3cefd61e9a9be1417cb82d3b01ad9f9c0ff2dbf258e1026d2445e26b0cf5148ff4250429
+ checksum: 10/a7095cb39e5bc32fada2aa7c7249d3f6b01bd1ce461a61b0adabacccabd9198500c6fb1f68a7c851a657e273fce2233ba869638897f3d7ed2e87a2d89b4436ea
languageName: node
linkType: hard
@@ -7940,9 +7931,9 @@ __metadata:
linkType: hard
"flatted@npm:^3.2.9":
- version: 3.2.9
- resolution: "flatted@npm:3.2.9"
- checksum: 10/dc2b89e46a2ebde487199de5a4fcb79e8c46f984043fea5c41dbf4661eb881fefac1c939b5bdcd8a09d7f960ec364f516970c7ec44e58ff451239c07fd3d419b
+ version: 3.4.2
+ resolution: "flatted@npm:3.4.2"
+ checksum: 10/a9e78fe5c2c1fcd98209a015ccee3a6caa953e01729778e83c1fe92e68601a63e1e69cd4e573010ca99eaf585a581b80ccf1018b99283e6cbc2117bcba1e030f
languageName: node
linkType: hard
@@ -8672,9 +8663,9 @@ __metadata:
linkType: hard
"immutable@npm:^4.0.0":
- version: 4.3.5
- resolution: "immutable@npm:4.3.5"
- checksum: 10/dbc1b8c808b9aa18bfce2e0c7bc23714a47267bc311f082145cc9220b2005e9b9cd2ae78330f164a19266a2b0f78846c60f4f74893853ac16fd68b5ae57092d2
+ version: 4.3.8
+ resolution: "immutable@npm:4.3.8"
+ checksum: 10/27a134cec0089ba60c5f50fdd08a0296533c9ce6d112188461c89a6bb3c720368e4363dc5f8d40440c6f9120400867e9cf86bd7463c7d3ee12d4ad44f797d4cc
languageName: node
linkType: hard
@@ -9867,14 +9858,14 @@ __metadata:
linkType: hard
"js-yaml@npm:^3.13.1":
- version: 3.14.1
- resolution: "js-yaml@npm:3.14.1"
+ version: 3.14.2
+ resolution: "js-yaml@npm:3.14.2"
dependencies:
argparse: "npm:^1.0.7"
esprima: "npm:^4.0.0"
bin:
js-yaml: bin/js-yaml.js
- checksum: 10/9e22d80b4d0105b9899135365f746d47466ed53ef4223c529b3c0f7a39907743fdbd3c4379f94f1106f02755b5e90b2faaf84801a891135544e1ea475d1a1379
+ checksum: 10/172e0b6007b0bf0fc8d2469c94424f7dd765c64a047d2b790831fecef2204a4054eabf4d911eb73ab8c9a3256ab8ba1ee8d655b789bf24bf059c772acc2075a1
languageName: node
linkType: hard
@@ -10032,10 +10023,10 @@ __metadata:
"@types/jest": "npm:^27.0.1"
"@types/navermaps": "npm:^3.6.4"
"@types/node": "npm:^16.7.13"
- "@types/react": "npm:^19.2.10"
+ "@types/react": "npm:^19.2.14"
"@types/react-dom": "npm:^19.2.3"
"@types/react-window": "npm:^1.8.5"
- axios: "npm:^0.31.0"
+ axios: "npm:^0.31.1"
dayjs: "npm:^1.11.12"
dotenv: "npm:^17.2.3"
embla-carousel-autoplay: "npm:^8.0.4"
@@ -10056,11 +10047,11 @@ __metadata:
idb: "npm:^8.0.3"
jest: "npm:^29.7.0"
lottie-react: "npm:^2.4.1"
- next: "npm:15.5.15"
- postcss: "npm:^8.4.47"
+ next: "npm:15.5.16"
+ postcss: "npm:^8.5.11"
prettier: "npm:^3.6.2"
- react: "npm:^19.2.5"
- react-dom: "npm:^19.2.5"
+ react: "npm:^19.2.6"
+ react-dom: "npm:^19.2.6"
react-hook-form: "npm:^7.55.0"
react-quill: "npm:^2.0.0"
react-quill-new: "npm:^3.6.0"
@@ -10140,9 +10131,9 @@ __metadata:
linkType: hard
"lodash-es@npm:^4.17.21":
- version: 4.17.21
- resolution: "lodash-es@npm:4.17.21"
- checksum: 10/03f39878ea1e42b3199bd3f478150ab723f93cc8730ad86fec1f2804f4a07c6e30deaac73cad53a88e9c3db33348bb8ceeb274552390e7a75d7849021c02df43
+ version: 4.18.1
+ resolution: "lodash-es@npm:4.18.1"
+ checksum: 10/8bfad225ef09ef42b04283cdaf7830efcc2ba29ae41b56501c74422155ee1ccaa1f0f6e8319def3451a1fe54dec501c8e4bee622bae2b2d98ac993731e0a5cce
languageName: node
linkType: hard
@@ -10182,9 +10173,9 @@ __metadata:
linkType: hard
"lodash@npm:>=4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.4":
- version: 4.17.21
- resolution: "lodash@npm:4.17.21"
- checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532
+ version: 4.18.1
+ resolution: "lodash@npm:4.18.1"
+ checksum: 10/306fea53dfd39dad1f03d45ba654a2405aebd35797b673077f401edb7df2543623dc44b9effbb98f69b32152295fff725a4cec99c684098947430600c6af0c3f
languageName: node
linkType: hard
@@ -10454,24 +10445,15 @@ __metadata:
linkType: hard
"minimatch@npm:^3.0.3, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
- version: 3.1.2
- resolution: "minimatch@npm:3.1.2"
+ version: 3.1.5
+ resolution: "minimatch@npm:3.1.5"
dependencies:
brace-expansion: "npm:^1.1.7"
- checksum: 10/e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634
- languageName: node
- linkType: hard
-
-"minimatch@npm:^9.0.1":
- version: 9.0.3
- resolution: "minimatch@npm:9.0.3"
- dependencies:
- brace-expansion: "npm:^2.0.1"
- checksum: 10/c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5
+ checksum: 10/b11a7ee5773cd34c1a0c8436cdbe910901018fb4b6cb47aa508a18d567f6efd2148507959e35fba798389b161b8604a2d704ccef751ea36bd4582f9852b7d63f
languageName: node
linkType: hard
-"minimatch@npm:^9.0.4":
+"minimatch@npm:^9.0.1, minimatch@npm:^9.0.4":
version: 9.0.5
resolution: "minimatch@npm:9.0.5"
dependencies:
@@ -10635,7 +10617,7 @@ __metadata:
languageName: node
linkType: hard
-"nanoid@npm:^3.3.6":
+"nanoid@npm:^3.3.11, nanoid@npm:^3.3.6":
version: 3.3.11
resolution: "nanoid@npm:3.3.11"
bin:
@@ -10676,19 +10658,19 @@ __metadata:
languageName: node
linkType: hard
-"next@npm:15.5.15":
- version: 15.5.15
- resolution: "next@npm:15.5.15"
+"next@npm:15.5.16":
+ version: 15.5.16
+ resolution: "next@npm:15.5.16"
dependencies:
- "@next/env": "npm:15.5.15"
- "@next/swc-darwin-arm64": "npm:15.5.15"
- "@next/swc-darwin-x64": "npm:15.5.15"
- "@next/swc-linux-arm64-gnu": "npm:15.5.15"
- "@next/swc-linux-arm64-musl": "npm:15.5.15"
- "@next/swc-linux-x64-gnu": "npm:15.5.15"
- "@next/swc-linux-x64-musl": "npm:15.5.15"
- "@next/swc-win32-arm64-msvc": "npm:15.5.15"
- "@next/swc-win32-x64-msvc": "npm:15.5.15"
+ "@next/env": "npm:15.5.16"
+ "@next/swc-darwin-arm64": "npm:15.5.16"
+ "@next/swc-darwin-x64": "npm:15.5.16"
+ "@next/swc-linux-arm64-gnu": "npm:15.5.16"
+ "@next/swc-linux-arm64-musl": "npm:15.5.16"
+ "@next/swc-linux-x64-gnu": "npm:15.5.16"
+ "@next/swc-linux-x64-musl": "npm:15.5.16"
+ "@next/swc-win32-arm64-msvc": "npm:15.5.16"
+ "@next/swc-win32-x64-msvc": "npm:15.5.16"
"@swc/helpers": "npm:0.5.15"
caniuse-lite: "npm:^1.0.30001579"
postcss: "npm:8.4.31"
@@ -10731,7 +10713,7 @@ __metadata:
optional: true
bin:
next: dist/bin/next
- checksum: 10/f15867d9e068194376a9657a13b5bc28dee4afedf4a163304c49cf9cec008ad5b905b8f4639bbebd702f77342b76847252b02dffeb130dd07be24aa0d2a694f0
+ checksum: 10/6575ffe4b6a1f76e48c689064296aa95326ec8494f4dc9baec8918e1e6af88ac16f1a5d0dd4c4caa5d833350ffeadfd94141d7f27d76099da0312394f21e7b85
languageName: node
linkType: hard
@@ -11208,7 +11190,7 @@ __metadata:
languageName: node
linkType: hard
-"picocolors@npm:^1.0.1, picocolors@npm:^1.1.0":
+"picocolors@npm:^1.0.1":
version: 1.1.0
resolution: "picocolors@npm:1.1.0"
checksum: 10/a2ad60d94d185c30f2a140b19c512547713fb89b920d32cc6cf658fa786d63a37ba7b8451872c3d9fc34883971fb6e5878e07a20b60506e0bb2554dce9169ccb
@@ -11223,9 +11205,9 @@ __metadata:
linkType: hard
"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1":
- version: 2.3.1
- resolution: "picomatch@npm:2.3.1"
- checksum: 10/60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc
+ version: 2.3.2
+ resolution: "picomatch@npm:2.3.2"
+ checksum: 10/b788ef8148a2415b9dec12f0bb350ae6a5830f8f1950e472abc2f5225494debf7d1b75eb031df0ceaea9e8ec3e7bad599e8dbf3c60d61b42be429ba41bff4426
languageName: node
linkType: hard
@@ -11360,14 +11342,14 @@ __metadata:
languageName: node
linkType: hard
-"postcss@npm:^8.4.47":
- version: 8.4.47
- resolution: "postcss@npm:8.4.47"
+"postcss@npm:^8.5.11":
+ version: 8.5.14
+ resolution: "postcss@npm:8.5.14"
dependencies:
- nanoid: "npm:^3.3.7"
- picocolors: "npm:^1.1.0"
+ nanoid: "npm:^3.3.11"
+ picocolors: "npm:^1.1.1"
source-map-js: "npm:^1.2.1"
- checksum: 10/f2b50ba9b6fcb795232b6bb20de7cdc538c0025989a8ed9c4438d1960196ba3b7eaff41fdb1a5c701b3504651ea87aeb685577707f0ae4d6ce6f3eae5df79a81
+ checksum: 10/2e3f4dea69692918fe9df5402beb0e54df84499995a094f2fbf63d1a9e38bc1b7a42854df47f09e02593213e01a5eb0627b1d1bd6d1b0ea90767b2e072f7167c
languageName: node
linkType: hard
@@ -11576,14 +11558,14 @@ __metadata:
languageName: node
linkType: hard
-"react-dom@npm:^19.2.5":
- version: 19.2.5
- resolution: "react-dom@npm:19.2.5"
+"react-dom@npm:^19.2.6":
+ version: 19.2.6
+ resolution: "react-dom@npm:19.2.6"
dependencies:
scheduler: "npm:^0.27.0"
peerDependencies:
- react: ^19.2.5
- checksum: 10/ba14b022c7191d27b723314b964a1a4d839832e6edd231294097e323973808f97ac647bcf182ab0104e20ae6532dbc36733aec3e8333a1446a7183099c96b255
+ react: ^19.2.6
+ checksum: 10/695122e37dec3460311231ff1f9a96368d74457d4ccf60010eaebc08c3e1c47b054c9267b40d98c689ae99d0c29a340acacfd405016a954a4f11613146191e68
languageName: node
linkType: hard
@@ -11686,10 +11668,10 @@ __metadata:
languageName: node
linkType: hard
-"react@npm:^19.2.5":
- version: 19.2.5
- resolution: "react@npm:19.2.5"
- checksum: 10/1c3c7ffecb90b7f89a5c3ef635e6811f3a84600097f203b918150cb7e6b0a52915e858e5b4c82317a520dffccfa46ee4819ccf92c59c5b2d6c25cffe258dd20c
+"react@npm:^19.2.6":
+ version: 19.2.6
+ resolution: "react@npm:19.2.6"
+ checksum: 10/205f0db93bd6c6485f94471d1c3437ae1d410f322297c76186fe4f658f88a6786bb0805e3cf8f330f24d1daa923b6b610ec63960d2461e9201bca64ca8361db9
languageName: node
linkType: hard
@@ -11767,13 +11749,6 @@ __metadata:
languageName: node
linkType: hard
-"regenerator-runtime@npm:^0.14.0":
- version: 0.14.1
- resolution: "regenerator-runtime@npm:0.14.1"
- checksum: 10/5db3161abb311eef8c45bcf6565f4f378f785900ed3945acf740a9888c792f75b98ecb77f0775f3bf95502ff423529d23e94f41d80c8256e8fa05ed4b07cf471
- languageName: node
- linkType: hard
-
"regexp.prototype.flags@npm:^1.5.1":
version: 1.5.1
resolution: "regexp.prototype.flags@npm:1.5.1"
@@ -12189,6 +12164,13 @@ __metadata:
languageName: node
linkType: hard
+"sax@npm:^1.5.0":
+ version: 1.6.0
+ resolution: "sax@npm:1.6.0"
+ checksum: 10/0909cedcd9f011ceeac80c0240a92d64ef712cf6c04e0f6ee236a8d812f86a59f61bee6bb5da28d75306db050b99e0593051ea77351795822253b984af6cf044
+ languageName: node
+ linkType: hard
+
"scheduler@npm:^0.27.0":
version: 0.27.0
resolution: "scheduler@npm:0.27.0"
@@ -13176,19 +13158,19 @@ __metadata:
linkType: hard
"svgo@npm:^3.0.2":
- version: 3.3.2
- resolution: "svgo@npm:3.3.2"
+ version: 3.3.3
+ resolution: "svgo@npm:3.3.3"
dependencies:
- "@trysound/sax": "npm:0.2.0"
commander: "npm:^7.2.0"
css-select: "npm:^5.1.0"
css-tree: "npm:^2.3.1"
css-what: "npm:^6.1.0"
csso: "npm:^5.0.5"
picocolors: "npm:^1.0.0"
+ sax: "npm:^1.5.0"
bin:
svgo: ./bin/svgo
- checksum: 10/82fdea9b938884d808506104228e4d3af0050d643d5b46ff7abc903ff47a91bbf6561373394868aaf07a28f006c4057b8fbf14bbd666298abdd7cc590d4f7700
+ checksum: 10/f3c1b4d05d1704483e53515d5995af5f06a2718df85e3a8320f57bb256b8dc926b84c87a1a9b98e9d3ca1224314cc0676a803bdd03163508292f2d45c7077096
languageName: node
linkType: hard
@@ -13215,8 +13197,8 @@ __metadata:
linkType: hard
"tar@npm:^6.1.11, tar@npm:^6.1.2":
- version: 6.2.0
- resolution: "tar@npm:6.2.0"
+ version: 6.2.1
+ resolution: "tar@npm:6.2.1"
dependencies:
chownr: "npm:^2.0.0"
fs-minipass: "npm:^2.0.0"
@@ -13224,7 +13206,7 @@ __metadata:
minizlib: "npm:^2.1.1"
mkdirp: "npm:^1.0.3"
yallist: "npm:^4.0.0"
- checksum: 10/2042bbb14830b5cd0d584007db0eb0a7e933e66d1397e72a4293768d2332449bc3e312c266a0887ec20156dea388d8965e53b4fc5097f42d78593549016da089
+ checksum: 10/bfbfbb2861888077fc1130b84029cdc2721efb93d1d1fb80f22a7ac3a98ec6f8972f29e564103bbebf5e97be67ebc356d37fa48dbc4960600a1eb7230fbd1ea0
languageName: node
linkType: hard