diff --git a/apps/backend/src/bootstrap/graphql/generated/persistedOperations.ts b/apps/backend/src/bootstrap/graphql/generated/persistedOperations.ts index 2a2b4d8713..3f3216f4bf 100644 --- a/apps/backend/src/bootstrap/graphql/generated/persistedOperations.ts +++ b/apps/backend/src/bootstrap/graphql/generated/persistedOperations.ts @@ -38,6 +38,12 @@ export const persistedOperations: Readonly> = variableNames: ["id"], sources: ["apps/ag-frontend/src/lib/api/schedules.ts"], }, + "0947346159f700418bcbf835c87d77ddcf9506783701f3b686c5289718d6e7c6": { + operationName: "UpdateUser", + document: "mutation UpdateUser($user:UpdateUserInput!){updateUser(user:$user){_id name email student notificationsOn majors minors monitoredClasses{notified class{title subject courseNumber number year semester __typename}__typename}__typename}}", + variableNames: ["user"], + sources: ["apps/frontend/src/lib/api/users.ts"], + }, "09dc33a0472806c01a473e16bce469e7060e09060c9185d312d83e16fdabe9a1": { operationName: "UpdateTargetedMessage", document: "mutation UpdateTargetedMessage($messageId:ID!$input:UpdateTargetedMessageInput!){updateTargetedMessage(messageId:$messageId input:$input){id title description link linkText visible persistent reappearing clickCount dismissCount currentVersion targetCourses{courseId subject courseNumber __typename}createdAt updatedAt __typename}}", @@ -230,12 +236,6 @@ export const persistedOperations: Readonly> = variableNames: ["subject","number","includeFormerNames"], sources: ["apps/frontend/src/lib/api/courses.ts"], }, - "3179d1aecde57f2f023099dd2b1de9ed7c81cd0746da4ea81e948c430eb585f3": { - operationName: "UpdateUser", - document: "mutation UpdateUser($user:UpdateUserInput!){updateUser(user:$user){_id name email student notificationsOn monitoredClasses{notified class{title subject courseNumber number year semester __typename}__typename}__typename}}", - variableNames: ["user"], - sources: ["apps/frontend/src/lib/api/users.ts"], - }, "322753122a2b1228f6eb1df6b57b5629a41f94e05d771acb01ac32086d1b8511": { operationName: "DeletePod", document: "mutation DeletePod($podId:ID!){deletePod(podId:$podId)}", @@ -374,12 +374,6 @@ export const persistedOperations: Readonly> = variableNames: ["input"], sources: ["apps/staff-frontend/src/lib/api/targeted-message.ts"], }, - "5b1db8b7fea7b401c4e3a7d268135a09027d85ce43a68f80b1194e2e0fc1b52f": { - operationName: "GetUser", - document: "query GetUser{user{_id email name student notificationsOn monitoredClasses{notified class{title subject courseNumber number year semester __typename}__typename}__typename}}", - variableNames: [], - sources: ["apps/frontend/src/lib/api/users.ts"], - }, "5d1675146672fd8912c17991d416c8bf8049f01feec299335ba1905ce5481c76": { operationName: "UpdateCuratedClass", document: "mutation UpdateCuratedClass($id:ID!$curatedClass:UpdateCuratedClassInput!){updateCuratedClass(id:$id curatedClass:$curatedClass){_id text image subject courseNumber number semester year sessionId publishedAt createdAt updatedAt class{number sessionId title unitsMax unitsMin finalExam gradingBasis primarySection{component online instructionMode attendanceRequired lecturesRecorded enrollment{latest{status enrolledCount maxEnroll waitlistedCount maxWaitlist __typename}__typename}meetings{days __typename}__typename}course{subject number title gradeDistribution{average __typename}academicCareer __typename}__typename}__typename}}", @@ -584,6 +578,12 @@ export const persistedOperations: Readonly> = variableNames: ["subject","courseNumber","semester","year","classNumber"], sources: ["apps/ag-frontend/src/lib/api/ratings.ts","apps/frontend/src/lib/api/ratings.ts"], }, + "9acaa58b959c2b3d035f5bb7195240d25c724cd629bdf426e46c066d148705a8": { + operationName: "GetUser", + document: "query GetUser{user{_id email name student notificationsOn majors minors monitoredClasses{notified class{title subject courseNumber number year semester __typename}__typename}__typename}}", + variableNames: [], + sources: ["apps/frontend/src/lib/api/users.ts"], + }, "9d64fb0136d28325822a321e61969fbd9bf8387ec1e5a8df4c9416557c5c085f": { operationName: "CreateNewPlan", document: "mutation CreateNewPlan($colleges:[Colleges!]!$startYear:Int!$endYear:Int!$majors:[String!]!$minors:[String!]!){createNewPlan(colleges:$colleges startYear:$startYear endYear:$endYear majors:$majors minors:$minors){_id planTerms{_id name year term courses{courseID courseName courseTitle courseUnits pnp transfer labels{name color __typename}__typename}hidden status pinned __typename}majors minors colleges labels{name color __typename}__typename}}", diff --git a/apps/backend/src/modules/user/controller.ts b/apps/backend/src/modules/user/controller.ts index 8b6d591582..87437dc6ae 100644 --- a/apps/backend/src/modules/user/controller.ts +++ b/apps/backend/src/modules/user/controller.ts @@ -1,3 +1,6 @@ +import { GraphQLError } from "graphql"; + +import { VALID_MAJORS, VALID_MINORS } from "@repo/common/lib/degreePrograms"; import { AggregatedMetricsModel, CollectionModel, @@ -25,6 +28,20 @@ export const getUser = async (context: RequestContext) => { return formatUser(user); }; +const validateDegrees = ( + values: readonly string[], + vocabulary: ReadonlySet, + field: string +) => { + for (const value of values) { + if (!vocabulary.has(value)) { + throw new GraphQLError(`Invalid ${field}: "${value}"`, { + extensions: { code: "BAD_USER_INPUT" }, + }); + } + } +}; + export const updateUser = async ( context: RequestContext, user: UpdateUserInput @@ -35,6 +52,14 @@ export const updateUser = async ( const existingUser = await UserModel.findById(userId); if (!existingUser) throw new Error("Not found"); + if (user.majors != null) { + validateDegrees(user.majors, VALID_MAJORS, "major"); + } + + if (user.minors != null) { + validateDegrees(user.minors, VALID_MINORS, "minor"); + } + const { monitoredClasses, ...rest } = user; const update: Record = { ...rest }; diff --git a/apps/frontend/src/app/GradTrak/Dashboard/EditPlanDialog.tsx b/apps/frontend/src/app/GradTrak/Dashboard/EditPlanDialog.tsx index 048d3f82df..d468e90e3f 100644 --- a/apps/frontend/src/app/GradTrak/Dashboard/EditPlanDialog.tsx +++ b/apps/frontend/src/app/GradTrak/Dashboard/EditPlanDialog.tsx @@ -2,6 +2,7 @@ import { useEffect, useState } from "react"; import { Xmark } from "iconoir-react"; +import { DEGREE_PROGRAMS as DEGREES } from "@repo/common/lib/degreePrograms"; import { Button, Dialog, Flex, Select, Text } from "@repo/theme"; import MajorSearch from "@/components/MajorSearch"; @@ -12,7 +13,6 @@ import { Colleges, PlanInput } from "@/lib/generated/graphql"; import collegesData from "../Onboarding/AddColleges/colleges.json"; import { DegreeOption } from "../types"; import styles from "./EditPlanDialog.module.scss"; -import DEGREES from "./degree-programs-types.json"; type CollegeOption = { label: string; diff --git a/apps/frontend/src/app/GradTrak/Dashboard/degree-programs-types.json b/apps/frontend/src/app/GradTrak/Dashboard/degree-programs-types.json deleted file mode 100644 index 21e9cf3297..0000000000 --- a/apps/frontend/src/app/GradTrak/Dashboard/degree-programs-types.json +++ /dev/null @@ -1 +0,0 @@ -{"all":["Aerospace Engineering","Aerospace Engineering and Business Administration","African American Studies","American Studies","Analytics","Ancient Greek and Roman Studies","Anthropology","Applied Language Studies","Applied Mathematics","Arabic","Architecture","Armenian Studies","Art History","Art Practice","Asian American and Asian Diaspora Studies","Astrophysics","Atmospheric Science","Bioengineering","Bioengineering and Business Administration","Bioengineering/Materials Science and Engineering Joint Major","Buddhist Studies","Business Administration","Celtic Studies","Chemical Biology","Chemical Engineering","Chemical Engineering / Materials Science & Engineering Joint Major","Chemical Engineering / Nuclear Engineering Joint Major","Chemistry","Chicanx Latinx Studies","Chinese Language","City Planning","Civil Engineering","Civil Engineering and Business Administration","Climate Science","Cognitive Science","Comparative Literature","Computer Science","Conservation and Resource Studies","Course Threads","Creative Writing","Dance and Performance Studies","Data Science","Demography","Digital Humanities","Disability Studies","Dutch Studies","EECS & Business Administration","EECS / Materials Science & Engineering Joint Major","EECS / Nuclear Engineering Joint Major","Earth and Planetary Science","East Asian Humanities","East Asian Religion, Thought and Culture","East European/Eurasian Languages and/or Cultures","Economics","Ecosystem Management and Forestry","Education","Electrical Engineering & Computer Sciences (EECS)","Electronic Intelligent Systems","Energy Engineering","Energy and Resources","Engineering Mathematics and Statistics","Engineering Physics","English","Entrepreneurship & Technology","Environmental Design & Urbanism in Developing Countries","Environmental Earth Science","Environmental Economics and Policy","Environmental Engineering","Environmental Engineering Science","Environmental Sciences","Ethnic Studies","Film & Media","Food Systems","French","Gender and Women's Studies","Genetics and Plant Biology","Geography","Geology","Geophysics","Geospatial Information Science and Technology","Geotechnical Engineering","German","Global Poverty and Practice","Global Studies","Greek","Greek and Latin","Health and Wellness","Hebrew","Hispanic Languages, Linguistics, and Bilingualism","History","History of the Built Environment","Human Rights Interdisciplinary","Industrial Engineering & Operations Research","Industrial Engineering & Operations Research & Business Administration","Integrative Biology","Interdisciplinary Studies","Israel Studies","Italian Studies","Japanese Language","Jewish Studies","Journalism","Korean Language","Landscape Architecture","Latin","Legal Studies","Lesbian, Gay, Bisexual, & Transgender Studies","Life Sciences, Business, and Entrepreneurship","Linguistics","Logic","Marine Science","Materials Science & Engineering","Materials Science & Engineering / Mechanical Engineering Joint Major","Materials Science & Engineering / Nuclear Engineering Joint Major","Materials Science & Engineering and Business Administration","Mathematics","Mechanical Engineering","Mechanical Engineering & Business Administration","Mechanical Engineering / Nuclear Engineering","Media Studies","Medieval Studies","Microbial Biology","Middle Eastern Languages & Cultures","Molecular Environmental Biology","Molecular and Cell Biology","Music","Native American Studies","Neuroscience","New Media","Nuclear Engineering","Nutritional & Metabolic Biology","Nutritional Sciences: Physiology & Metabolism","Nutritional Sciences: Toxicology","Persian","Philosophy","Physics","Planetary Science","Political Economy","Political Science","Politics, Philosophy, and Law","Portuguese Language, Lit, & Cultures","Pre-Med / Pre-Health","Prelaw Information","Professional Accountancy","Psychology","Public Health","Public Policy","Race and the Law","Rhetoric","Russian Culture","Russian Language","Russian Literature","Scandinavian","Science and Math Education","Science, Technology, and Society","Slavic Languages and Literatures","Social & Cultural Factors in Environmental Design","Social Welfare","Society and Environment","Sociology","South and Southeast Asian Studies","Spanish Languages, Literatures, & Cultures","Spanish and Portuguese","Statistics","Structural Engineering","Sustainable Business and Policy","Sustainable Design","Sustainable Environmental Design","Teaching English to Multilingual Students","Theater and Performance Studies","Tibetan","Turkish","Urban Studies"],"certificates":["Course Threads","Energy and Resources","Entrepreneurship & Technology","Film & Media","New Media","Professional Accountancy","Psychology","Public Health","Race and the Law"],"majors":["Aerospace Engineering","African American Studies","American Studies","Analytics","Ancient Greek and Roman Studies","Anthropology","Applied Mathematics","Architecture","Art History","Art Practice","Asian American and Asian Diaspora Studies","Astrophysics","Atmospheric Science","Bioengineering","Bioengineering and Business Administration","Bioengineering/Materials Science and Engineering Joint Major","Business Administration","Celtic Studies","Chemical Biology","Chemical Engineering","Chemical Engineering / Materials Science & Engineering Joint Major","Chemical Engineering / Nuclear Engineering Joint Major","Chemistry","Chicanx Latinx Studies","Chinese Language","Civil Engineering","Civil Engineering and Business Administration","Cognitive Science","Comparative Literature","Computer Science","Conservation and Resource Studies","Dance and Performance Studies","Data Science","Dutch Studies","EECS & Business Administration","EECS / Materials Science & Engineering Joint Major","EECS / Nuclear Engineering Joint Major","East Asian Humanities","East Asian Religion, Thought and Culture","East European/Eurasian Languages and/or Cultures","Economics","Ecosystem Management and Forestry","Education","Electrical Engineering & Computer Sciences (EECS)","Energy Engineering","Engineering Mathematics and Statistics","Engineering Physics","English","Environmental Earth Science","Environmental Economics and Policy","Environmental Engineering Science","Environmental Sciences","Ethnic Studies","Film & Media","French","Gender and Women's Studies","Genetics and Plant Biology","Geography","Geology","Geophysics","German","Global Studies","Greek","Greek and Latin","History","Industrial Engineering & Operations Research","Industrial Engineering & Operations Research & Business Administration","Integrative Biology","Interdisciplinary Studies","Italian Studies","Japanese Language","Landscape Architecture","Latin","Legal Studies","Linguistics","Marine Science","Materials Science & Engineering","Materials Science & Engineering / Mechanical Engineering Joint Major","Materials Science & Engineering / Nuclear Engineering Joint Major","Materials Science & Engineering and Business Administration","Mathematics","Mechanical Engineering","Mechanical Engineering & Business Administration","Mechanical Engineering / Nuclear Engineering","Media Studies","Microbial Biology","Middle Eastern Languages & Cultures","Molecular Environmental Biology","Molecular and Cell Biology","Music","Native American Studies","Neuroscience","Nuclear Engineering","Nutritional & Metabolic Biology","Nutritional Sciences: Physiology & Metabolism","Nutritional Sciences: Toxicology","Philosophy","Physics","Planetary Science","Political Economy","Political Science","Pre-Med / Pre-Health","Prelaw Information","Psychology","Public Health","Rhetoric","Scandinavian","Slavic Languages and Literatures","Social Welfare","Society and Environment","Sociology","South and Southeast Asian Studies","Spanish and Portuguese","Statistics","Sustainable Environmental Design","Theater and Performance Studies","Urban Studies"],"minors":["Aerospace Engineering","African American Studies","American Studies","Ancient Greek and Roman Studies","Anthropology","Applied Language Studies","Arabic","Architecture","Armenian Studies","Art History","Asian American and Asian Diaspora Studies","Astrophysics","Atmospheric Science","Bioengineering","Buddhist Studies","Celtic Studies","Chemical Engineering","Chemistry","Chicanx Latinx Studies","Chinese Language","City Planning","Climate Science","Comparative Literature","Computer Science","Conservation and Resource Studies","Creative Writing","Dance and Performance Studies","Data Science","Demography","Digital Humanities","Disability Studies","Dutch Studies","Earth and Planetary Science","East European/Eurasian Languages and/or Cultures","Ecosystem Management and Forestry","Education","Electrical Engineering & Computer Sciences (EECS)","Electronic Intelligent Systems","Energy Engineering","Energy and Resources","English","Environmental Design & Urbanism in Developing Countries","Environmental Earth Science","Environmental Economics and Policy","Environmental Engineering","Ethnic Studies","Food Systems","French","Gender and Women's Studies","Geography","Geology","Geophysics","Geospatial Information Science and Technology","Geotechnical Engineering","German","Global Poverty and Practice","Global Studies","Greek","Health and Wellness","Hebrew","Hispanic Languages, Linguistics, and Bilingualism","History","History of the Built Environment","Human Rights Interdisciplinary","Industrial Engineering & Operations Research","Israel Studies","Italian Studies","Japanese Language","Jewish Studies","Journalism","Korean Language","Landscape Architecture","Latin","Lesbian, Gay, Bisexual, & Transgender Studies","Linguistics","Logic","Marine Science","Materials Science & Engineering","Mathematics","Mechanical Engineering","Medieval Studies","Middle Eastern Languages & Cultures","Music","Native American Studies","Nuclear Engineering","Nutritional Sciences: Physiology & Metabolism","Persian","Philosophy","Physics","Planetary Science","Political Economy","Politics, Philosophy, and Law","Portuguese Language, Lit, & Cultures","Public Health","Public Policy","Race and the Law","Rhetoric","Russian Culture","Russian Language","Russian Literature","Scandinavian","Science and Math Education","Science, Technology, and Society","Social & Cultural Factors in Environmental Design","South and Southeast Asian Studies","Spanish Languages, Literatures, & Cultures","Statistics","Structural Engineering","Sustainable Business and Policy","Sustainable Design","Theater and Performance Studies","Tibetan","Turkish"],"simultaneousDegrees":["Aerospace Engineering and Business Administration","Bioengineering and Business Administration","Civil Engineering and Business Administration","EECS & Business Administration","Industrial Engineering & Operations Research & Business Administration","Life Sciences, Business, and Entrepreneurship","Materials Science & Engineering and Business Administration","Mechanical Engineering & Business Administration"],"summerMinors":["Chemical Engineering","Digital Humanities","Education","Energy and Resources","Journalism","Psychology","Public Health","Race and the Law","Teaching English to Multilingual Students"]} \ No newline at end of file diff --git a/apps/frontend/src/app/GradTrak/Onboarding/AddDegree/degree-programs-types.json b/apps/frontend/src/app/GradTrak/Onboarding/AddDegree/degree-programs-types.json deleted file mode 100644 index 21e9cf3297..0000000000 --- a/apps/frontend/src/app/GradTrak/Onboarding/AddDegree/degree-programs-types.json +++ /dev/null @@ -1 +0,0 @@ -{"all":["Aerospace Engineering","Aerospace Engineering and Business Administration","African American Studies","American Studies","Analytics","Ancient Greek and Roman Studies","Anthropology","Applied Language Studies","Applied Mathematics","Arabic","Architecture","Armenian Studies","Art History","Art Practice","Asian American and Asian Diaspora Studies","Astrophysics","Atmospheric Science","Bioengineering","Bioengineering and Business Administration","Bioengineering/Materials Science and Engineering Joint Major","Buddhist Studies","Business Administration","Celtic Studies","Chemical Biology","Chemical Engineering","Chemical Engineering / Materials Science & Engineering Joint Major","Chemical Engineering / Nuclear Engineering Joint Major","Chemistry","Chicanx Latinx Studies","Chinese Language","City Planning","Civil Engineering","Civil Engineering and Business Administration","Climate Science","Cognitive Science","Comparative Literature","Computer Science","Conservation and Resource Studies","Course Threads","Creative Writing","Dance and Performance Studies","Data Science","Demography","Digital Humanities","Disability Studies","Dutch Studies","EECS & Business Administration","EECS / Materials Science & Engineering Joint Major","EECS / Nuclear Engineering Joint Major","Earth and Planetary Science","East Asian Humanities","East Asian Religion, Thought and Culture","East European/Eurasian Languages and/or Cultures","Economics","Ecosystem Management and Forestry","Education","Electrical Engineering & Computer Sciences (EECS)","Electronic Intelligent Systems","Energy Engineering","Energy and Resources","Engineering Mathematics and Statistics","Engineering Physics","English","Entrepreneurship & Technology","Environmental Design & Urbanism in Developing Countries","Environmental Earth Science","Environmental Economics and Policy","Environmental Engineering","Environmental Engineering Science","Environmental Sciences","Ethnic Studies","Film & Media","Food Systems","French","Gender and Women's Studies","Genetics and Plant Biology","Geography","Geology","Geophysics","Geospatial Information Science and Technology","Geotechnical Engineering","German","Global Poverty and Practice","Global Studies","Greek","Greek and Latin","Health and Wellness","Hebrew","Hispanic Languages, Linguistics, and Bilingualism","History","History of the Built Environment","Human Rights Interdisciplinary","Industrial Engineering & Operations Research","Industrial Engineering & Operations Research & Business Administration","Integrative Biology","Interdisciplinary Studies","Israel Studies","Italian Studies","Japanese Language","Jewish Studies","Journalism","Korean Language","Landscape Architecture","Latin","Legal Studies","Lesbian, Gay, Bisexual, & Transgender Studies","Life Sciences, Business, and Entrepreneurship","Linguistics","Logic","Marine Science","Materials Science & Engineering","Materials Science & Engineering / Mechanical Engineering Joint Major","Materials Science & Engineering / Nuclear Engineering Joint Major","Materials Science & Engineering and Business Administration","Mathematics","Mechanical Engineering","Mechanical Engineering & Business Administration","Mechanical Engineering / Nuclear Engineering","Media Studies","Medieval Studies","Microbial Biology","Middle Eastern Languages & Cultures","Molecular Environmental Biology","Molecular and Cell Biology","Music","Native American Studies","Neuroscience","New Media","Nuclear Engineering","Nutritional & Metabolic Biology","Nutritional Sciences: Physiology & Metabolism","Nutritional Sciences: Toxicology","Persian","Philosophy","Physics","Planetary Science","Political Economy","Political Science","Politics, Philosophy, and Law","Portuguese Language, Lit, & Cultures","Pre-Med / Pre-Health","Prelaw Information","Professional Accountancy","Psychology","Public Health","Public Policy","Race and the Law","Rhetoric","Russian Culture","Russian Language","Russian Literature","Scandinavian","Science and Math Education","Science, Technology, and Society","Slavic Languages and Literatures","Social & Cultural Factors in Environmental Design","Social Welfare","Society and Environment","Sociology","South and Southeast Asian Studies","Spanish Languages, Literatures, & Cultures","Spanish and Portuguese","Statistics","Structural Engineering","Sustainable Business and Policy","Sustainable Design","Sustainable Environmental Design","Teaching English to Multilingual Students","Theater and Performance Studies","Tibetan","Turkish","Urban Studies"],"certificates":["Course Threads","Energy and Resources","Entrepreneurship & Technology","Film & Media","New Media","Professional Accountancy","Psychology","Public Health","Race and the Law"],"majors":["Aerospace Engineering","African American Studies","American Studies","Analytics","Ancient Greek and Roman Studies","Anthropology","Applied Mathematics","Architecture","Art History","Art Practice","Asian American and Asian Diaspora Studies","Astrophysics","Atmospheric Science","Bioengineering","Bioengineering and Business Administration","Bioengineering/Materials Science and Engineering Joint Major","Business Administration","Celtic Studies","Chemical Biology","Chemical Engineering","Chemical Engineering / Materials Science & Engineering Joint Major","Chemical Engineering / Nuclear Engineering Joint Major","Chemistry","Chicanx Latinx Studies","Chinese Language","Civil Engineering","Civil Engineering and Business Administration","Cognitive Science","Comparative Literature","Computer Science","Conservation and Resource Studies","Dance and Performance Studies","Data Science","Dutch Studies","EECS & Business Administration","EECS / Materials Science & Engineering Joint Major","EECS / Nuclear Engineering Joint Major","East Asian Humanities","East Asian Religion, Thought and Culture","East European/Eurasian Languages and/or Cultures","Economics","Ecosystem Management and Forestry","Education","Electrical Engineering & Computer Sciences (EECS)","Energy Engineering","Engineering Mathematics and Statistics","Engineering Physics","English","Environmental Earth Science","Environmental Economics and Policy","Environmental Engineering Science","Environmental Sciences","Ethnic Studies","Film & Media","French","Gender and Women's Studies","Genetics and Plant Biology","Geography","Geology","Geophysics","German","Global Studies","Greek","Greek and Latin","History","Industrial Engineering & Operations Research","Industrial Engineering & Operations Research & Business Administration","Integrative Biology","Interdisciplinary Studies","Italian Studies","Japanese Language","Landscape Architecture","Latin","Legal Studies","Linguistics","Marine Science","Materials Science & Engineering","Materials Science & Engineering / Mechanical Engineering Joint Major","Materials Science & Engineering / Nuclear Engineering Joint Major","Materials Science & Engineering and Business Administration","Mathematics","Mechanical Engineering","Mechanical Engineering & Business Administration","Mechanical Engineering / Nuclear Engineering","Media Studies","Microbial Biology","Middle Eastern Languages & Cultures","Molecular Environmental Biology","Molecular and Cell Biology","Music","Native American Studies","Neuroscience","Nuclear Engineering","Nutritional & Metabolic Biology","Nutritional Sciences: Physiology & Metabolism","Nutritional Sciences: Toxicology","Philosophy","Physics","Planetary Science","Political Economy","Political Science","Pre-Med / Pre-Health","Prelaw Information","Psychology","Public Health","Rhetoric","Scandinavian","Slavic Languages and Literatures","Social Welfare","Society and Environment","Sociology","South and Southeast Asian Studies","Spanish and Portuguese","Statistics","Sustainable Environmental Design","Theater and Performance Studies","Urban Studies"],"minors":["Aerospace Engineering","African American Studies","American Studies","Ancient Greek and Roman Studies","Anthropology","Applied Language Studies","Arabic","Architecture","Armenian Studies","Art History","Asian American and Asian Diaspora Studies","Astrophysics","Atmospheric Science","Bioengineering","Buddhist Studies","Celtic Studies","Chemical Engineering","Chemistry","Chicanx Latinx Studies","Chinese Language","City Planning","Climate Science","Comparative Literature","Computer Science","Conservation and Resource Studies","Creative Writing","Dance and Performance Studies","Data Science","Demography","Digital Humanities","Disability Studies","Dutch Studies","Earth and Planetary Science","East European/Eurasian Languages and/or Cultures","Ecosystem Management and Forestry","Education","Electrical Engineering & Computer Sciences (EECS)","Electronic Intelligent Systems","Energy Engineering","Energy and Resources","English","Environmental Design & Urbanism in Developing Countries","Environmental Earth Science","Environmental Economics and Policy","Environmental Engineering","Ethnic Studies","Food Systems","French","Gender and Women's Studies","Geography","Geology","Geophysics","Geospatial Information Science and Technology","Geotechnical Engineering","German","Global Poverty and Practice","Global Studies","Greek","Health and Wellness","Hebrew","Hispanic Languages, Linguistics, and Bilingualism","History","History of the Built Environment","Human Rights Interdisciplinary","Industrial Engineering & Operations Research","Israel Studies","Italian Studies","Japanese Language","Jewish Studies","Journalism","Korean Language","Landscape Architecture","Latin","Lesbian, Gay, Bisexual, & Transgender Studies","Linguistics","Logic","Marine Science","Materials Science & Engineering","Mathematics","Mechanical Engineering","Medieval Studies","Middle Eastern Languages & Cultures","Music","Native American Studies","Nuclear Engineering","Nutritional Sciences: Physiology & Metabolism","Persian","Philosophy","Physics","Planetary Science","Political Economy","Politics, Philosophy, and Law","Portuguese Language, Lit, & Cultures","Public Health","Public Policy","Race and the Law","Rhetoric","Russian Culture","Russian Language","Russian Literature","Scandinavian","Science and Math Education","Science, Technology, and Society","Social & Cultural Factors in Environmental Design","South and Southeast Asian Studies","Spanish Languages, Literatures, & Cultures","Statistics","Structural Engineering","Sustainable Business and Policy","Sustainable Design","Theater and Performance Studies","Tibetan","Turkish"],"simultaneousDegrees":["Aerospace Engineering and Business Administration","Bioengineering and Business Administration","Civil Engineering and Business Administration","EECS & Business Administration","Industrial Engineering & Operations Research & Business Administration","Life Sciences, Business, and Entrepreneurship","Materials Science & Engineering and Business Administration","Mechanical Engineering & Business Administration"],"summerMinors":["Chemical Engineering","Digital Humanities","Education","Energy and Resources","Journalism","Psychology","Public Health","Race and the Law","Teaching English to Multilingual Students"]} \ No newline at end of file diff --git a/apps/frontend/src/app/GradTrak/Onboarding/AddDegree/index.tsx b/apps/frontend/src/app/GradTrak/Onboarding/AddDegree/index.tsx index 702ce6a835..629b432d1d 100644 --- a/apps/frontend/src/app/GradTrak/Onboarding/AddDegree/index.tsx +++ b/apps/frontend/src/app/GradTrak/Onboarding/AddDegree/index.tsx @@ -2,6 +2,7 @@ import { useState } from "react"; import { Separator } from "@radix-ui/themes"; +import { DEGREE_PROGRAMS as DEGREES } from "@repo/common/lib/degreePrograms"; import { Box, Button, Container, Flex } from "@repo/theme"; import MajorSearch from "@/components/MajorSearch"; @@ -9,7 +10,6 @@ import MajorSearch from "@/components/MajorSearch"; import { DegreeOption } from "../../types"; import DotsIndicator from "../DotsIndicator"; import styles from "./AddDegree.module.scss"; -import DEGREES from "./degree-programs-types.json"; type AddDegreeProps = { isMajor: boolean; diff --git a/apps/frontend/src/components/MajorSearch/degree-programs-types.json b/apps/frontend/src/components/MajorSearch/degree-programs-types.json deleted file mode 100644 index 21e9cf3297..0000000000 --- a/apps/frontend/src/components/MajorSearch/degree-programs-types.json +++ /dev/null @@ -1 +0,0 @@ -{"all":["Aerospace Engineering","Aerospace Engineering and Business Administration","African American Studies","American Studies","Analytics","Ancient Greek and Roman Studies","Anthropology","Applied Language Studies","Applied Mathematics","Arabic","Architecture","Armenian Studies","Art History","Art Practice","Asian American and Asian Diaspora Studies","Astrophysics","Atmospheric Science","Bioengineering","Bioengineering and Business Administration","Bioengineering/Materials Science and Engineering Joint Major","Buddhist Studies","Business Administration","Celtic Studies","Chemical Biology","Chemical Engineering","Chemical Engineering / Materials Science & Engineering Joint Major","Chemical Engineering / Nuclear Engineering Joint Major","Chemistry","Chicanx Latinx Studies","Chinese Language","City Planning","Civil Engineering","Civil Engineering and Business Administration","Climate Science","Cognitive Science","Comparative Literature","Computer Science","Conservation and Resource Studies","Course Threads","Creative Writing","Dance and Performance Studies","Data Science","Demography","Digital Humanities","Disability Studies","Dutch Studies","EECS & Business Administration","EECS / Materials Science & Engineering Joint Major","EECS / Nuclear Engineering Joint Major","Earth and Planetary Science","East Asian Humanities","East Asian Religion, Thought and Culture","East European/Eurasian Languages and/or Cultures","Economics","Ecosystem Management and Forestry","Education","Electrical Engineering & Computer Sciences (EECS)","Electronic Intelligent Systems","Energy Engineering","Energy and Resources","Engineering Mathematics and Statistics","Engineering Physics","English","Entrepreneurship & Technology","Environmental Design & Urbanism in Developing Countries","Environmental Earth Science","Environmental Economics and Policy","Environmental Engineering","Environmental Engineering Science","Environmental Sciences","Ethnic Studies","Film & Media","Food Systems","French","Gender and Women's Studies","Genetics and Plant Biology","Geography","Geology","Geophysics","Geospatial Information Science and Technology","Geotechnical Engineering","German","Global Poverty and Practice","Global Studies","Greek","Greek and Latin","Health and Wellness","Hebrew","Hispanic Languages, Linguistics, and Bilingualism","History","History of the Built Environment","Human Rights Interdisciplinary","Industrial Engineering & Operations Research","Industrial Engineering & Operations Research & Business Administration","Integrative Biology","Interdisciplinary Studies","Israel Studies","Italian Studies","Japanese Language","Jewish Studies","Journalism","Korean Language","Landscape Architecture","Latin","Legal Studies","Lesbian, Gay, Bisexual, & Transgender Studies","Life Sciences, Business, and Entrepreneurship","Linguistics","Logic","Marine Science","Materials Science & Engineering","Materials Science & Engineering / Mechanical Engineering Joint Major","Materials Science & Engineering / Nuclear Engineering Joint Major","Materials Science & Engineering and Business Administration","Mathematics","Mechanical Engineering","Mechanical Engineering & Business Administration","Mechanical Engineering / Nuclear Engineering","Media Studies","Medieval Studies","Microbial Biology","Middle Eastern Languages & Cultures","Molecular Environmental Biology","Molecular and Cell Biology","Music","Native American Studies","Neuroscience","New Media","Nuclear Engineering","Nutritional & Metabolic Biology","Nutritional Sciences: Physiology & Metabolism","Nutritional Sciences: Toxicology","Persian","Philosophy","Physics","Planetary Science","Political Economy","Political Science","Politics, Philosophy, and Law","Portuguese Language, Lit, & Cultures","Pre-Med / Pre-Health","Prelaw Information","Professional Accountancy","Psychology","Public Health","Public Policy","Race and the Law","Rhetoric","Russian Culture","Russian Language","Russian Literature","Scandinavian","Science and Math Education","Science, Technology, and Society","Slavic Languages and Literatures","Social & Cultural Factors in Environmental Design","Social Welfare","Society and Environment","Sociology","South and Southeast Asian Studies","Spanish Languages, Literatures, & Cultures","Spanish and Portuguese","Statistics","Structural Engineering","Sustainable Business and Policy","Sustainable Design","Sustainable Environmental Design","Teaching English to Multilingual Students","Theater and Performance Studies","Tibetan","Turkish","Urban Studies"],"certificates":["Course Threads","Energy and Resources","Entrepreneurship & Technology","Film & Media","New Media","Professional Accountancy","Psychology","Public Health","Race and the Law"],"majors":["Aerospace Engineering","African American Studies","American Studies","Analytics","Ancient Greek and Roman Studies","Anthropology","Applied Mathematics","Architecture","Art History","Art Practice","Asian American and Asian Diaspora Studies","Astrophysics","Atmospheric Science","Bioengineering","Bioengineering and Business Administration","Bioengineering/Materials Science and Engineering Joint Major","Business Administration","Celtic Studies","Chemical Biology","Chemical Engineering","Chemical Engineering / Materials Science & Engineering Joint Major","Chemical Engineering / Nuclear Engineering Joint Major","Chemistry","Chicanx Latinx Studies","Chinese Language","Civil Engineering","Civil Engineering and Business Administration","Cognitive Science","Comparative Literature","Computer Science","Conservation and Resource Studies","Dance and Performance Studies","Data Science","Dutch Studies","EECS & Business Administration","EECS / Materials Science & Engineering Joint Major","EECS / Nuclear Engineering Joint Major","East Asian Humanities","East Asian Religion, Thought and Culture","East European/Eurasian Languages and/or Cultures","Economics","Ecosystem Management and Forestry","Education","Electrical Engineering & Computer Sciences (EECS)","Energy Engineering","Engineering Mathematics and Statistics","Engineering Physics","English","Environmental Earth Science","Environmental Economics and Policy","Environmental Engineering Science","Environmental Sciences","Ethnic Studies","Film & Media","French","Gender and Women's Studies","Genetics and Plant Biology","Geography","Geology","Geophysics","German","Global Studies","Greek","Greek and Latin","History","Industrial Engineering & Operations Research","Industrial Engineering & Operations Research & Business Administration","Integrative Biology","Interdisciplinary Studies","Italian Studies","Japanese Language","Landscape Architecture","Latin","Legal Studies","Linguistics","Marine Science","Materials Science & Engineering","Materials Science & Engineering / Mechanical Engineering Joint Major","Materials Science & Engineering / Nuclear Engineering Joint Major","Materials Science & Engineering and Business Administration","Mathematics","Mechanical Engineering","Mechanical Engineering & Business Administration","Mechanical Engineering / Nuclear Engineering","Media Studies","Microbial Biology","Middle Eastern Languages & Cultures","Molecular Environmental Biology","Molecular and Cell Biology","Music","Native American Studies","Neuroscience","Nuclear Engineering","Nutritional & Metabolic Biology","Nutritional Sciences: Physiology & Metabolism","Nutritional Sciences: Toxicology","Philosophy","Physics","Planetary Science","Political Economy","Political Science","Pre-Med / Pre-Health","Prelaw Information","Psychology","Public Health","Rhetoric","Scandinavian","Slavic Languages and Literatures","Social Welfare","Society and Environment","Sociology","South and Southeast Asian Studies","Spanish and Portuguese","Statistics","Sustainable Environmental Design","Theater and Performance Studies","Urban Studies"],"minors":["Aerospace Engineering","African American Studies","American Studies","Ancient Greek and Roman Studies","Anthropology","Applied Language Studies","Arabic","Architecture","Armenian Studies","Art History","Asian American and Asian Diaspora Studies","Astrophysics","Atmospheric Science","Bioengineering","Buddhist Studies","Celtic Studies","Chemical Engineering","Chemistry","Chicanx Latinx Studies","Chinese Language","City Planning","Climate Science","Comparative Literature","Computer Science","Conservation and Resource Studies","Creative Writing","Dance and Performance Studies","Data Science","Demography","Digital Humanities","Disability Studies","Dutch Studies","Earth and Planetary Science","East European/Eurasian Languages and/or Cultures","Ecosystem Management and Forestry","Education","Electrical Engineering & Computer Sciences (EECS)","Electronic Intelligent Systems","Energy Engineering","Energy and Resources","English","Environmental Design & Urbanism in Developing Countries","Environmental Earth Science","Environmental Economics and Policy","Environmental Engineering","Ethnic Studies","Food Systems","French","Gender and Women's Studies","Geography","Geology","Geophysics","Geospatial Information Science and Technology","Geotechnical Engineering","German","Global Poverty and Practice","Global Studies","Greek","Health and Wellness","Hebrew","Hispanic Languages, Linguistics, and Bilingualism","History","History of the Built Environment","Human Rights Interdisciplinary","Industrial Engineering & Operations Research","Israel Studies","Italian Studies","Japanese Language","Jewish Studies","Journalism","Korean Language","Landscape Architecture","Latin","Lesbian, Gay, Bisexual, & Transgender Studies","Linguistics","Logic","Marine Science","Materials Science & Engineering","Mathematics","Mechanical Engineering","Medieval Studies","Middle Eastern Languages & Cultures","Music","Native American Studies","Nuclear Engineering","Nutritional Sciences: Physiology & Metabolism","Persian","Philosophy","Physics","Planetary Science","Political Economy","Politics, Philosophy, and Law","Portuguese Language, Lit, & Cultures","Public Health","Public Policy","Race and the Law","Rhetoric","Russian Culture","Russian Language","Russian Literature","Scandinavian","Science and Math Education","Science, Technology, and Society","Social & Cultural Factors in Environmental Design","South and Southeast Asian Studies","Spanish Languages, Literatures, & Cultures","Statistics","Structural Engineering","Sustainable Business and Policy","Sustainable Design","Theater and Performance Studies","Tibetan","Turkish"],"simultaneousDegrees":["Aerospace Engineering and Business Administration","Bioengineering and Business Administration","Civil Engineering and Business Administration","EECS & Business Administration","Industrial Engineering & Operations Research & Business Administration","Life Sciences, Business, and Entrepreneurship","Materials Science & Engineering and Business Administration","Mechanical Engineering & Business Administration"],"summerMinors":["Chemical Engineering","Digital Humanities","Education","Energy and Resources","Journalism","Psychology","Public Health","Race and the Law","Teaching English to Multilingual Students"]} \ No newline at end of file diff --git a/apps/frontend/src/lib/api/users.ts b/apps/frontend/src/lib/api/users.ts index a26d1a7222..6f7dcae4e8 100644 --- a/apps/frontend/src/lib/api/users.ts +++ b/apps/frontend/src/lib/api/users.ts @@ -20,6 +20,8 @@ export interface IMonitoredClassInput { export interface IUserInput { monitoredClasses?: IMonitoredClassInput[]; notificationsOn?: boolean; + majors?: string[]; + minors?: string[]; } export const READ_USER = gql` @@ -30,6 +32,8 @@ export const READ_USER = gql` name student notificationsOn + majors + minors monitoredClasses { notified class { @@ -53,6 +57,8 @@ export const UPDATE_USER = gql` email student notificationsOn + majors + minors monitoredClasses { notified class { diff --git a/packages/common/package.json b/packages/common/package.json index 89f7d06e81..b987ef7118 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -4,7 +4,8 @@ "exports": { ".": "./src/index.ts", "./models": "./src/models/index.ts", - "./lib/departmentNicknames": "./src/lib/departmentNicknames.ts" + "./lib/departmentNicknames": "./src/lib/departmentNicknames.ts", + "./lib/degreePrograms": "./src/lib/degreePrograms.ts" }, "devDependencies": { "@repo/typescript-config": "*", diff --git a/packages/common/src/lib/degreePrograms.ts b/packages/common/src/lib/degreePrograms.ts new file mode 100644 index 0000000000..265a77af58 --- /dev/null +++ b/packages/common/src/lib/degreePrograms.ts @@ -0,0 +1,451 @@ +// UC Berkeley degree program names, sourced from the Berkeley Academic Guide. +// Single source of truth for both the GradTrak pickers and backend validation. +export const DEGREE_PROGRAMS = { + all: [ + "Aerospace Engineering", + "Aerospace Engineering and Business Administration", + "African American Studies", + "American Studies", + "Analytics", + "Ancient Greek and Roman Studies", + "Anthropology", + "Applied Language Studies", + "Applied Mathematics", + "Arabic", + "Architecture", + "Armenian Studies", + "Art History", + "Art Practice", + "Asian American and Asian Diaspora Studies", + "Astrophysics", + "Atmospheric Science", + "Bioengineering", + "Bioengineering and Business Administration", + "Bioengineering/Materials Science and Engineering Joint Major", + "Buddhist Studies", + "Business Administration", + "Celtic Studies", + "Chemical Biology", + "Chemical Engineering", + "Chemical Engineering / Materials Science & Engineering Joint Major", + "Chemical Engineering / Nuclear Engineering Joint Major", + "Chemistry", + "Chicanx Latinx Studies", + "Chinese Language", + "City Planning", + "Civil Engineering", + "Civil Engineering and Business Administration", + "Climate Science", + "Cognitive Science", + "Comparative Literature", + "Computer Science", + "Conservation and Resource Studies", + "Course Threads", + "Creative Writing", + "Dance and Performance Studies", + "Data Science", + "Demography", + "Digital Humanities", + "Disability Studies", + "Dutch Studies", + "EECS & Business Administration", + "EECS / Materials Science & Engineering Joint Major", + "EECS / Nuclear Engineering Joint Major", + "Earth and Planetary Science", + "East Asian Humanities", + "East Asian Religion, Thought and Culture", + "East European/Eurasian Languages and/or Cultures", + "Economics", + "Ecosystem Management and Forestry", + "Education", + "Electrical Engineering & Computer Sciences (EECS)", + "Electronic Intelligent Systems", + "Energy Engineering", + "Energy and Resources", + "Engineering Mathematics and Statistics", + "Engineering Physics", + "English", + "Entrepreneurship & Technology", + "Environmental Design & Urbanism in Developing Countries", + "Environmental Earth Science", + "Environmental Economics and Policy", + "Environmental Engineering", + "Environmental Engineering Science", + "Environmental Sciences", + "Ethnic Studies", + "Film & Media", + "Food Systems", + "French", + "Gender and Women's Studies", + "Genetics and Plant Biology", + "Geography", + "Geology", + "Geophysics", + "Geospatial Information Science and Technology", + "Geotechnical Engineering", + "German", + "Global Poverty and Practice", + "Global Studies", + "Greek", + "Greek and Latin", + "Health and Wellness", + "Hebrew", + "Hispanic Languages, Linguistics, and Bilingualism", + "History", + "History of the Built Environment", + "Human Rights Interdisciplinary", + "Industrial Engineering & Operations Research", + "Industrial Engineering & Operations Research & Business Administration", + "Integrative Biology", + "Interdisciplinary Studies", + "Israel Studies", + "Italian Studies", + "Japanese Language", + "Jewish Studies", + "Journalism", + "Korean Language", + "Landscape Architecture", + "Latin", + "Legal Studies", + "Lesbian, Gay, Bisexual, & Transgender Studies", + "Life Sciences, Business, and Entrepreneurship", + "Linguistics", + "Logic", + "Marine Science", + "Materials Science & Engineering", + "Materials Science & Engineering / Mechanical Engineering Joint Major", + "Materials Science & Engineering / Nuclear Engineering Joint Major", + "Materials Science & Engineering and Business Administration", + "Mathematics", + "Mechanical Engineering", + "Mechanical Engineering & Business Administration", + "Mechanical Engineering / Nuclear Engineering", + "Media Studies", + "Medieval Studies", + "Microbial Biology", + "Middle Eastern Languages & Cultures", + "Molecular Environmental Biology", + "Molecular and Cell Biology", + "Music", + "Native American Studies", + "Neuroscience", + "New Media", + "Nuclear Engineering", + "Nutritional & Metabolic Biology", + "Nutritional Sciences: Physiology & Metabolism", + "Nutritional Sciences: Toxicology", + "Persian", + "Philosophy", + "Physics", + "Planetary Science", + "Political Economy", + "Political Science", + "Politics, Philosophy, and Law", + "Portuguese Language, Lit, & Cultures", + "Pre-Med / Pre-Health", + "Prelaw Information", + "Professional Accountancy", + "Psychology", + "Public Health", + "Public Policy", + "Race and the Law", + "Rhetoric", + "Russian Culture", + "Russian Language", + "Russian Literature", + "Scandinavian", + "Science and Math Education", + "Science, Technology, and Society", + "Slavic Languages and Literatures", + "Social & Cultural Factors in Environmental Design", + "Social Welfare", + "Society and Environment", + "Sociology", + "South and Southeast Asian Studies", + "Spanish Languages, Literatures, & Cultures", + "Spanish and Portuguese", + "Statistics", + "Structural Engineering", + "Sustainable Business and Policy", + "Sustainable Design", + "Sustainable Environmental Design", + "Teaching English to Multilingual Students", + "Theater and Performance Studies", + "Tibetan", + "Turkish", + "Urban Studies", + ], + majors: [ + "Aerospace Engineering", + "African American Studies", + "American Studies", + "Analytics", + "Ancient Greek and Roman Studies", + "Anthropology", + "Applied Mathematics", + "Architecture", + "Art History", + "Art Practice", + "Asian American and Asian Diaspora Studies", + "Astrophysics", + "Atmospheric Science", + "Bioengineering", + "Bioengineering and Business Administration", + "Bioengineering/Materials Science and Engineering Joint Major", + "Business Administration", + "Celtic Studies", + "Chemical Biology", + "Chemical Engineering", + "Chemical Engineering / Materials Science & Engineering Joint Major", + "Chemical Engineering / Nuclear Engineering Joint Major", + "Chemistry", + "Chicanx Latinx Studies", + "Chinese Language", + "Civil Engineering", + "Civil Engineering and Business Administration", + "Cognitive Science", + "Comparative Literature", + "Computer Science", + "Conservation and Resource Studies", + "Dance and Performance Studies", + "Data Science", + "Dutch Studies", + "EECS & Business Administration", + "EECS / Materials Science & Engineering Joint Major", + "EECS / Nuclear Engineering Joint Major", + "East Asian Humanities", + "East Asian Religion, Thought and Culture", + "East European/Eurasian Languages and/or Cultures", + "Economics", + "Ecosystem Management and Forestry", + "Education", + "Electrical Engineering & Computer Sciences (EECS)", + "Energy Engineering", + "Engineering Mathematics and Statistics", + "Engineering Physics", + "English", + "Environmental Earth Science", + "Environmental Economics and Policy", + "Environmental Engineering Science", + "Environmental Sciences", + "Ethnic Studies", + "Film & Media", + "French", + "Gender and Women's Studies", + "Genetics and Plant Biology", + "Geography", + "Geology", + "Geophysics", + "German", + "Global Studies", + "Greek", + "Greek and Latin", + "History", + "Industrial Engineering & Operations Research", + "Industrial Engineering & Operations Research & Business Administration", + "Integrative Biology", + "Interdisciplinary Studies", + "Italian Studies", + "Japanese Language", + "Landscape Architecture", + "Latin", + "Legal Studies", + "Linguistics", + "Marine Science", + "Materials Science & Engineering", + "Materials Science & Engineering / Mechanical Engineering Joint Major", + "Materials Science & Engineering / Nuclear Engineering Joint Major", + "Materials Science & Engineering and Business Administration", + "Mathematics", + "Mechanical Engineering", + "Mechanical Engineering & Business Administration", + "Mechanical Engineering / Nuclear Engineering", + "Media Studies", + "Microbial Biology", + "Middle Eastern Languages & Cultures", + "Molecular Environmental Biology", + "Molecular and Cell Biology", + "Music", + "Native American Studies", + "Neuroscience", + "Nuclear Engineering", + "Nutritional & Metabolic Biology", + "Nutritional Sciences: Physiology & Metabolism", + "Nutritional Sciences: Toxicology", + "Philosophy", + "Physics", + "Planetary Science", + "Political Economy", + "Political Science", + "Pre-Med / Pre-Health", + "Prelaw Information", + "Psychology", + "Public Health", + "Rhetoric", + "Scandinavian", + "Slavic Languages and Literatures", + "Social Welfare", + "Society and Environment", + "Sociology", + "South and Southeast Asian Studies", + "Spanish and Portuguese", + "Statistics", + "Sustainable Environmental Design", + "Theater and Performance Studies", + "Urban Studies", + ], + minors: [ + "Aerospace Engineering", + "African American Studies", + "American Studies", + "Ancient Greek and Roman Studies", + "Anthropology", + "Applied Language Studies", + "Arabic", + "Architecture", + "Armenian Studies", + "Art History", + "Asian American and Asian Diaspora Studies", + "Astrophysics", + "Atmospheric Science", + "Bioengineering", + "Buddhist Studies", + "Celtic Studies", + "Chemical Engineering", + "Chemistry", + "Chicanx Latinx Studies", + "Chinese Language", + "City Planning", + "Climate Science", + "Comparative Literature", + "Computer Science", + "Conservation and Resource Studies", + "Creative Writing", + "Dance and Performance Studies", + "Data Science", + "Demography", + "Digital Humanities", + "Disability Studies", + "Dutch Studies", + "Earth and Planetary Science", + "East European/Eurasian Languages and/or Cultures", + "Ecosystem Management and Forestry", + "Education", + "Electrical Engineering & Computer Sciences (EECS)", + "Electronic Intelligent Systems", + "Energy Engineering", + "Energy and Resources", + "English", + "Environmental Design & Urbanism in Developing Countries", + "Environmental Earth Science", + "Environmental Economics and Policy", + "Environmental Engineering", + "Ethnic Studies", + "Food Systems", + "French", + "Gender and Women's Studies", + "Geography", + "Geology", + "Geophysics", + "Geospatial Information Science and Technology", + "Geotechnical Engineering", + "German", + "Global Poverty and Practice", + "Global Studies", + "Greek", + "Health and Wellness", + "Hebrew", + "Hispanic Languages, Linguistics, and Bilingualism", + "History", + "History of the Built Environment", + "Human Rights Interdisciplinary", + "Industrial Engineering & Operations Research", + "Israel Studies", + "Italian Studies", + "Japanese Language", + "Jewish Studies", + "Journalism", + "Korean Language", + "Landscape Architecture", + "Latin", + "Lesbian, Gay, Bisexual, & Transgender Studies", + "Linguistics", + "Logic", + "Marine Science", + "Materials Science & Engineering", + "Mathematics", + "Mechanical Engineering", + "Medieval Studies", + "Middle Eastern Languages & Cultures", + "Music", + "Native American Studies", + "Nuclear Engineering", + "Nutritional Sciences: Physiology & Metabolism", + "Persian", + "Philosophy", + "Physics", + "Planetary Science", + "Political Economy", + "Politics, Philosophy, and Law", + "Portuguese Language, Lit, & Cultures", + "Public Health", + "Public Policy", + "Race and the Law", + "Rhetoric", + "Russian Culture", + "Russian Language", + "Russian Literature", + "Scandinavian", + "Science and Math Education", + "Science, Technology, and Society", + "Social & Cultural Factors in Environmental Design", + "South and Southeast Asian Studies", + "Spanish Languages, Literatures, & Cultures", + "Statistics", + "Structural Engineering", + "Sustainable Business and Policy", + "Sustainable Design", + "Theater and Performance Studies", + "Tibetan", + "Turkish", + ], + certificates: [ + "Course Threads", + "Energy and Resources", + "Entrepreneurship & Technology", + "Film & Media", + "New Media", + "Professional Accountancy", + "Psychology", + "Public Health", + "Race and the Law", + ], + simultaneousDegrees: [ + "Aerospace Engineering and Business Administration", + "Bioengineering and Business Administration", + "Civil Engineering and Business Administration", + "EECS & Business Administration", + "Industrial Engineering & Operations Research & Business Administration", + "Life Sciences, Business, and Entrepreneurship", + "Materials Science & Engineering and Business Administration", + "Mechanical Engineering & Business Administration", + ], + summerMinors: [ + "Chemical Engineering", + "Digital Humanities", + "Education", + "Energy and Resources", + "Journalism", + "Psychology", + "Public Health", + "Race and the Law", + "Teaching English to Multilingual Students", + ], +} as const; + +export const VALID_MAJORS: ReadonlySet = new Set( + DEGREE_PROGRAMS.majors +); +export const VALID_MINORS: ReadonlySet = new Set( + DEGREE_PROGRAMS.minors +);