diff --git a/apps/backend/src/modules/schedule/controller.ts b/apps/backend/src/modules/schedule/controller.ts
index cf7e36cbd..13da2a023 100644
--- a/apps/backend/src/modules/schedule/controller.ts
+++ b/apps/backend/src/modules/schedule/controller.ts
@@ -3,7 +3,7 @@ import {
IClassItem,
ScheduleModel,
SectionModel,
- TermModel,
+ TermModel
} from "@repo/common";
import {
@@ -12,6 +12,8 @@ import {
Semester,
UpdateScheduleInput,
} from "../../generated-types/graphql";
+
+import {getSecondarySections} from "../class/controller"
import { formatClass } from "../class/formatter";
import { ClassModule } from "../class/generated-types/module-types";
import { formatSchedule } from "./formatter";
@@ -139,3 +141,5 @@ export const getClasses = async (
return classes;
};
+
+
diff --git a/apps/backend/src/modules/schedule/resolver.ts b/apps/backend/src/modules/schedule/resolver.ts
index 84707a89c..89beeb78e 100644
--- a/apps/backend/src/modules/schedule/resolver.ts
+++ b/apps/backend/src/modules/schedule/resolver.ts
@@ -6,7 +6,7 @@ import {
getClasses,
getSchedule,
getSchedules,
- updateSchedule,
+ updateSchedule
} from "./controller";
import { IntermediateSchedule } from "./formatter";
import { ScheduleModule } from "./generated-types/module-types";
@@ -24,6 +24,8 @@ const resolvers: ScheduleModule.Resolvers = {
return schedule as unknown as ScheduleModule.Schedule;
},
+
+
},
Schedule: {
@@ -53,6 +55,7 @@ const resolvers: ScheduleModule.Resolvers = {
},
},
+
Mutation: {
deleteSchedule: async (_, { id }, context) => {
return await deleteSchedule(context, id);
diff --git a/apps/backend/src/modules/schedule/typedefs/schedule.ts b/apps/backend/src/modules/schedule/typedefs/schedule.ts
index 73b880c62..f88a2f2a8 100644
--- a/apps/backend/src/modules/schedule/typedefs/schedule.ts
+++ b/apps/backend/src/modules/schedule/typedefs/schedule.ts
@@ -29,6 +29,7 @@ const typedef = gql`
events: [Event!]!
}
+
type Query {
schedules: [Schedule] @auth
schedule(id: ID!): Schedule
diff --git a/apps/frontend/src/App.tsx b/apps/frontend/src/App.tsx
index 117adfcbb..da94a4d56 100644
--- a/apps/frontend/src/App.tsx
+++ b/apps/frontend/src/App.tsx
@@ -311,9 +311,7 @@ export default function App() {
return (
- {/* */}
-
- {/* */}
+
);
diff --git a/apps/frontend/src/app/Catalog/index.tsx b/apps/frontend/src/app/Catalog/index.tsx
index b4f9fc8f7..0a28038ac 100644
--- a/apps/frontend/src/app/Catalog/index.tsx
+++ b/apps/frontend/src/app/Catalog/index.tsx
@@ -12,6 +12,7 @@ import ClassBrowser from "@/components/ClassBrowser";
import { useReadTerms } from "@/hooks/api";
import { useReadClass } from "@/hooks/api/classes/useReadClass";
import { Semester, TemporalPosition } from "@/lib/api";
+import { useReadSchedules } from "@/hooks/api";
import styles from "./Catalog.module.scss";
import Dashboard from "./Dashboard";
@@ -96,6 +97,8 @@ export default function Catalog() {
[navigate, location, term]
);
+ const { data: schedules = [] } = useReadSchedules();
+
// TODO: Loading state
if (termsLoading) {
return <>>;
@@ -129,6 +132,7 @@ export default function Catalog() {
semester={term.semester}
year={term.year}
persistent
+ allSchedules={schedules}
/>
diff --git a/apps/frontend/src/app/Schedule/Editor/SideBar/Class/Section/index.tsx b/apps/frontend/src/app/Schedule/Editor/SideBar/Class/Section/index.tsx
index 02e9ce842..44cc7761c 100644
--- a/apps/frontend/src/app/Schedule/Editor/SideBar/Class/Section/index.tsx
+++ b/apps/frontend/src/app/Schedule/Editor/SideBar/Class/Section/index.tsx
@@ -5,6 +5,7 @@ import Time from "@/components/Time";
import { ISection } from "@/lib/api";
import styles from "./Section.module.scss";
+import useSchedule from "@/hooks/useSchedule";
interface SectionProps {
onSectionSelect?: () => void;
@@ -22,6 +23,7 @@ export default function Section({
number,
meetings: [{ startTime, endTime, days }],
}: SectionProps & ISection) {
+
return (
(arr: T[]): T[] {
return [arr[arr.length - 1], ...arr.slice(0, arr.length - 1)];
}
+// Need to add alarm when users dont choose days
export default function Week({
selectedSections,
currentSection,
@@ -83,9 +84,15 @@ export default function Week({
const positions: Record
= {};
const minutes: string[][] = [...Array(60 * 18)].map(() => []);
- const relevantEvents = events
+ const relevantEvents = (events ?? [])
// Filter events for the current day
- .filter((event) => event.days[day])
+ .filter((event) => {
+ if (!Array.isArray(event.days)) {
+ console.warn("Invalid event.days:", event);
+ return false;
+ }
+ return event.days[day];
+ })
.map(
(event) =>
({
diff --git a/apps/frontend/src/app/Schedule/schedule.ts b/apps/frontend/src/app/Schedule/schedule.ts
index f14a8fc6c..48ae16935 100644
--- a/apps/frontend/src/app/Schedule/schedule.ts
+++ b/apps/frontend/src/app/Schedule/schedule.ts
@@ -21,9 +21,20 @@ export type ScheduleEvent = SectionEvent | CustomEvent;
const defaultUnits = [0, 0];
+// motify the function to give boundaries
+// need to fix bug --> if time out of bounds, webpage should jump out alarm
export const getY = (time: string) => {
const [hour, minute] = time.split(":");
- return (parseInt(hour) - 6) * 60 + parseInt(minute);
+ const hour1 = parseInt(hour, 10);
+ const minute1 = parseInt(minute, 10);
+
+ if (isNaN(hour1) || isNaN(minute1)) {
+ console.warn("Invalid time string:", time);
+ return -1;
+ }
+ const offset = (hour1 - 6) * 60 + minute1;
+
+ return Math.max(0, Math.min(1079, offset));
};
export const getUnits = (schedule?: ISchedule) => {
diff --git a/apps/frontend/src/components/Class/Sections/Sections.module.scss b/apps/frontend/src/components/Class/Sections/Sections.module.scss
index aa805531c..98e5a0330 100644
--- a/apps/frontend/src/components/Class/Sections/Sections.module.scss
+++ b/apps/frontend/src/components/Class/Sections/Sections.module.scss
@@ -37,6 +37,7 @@
align-items: flex-start;
}
+
.view {
flex-grow: 1;
@@ -51,6 +52,10 @@
margin-bottom: 24px;
border: 1px solid var(--border-color);
+ &.conflict {
+ border: 2px solid var(--red-500);
+ }
+
.header {
display: flex;
margin-bottom: 24px;
diff --git a/apps/frontend/src/components/Class/Sections/index.tsx b/apps/frontend/src/components/Class/Sections/index.tsx
index 1c42390e2..086a578e3 100644
--- a/apps/frontend/src/components/Class/Sections/index.tsx
+++ b/apps/frontend/src/components/Class/Sections/index.tsx
@@ -11,10 +11,14 @@ import Details from "@/components/Details";
import useClass from "@/hooks/useClass";
import { Component, componentMap } from "@/lib/api";
import { getExternalLink } from "@/lib/section";
+import useScheduleTimeSlots from "@/hooks/useScheduleTimeSlots";
+import { hasTimeConflict } from "@/components/ClassBrowser/browser";
import styles from "./Sections.module.scss";
export default function Sections() {
+ const timeSlots = useScheduleTimeSlots();
+
const { class: _class } = useClass();
const viewRef = useRef(null);
@@ -85,8 +89,9 @@ export default function Sections() {
viewRef.current?.children[index].scrollIntoView({ behavior: "smooth" });
};
- return _class.sections.length === 0 ? (
-
+ if (_class.sections.length === 0) {
+ return (
+
No associated sections
@@ -94,7 +99,11 @@ export default function Sections() {
information regarding class attendance requirements.
- ) : (
+ );
+ }
+
+
+ return (
{Object.keys(groups).map((component, index) => (
@@ -116,48 +125,54 @@ export default function Sections() {
{Object.values(groups).map((sections) => (
- {sections.map((section) => (
-
-
-
-
- {componentMap[section.component]} {section.number}
-
-
+ {sections.map((section) => {
+ const { conflictingSectionIds } = hasTimeConflict(section, timeSlots);
+ console.log("14", conflictingSectionIds.includes(section.sectionId));
+ return (
+
+
+
+
+ {componentMap[section.component]} {section.number}
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
- ))}
+ );
+
+ })}
))}
diff --git a/apps/frontend/src/components/ClassBrowser/Filters/Filters.module.scss b/apps/frontend/src/components/ClassBrowser/Filters/Filters.module.scss
index 891902cdc..0332d44ec 100644
--- a/apps/frontend/src/components/ClassBrowser/Filters/Filters.module.scss
+++ b/apps/frontend/src/components/ClassBrowser/Filters/Filters.module.scss
@@ -36,6 +36,46 @@
}
}
+ .filterVertical {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ margin-top: 12px;
+
+ .text {
+ font-size: 14px;
+ color: var(--label-color);
+ line-height: 1;
+ font-weight: 500;
+
+ .value {
+ color: var(--paragraph-color);
+ }
+ }
+
+ .select {
+ font-size: 14px;
+ color: var(--paragraph-color);
+ font-weight: 500;
+ border: 2px solid var(--paragraph-color);
+ border-radius: 4px;
+ padding: 4px 8px;
+ background-color: white;
+ appearance: none;
+ background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='8'%20height='5'%3E%3Cpath%20fill='black'%20d='M0,0L4,5L8,0'/%3E%3C/svg%3E");
+ background-repeat: no-repeat;
+ background-position: right 8px center;
+ background-size: 8px 5px;
+
+ &:focus {
+ outline: none;
+ border-color: var(--blue-500);
+ }
+ }
+ }
+
+
+
.filter {
display: flex;
align-items: center;
diff --git a/apps/frontend/src/components/ClassBrowser/Filters/index.tsx b/apps/frontend/src/components/ClassBrowser/Filters/index.tsx
index 99d99acd4..9458b1728 100644
--- a/apps/frontend/src/components/ClassBrowser/Filters/index.tsx
+++ b/apps/frontend/src/components/ClassBrowser/Filters/index.tsx
@@ -3,8 +3,10 @@ import { Dispatch, useMemo } from "react";
import classNames from "classnames";
import { Check } from "iconoir-react";
import { Checkbox, RadioGroup } from "radix-ui";
+import { useQuery } from "@apollo/client";
+import { READ_USER, ReadUserResponse } from "@/lib/api/users";
-import { Component, componentMap } from "@/lib/api";
+import { Component, componentMap, } from "@/lib/api";
import Header from "../Header";
import {
@@ -36,7 +38,10 @@ export default function Filters() {
updateOnline,
sortBy,
updateSortBy,
+ selectedSchedule,
+ updateSelectedSchedule,
responsive,
+ allSchedules
} = useBrowser();
const filteredLevels = useMemo(() => {
@@ -50,7 +55,7 @@ export default function Filters() {
[],
days,
open,
- online
+ online,
).includedClasses;
return classes.reduce(
@@ -81,6 +86,10 @@ export default function Filters() {
open,
online,
]);
+
+ const { data: userData } = useQuery
(READ_USER);
+ const user = userData?.user;
+ const isLoggedIn = !!user;
const filteredComponents = useMemo(() => {
const filteredComponents = Object.keys(componentMap).reduce(
@@ -101,7 +110,7 @@ export default function Filters() {
levels,
days,
open,
- online
+ online,
).includedClasses;
for (const _class of classes) {
@@ -141,7 +150,7 @@ export default function Filters() {
levels,
[],
open,
- online
+ online,
).includedClasses;
for (const _class of classes) {
@@ -185,7 +194,7 @@ export default function Filters() {
levels,
days,
open,
- online
+ online,
).includedClasses;
for (const _class of classes) {
@@ -437,6 +446,33 @@ export default function Filters() {
);
})}
+
+
Schedule
+
+
+
);
diff --git a/apps/frontend/src/components/ClassBrowser/List/Class/Class.module.scss b/apps/frontend/src/components/ClassBrowser/List/Class/Class.module.scss
index dea0a78e1..95093fc9a 100644
--- a/apps/frontend/src/components/ClassBrowser/List/Class/Class.module.scss
+++ b/apps/frontend/src/components/ClassBrowser/List/Class/Class.module.scss
@@ -26,6 +26,10 @@
}
}
+ &.conflict {
+ border: 2px solid var(--red-500);
+ }
+
.text {
flex-grow: 1;
font-size: 14px;
diff --git a/apps/frontend/src/components/ClassBrowser/List/Class/index.tsx b/apps/frontend/src/components/ClassBrowser/List/Class/index.tsx
index b9feb1140..1736c8f82 100644
--- a/apps/frontend/src/components/ClassBrowser/List/Class/index.tsx
+++ b/apps/frontend/src/components/ClassBrowser/List/Class/index.tsx
@@ -6,12 +6,15 @@ import { AverageGrade } from "@/components/AverageGrade";
import Capacity from "@/components/Capacity";
import Units from "@/components/Units";
import { IClass } from "@/lib/api";
+import { ConflictResult } from "@/components/ClassBrowser/browser";
+
import styles from "./Class.module.scss";
interface Props {
index: number;
onClick: MouseEventHandler
;
+ conflict?: ConflictResult;
}
type ClassProps = Props & IClass;
@@ -32,7 +35,10 @@ export default function Class({
...props
}: ClassProps & Omit, keyof ClassProps>) {
return (
-
+
{subject} {courseNumber} #{number}
diff --git a/apps/frontend/src/components/ClassBrowser/List/index.tsx b/apps/frontend/src/components/ClassBrowser/List/index.tsx
index a2b92e53a..918999467 100644
--- a/apps/frontend/src/components/ClassBrowser/List/index.tsx
+++ b/apps/frontend/src/components/ClassBrowser/List/index.tsx
@@ -1,4 +1,4 @@
-import { useEffect, useRef } from "react";
+import { useEffect, useRef, useMemo} from "react";
import { useVirtualizer } from "@tanstack/react-virtual";
import { FrameAltEmpty } from "iconoir-react";
@@ -10,6 +10,8 @@ import Header from "../Header";
import useBrowser from "../useBrowser";
import Class from "./Class";
import styles from "./List.module.scss";
+import { hasTimeConflict } from "../browser"
+import useScheduleTimeSlots from "@/hooks/useScheduleTimeSlots";
interface ListProps {
onSelect: (subject: string, courseNumber: string, number: string) => void;
@@ -37,6 +39,7 @@ export default function List({ onSelect }: ListProps) {
}, [searchParams]);
const items = virtualizer.getVirtualItems();
+ const timeSlots = useScheduleTimeSlots();
return (
@@ -71,6 +74,7 @@ export default function List({ onSelect }: ListProps) {
>
{items.map(({ key, index }) => {
const _class = classes[index];
+ const conflict = hasTimeConflict(_class, timeSlots);
return (
onSelect(
_class.course.subject,
diff --git a/apps/frontend/src/components/ClassBrowser/browser.ts b/apps/frontend/src/components/ClassBrowser/browser.ts
index 42e3ed71c..033465a5c 100644
--- a/apps/frontend/src/components/ClassBrowser/browser.ts
+++ b/apps/frontend/src/components/ClassBrowser/browser.ts
@@ -1,8 +1,9 @@
import Fuse from "fuse.js";
-import { AcademicCareer, Component, IClass, academicCareers } from "@/lib/api";
+import { AcademicCareer, Component, IClass, academicCareers, ISchedule, ISection } from "@/lib/api";
import { subjects } from "@/lib/course";
+
export enum SortBy {
Relevance = "Relevance",
Units = "Units",
@@ -45,6 +46,7 @@ export const getLevel = (academicCareer: AcademicCareer, number: string) => {
: (academicCareers[academicCareer] as Level);
};
+
export const getFilteredClasses = (
classes: IClass[],
currentComponents: Component[],
@@ -52,7 +54,7 @@ export const getFilteredClasses = (
currentLevels: Level[],
currentDays: Day[],
currentOpen: boolean,
- currentOnline: boolean
+ currentOnline: boolean,
) => {
return classes.reduce(
(acc, _class) => {
@@ -137,13 +139,65 @@ export const getFilteredClasses = (
return acc;
},
- { includedClasses: [], excludedClasses: [] } as {
- includedClasses: IClass[];
- excludedClasses: IClass[];
- }
+ { includedClasses: [] as IClass[], excludedClasses: [] as IClass[]}
);
};
+
+export interface TimeSlot {
+ day: number[];
+ start: number;
+ end: number;
+}
+
+export interface ConflictResult {
+ hasConflict: boolean;
+ conflictingSectionIds: string[];
+}
+
+
+function timeToMinutes(time: string): number {
+ const [h, m] = time.split(":").map(Number);
+ return h * 60 + m;
+}
+
+export function hasTimeConflict(
+ cls: IClass | ISection,
+ timeSlots: TimeSlot[]
+): ConflictResult {
+ const conflictingIds = new Set();
+ const sec = "primarySection" in cls ? cls.primarySection : cls;
+ // console.log("new1:", timeSlots);
+
+ for (const meeting of sec.meetings ?? []) {
+ const mStart = timeToMinutes(meeting.startTime);
+ const mEnd = timeToMinutes(meeting.endTime);
+
+ const meetingDays = meeting.days
+ .map((has, idx) => has ? idx : -1)
+ .filter(d => d > 0);
+ // console.log("new2:", sec.sectionId, meetingDays);
+ for (const slot of timeSlots) {
+
+ const common = meetingDays.filter(d => slot.day.includes(d));
+ if (common.length === 0) continue;
+ // console.log("new5:", sec.sectionId, common);
+
+ if (Math.max(mStart, slot.start) < Math.min(mEnd, slot.end)) {
+ conflictingIds.add(sec.sectionId);
+ break;
+ }
+ }
+ }
+
+ return {
+ hasConflict: conflictingIds.size > 0,
+ conflictingSectionIds: Array.from(conflictingIds),
+ };
+}
+
+
+
export const getIndex = (classes: IClass[]) => {
const list = classes.map((_class) => {
const { title, subject, number } = _class.course;
diff --git a/apps/frontend/src/components/ClassBrowser/browserContext.ts b/apps/frontend/src/components/ClassBrowser/browserContext.ts
index 3ea520d32..16c17bb71 100644
--- a/apps/frontend/src/components/ClassBrowser/browserContext.ts
+++ b/apps/frontend/src/components/ClassBrowser/browserContext.ts
@@ -4,6 +4,9 @@ import { Component, IClass, Semester } from "@/lib/api";
import { Day, Level, SortBy, Unit } from "./browser";
+
+import { ISchedule } from "@/lib/api";
+
export interface BrowserContextType {
responsive: boolean;
expanded: boolean;
@@ -21,6 +24,8 @@ export interface BrowserContextType {
online: boolean;
sortBy: SortBy;
open: boolean;
+ selectedSchedule: ISchedule | null;
+ allSchedules: ISchedule[];
updateComponents: Dispatch;
updateUnits: Dispatch;
updateLevels: Dispatch;
@@ -30,8 +35,10 @@ export interface BrowserContextType {
updateOpen: Dispatch;
updateOnline: Dispatch;
loading: boolean;
+ updateSelectedSchedule: Dispatch;
}
const BrowserContext = createContext(null);
+
export default BrowserContext;
diff --git a/apps/frontend/src/components/ClassBrowser/index.tsx b/apps/frontend/src/components/ClassBrowser/index.tsx
index 1de706c79..b58ac20b0 100644
--- a/apps/frontend/src/components/ClassBrowser/index.tsx
+++ b/apps/frontend/src/components/ClassBrowser/index.tsx
@@ -3,6 +3,8 @@ import { useMemo, useState } from "react";
import { useQuery } from "@apollo/client";
import classNames from "classnames";
import { useSearchParams } from "react-router-dom";
+import { ISchedule } from "@/lib/api";
+
import {
Component,
@@ -10,6 +12,8 @@ import {
GetCatalogResponse,
IClass,
Semester,
+ READ_SCHEDULE,
+ ReadScheduleResponse
} from "@/lib/api";
import styles from "./ClassBrowser.module.scss";
@@ -31,6 +35,7 @@ interface ClassBrowserProps {
semester: Semester;
year: number;
persistent?: boolean;
+ allSchedules: ISchedule[];
}
export default function ClassBrowser({
@@ -39,6 +44,7 @@ export default function ClassBrowser({
semester: currentSemester,
year: currentYear,
persistent,
+ allSchedules,
}: ClassBrowserProps) {
const [expanded, setExpanded] = useState(false);
const [searchParams, setSearchParams] = useSearchParams();
@@ -51,6 +57,7 @@ export default function ClassBrowser({
const [localSortBy, setLocalSortBy] = useState(SortBy.Relevance);
const [localOpen, setLocalOpen] = useState(false);
const [localOnline, setLocalOnline] = useState(false);
+ const [selectedSchedule, setSelectedSchedule] = useState(null);
const { data, loading } = useQuery(GET_CATALOG, {
variables: {
@@ -137,6 +144,35 @@ export default function ClassBrowser({
[searchParams, localOnline, persistent]
);
+ const scheduleId = searchParams.get("selectedSchedule");
+
+// 2. 用 Apollo 去拉取那张完整的 schedule
+ const { data: scheduleData } = useQuery(
+ READ_SCHEDULE,
+ {
+ variables: { id: scheduleId! },
+ skip: !scheduleId,
+ }
+ );
+
+ const selectedScheduleMemo = useMemo(
+ () => scheduleData?.schedule ?? null,
+ [scheduleData]
+ );
+
+
+ const updateSelectedSchedule = (schedule: ISchedule | null) => {
+ if (persistent) {
+ if (schedule) {
+ searchParams.set("selectedSchedule", schedule._id);
+ } else {
+ searchParams.delete("selectedSchedule");
+ }
+ setSearchParams(searchParams);
+ }
+ setSelectedSchedule(schedule);
+ };
+
const { includedClasses, excludedClasses } = useMemo(
() =>
getFilteredClasses(
@@ -146,9 +182,9 @@ export default function ClassBrowser({
levels,
days,
open,
- online
+ online,
),
- [classes, components, units, levels, days, open, online]
+ [classes, components, units, levels, days, open, online, ]
);
const index = useMemo(() => getIndex(includedClasses), [includedClasses]);
@@ -272,8 +308,9 @@ export default function ClassBrowser({
setLocalQuery(query);
};
+
return (
-
updateArray("components", setLocalComponents, components),
@@ -302,6 +341,7 @@ export default function ClassBrowser({
updateBoolean("online", setLocalOnline, online),
setExpanded,
loading,
+ updateSelectedSchedule
}}
>
-
+
);
}
diff --git a/apps/frontend/src/components/ScheduleDrawer/Schedule/index.tsx b/apps/frontend/src/components/ScheduleDrawer/Schedule/index.tsx
index 5de6d11c6..def6ba3c6 100644
--- a/apps/frontend/src/components/ScheduleDrawer/Schedule/index.tsx
+++ b/apps/frontend/src/components/ScheduleDrawer/Schedule/index.tsx
@@ -2,7 +2,7 @@ import { useMemo } from "react";
import { useQuery } from "@apollo/client";
-import { READ_SCHEDULES, ReadSchedulesResponse, Semester } from "@/lib/api";
+import { READ_SCHEDULE, READ_SCHEDULES, ReadSchedulesResponse, Semester } from "@/lib/api";
interface ScheduleProps {
year: number;
@@ -22,7 +22,7 @@ export default function Schedule({
const { data } = useQuery
(READ_SCHEDULES);
const schedules = useMemo(() => data?.schedules ?? [], [data]);
-
+
const filteredSchedules = useMemo(
() =>
schedules.filter(
diff --git a/apps/frontend/src/hooks/api/schedules/useCreateSchedule.ts b/apps/frontend/src/hooks/api/schedules/useCreateSchedule.ts
index c09c15b37..0ef78e4e5 100644
--- a/apps/frontend/src/hooks/api/schedules/useCreateSchedule.ts
+++ b/apps/frontend/src/hooks/api/schedules/useCreateSchedule.ts
@@ -12,6 +12,7 @@ export const useCreateSchedule = () => {
const mutation = useMutation(CREATE_SCHEDULE, {
update(cache, { data }) {
const schedule = data?.createSchedule;
+
if (!schedule) return;
diff --git a/apps/frontend/src/lib/api/classes.ts b/apps/frontend/src/lib/api/classes.ts
index df92f9f27..39b0f7115 100644
--- a/apps/frontend/src/lib/api/classes.ts
+++ b/apps/frontend/src/lib/api/classes.ts
@@ -375,6 +375,7 @@ export const GET_CATALOG = gql`
finalExam
gradingBasis
primarySection {
+ sectionId
component
online
instructionMode
@@ -391,6 +392,8 @@ export const GET_CATALOG = gql`
}
meetings {
days
+ startTime
+ endTime
}
}
course {
diff --git a/package-lock.json b/package-lock.json
index 59846e222..a0b7be83b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,9 +11,11 @@
"packages/*"
],
"dependencies": {
+ "@radix-ui/themes": "^3.2.1",
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
"patch-package": "^8.0.0",
"prettier": "^3.5.3",
+ "radix-ui": "^1.2.0",
"react-select": "^5.10.0",
"turbo": "^2.4.4"
},
@@ -768,24 +770,24 @@
}
},
"node_modules/@aws-sdk/client-athena": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-athena/-/client-athena-3.787.0.tgz",
- "integrity": "sha512-RmQwfTfi4O7kMljbbWDvVMtuuGmj1+WnYm1//1+yWUPupNqRES7tzaWLclALtTDgZIT1Z+LZxrfFf4m6crH6jg==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-athena/-/client-athena-3.796.0.tgz",
+ "integrity": "sha512-4S0i/+O6tlcAxNPBo5VtmciLa6lLGGZDpt1RY5XOTQJVuE3KLebNLLp87VhJBE32KSxSp/HKlpl3nqCzP4zIcQ==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.775.0",
- "@aws-sdk/credential-provider-node": "3.787.0",
+ "@aws-sdk/core": "3.796.0",
+ "@aws-sdk/credential-provider-node": "3.796.0",
"@aws-sdk/middleware-host-header": "3.775.0",
"@aws-sdk/middleware-logger": "3.775.0",
"@aws-sdk/middleware-recursion-detection": "3.775.0",
- "@aws-sdk/middleware-user-agent": "3.787.0",
+ "@aws-sdk/middleware-user-agent": "3.796.0",
"@aws-sdk/region-config-resolver": "3.775.0",
"@aws-sdk/types": "3.775.0",
"@aws-sdk/util-endpoints": "3.787.0",
"@aws-sdk/util-user-agent-browser": "3.775.0",
- "@aws-sdk/util-user-agent-node": "3.787.0",
+ "@aws-sdk/util-user-agent-node": "3.796.0",
"@smithy/config-resolver": "^4.1.0",
"@smithy/core": "^3.2.0",
"@smithy/fetch-http-handler": "^5.0.2",
@@ -820,32 +822,32 @@
}
},
"node_modules/@aws-sdk/client-s3": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.787.0.tgz",
- "integrity": "sha512-eGLCWkN0NlntJ9yPU6OKUggVS4cFvuZJog+cFg1KD5hniLqz7Y0YRtB4uBxW212fK3XCfddgyscEOEeHaTQQTw==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.796.0.tgz",
+ "integrity": "sha512-zRQhrj80atJX5mxC6MPH261iIMIc+RQmkDe+rZVm/61waUm/1ZFn1hSyi5i2Azor/2V2FnS9WVeWp57Sd0TahQ==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha1-browser": "5.2.0",
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.775.0",
- "@aws-sdk/credential-provider-node": "3.787.0",
+ "@aws-sdk/core": "3.796.0",
+ "@aws-sdk/credential-provider-node": "3.796.0",
"@aws-sdk/middleware-bucket-endpoint": "3.775.0",
"@aws-sdk/middleware-expect-continue": "3.775.0",
- "@aws-sdk/middleware-flexible-checksums": "3.787.0",
+ "@aws-sdk/middleware-flexible-checksums": "3.796.0",
"@aws-sdk/middleware-host-header": "3.775.0",
"@aws-sdk/middleware-location-constraint": "3.775.0",
"@aws-sdk/middleware-logger": "3.775.0",
"@aws-sdk/middleware-recursion-detection": "3.775.0",
- "@aws-sdk/middleware-sdk-s3": "3.775.0",
+ "@aws-sdk/middleware-sdk-s3": "3.796.0",
"@aws-sdk/middleware-ssec": "3.775.0",
- "@aws-sdk/middleware-user-agent": "3.787.0",
+ "@aws-sdk/middleware-user-agent": "3.796.0",
"@aws-sdk/region-config-resolver": "3.775.0",
- "@aws-sdk/signature-v4-multi-region": "3.775.0",
+ "@aws-sdk/signature-v4-multi-region": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@aws-sdk/util-endpoints": "3.787.0",
"@aws-sdk/util-user-agent-browser": "3.775.0",
- "@aws-sdk/util-user-agent-node": "3.787.0",
+ "@aws-sdk/util-user-agent-node": "3.796.0",
"@aws-sdk/xml-builder": "3.775.0",
"@smithy/config-resolver": "^4.1.0",
"@smithy/core": "^3.2.0",
@@ -887,23 +889,23 @@
}
},
"node_modules/@aws-sdk/client-sso": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.787.0.tgz",
- "integrity": "sha512-L8R+Mh258G0DC73ktpSVrG4TT9i2vmDLecARTDR/4q5sRivdDQSL5bUp3LKcK80Bx+FRw3UETIlX6mYMLL9PJQ==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.796.0.tgz",
+ "integrity": "sha512-EJExg8mbwqP0VG+RNFV4ZPuUo7QsDsUfTnuFQY51V8iXrbOdV+PDLRr4psXj2fxvrLxc9AlGUMNqd/j4VZtQzA==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/core": "3.796.0",
"@aws-sdk/middleware-host-header": "3.775.0",
"@aws-sdk/middleware-logger": "3.775.0",
"@aws-sdk/middleware-recursion-detection": "3.775.0",
- "@aws-sdk/middleware-user-agent": "3.787.0",
+ "@aws-sdk/middleware-user-agent": "3.796.0",
"@aws-sdk/region-config-resolver": "3.775.0",
"@aws-sdk/types": "3.775.0",
"@aws-sdk/util-endpoints": "3.787.0",
"@aws-sdk/util-user-agent-browser": "3.775.0",
- "@aws-sdk/util-user-agent-node": "3.787.0",
+ "@aws-sdk/util-user-agent-node": "3.796.0",
"@smithy/config-resolver": "^4.1.0",
"@smithy/core": "^3.2.0",
"@smithy/fetch-http-handler": "^5.0.2",
@@ -936,9 +938,9 @@
}
},
"node_modules/@aws-sdk/core": {
- "version": "3.775.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.775.0.tgz",
- "integrity": "sha512-8vpW4WihVfz0DX+7WnnLGm3GuQER++b0IwQG35JlQMlgqnc44M//KbJPsIHA0aJUJVwJAEShgfr5dUbY8WUzaA==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.796.0.tgz",
+ "integrity": "sha512-tH8Sp7lCxISVoLnkyv4AouuXs2CDlMhTuesWa0lq2NX1f+DXsMwSBtN37ttZdpFMw3F8mWdsJt27X9h2Oq868A==",
"license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "3.775.0",
@@ -946,7 +948,7 @@
"@smithy/node-config-provider": "^4.0.2",
"@smithy/property-provider": "^4.0.2",
"@smithy/protocol-http": "^5.1.0",
- "@smithy/signature-v4": "^5.0.2",
+ "@smithy/signature-v4": "^5.1.0",
"@smithy/smithy-client": "^4.2.0",
"@smithy/types": "^4.2.0",
"@smithy/util-middleware": "^4.0.2",
@@ -958,12 +960,12 @@
}
},
"node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.775.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.775.0.tgz",
- "integrity": "sha512-6ESVxwCbGm7WZ17kY1fjmxQud43vzJFoLd4bmlR+idQSWdqlzGDYdcfzpjDKTcivdtNrVYmFvcH1JBUwCRAZhw==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.796.0.tgz",
+ "integrity": "sha512-kQzGKm4IOYYO6vUrai2JocNwhJm4Aml2BsAV+tBhFhhkutE7khf9PUucoVjB78b0J48nF+kdSacqzY+gB81/Uw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/core": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/property-provider": "^4.0.2",
"@smithy/types": "^4.2.0",
@@ -974,12 +976,12 @@
}
},
"node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.775.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.775.0.tgz",
- "integrity": "sha512-PjDQeDH/J1S0yWV32wCj2k5liRo0ssXMseCBEkCsD3SqsU8o5cU82b0hMX4sAib/RkglCSZqGO0xMiN0/7ndww==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.796.0.tgz",
+ "integrity": "sha512-wWOT6VAHIKOuHdKFGm1iyKvx7f6+Kc/YTzFWJPuT+l+CPlXR6ylP1UMIDsHHLKpMzsrh3CH77QDsjkhQrnKkfg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/core": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/fetch-http-handler": "^5.0.2",
"@smithy/node-http-handler": "^4.0.4",
@@ -995,18 +997,18 @@
}
},
"node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.787.0.tgz",
- "integrity": "sha512-hc2taRoDlXn2uuNuHWDJljVWYrp3r9JF1a/8XmOAZhVUNY+ImeeStylHXhXXKEA4JOjW+5PdJj0f1UDkVCHJiQ==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.796.0.tgz",
+ "integrity": "sha512-qGWBDn9aO8avFfYU7daps7Sy6OglF1x0q0w48slt0KMXbHd2/LvKVIiYwyofYCXed0yzcEOF2IYm9FjXdcn+ug==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.775.0",
- "@aws-sdk/credential-provider-env": "3.775.0",
- "@aws-sdk/credential-provider-http": "3.775.0",
- "@aws-sdk/credential-provider-process": "3.775.0",
- "@aws-sdk/credential-provider-sso": "3.787.0",
- "@aws-sdk/credential-provider-web-identity": "3.787.0",
- "@aws-sdk/nested-clients": "3.787.0",
+ "@aws-sdk/core": "3.796.0",
+ "@aws-sdk/credential-provider-env": "3.796.0",
+ "@aws-sdk/credential-provider-http": "3.796.0",
+ "@aws-sdk/credential-provider-process": "3.796.0",
+ "@aws-sdk/credential-provider-sso": "3.796.0",
+ "@aws-sdk/credential-provider-web-identity": "3.796.0",
+ "@aws-sdk/nested-clients": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/credential-provider-imds": "^4.0.2",
"@smithy/property-provider": "^4.0.2",
@@ -1019,17 +1021,17 @@
}
},
"node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.787.0.tgz",
- "integrity": "sha512-JioVi44B1vDMaK2CdzqimwvJD3uzvzbQhaEWXsGMBcMcNHajXAXf08EF50JG3ZhLrhhUsT1ObXpbTaPINOhh+g==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.796.0.tgz",
+ "integrity": "sha512-WeNK7OWPrsOvhO3DAgpUO0FtmVghMaZ/IpPJHJ4Y0nBIsWOBXLrbZ2Y1mdT8N2bGGUaM91tJaV8Yf8COc3gvmA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.775.0",
- "@aws-sdk/credential-provider-http": "3.775.0",
- "@aws-sdk/credential-provider-ini": "3.787.0",
- "@aws-sdk/credential-provider-process": "3.775.0",
- "@aws-sdk/credential-provider-sso": "3.787.0",
- "@aws-sdk/credential-provider-web-identity": "3.787.0",
+ "@aws-sdk/credential-provider-env": "3.796.0",
+ "@aws-sdk/credential-provider-http": "3.796.0",
+ "@aws-sdk/credential-provider-ini": "3.796.0",
+ "@aws-sdk/credential-provider-process": "3.796.0",
+ "@aws-sdk/credential-provider-sso": "3.796.0",
+ "@aws-sdk/credential-provider-web-identity": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/credential-provider-imds": "^4.0.2",
"@smithy/property-provider": "^4.0.2",
@@ -1042,12 +1044,12 @@
}
},
"node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.775.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.775.0.tgz",
- "integrity": "sha512-A6k68H9rQp+2+7P7SGO90Csw6nrUEm0Qfjpn9Etc4EboZhhCLs9b66umUsTsSBHus4FDIe5JQxfCUyt1wgNogg==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.796.0.tgz",
+ "integrity": "sha512-r4e8/4AdKn/qQbRVocW7oXkpoiuXdTv0qty8AASNLnbQnT1vjD1bvmP6kp4fbHPWgwY8I9h0Dqjp49uy9Bqyuw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/core": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/property-provider": "^4.0.2",
"@smithy/shared-ini-file-loader": "^4.0.2",
@@ -1059,14 +1061,14 @@
}
},
"node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.787.0.tgz",
- "integrity": "sha512-fHc08bsvwm4+dEMEQKnQ7c1irEQmmxbgS+Fq41y09pPvPh31nAhoMcjBSTWAaPHvvsRbTYvmP4Mf12ZGr8/nfg==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.796.0.tgz",
+ "integrity": "sha512-RUYsQ1t6UdzkpZ7pocUt1l/9l9GCYCaopIhv0DU6CipA8rkWtoweKsLHKdv+8wE4p6gqDfDIHGam1ivswiCIzg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/client-sso": "3.787.0",
- "@aws-sdk/core": "3.775.0",
- "@aws-sdk/token-providers": "3.787.0",
+ "@aws-sdk/client-sso": "3.796.0",
+ "@aws-sdk/core": "3.796.0",
+ "@aws-sdk/token-providers": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/property-provider": "^4.0.2",
"@smithy/shared-ini-file-loader": "^4.0.2",
@@ -1078,13 +1080,13 @@
}
},
"node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.787.0.tgz",
- "integrity": "sha512-SobmCwNbk6TfEsF283mZPQEI5vV2j6eY5tOCj8Er4Lzraxu9fBPADV+Bib2A8F6jlB1lMPJzOuDCbEasSt/RIw==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.796.0.tgz",
+ "integrity": "sha512-dpmFJT4IyjT09vruvMu/rWQQjVreqdxAe8pLPpGhoeKyA1O6+PS73b+VNXKvD31rQT8e4g6dVpA6KMxNW63aag==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.775.0",
- "@aws-sdk/nested-clients": "3.787.0",
+ "@aws-sdk/core": "3.796.0",
+ "@aws-sdk/nested-clients": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/property-provider": "^4.0.2",
"@smithy/types": "^4.2.0",
@@ -1128,15 +1130,15 @@
}
},
"node_modules/@aws-sdk/middleware-flexible-checksums": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.787.0.tgz",
- "integrity": "sha512-X71qEwWoixFmwowWzlPoZUR3u1CWJ7iAzU0EzIxqmPhQpQJLFmdL1+SRjqATynDPZQzLs1a5HBtPT++EnZ+Quw==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.796.0.tgz",
+ "integrity": "sha512-JTqnyzGlbvXDcEnBtd5LFNrCFKUHnGyp/V9+BkvzNP02WXABLWzYvj1TCaf5pQySwK/b4kVn5lvbpTi0rXqjZw==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/crc32": "5.2.0",
"@aws-crypto/crc32c": "5.2.0",
"@aws-crypto/util": "5.2.0",
- "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/core": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/is-array-buffer": "^4.0.0",
"@smithy/node-config-provider": "^4.0.2",
@@ -1210,18 +1212,18 @@
}
},
"node_modules/@aws-sdk/middleware-sdk-s3": {
- "version": "3.775.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.775.0.tgz",
- "integrity": "sha512-zsvcu7cWB28JJ60gVvjxPCI7ZU7jWGcpNACPiZGyVtjYXwcxyhXbYEVDSWKsSA6ERpz9XrpLYod8INQWfW3ECg==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.796.0.tgz",
+ "integrity": "sha512-5o78oE79sGOtYkL7Up02h2nmr9UhGQZJgxE29EBdTw4dZ1EaA46L+C8oA+fBCmAB5xPQsjQqvhRrsr4Lcp+jZQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/core": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@aws-sdk/util-arn-parser": "3.723.0",
"@smithy/core": "^3.2.0",
"@smithy/node-config-provider": "^4.0.2",
"@smithy/protocol-http": "^5.1.0",
- "@smithy/signature-v4": "^5.0.2",
+ "@smithy/signature-v4": "^5.1.0",
"@smithy/smithy-client": "^4.2.0",
"@smithy/types": "^4.2.0",
"@smithy/util-config-provider": "^4.0.0",
@@ -1249,12 +1251,12 @@
}
},
"node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.787.0.tgz",
- "integrity": "sha512-Lnfj8SmPLYtrDFthNIaNj66zZsBCam+E4XiUDr55DIHTGstH6qZ/q6vg0GfbukxwSmUcGMwSR4Qbn8rb8yd77g==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.796.0.tgz",
+ "integrity": "sha512-IeNg+3jNWT37J45opi5Jx89hGF0lOnZjiNwlMp3rKq7PlOqy8kWq5J1Gxk0W3tIkPpuf68CtBs/QFrRXWOjsZw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/core": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@aws-sdk/util-endpoints": "3.787.0",
"@smithy/core": "^3.2.0",
@@ -1267,23 +1269,23 @@
}
},
"node_modules/@aws-sdk/nested-clients": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.787.0.tgz",
- "integrity": "sha512-xk03q1xpKNHgbuo+trEf1dFrI239kuMmjKKsqLEsHlAZbuFq4yRGMlHBrVMnKYOPBhVFDS/VineM991XI52fKg==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.796.0.tgz",
+ "integrity": "sha512-jJ8a0ldWtXh/ice7nldUjTqja7KYlSYk1pwfIIvJLIqEn2SvQHK/pyCINTmmOmFAWXMKBQBeWUMxo1pPYNytzQ==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/core": "3.796.0",
"@aws-sdk/middleware-host-header": "3.775.0",
"@aws-sdk/middleware-logger": "3.775.0",
"@aws-sdk/middleware-recursion-detection": "3.775.0",
- "@aws-sdk/middleware-user-agent": "3.787.0",
+ "@aws-sdk/middleware-user-agent": "3.796.0",
"@aws-sdk/region-config-resolver": "3.775.0",
"@aws-sdk/types": "3.775.0",
"@aws-sdk/util-endpoints": "3.787.0",
"@aws-sdk/util-user-agent-browser": "3.775.0",
- "@aws-sdk/util-user-agent-node": "3.787.0",
+ "@aws-sdk/util-user-agent-node": "3.796.0",
"@smithy/config-resolver": "^4.1.0",
"@smithy/core": "^3.2.0",
"@smithy/fetch-http-handler": "^5.0.2",
@@ -1333,15 +1335,15 @@
}
},
"node_modules/@aws-sdk/signature-v4-multi-region": {
- "version": "3.775.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.775.0.tgz",
- "integrity": "sha512-cnGk8GDfTMJ8p7+qSk92QlIk2bmTmFJqhYxcXZ9PysjZtx0xmfCMxnG3Hjy1oU2mt5boPCVSOptqtWixayM17g==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.796.0.tgz",
+ "integrity": "sha512-JAOLdvazTc9HlTFslSrIOrKRMuOruuM3FeGw0hyfLP/RIbjd9bqe/xLIzDSJr3wpCpJs0sXoofwJgXtgTipvjA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-sdk-s3": "3.775.0",
+ "@aws-sdk/middleware-sdk-s3": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/protocol-http": "^5.1.0",
- "@smithy/signature-v4": "^5.0.2",
+ "@smithy/signature-v4": "^5.1.0",
"@smithy/types": "^4.2.0",
"tslib": "^2.6.2"
},
@@ -1350,12 +1352,12 @@
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.787.0.tgz",
- "integrity": "sha512-d7/NIqxq308Zg0RPMNrmn0QvzniL4Hx8Qdwzr6YZWLYAbUSvZYS2ppLR3BFWSkV6SsTJUx8BuDaj3P8vttkrog==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.796.0.tgz",
+ "integrity": "sha512-Sxr/EqJBxOwLsXHv8C91N/Aao8Rgjn5bcpzplrTZ7wrfDrzqQfSCvjh7apCxdLYMKPBV+an75blCAd7JD4/bAg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/nested-clients": "3.787.0",
+ "@aws-sdk/nested-clients": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/property-provider": "^4.0.2",
"@smithy/shared-ini-file-loader": "^4.0.2",
@@ -1431,12 +1433,12 @@
}
},
"node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.787.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.787.0.tgz",
- "integrity": "sha512-mG7Lz8ydfG4SF9e8WSXiPQ/Lsn3n8A5B5jtPROidafi06I3ckV2WxyMLdwG14m919NoS6IOfWHyRGSqWIwbVKA==",
+ "version": "3.796.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.796.0.tgz",
+ "integrity": "sha512-9fQpNcHgVFitf1tbTT8V1xGRoRHSmOAWjrhevo6Tc0WoINMAKz+4JNqfVGWRE5Tmtpq0oHKo1RmvxXQQtJYciA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-user-agent": "3.787.0",
+ "@aws-sdk/middleware-user-agent": "3.796.0",
"@aws-sdk/types": "3.775.0",
"@smithy/node-config-provider": "^4.0.2",
"@smithy/types": "^4.2.0",
@@ -3321,9 +3323,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
- "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz",
+ "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==",
"cpu": [
"ppc64"
],
@@ -3338,9 +3340,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
- "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz",
+ "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==",
"cpu": [
"arm"
],
@@ -3355,9 +3357,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
- "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz",
+ "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==",
"cpu": [
"arm64"
],
@@ -3372,9 +3374,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
- "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz",
+ "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==",
"cpu": [
"x64"
],
@@ -3389,9 +3391,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
- "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz",
+ "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==",
"cpu": [
"arm64"
],
@@ -3406,9 +3408,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
- "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz",
+ "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==",
"cpu": [
"x64"
],
@@ -3423,9 +3425,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
- "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz",
+ "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==",
"cpu": [
"arm64"
],
@@ -3440,9 +3442,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
- "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz",
+ "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==",
"cpu": [
"x64"
],
@@ -3457,9 +3459,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
- "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz",
+ "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==",
"cpu": [
"arm"
],
@@ -3474,9 +3476,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
- "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz",
+ "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==",
"cpu": [
"arm64"
],
@@ -3491,9 +3493,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
- "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz",
+ "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==",
"cpu": [
"ia32"
],
@@ -3508,9 +3510,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
- "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz",
+ "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==",
"cpu": [
"loong64"
],
@@ -3525,9 +3527,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
- "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz",
+ "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==",
"cpu": [
"mips64el"
],
@@ -3542,9 +3544,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
- "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz",
+ "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==",
"cpu": [
"ppc64"
],
@@ -3559,9 +3561,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
- "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz",
+ "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==",
"cpu": [
"riscv64"
],
@@ -3576,9 +3578,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
- "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz",
+ "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==",
"cpu": [
"s390x"
],
@@ -3593,9 +3595,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
- "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz",
+ "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==",
"cpu": [
"x64"
],
@@ -3610,9 +3612,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
- "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz",
+ "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==",
"cpu": [
"arm64"
],
@@ -3627,9 +3629,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
- "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz",
+ "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==",
"cpu": [
"x64"
],
@@ -3644,9 +3646,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
- "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz",
+ "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==",
"cpu": [
"arm64"
],
@@ -3661,9 +3663,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
- "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz",
+ "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==",
"cpu": [
"x64"
],
@@ -3678,9 +3680,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
- "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz",
+ "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==",
"cpu": [
"x64"
],
@@ -3695,9 +3697,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
- "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz",
+ "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==",
"cpu": [
"arm64"
],
@@ -3712,9 +3714,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
- "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz",
+ "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==",
"cpu": [
"ia32"
],
@@ -3729,9 +3731,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
- "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz",
+ "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==",
"cpu": [
"x64"
],
@@ -8007,9 +8009,9 @@
}
},
"node_modules/@smithy/signature-v4": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.0.2.tgz",
- "integrity": "sha512-Mz+mc7okA73Lyz8zQKJNyr7lIcHLiPYp0+oiqiMNc/t7/Kf2BENs5d63pEj7oPqdjaum6g0Fc8wC78dY1TgtXw==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.0.tgz",
+ "integrity": "sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/is-array-buffer": "^4.0.0",
@@ -8614,9 +8616,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "22.14.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz",
- "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==",
+ "version": "22.15.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.1.tgz",
+ "integrity": "sha512-gSZyd0Qmv7qvbd2fJ9HGdYmv1yhNdelIA4YOtN6vkcmSwFhthxSEsBgU/JYZcXjWT6DFzoATcHrc52Ckh8SeRA==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
@@ -11072,9 +11074,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.140",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.140.tgz",
- "integrity": "sha512-o82Rj+ONp4Ip7Cl1r7lrqx/pXhbp/lh9DpKcMNscFJdh8ebyRofnc7Sh01B4jx403RI0oqTBvlZ7OBIZLMr2+Q==",
+ "version": "1.5.142",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.142.tgz",
+ "integrity": "sha512-Ah2HgkTu/9RhTDNThBtzu2Wirdy4DC9b0sMT1pUhbkZQ5U/iwmE+PHZX1MpjD5IkJCc2wSghgGG/B04szAx07w==",
"dev": true,
"license": "ISC"
},
@@ -11179,9 +11181,9 @@
"license": "MIT"
},
"node_modules/esbuild": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
- "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz",
+ "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -11192,31 +11194,31 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.25.2",
- "@esbuild/android-arm": "0.25.2",
- "@esbuild/android-arm64": "0.25.2",
- "@esbuild/android-x64": "0.25.2",
- "@esbuild/darwin-arm64": "0.25.2",
- "@esbuild/darwin-x64": "0.25.2",
- "@esbuild/freebsd-arm64": "0.25.2",
- "@esbuild/freebsd-x64": "0.25.2",
- "@esbuild/linux-arm": "0.25.2",
- "@esbuild/linux-arm64": "0.25.2",
- "@esbuild/linux-ia32": "0.25.2",
- "@esbuild/linux-loong64": "0.25.2",
- "@esbuild/linux-mips64el": "0.25.2",
- "@esbuild/linux-ppc64": "0.25.2",
- "@esbuild/linux-riscv64": "0.25.2",
- "@esbuild/linux-s390x": "0.25.2",
- "@esbuild/linux-x64": "0.25.2",
- "@esbuild/netbsd-arm64": "0.25.2",
- "@esbuild/netbsd-x64": "0.25.2",
- "@esbuild/openbsd-arm64": "0.25.2",
- "@esbuild/openbsd-x64": "0.25.2",
- "@esbuild/sunos-x64": "0.25.2",
- "@esbuild/win32-arm64": "0.25.2",
- "@esbuild/win32-ia32": "0.25.2",
- "@esbuild/win32-x64": "0.25.2"
+ "@esbuild/aix-ppc64": "0.25.3",
+ "@esbuild/android-arm": "0.25.3",
+ "@esbuild/android-arm64": "0.25.3",
+ "@esbuild/android-x64": "0.25.3",
+ "@esbuild/darwin-arm64": "0.25.3",
+ "@esbuild/darwin-x64": "0.25.3",
+ "@esbuild/freebsd-arm64": "0.25.3",
+ "@esbuild/freebsd-x64": "0.25.3",
+ "@esbuild/linux-arm": "0.25.3",
+ "@esbuild/linux-arm64": "0.25.3",
+ "@esbuild/linux-ia32": "0.25.3",
+ "@esbuild/linux-loong64": "0.25.3",
+ "@esbuild/linux-mips64el": "0.25.3",
+ "@esbuild/linux-ppc64": "0.25.3",
+ "@esbuild/linux-riscv64": "0.25.3",
+ "@esbuild/linux-s390x": "0.25.3",
+ "@esbuild/linux-x64": "0.25.3",
+ "@esbuild/netbsd-arm64": "0.25.3",
+ "@esbuild/netbsd-x64": "0.25.3",
+ "@esbuild/openbsd-arm64": "0.25.3",
+ "@esbuild/openbsd-x64": "0.25.3",
+ "@esbuild/sunos-x64": "0.25.3",
+ "@esbuild/win32-arm64": "0.25.3",
+ "@esbuild/win32-ia32": "0.25.3",
+ "@esbuild/win32-x64": "0.25.3"
}
},
"node_modules/escalade": {
@@ -13680,9 +13682,9 @@
}
},
"node_modules/mapbox-gl": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.11.0.tgz",
- "integrity": "sha512-0bJoYMgwn/z0RSJH7j/kYq3xlTX8Vt4dBkWAKJFneB49PAiq+rAAZRAeUhMxCr8PoGLRaDBagF3fTsA/WK6Q4A==",
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.11.1.tgz",
+ "integrity": "sha512-OcXSBQU+q50YH7zVzsfOgCMSgYD1tyN3kObwsxnLEBOeceIFg46Yp+/I2AUhIGsq8VufgfeGzWKipPow/M7gww==",
"license": "SEE LICENSE IN LICENSE.txt",
"workspaces": [
"src/style-spec",
@@ -13980,9 +13982,9 @@
}
},
"node_modules/mongodb": {
- "version": "6.16.0",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.16.0.tgz",
- "integrity": "sha512-D1PNcdT0y4Grhou5Zi/qgipZOYeWrhLEpk33n3nm6LGtz61jvO88WlrWCK/bigMjpnOdAUKKQwsGIl0NtWMyYw==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz",
+ "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==",
"license": "Apache-2.0",
"dependencies": {
"@mongodb-js/saslprep": "^1.1.9",
@@ -14036,9 +14038,9 @@
}
},
"node_modules/mongoose": {
- "version": "8.13.2",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.13.2.tgz",
- "integrity": "sha512-riCBqZmNkYBWjXpM3qWLDQw7QmTKsVZDPhLXFJqC87+OjocEVpvS3dA2BPPUiLAu+m0/QmEj5pSXKhH+/DgerQ==",
+ "version": "8.13.3",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.13.3.tgz",
+ "integrity": "sha512-85S6AOABJcgn77ZKFZKOQkWID69vvtv0YFOk+mMOUrq/7+ziIyybWGZSGQRxN9M41Ehe6a9ug41nV13uJFB9Pw==",
"license": "MIT",
"dependencies": {
"bson": "^6.10.3",
@@ -14057,52 +14059,6 @@
"url": "https://opencollective.com/mongoose"
}
},
- "node_modules/mongoose/node_modules/mongodb": {
- "version": "6.15.0",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz",
- "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@mongodb-js/saslprep": "^1.1.9",
- "bson": "^6.10.3",
- "mongodb-connection-string-url": "^3.0.0"
- },
- "engines": {
- "node": ">=16.20.1"
- },
- "peerDependencies": {
- "@aws-sdk/credential-providers": "^3.188.0",
- "@mongodb-js/zstd": "^1.1.0 || ^2.0.0",
- "gcp-metadata": "^5.2.0",
- "kerberos": "^2.0.1",
- "mongodb-client-encryption": ">=6.0.0 <7",
- "snappy": "^7.2.2",
- "socks": "^2.7.1"
- },
- "peerDependenciesMeta": {
- "@aws-sdk/credential-providers": {
- "optional": true
- },
- "@mongodb-js/zstd": {
- "optional": true
- },
- "gcp-metadata": {
- "optional": true
- },
- "kerberos": {
- "optional": true
- },
- "mongodb-client-encryption": {
- "optional": true
- },
- "snappy": {
- "optional": true
- },
- "socks": {
- "optional": true
- }
- }
- },
"node_modules/mpath": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
@@ -15603,9 +15559,9 @@
}
},
"node_modules/react-router": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.5.1.tgz",
- "integrity": "sha512-/jjU3fcYNd2bwz9Q0xt5TwyiyoO8XjSEFXJY4O/lMAlkGTHWuHRAbR9Etik+lSDqMC7A7mz3UlXzgYT6Vl58sA==",
+ "version": "7.5.2",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.5.2.tgz",
+ "integrity": "sha512-9Rw8r199klMnlGZ8VAsV/I8WrIF6IyJ90JQUdboupx1cdkgYqwnrYjH+I/nY/7cA1X5zia4mDJqH36npP7sxGQ==",
"license": "MIT",
"dependencies": {
"cookie": "^1.0.1",
@@ -15626,12 +15582,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.5.1.tgz",
- "integrity": "sha512-5DPSPc7ENrt2tlKPq0FtpG80ZbqA9aIKEyqX6hSNJDlol/tr6iqCK4crqdsusmOSSotq6zDsn0y3urX9TuTNmA==",
+ "version": "7.5.2",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.5.2.tgz",
+ "integrity": "sha512-yk1XW8Fj7gK7flpYBXF3yzd2NbX6P7Kxjvs2b5nu1M04rb5pg/Zc4fGdBNTeT4eDYL2bvzWNyKaIMJX/RKHTTg==",
"license": "MIT",
"dependencies": {
- "react-router": "7.5.1"
+ "react-router": "7.5.2"
},
"engines": {
"node": ">=20.0.0"
@@ -17571,26 +17527,26 @@
}
},
"node_modules/turbo": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.5.0.tgz",
- "integrity": "sha512-PvSRruOsitjy6qdqwIIyolv99+fEn57gP6gn4zhsHTEcCYgXPhv6BAxzAjleS8XKpo+Y582vTTA9nuqYDmbRuA==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.5.1.tgz",
+ "integrity": "sha512-LT0wYyT+HY4StvmGMq1k2tHCIwauaWSXwyP+tCUked9vja5xEisW8b8NIJGi9BWH5HYH9Og1DysaQFTf8BiydQ==",
"license": "MIT",
"bin": {
"turbo": "bin/turbo"
},
"optionalDependencies": {
- "turbo-darwin-64": "2.5.0",
- "turbo-darwin-arm64": "2.5.0",
- "turbo-linux-64": "2.5.0",
- "turbo-linux-arm64": "2.5.0",
- "turbo-windows-64": "2.5.0",
- "turbo-windows-arm64": "2.5.0"
+ "turbo-darwin-64": "2.5.1",
+ "turbo-darwin-arm64": "2.5.1",
+ "turbo-linux-64": "2.5.1",
+ "turbo-linux-arm64": "2.5.1",
+ "turbo-windows-64": "2.5.1",
+ "turbo-windows-arm64": "2.5.1"
}
},
"node_modules/turbo-darwin-64": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.5.0.tgz",
- "integrity": "sha512-fP1hhI9zY8hv0idym3hAaXdPi80TLovmGmgZFocVAykFtOxF+GlfIgM/l4iLAV9ObIO4SUXPVWHeBZQQ+Hpjag==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.5.1.tgz",
+ "integrity": "sha512-U9lT1rZ20PQjEYDiNE0aZrU6K+StAE8rood9xn3pV1w+CSby56HkdR2AffzMdFf8iPTeZfcY1qL62rDcCeRPTw==",
"cpu": [
"x64"
],
@@ -17601,9 +17557,9 @@
]
},
"node_modules/turbo-darwin-arm64": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.5.0.tgz",
- "integrity": "sha512-p9sYq7kXH7qeJwIQE86cOWv/xNqvow846l6c/qWc26Ib1ci5W7V0sI5thsrP3eH+VA0d+SHalTKg5SQXgNQBWA==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.5.1.tgz",
+ "integrity": "sha512-1Mp0LeP9JENqHnurGNyD557sndPt2BYUbgzUX87tYIdu/26dHyqlobiRzPpEfkOGB/sV4exhJUJGXB1h72szLQ==",
"cpu": [
"arm64"
],
@@ -17614,9 +17570,9 @@
]
},
"node_modules/turbo-linux-64": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.5.0.tgz",
- "integrity": "sha512-1iEln2GWiF3iPPPS1HQJT6ZCFXynJPd89gs9SkggH2EJsj3eRUSVMmMC8y6d7bBbhBFsiGGazwFIYrI12zs6uQ==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.5.1.tgz",
+ "integrity": "sha512-Cl2yKumJQAlNG5UA7vjCU6SPBLrcKaGhOjTaUjGHeD9WLL8vh4FwOlhOD2wk7zCUlhpJaM73WHY+oOZGMqmzOg==",
"cpu": [
"x64"
],
@@ -17627,9 +17583,9 @@
]
},
"node_modules/turbo-linux-arm64": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.5.0.tgz",
- "integrity": "sha512-bKBcbvuQHmsX116KcxHJuAcppiiBOfivOObh2O5aXNER6mce7YDDQJy00xQQNp1DhEfcSV2uOsvb3O3nN2cbcA==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.5.1.tgz",
+ "integrity": "sha512-OFpb/9YZJG8v3nttD4K5dxW3bwsZp++oxAykpYsPhp552EX6r+dJrt2dzX3C0azls2JLf/UzTpA83fRoM8mC4g==",
"cpu": [
"arm64"
],
@@ -17646,9 +17602,9 @@
"license": "ISC"
},
"node_modules/turbo-windows-64": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.5.0.tgz",
- "integrity": "sha512-9BCo8oQ7BO7J0K913Czbc3tw8QwLqn2nTe4E47k6aVYkM12ASTScweXPTuaPFP5iYXAT6z5Dsniw704Ixa5eGg==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.5.1.tgz",
+ "integrity": "sha512-6XnfSxE8xPETVAlAwfMqCuVuZbq9gXTj8H/Eggv/i3Tjoh2l5xMVTOmg3/zV4RlDtTcwhnvXgXx8LEXrSRZmQQ==",
"cpu": [
"x64"
],
@@ -17659,9 +17615,9 @@
]
},
"node_modules/turbo-windows-arm64": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.5.0.tgz",
- "integrity": "sha512-OUHCV+ueXa3UzfZ4co/ueIHgeq9B2K48pZwIxKSm5VaLVuv8M13MhM7unukW09g++dpdrrE1w4IOVgxKZ0/exg==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.5.1.tgz",
+ "integrity": "sha512-Nc9abxTCpRL8ejzzIm5j6jze3jFi23ZtU83Fwz2N9StquYHGEi72isyeCkrhzCiUvZZEPlFyFaXOSShcJUK58Q==",
"cpu": [
"arm64"
],
diff --git a/package.json b/package.json
index ce3099bf9..f15fee098 100644
--- a/package.json
+++ b/package.json
@@ -18,9 +18,11 @@
"packages/*"
],
"dependencies": {
+ "@radix-ui/themes": "^3.2.1",
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
"patch-package": "^8.0.0",
"prettier": "^3.5.3",
+ "radix-ui": "^1.2.0",
"react-select": "^5.10.0",
"turbo": "^2.4.4"
},