From 6d9ef866466fcd5ec43f180e7df6239aadff8b4e Mon Sep 17 00:00:00 2001 From: WONYOUNG-HC Date: Mon, 18 Nov 2024 01:03:10 +0900 Subject: [PATCH 01/10] feat: define LocalTime class --- src/typing/LocalTime.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/typing/LocalTime.ts diff --git a/src/typing/LocalTime.ts b/src/typing/LocalTime.ts new file mode 100644 index 00000000..5ca2a7da --- /dev/null +++ b/src/typing/LocalTime.ts @@ -0,0 +1,34 @@ +import { CotatoLocalTime } from 'cotato-openapi-clients'; + +/** + * + */ +export default class LocalTime implements CotatoLocalTime { + hour: number; + minute: number; + second: number; + nano: number; + + /** + * @param {string} timeString + */ + constructor(timeString: string) { + const [hour, minute, second] = timeString.split(':').map(Number); + + this.hour = hour; + this.minute = minute; + this.second = second; + this.nano = 0; + } + + /** + * @returns {string} + */ + getTimeString() { + const numToString = (num: number) => { + return num.toString().padStart(2, '0'); + }; + + return `${numToString(this.hour)}:${numToString(this.minute)}:${numToString(this.second)}`; + } +} From 81025afd8e147a50a371a031ea6fc4113466e81b Mon Sep 17 00:00:00 2001 From: WONYOUNG-HC Date: Mon, 18 Nov 2024 01:38:16 +0900 Subject: [PATCH 02/10] feat: Allow undefined in LocalTime class constructor --- src/typing/LocalTime.ts | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/typing/LocalTime.ts b/src/typing/LocalTime.ts index 5ca2a7da..87a9d664 100644 --- a/src/typing/LocalTime.ts +++ b/src/typing/LocalTime.ts @@ -10,14 +10,37 @@ export default class LocalTime implements CotatoLocalTime { nano: number; /** - * @param {string} timeString + * @param {string} [timeString] - "HH:MM:SS" 형식의 시간 문자열 (옵션) */ - constructor(timeString: string) { - const [hour, minute, second] = timeString.split(':').map(Number); + constructor(timeString?: string) { + if (timeString) { + const [hour, minute, second] = timeString.split(':').map(Number); + + if ( + isNaN(hour) || + isNaN(minute) || + isNaN(second) || + hour < 0 || + hour > 23 || + minute < 0 || + minute > 59 || + second < 0 || + second > 59 + ) { + throw new Error("Invalid time format. Expected 'HH:MM:SS'"); + } + + this.hour = hour; + this.minute = minute; + this.second = second; + } else { + const now = new Date(); + + this.hour = now.getHours(); + this.minute = now.getMinutes(); + this.second = now.getSeconds(); + } - this.hour = hour; - this.minute = minute; - this.second = second; this.nano = 0; } From 0be6d9b73da91a19493f220d7a96a14d0a662f15 Mon Sep 17 00:00:00 2001 From: WONYOUNG-HC Date: Mon, 18 Nov 2024 01:44:31 +0900 Subject: [PATCH 03/10] feat: add getDate function to LocalTime class --- src/typing/LocalTime.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/typing/LocalTime.ts b/src/typing/LocalTime.ts index 87a9d664..7d38f5ef 100644 --- a/src/typing/LocalTime.ts +++ b/src/typing/LocalTime.ts @@ -45,13 +45,31 @@ export default class LocalTime implements CotatoLocalTime { } /** + * * @returns {string} */ - getTimeString() { + getTimeString(): string { const numToString = (num: number) => { return num.toString().padStart(2, '0'); }; return `${numToString(this.hour)}:${numToString(this.minute)}:${numToString(this.second)}`; } + + /** + * + * @returns {Date} + */ + getDate(): Date { + const now = new Date(); + + return new Date( + now.getFullYear(), + now.getMonth(), + now.getDate(), + this.hour, + this.minute, + this.second, + ); + } } From 2333fd43f42f2fcbc08ea975feed5b82386e524b Mon Sep 17 00:00:00 2001 From: WONYOUNG-HC Date: Mon, 18 Nov 2024 02:30:54 +0900 Subject: [PATCH 04/10] feat: add date object support to LocalTime class constructor --- src/typing/LocalTime.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/typing/LocalTime.ts b/src/typing/LocalTime.ts index 7d38f5ef..53bc4fba 100644 --- a/src/typing/LocalTime.ts +++ b/src/typing/LocalTime.ts @@ -10,11 +10,11 @@ export default class LocalTime implements CotatoLocalTime { nano: number; /** - * @param {string} [timeString] - "HH:MM:SS" 형식의 시간 문자열 (옵션) + * @param {string | Date} [input] - "HH:MM:SS" 형식의 시간 문자열 또는 Date 객체 (옵션) */ - constructor(timeString?: string) { - if (timeString) { - const [hour, minute, second] = timeString.split(':').map(Number); + constructor(input?: string | Date) { + if (typeof input === 'string') { + const [hour, minute, second] = input.split(':').map(Number); if ( isNaN(hour) || @@ -33,6 +33,10 @@ export default class LocalTime implements CotatoLocalTime { this.hour = hour; this.minute = minute; this.second = second; + } else if (input instanceof Date) { + this.hour = input.getHours(); + this.minute = input.getMinutes(); + this.second = input.getSeconds(); } else { const now = new Date(); From 8741533ca493a0a9bf9f871c5fdf557a5969cdb8 Mon Sep 17 00:00:00 2001 From: WONYOUNG-HC Date: Mon, 18 Nov 2024 02:31:32 +0900 Subject: [PATCH 05/10] refactor: change class method name --- src/typing/LocalTime.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/typing/LocalTime.ts b/src/typing/LocalTime.ts index 53bc4fba..8aea91ba 100644 --- a/src/typing/LocalTime.ts +++ b/src/typing/LocalTime.ts @@ -52,7 +52,7 @@ export default class LocalTime implements CotatoLocalTime { * * @returns {string} */ - getTimeString(): string { + toTimeString(): string { const numToString = (num: number) => { return num.toString().padStart(2, '0'); }; @@ -64,7 +64,7 @@ export default class LocalTime implements CotatoLocalTime { * * @returns {Date} */ - getDate(): Date { + toDate(): Date { const now = new Date(); return new Date( From 37167284a08a2c214a3d2c560edb1ed1ad274a1e Mon Sep 17 00:00:00 2001 From: WONYOUNG-HC Date: Mon, 18 Nov 2024 02:32:45 +0900 Subject: [PATCH 06/10] feat: Apply LocalTime Class --- src/pages/Session/SessionUploadModal.tsx | 76 ++++-------------------- 1 file changed, 11 insertions(+), 65 deletions(-) diff --git a/src/pages/Session/SessionUploadModal.tsx b/src/pages/Session/SessionUploadModal.tsx index f296b585..592e1313 100644 --- a/src/pages/Session/SessionUploadModal.tsx +++ b/src/pages/Session/SessionUploadModal.tsx @@ -20,7 +20,6 @@ import dayjs from 'dayjs'; import { ToastContainer } from 'react-toastify'; import SearchLocationModal from '@components/SearchLocation/SearchLocationModal'; import { - CotatoLocalTime, CotatoSessionContentsCsEducationEnum, CotatoSessionContentsDevTalkEnum, CotatoSessionContentsItIssueEnum, @@ -29,6 +28,7 @@ import { } from 'cotato-openapi-clients'; import CotatoTimePicker from '@components/CotatoTimePicker'; import api from '@/api/api'; +import LocalTime from '@/typing/LocalTime'; // // @@ -64,16 +64,8 @@ const INITIAL_SESSION_STATE: SessionUploadInfo = { description: '', sessionDateTime: new Date(), attendTime: { - attendanceDeadLine: { - hour: 19, - minute: 10, - second: 0, - }, - lateDeadLine: { - hour: 19, - minute: 20, - second: 0, - }, + attendanceDeadLine: new LocalTime('19:10:00'), + lateDeadLine: new LocalTime('19:20:00'), }, itIssue: CotatoSessionContentsItIssueEnum.Off, csEducation: CotatoSessionContentsCsEducationEnum.On, @@ -107,7 +99,7 @@ const SessionUploadModal = ({ */ const fetchUpdateSession = async () => { try { - const response = await api.get('/v2/api/attendances/info', { + const { data: attendancesInfo } = await api.get('/v2/api/attendances/info', { params: { sessionId: sessionInfo?.sessionId, }, @@ -119,21 +111,10 @@ const SessionUploadModal = ({ description: sessionInfo?.description || '', sessionDateTime: new Date(sessionInfo?.sessionDateTime || ''), placeName: sessionInfo?.placeName || '', - location: { - latitude: response.data.location?.latitude, - longitude: response.data.location?.longitude, - }, + location: attendancesInfo.location, attendTime: { - attendanceDeadLine: { - hour: response.data.attendanceDeadLine?.hour || 19, - minute: response.data.attendanceDeadLine?.minute || 10, - second: response.data.attendanceDeadLine?.second || 0, - }, - lateDeadLine: { - hour: response.data.lateDeadLine?.hour || 19, - minute: response.data.lateDeadLine?.minute || 20, - second: response.data.lateDeadLine?.second || 0, - }, + attendanceDeadLine: new LocalTime(attendancesInfo.attendanceDeadLine), + lateDeadLine: new LocalTime(attendancesInfo.lateDeadLine), }, itIssue: sessionInfo?.sessionContents?.itIssue || CotatoSessionContentsItIssueEnum.Off, csEducation: @@ -150,17 +131,6 @@ const SessionUploadModal = ({ } }; - /** - * - */ - const convertCotatoLocalTimeToDate = (localTime?: CotatoLocalTime): Date => { - const date = new Date(); - date.setHours(localTime?.hour || 0); - date.setMinutes(localTime?.minute || 0); - date.setSeconds(localTime?.second || 0); - return date; - }; - /** * */ @@ -301,19 +271,7 @@ const SessionUploadModal = ({ const handleAttendanceDeadlineChange = (date: Date) => { setSession( produce(session, (draft) => { - if (draft.attendTime?.attendanceDeadLine) { - draft.attendTime.attendanceDeadLine.hour = date.getHours(); - draft.attendTime.attendanceDeadLine.minute = date.getMinutes(); - draft.attendTime.attendanceDeadLine.second = date.getSeconds(); - } else { - draft.attendTime = { - attendanceDeadLine: { - hour: date.getHours(), - minute: date.getMinutes(), - second: date.getSeconds(), - }, - }; - } + draft.attendTime!.attendanceDeadLine = new LocalTime(date); }), ); }; @@ -324,19 +282,7 @@ const SessionUploadModal = ({ const handleLateDeadLineChange = (date: Date) => { setSession( produce(session, (draft) => { - if (draft.attendTime?.lateDeadLine) { - draft.attendTime.lateDeadLine.hour = date.getHours(); - draft.attendTime.lateDeadLine.minute = date.getMinutes(); - draft.attendTime.lateDeadLine.second = date.getSeconds(); - } else { - draft.attendTime = { - lateDeadLine: { - hour: date.getHours(), - minute: date.getMinutes(), - second: date.getSeconds(), - }, - }; - } + draft.attendTime!.lateDeadLine = new LocalTime(date); }), ); }; @@ -454,14 +400,14 @@ const SessionUploadModal = ({
출석 인정
지각 인정
From 8dc0dbaebf6e8e4684d43fee1800cc0514795cc9 Mon Sep 17 00:00:00 2001 From: WONYOUNG-HC Date: Mon, 18 Nov 2024 02:50:13 +0900 Subject: [PATCH 07/10] chore: change comment to english --- src/typing/LocalTime.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/typing/LocalTime.ts b/src/typing/LocalTime.ts index 8aea91ba..acd2382c 100644 --- a/src/typing/LocalTime.ts +++ b/src/typing/LocalTime.ts @@ -10,7 +10,7 @@ export default class LocalTime implements CotatoLocalTime { nano: number; /** - * @param {string | Date} [input] - "HH:MM:SS" 형식의 시간 문자열 또는 Date 객체 (옵션) + * @param {string | Date} [input] - "HH:MM:SS" format string or Date object (optional) */ constructor(input?: string | Date) { if (typeof input === 'string') { From 15dedf5dd41cbe8d2371c61b42bf3f61bb432ad2 Mon Sep 17 00:00:00 2001 From: WONYOUNG-HC Date: Thu, 21 Nov 2024 17:56:31 +0900 Subject: [PATCH 08/10] chore: bump open api version --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 88c7add9..06f0c7c6 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "browserslist": "^4.18.1", "camelcase": "^6.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", - "cotato-openapi-clients": "^2.241007.0", + "cotato-openapi-clients": "2.241116.0-attendance.0", "craco-alias": "^3.0.1", "css-loader": "^6.5.1", "css-minimizer-webpack-plugin": "^3.2.0", diff --git a/yarn.lock b/yarn.lock index 6ab76b68..17b75a9c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4613,10 +4613,10 @@ cosmiconfig@^7, cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" -cotato-openapi-clients@^2.241007.0: - version "2.241007.0" - resolved "https://registry.yarnpkg.com/cotato-openapi-clients/-/cotato-openapi-clients-2.241007.0.tgz#6d078ea56d21623c20231ec2350c726368bb24de" - integrity sha512-+rru91WTBN8pYHwREMHy78uxOI8SgyHTf+1aV4ARcIa0ap8QHL4HhiKWl2gnFd1cwcZzvH8FNCydWW+5PkTI0A== +cotato-openapi-clients@2.241116.0-attendance.0: + version "2.241116.0-attendance.0" + resolved "https://registry.yarnpkg.com/cotato-openapi-clients/-/cotato-openapi-clients-2.241116.0-attendance.0.tgz#538cc81e9caacae707cabae766446ec375c21751" + integrity sha512-txP3Fl6uyZc4xyvZutRE1BGBbdOVb6clFP/Zp1fjBBVcgaQ+/Xej9FVQkAh/U2EtvFBvCjyqS0+rBfOmc4UOJw== dependencies: "@openapitools/openapi-generator-cli" "^2.13.4" "@testing-library/jest-dom" "^5.17.0" From 11123ae336489c5c15f84fe1e27ee49d67015440 Mon Sep 17 00:00:00 2001 From: WONYOUNG-HC Date: Thu, 21 Nov 2024 19:00:22 +0900 Subject: [PATCH 09/10] feat: convert type LocalTime to Date --- src/pages/Session/SessionHome.tsx | 37 +++-------- src/pages/Session/SessionUploadModal.tsx | 27 ++++---- src/typing/LocalTime.ts | 79 ------------------------ 3 files changed, 23 insertions(+), 120 deletions(-) delete mode 100644 src/typing/LocalTime.ts diff --git a/src/pages/Session/SessionHome.tsx b/src/pages/Session/SessionHome.tsx index 65624b6d..12f9a152 100644 --- a/src/pages/Session/SessionHome.tsx +++ b/src/pages/Session/SessionHome.tsx @@ -6,11 +6,7 @@ import fetcherWithParams from '@utils/fetcherWithParams'; import { SessionListImageInfo, SessionUploadInfo } from '@/typing/session'; import api from '@/api/api'; import SessionUploadModal from '@pages/Session/SessionUploadModal'; -import { - CotatoGenerationInfoResponse, - CotatoLocalTime, - CotatoSessionListResponse, -} from 'cotato-openapi-clients'; +import { CotatoGenerationInfoResponse, CotatoSessionListResponse } from 'cotato-openapi-clients'; import CotatoDropBox from '@components/CotatoDropBox'; import { useMediaQuery } from '@mui/material'; import { device } from '@theme/media'; @@ -54,28 +50,11 @@ const SessionHome = () => { /** * */ - const getDeadLineString = (deadLine?: CotatoLocalTime) => { - if (!deadLine) { - return '00:00:00'; + const getDateString = (date?: Date) => { + if (!date) { + return ''; } - const numToString = (num?: number) => { - if (!num) { - return '00'; - } - - return num.toString().padStart(2, '0'); - }; - - return `${numToString(deadLine.hour)}:${numToString(deadLine.minute)}:${numToString( - deadLine.second, - )}`; - }; - - /** - * - */ - const getDateString = (date: Date) => { const dateISO = new Date(date); dateISO.setHours(dateISO.getHours() + 9); return dateISO.toISOString().substring(0, 19); @@ -185,8 +164,8 @@ const SessionHome = () => { formData.append('networking', session.networking); formData.append('devTalk', session.devTalk); - formData.append('attendanceDeadLine', getDeadLineString(session.attendTime.attendanceDeadLine)); - formData.append('lateDeadLine', getDeadLineString(session.attendTime.lateDeadLine)); + formData.append('attendanceDeadLine', getDateString(session.attendTime.attendanceDeadLine)); + formData.append('lateDeadLine', getDateString(session.attendTime.lateDeadLine)); session.imageInfos.forEach((imageInfo) => { if (imageInfo.imageFile) { @@ -219,8 +198,8 @@ const SessionHome = () => { placeName: session.placeName, location: session.location, attendTime: { - attendanceDeadLine: getDeadLineString(session?.attendTime?.attendanceDeadLine), - lateDeadLine: getDeadLineString(session?.attendTime?.lateDeadLine), + attendanceDeadLine: getDateString(session?.attendTime?.attendanceDeadLine), + lateDeadLine: getDateString(session?.attendTime?.lateDeadLine), }, itIssue: session.itIssue, csEducation: session.csEducation, diff --git a/src/pages/Session/SessionUploadModal.tsx b/src/pages/Session/SessionUploadModal.tsx index 241b4364..0eb1fec8 100644 --- a/src/pages/Session/SessionUploadModal.tsx +++ b/src/pages/Session/SessionUploadModal.tsx @@ -25,7 +25,6 @@ import { } from 'cotato-openapi-clients'; import CotatoTimePicker from '@components/CotatoTimePicker'; import api from '@/api/api'; -import LocalTime from '@/typing/LocalTime'; import CotatoIcon from '@components/CotatoIcon'; import { IconButton } from '@mui/material'; @@ -63,8 +62,8 @@ const INITIAL_SESSION_STATE: SessionUploadInfo = { description: '', sessionDateTime: new Date(), attendTime: { - attendanceDeadLine: new LocalTime('19:10:00'), - lateDeadLine: new LocalTime('19:20:00'), + attendanceDeadLine: new Date(), + lateDeadLine: new Date(), }, itIssue: CotatoSessionContentsItIssueEnum.Off, csEducation: CotatoSessionContentsCsEducationEnum.On, @@ -112,8 +111,8 @@ const SessionUploadModal = ({ placeName: sessionInfo?.placeName || '', location: attendancesInfo.location, attendTime: { - attendanceDeadLine: new LocalTime(attendancesInfo.attendanceDeadLine), - lateDeadLine: new LocalTime(attendancesInfo.lateDeadLine), + attendanceDeadLine: attendancesInfo.attendanceDeadLine, + lateDeadLine: attendancesInfo.lateDeadLine, }, itIssue: sessionInfo?.sessionContents?.itIssue || CotatoSessionContentsItIssueEnum.Off, csEducation: @@ -270,7 +269,7 @@ const SessionUploadModal = ({ const handleAttendanceDeadlineChange = (date: Date) => { setSession( produce(session, (draft) => { - draft.attendTime!.attendanceDeadLine = new LocalTime(date); + draft.attendTime!.attendanceDeadLine = date; }), ); }; @@ -281,7 +280,7 @@ const SessionUploadModal = ({ const handleLateDeadLineChange = (date: Date) => { setSession( produce(session, (draft) => { - draft.attendTime!.lateDeadLine = new LocalTime(date); + draft.attendTime!.lateDeadLine = date; }), ); }; @@ -400,14 +399,14 @@ const SessionUploadModal = ({
출석 인정
지각 인정
@@ -454,18 +453,22 @@ const SessionUploadModal = ({ if (sessionInfo) { fetchUpdateSession(); } else { - const getNextFiday = () => { + const getNextFidayDate = (hour: number, minute: number) => { const today = new Date(); const day = today.getDay(); const diff = 5 - day; const nextFriday = new Date(today); nextFriday.setDate(today.getDate() + diff); - nextFriday.setHours(19, 0, 0, 0); + nextFriday.setHours(hour, minute, 0, 0); return nextFriday; }; const initialSession = produce(INITIAL_SESSION_STATE, (draft) => { - draft.sessionDateTime = getNextFiday(); + draft.sessionDateTime = getNextFidayDate(19, 0); + draft.attendTime = { + attendanceDeadLine: getNextFidayDate(19, 10), + lateDeadLine: getNextFidayDate(19, 20), + }; }); setSession(initialSession); diff --git a/src/typing/LocalTime.ts b/src/typing/LocalTime.ts deleted file mode 100644 index acd2382c..00000000 --- a/src/typing/LocalTime.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { CotatoLocalTime } from 'cotato-openapi-clients'; - -/** - * - */ -export default class LocalTime implements CotatoLocalTime { - hour: number; - minute: number; - second: number; - nano: number; - - /** - * @param {string | Date} [input] - "HH:MM:SS" format string or Date object (optional) - */ - constructor(input?: string | Date) { - if (typeof input === 'string') { - const [hour, minute, second] = input.split(':').map(Number); - - if ( - isNaN(hour) || - isNaN(minute) || - isNaN(second) || - hour < 0 || - hour > 23 || - minute < 0 || - minute > 59 || - second < 0 || - second > 59 - ) { - throw new Error("Invalid time format. Expected 'HH:MM:SS'"); - } - - this.hour = hour; - this.minute = minute; - this.second = second; - } else if (input instanceof Date) { - this.hour = input.getHours(); - this.minute = input.getMinutes(); - this.second = input.getSeconds(); - } else { - const now = new Date(); - - this.hour = now.getHours(); - this.minute = now.getMinutes(); - this.second = now.getSeconds(); - } - - this.nano = 0; - } - - /** - * - * @returns {string} - */ - toTimeString(): string { - const numToString = (num: number) => { - return num.toString().padStart(2, '0'); - }; - - return `${numToString(this.hour)}:${numToString(this.minute)}:${numToString(this.second)}`; - } - - /** - * - * @returns {Date} - */ - toDate(): Date { - const now = new Date(); - - return new Date( - now.getFullYear(), - now.getMonth(), - now.getDate(), - this.hour, - this.minute, - this.second, - ); - } -} From 95b3057274cafeed9cd3292ea70ca7a1ec03684c Mon Sep 17 00:00:00 2001 From: WONYOUNG-HC Date: Fri, 22 Nov 2024 03:40:46 +0900 Subject: [PATCH 10/10] chore: bump open api version --- package.json | 2 +- yarn.lock | 39 +++++++-------------------------------- 2 files changed, 8 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index 3cbc72c4..dad13b3f 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "browserslist": "^4.18.1", "camelcase": "^6.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", - "cotato-openapi-clients": "2.241116.0-attendance.0", + "cotato-openapi-clients": "2.241122.0", "craco-alias": "^3.0.1", "css-loader": "^6.5.1", "css-minimizer-webpack-plugin": "^3.2.0", diff --git a/yarn.lock b/yarn.lock index 762c3dff..aff4fc66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4754,10 +4754,10 @@ cosmiconfig@^7, cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" -cotato-openapi-clients@2.241116.0-attendance.0: - version "2.241116.0-attendance.0" - resolved "https://registry.yarnpkg.com/cotato-openapi-clients/-/cotato-openapi-clients-2.241116.0-attendance.0.tgz#538cc81e9caacae707cabae766446ec375c21751" - integrity sha512-txP3Fl6uyZc4xyvZutRE1BGBbdOVb6clFP/Zp1fjBBVcgaQ+/Xej9FVQkAh/U2EtvFBvCjyqS0+rBfOmc4UOJw== +cotato-openapi-clients@2.241122.0: + version "2.241122.0" + resolved "https://registry.yarnpkg.com/cotato-openapi-clients/-/cotato-openapi-clients-2.241122.0.tgz#c6b8432bc547d8bed4ceda88c009818f3ff42fb7" + integrity sha512-utYFmmFjBOIZbVHURrBF/jc9eJ/VzVALwcCC9wXiuZKiXEyUM/Cdu5AIKIBJP4653OdA0lCMDVElTo9xG9rTgw== dependencies: "@openapitools/openapi-generator-cli" "^2.13.4" "@testing-library/jest-dom" "^5.17.0" @@ -10665,16 +10665,7 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -10777,14 +10768,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -12018,7 +12002,7 @@ workbox-window@6.6.1: "@types/trusted-types" "^2.0.2" workbox-core "6.6.1" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -12036,15 +12020,6 @@ wrap-ansi@^6.0.1: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"