From 454d0a345665902bcc777e31e112c421d38dacef Mon Sep 17 00:00:00 2001 From: Emma Schmitt Date: Mon, 27 Oct 2025 15:30:01 -0400 Subject: [PATCH 001/180] Initial Commit and Implementation of Reinforcement Section --- .../img/lab_thumbnails/cognitivebiasai.jpg | Bin 0 -> 147287 bytes client/src/App.js | 2 + .../components/exercise/lab13/Lab13Context.js | 21 ++ client/src/components/exercise/lab13/Main.js | 76 ++++++ client/src/constants/index.js | 20 ++ client/src/constants/lab13/index.js | 10 + client/src/helpers/Redirect.js | 3 + client/src/services/lab13/ExerciseService.js | 45 ++++ client/src/services/lab13/RepairService.js | 58 +++++ configPath.js | 18 ++ .../controllers/lab13/ExerciseController.js | 47 ++++ server/controllers/lab13/RepairController.js | 46 ++++ server/database/models/lab13/Exercise.js | 39 +++ server/database/models/lab13/Repair.js | 42 ++++ server/database/schema.sql | 237 +++++++++++++++++- server/routes/index.js | 22 ++ server/services/lab13/ExerciseService.js | 83 ++++++ server/services/lab13/RepairService.js | 69 +++++ 18 files changed, 836 insertions(+), 2 deletions(-) create mode 100644 client/public/img/lab_thumbnails/cognitivebiasai.jpg create mode 100644 client/src/components/exercise/lab13/Lab13Context.js create mode 100644 client/src/components/exercise/lab13/Main.js create mode 100644 client/src/constants/lab13/index.js create mode 100644 client/src/services/lab13/ExerciseService.js create mode 100644 client/src/services/lab13/RepairService.js create mode 100644 configPath.js create mode 100644 server/controllers/lab13/ExerciseController.js create mode 100644 server/controllers/lab13/RepairController.js create mode 100644 server/database/models/lab13/Exercise.js create mode 100644 server/database/models/lab13/Repair.js create mode 100644 server/services/lab13/ExerciseService.js create mode 100644 server/services/lab13/RepairService.js diff --git a/client/public/img/lab_thumbnails/cognitivebiasai.jpg b/client/public/img/lab_thumbnails/cognitivebiasai.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ccdb8fa966cdc0091b4c5bba55b0af57e07df2ba GIT binary patch literal 147287 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
nDj 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

  • aTBjfB%q1q%B6R&wQnV*y? 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ΪiW6cNtHk&scg*P{PD?3Vsjp+jmr7#RX)CNK>p0d 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 literal 0 HcmV?d00001 diff --git a/client/src/components/body/Reading/Reading.js b/client/src/components/body/Reading/Reading.js index 34346139e..002ab1afe 100644 --- a/client/src/components/body/Reading/Reading.js +++ b/client/src/components/body/Reading/Reading.js @@ -116,6 +116,10 @@ const Reading = (props) => { navigate("/Imagine2023/PostSurvey"); }; + const hasPiechartInBody = () => { + return readingData?.body?.some((item) => item.type === "piechart"); + }; + return (
    { ) : ( <> )} - {readingData?.piechart?.header && ( + {!hasPiechartInBody() && readingData?.piechart?.header && ( <>

    {readingData?.piechart.header}

    @@ -151,7 +155,7 @@ const Reading = (props) => {
    )} - {readingData?.piechart.caption !== "" ? ( + {!hasPiechartInBody() && readingData?.piechart.caption !== "" ? ( readingData?.piechart.caption.map((data, index) => { return (
    { )} {data.type === "image" && } {data.type === "links" && } + {data.type === "piechart" && data.content && ( + <> +
    + +
    + {data.content.caption && ( +
    + {data.content.caption} +
    + )} + + )} ); }) diff --git a/package-lock.json b/package-lock.json index 4c24d1b07..c5e045897 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "mathjs": "^12.3.2", "nanoid": "^5.0.7", "node-sass": "^9.0.0", - "pm2": "^5.3.1", + "pm2": "^5.4.3", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -1123,59 +1123,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@opencensus/core": { - "version": "0.0.9", - "license": "Apache-2.0", - "dependencies": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@opencensus/core/node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@opencensus/propagation-b3": { - "version": "0.0.8", - "license": "Apache-2.0", - "dependencies": { - "@opencensus/core": "^0.0.8", - "uuid": "^3.2.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@opencensus/propagation-b3/node_modules/@opencensus/core": { - "version": "0.0.8", - "license": "Apache-2.0", - "dependencies": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@opencensus/propagation-b3/node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "license": "MIT", @@ -1242,11 +1189,11 @@ } }, "node_modules/@pm2/io": { - "version": "5.0.2", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@pm2/io/-/io-6.0.1.tgz", + "integrity": "sha512-KiA+shC6sULQAr9mGZ1pg+6KVW9MF8NpG99x26Lf/082/Qy8qsTCtnJy+HQReW1A9Rdf0C/404cz0RZGZro+IA==", "license": "Apache-2", "dependencies": { - "@opencensus/core": "0.0.9", - "@opencensus/propagation-b3": "0.0.8", "async": "~2.6.1", "debug": "~4.3.1", "eventemitter2": "^6.3.1", @@ -1262,6 +1209,8 @@ }, "node_modules/@pm2/io/node_modules/async": { "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "license": "MIT", "dependencies": { "lodash": "^4.17.14" @@ -1269,10 +1218,14 @@ }, "node_modules/@pm2/io/node_modules/eventemitter2": { "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", "license": "MIT" }, "node_modules/@pm2/io/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -1283,6 +1236,8 @@ }, "node_modules/@pm2/io/node_modules/semver": { "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -1365,6 +1320,78 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@testing-library/dom/node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "license": "MIT", + "peer": true + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT", + "peer": true + }, "node_modules/@testing-library/jest-dom": { "version": "6.5.0", "dev": true, @@ -1432,6 +1459,13 @@ "version": "0.23.0", "license": "MIT" }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT", + "peer": true + }, "node_modules/@types/babel__core": { "version": "7.20.5", "license": "MIT", @@ -1859,7 +1893,6 @@ }, "node_modules/argparse": { "version": "2.0.1", - "dev": true, "license": "Python-2.0" }, "node_modules/aria-query": { @@ -1915,24 +1948,6 @@ "node": "*" } }, - "node_modules/async-listener": { - "version": "0.6.10", - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - }, - "engines": { - "node": "<=0.11.8 || >0.11.10" - } - }, - "node_modules/async-listener/node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/asynckit": { "version": "0.4.0", "license": "MIT" @@ -2671,14 +2686,6 @@ "version": "1.1.0", "license": "ISC" }, - "node_modules/continuation-local-storage": { - "version": "3.2.1", - "license": "BSD-2-Clause", - "dependencies": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "license": "MIT" @@ -3051,6 +3058,16 @@ "node": ">=6" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "license": "MIT", @@ -3132,13 +3149,6 @@ "version": "1.5.210", "license": "ISC" }, - "node_modules/emitter-listener": { - "version": "1.1.2", - "license": "BSD-2-Clause", - "dependencies": { - "shimmer": "^1.2.0" - } - }, "node_modules/emittery": { "version": "0.13.1", "license": "MIT", @@ -5330,7 +5340,6 @@ }, "node_modules/js-yaml": { "version": "4.1.0", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -5625,13 +5634,6 @@ "dev": true, "license": "MIT" }, - "node_modules/log-driver": { - "version": "1.2.7", - "license": "ISC", - "engines": { - "node": ">=0.8.6" - } - }, "node_modules/log-update": { "version": "6.0.0", "dev": true, @@ -5835,6 +5837,16 @@ "node": ">=12" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, "node_modules/make-dir": { "version": "4.0.0", "license": "MIT", @@ -6118,7 +6130,9 @@ } }, "node_modules/module-details-from-path": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", "license": "MIT" }, "node_modules/mri": { @@ -6903,11 +6917,13 @@ } }, "node_modules/pm2": { - "version": "5.3.1", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.4.3.tgz", + "integrity": "sha512-4/I1htIHzZk1Y67UgOCo4F1cJtas1kSds31N8zN0PybO230id1nigyjGuGFzUnGmUFPmrJ0On22fO1ChFlp7VQ==", "license": "AGPL-3.0", "dependencies": { "@pm2/agent": "~2.0.0", - "@pm2/io": "~5.0.0", + "@pm2/io": "~6.0.1", "@pm2/js-api": "~0.8.0", "@pm2/pm2-version-check": "latest", "async": "~3.2.0", @@ -6922,6 +6938,7 @@ "enquirer": "2.3.6", "eventemitter2": "5.0.1", "fclone": "1.0.11", + "js-yaml": "~4.1.0", "mkdirp": "1.0.4", "needle": "2.4.0", "pidusage": "~3.0", @@ -6933,8 +6950,7 @@ "semver": "^7.2", "source-map-support": "0.5.21", "sprintf-js": "1.1.2", - "vizion": "~2.2.1", - "yamljs": "0.3.0" + "vizion": "~2.2.1" }, "bin": { "pm2": "bin/pm2", @@ -6943,7 +6959,7 @@ "pm2-runtime": "bin/pm2-runtime" }, "engines": { - "node": ">=10.0.0" + "node": ">=12.0.0" }, "optionalDependencies": { "pm2-sysmonit": "^1.2.8" @@ -7754,6 +7770,13 @@ "node": ">=8" } }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT", + "peer": true + }, "node_modules/redux-logger": { "version": "3.0.6", "license": "MIT", @@ -7794,6 +7817,8 @@ }, "node_modules/require-in-the-middle": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", + "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", "license": "MIT", "dependencies": { "debug": "^4.1.1", @@ -8093,6 +8118,8 @@ }, "node_modules/shimmer": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", "license": "BSD-2-Clause" }, "node_modules/signal-exit": { @@ -8767,6 +8794,8 @@ }, "node_modules/tslib": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", "license": "Apache-2.0" }, "node_modules/tv4": { @@ -8937,13 +8966,6 @@ "version": "1.0.2", "license": "MIT" }, - "node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "license": "ISC", @@ -9264,29 +9286,6 @@ "node": ">= 14" } }, - "node_modules/yamljs": { - "version": "0.3.0", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - }, - "bin": { - "json2yaml": "bin/json2yaml", - "yaml2json": "bin/yaml2json" - } - }, - "node_modules/yamljs/node_modules/argparse": { - "version": "1.0.10", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/yamljs/node_modules/sprintf-js": { - "version": "1.0.3", - "license": "BSD-3-Clause" - }, "node_modules/yargs": { "version": "17.7.2", "license": "MIT", diff --git a/package.json b/package.json index 302ece14e..4bb5d931a 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "mathjs": "^12.3.2", "nanoid": "^5.0.7", "node-sass": "^9.0.0", - "pm2": "^5.3.1", + "pm2": "^5.4.3", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -35,4 +35,4 @@ "redux-logger": "^3.0.6", "tailwind-merge": "^2.1.0" } -} \ No newline at end of file +} diff --git a/server/database/schema.sql b/server/database/schema.sql index d8f38c788..a9d97f600 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3460,90 +3460,129 @@ e'[ "LO4: Experience how confident language, polished grammar, and proximity to credible sources can lead to overestimation of AI accuracy (Comprehension)" ]', 'Emma Schmitt, Kristen Fang, Darlyn Gomez, Christine Espeleta', 'https://ball.rit.edu/Lab13/', null, 'In this lab, you will learn about how a persons own bias can play a part into Generative AI interactions. You will learn about what Cognitive Bias is, how it plays into Human Interactions with Generative AI, Three Specific Cognitive Biases that normally impact AI Interactions, view related media to reinforce the topic, and take a quiz to test your knowledge! Click “Next” to start!', e'{ - "piechart": { - "header":"Unbiased Forms", - "caption":["59% of Gen Z believes forms should have options outside of male and female."], - "data": { - "labels": [ - "Gen Zers who believe forms should have options outside of male / female", - "Gen Zers who DO NOT believe forms should have options outside of male / female" - ], - "datasets": [ - { - "label": "Unbiased Forms", - "borderColor": "black", - "backgroundColor": ["#FFC107","#004D40"], - "data": [59, 41], - "borderWidth": "2" - } - ] + "description": { + "header":"", + "content":"" + }, + "body":[ + { + "header":"Introduction", + "type":"", + "content":["AI systems are built on logic, data, and probability, yet the humans using them are not always logical. In psychology, this gap between logic and decision making is explained by cognitive bias."] + }, + { + "header":"What is Cognitive Bias?", + "type":"", + "content":["Cognitive bias is a systematic pattern that causes people to deviate from fully rational thought, affecting how we process information, perceive others, and make decisions. Instead of carefully analyzing every fact, we rely on what feels familiar or intuitive to save time and effort, but this can lead to errors in reasoning."] + }, + { + "header": "", + "type": "image", + "content" : { + "image":"/what-is-cognitive-bias-image.png", + "alt":"Split brain diagram showing two pathways of thinking: Rational Analysis (left, dark blue) with gears and magnifying glasses representing slow analytical thought, and Mental Shortcuts (right, orange) with lightning bolts and arrows representing fast intuitive thought", + "sub_caption":"", + "caption":"The brain uses two pathways: slow, analytical thinking (left) and fast, intuitive shortcuts (right). Cognitive biases arise when shortcuts lead to errors." } - }, - "description":"", - "body":[ + }, + { + "header":"When Cognitive Bias Meets Technology", + "type":"", + "content":["As humans interact more with artificial intelligence (AI), cognitive biases are appearing in new forms. Generative AIs like ChatGPT, Gemini, or Claude are built to sound confident, fluent, and human-like, creating an impression of expertise. The polished tone can reduce usual skepticism, making users more likely to accept information without question, even when it may be inaccurate."] + }, + { + "header": "How Often People Trust or Check AI Answers", + "type": "piechart", + "caption": [""], + "content": { + "data": { + "labels": ["Skeptical of AI Outputs", "Always verify AI answers", "Other"], + "datasets": [{ + "label": "AI Trust Behavior", + "borderColor": "black", + "backgroundColor": ["#9587df", "#ffccab", "#b6e8ce"], + "data": [82, 8, 10], + "borderWidth": "1" + }] + } + } + }, + { + "header": "", + "type": "", + "content": ["Most people claim to be skeptical of AI, but only a small number actually fact check what it says. "] + }, + { + "header":"", + "type":"links", + "content":[ + { + "name":"The AI Trust Gap Research Study", + "link":"https://explodingtopics.com/blog/ai-trust-gap-research" + } + ] + }, + { + "header":"Mata V. Avianca", + "type":"", + "content": ["In the case of Mata V. Avianca (2023), experienced lawyers fell victim to cognitive bias when relying on generative AI output. Attorneys Steven A. Schwartz and Peter LoDuca used ChatGPT to help prepare a legal filing for a passenger, Roberto Mata, who claimed injury on an Avianca flight. The AI confidently produced realistic legal citations and reasoning, but every case it cited wasn\'t real. When questioned by Avianca\'s lawyers and the court on the location of the cited legal cases, Mata\'s lawyers continued to defend the fake citations because ChatGPT assured them the cases \'indeed exist\' and \'can be found in reputable legal databases such as LexisNexis and Westlaw.\' The court later sanctioned them making this one of the first high profile examples of cognitive bias in human-AI interactions! This case shows how polished tone, confident phrasing, and the perceived expertise of the AI can create a halo of trust, even making skilled professionals overrely on it and overlook errors."] + }, + { + "header": "How AI Design Amplifies Bias", + "type": "", + "content": ["So why do even experienced lawyers fall for AI-generated content? The answer lies in how AI systems are built. AI systems are intentionally designed to feel smart. Developers craft their structure, tone and human-like phrasing to make interactions natural and engaging, unconsciously influencing perception. When an AI\'s content draws in our sense of trust, it becomes difficult to separate credibility from confidence."] + }, + { + "header": "What Can We Do About It: AI Literacy", + "type": "", + "content": ["Developing AI literacy means resisting the urge to accept AI outputs at face value. Here are some small but powerful habits:"] + }, + { + "header": "", + "type": "study__list", + "content": ["Ask for citations", + "Cross-check the answer against trusted sources", + "Remember that AI’s format doesn’t guarantee accuracy"] + }, + { + "header": "", + "type": "", + "content": ["As AI becomes heavily integrated in our daily lives, practicing these habits will help you protect your own reasoning."] + }, + { + "header": "", + "type": "", + "content": [""] + } + ], + "footer":{ + "links":[ { - "header":"Gender Identity", - "type":"", - "content":["Gender Identity is the concept of self; male, female, both, neither and more. It\'s an individual\'s unique perception of who they are. Gender identity may match assigned sex at birth but many don\'t fit in these assigned categories. 69.5% of youth between 13-18 years old within the LGBTQ+ community identify as at least one non-cisgender (male/female) identity according to a 2023 survey conducted by the Human Rights Campaign (HRC). These gender identities are expressed by people\'s characteristics, clothing, behavior and notably through preferred names and pronouns. The same survey shows a clear link between the usage of preferred names and pronouns by those around an individual and a reduction in anxiety and depression."] + "name": "Mata v. Avianca Case", + "link": "https://law.justia.com/cases/federal/district-courts/new-york/nysdce/1:2022cv01461/575368/54/" }, - { - "header": "", - "type": "links", - "content": [ - { - "name": "2023 LGBTQ+ Youth Report Survey", - "link": "https://reports.hrc.org/2023-lgbtq-youth-report" - } - ] - }, { - "header":"", - "type":"", - "content":["As the LGBTQ+ community continues to expand, as it has within the past two decades, it\'s important to stay open. Laws continue to be passed nationwide to keep up with this growth, serving to protect members of these communities from harassment and discrimination. Those who identify outside of the traditional male or female gender identities have been perpetual targets for hate speech and violence. Adapting to new practices when it comes to gender identity is crucial to creating a safe and positive environment, whether that be within the workplace, classrooms, or at home."] + "name": "Understanding Cognitive Bias", + "link": "https://www.simplypsychology.org/cognitive-bias.html" }, - { - "header": "", - "type": "image", - "content" : { - "image":"/pronoun_guide.png", - "alt":"Pronouns- A How To Guide", - "sub_caption":"Figure 1", - "caption":"A Guide to Effective use of Pronouns" - } - }, - { - "header": "Gender Non-Discrimination in the Workplace", - "type": "", - "content": ["One company that has strived for acceptance is ADP, an HR and Payroll consulting company. ADP, which has been named in Fortune\'s \'World\'s Most Admired Companies\' list for 17 consecutive years, advocates for the importance of using preferred names and fostering an accessible environment. They also outline the best practices for using preferred names at work to create a safe workplace for everyone. These practices reinforce the use of preferred pronouns. Additionally, these practices highlight how to respectfully ask how someone identifies. Furthermore, ADP emphasizes how important it is to be respectful and think before making what could be an awkward joke, and allow for some mistakes initially as long as you stay respectful and acknowledge the mistakes. Lastly, the practices outlined by ADP point out that you may need to adjust and become familiar with someone\'s chosen pronouns by amplifying usage."] - }, - { - "header": "", - "type": "links", - "content": [ - { - "name": "Fostering Accessible Environments in the Workplace", - "link": "https://www.adp.com/spark/articles/2018/06/foster-an-inclusive-workplace-for-transgender-talent-by-creating-a-preferred-name-policy.aspx" - }, - { - "name": "Using Preferred Names at Work", - "link": "https://www.adp.com/spark/articles/2022/06/10-best-practices-for-using-preferred-or-chosen-names-at-work.aspx" - } - ] - }, - { - "header": "", - "type": "", - "content": ["These practices should be reflected throughout any institutions, including gender non-discriminatory terminology and allowing for expression of these preferred names and pronouns. When filling out applications, surveys, or any other data form where gender would be recorded, preferred pronouns and names should be present. There is no definitive list of all the pronouns which are in use. However, the ability to express one\'s gender identity is something which advocates have been pushing for, and the opportunity to voice chosen names and pronouns would be a valuable addition to any organization. From the same HRC survey mentioned previously, 76.8% of youth surveyed want to be open about their gender identity at their future job. Giving people this opportunity would be a step in the right direction and a strong starting point for fostering a positive environment."] - } - ], - "footer":{ - "links":[ - { - "name":"Accessible Design Best Practices", - "link":"https://vorecol.com/blogs/blog-best-practices-for-designing-inclusive-software-interfaces-for-gender-diversity-177983" - } - ] - } + { + "name": "Global Views on AI", + "link": "https://www.pewresearch.org/global/2025/10/15/how-people-around-the-world-view-ai/" + }, + { + "name": "Exploding Topics: AI Trust Gap Report", + "link": "https://explodingtopics.com/blog/ai-trust-gap-research" + }, + { + "name": "AI Makes You Smarter But None the Wiser", + "link": "https://www.sciencedirect.com/science/article/abs/pii/S0747563225002262?via%3Dihub" + }, + { + "name": "AI Dependence and Literacy", + "link": "https://www.tandfonline.com/doi/full/10.1080/10447318.2025.2544006" + } + ] + } }', '[{"title":"Artifical Intelligence and Dunning Kruger Effect","link": "https://www.youtube.com/embed/dPbGoeW3uVw?si=29cnMsdK_okYF9Ge"},{"title":"Introduction to Halo Effect","link": "https://www.youtube.com/embed/kpjeMaOirvg?si=j383aHRvYakZyNi1"},{"title":"Truth is an Illusion (Truth Bias)","link":"https://www.youtube.com/embed/cebFWOlx848?si=rHm0WHB4a-BMsQtF"}]', '[ { From e79b3fb788183b6cb36f4d10bd75288704789d66 Mon Sep 17 00:00:00 2001 From: Emma Schmitt Date: Tue, 4 Nov 2025 15:40:36 -0500 Subject: [PATCH 009/180] Creation of Exercise Pages/Routing (Small Bug with Conclusion Page) --- client/src/components/exercise/lab13/Main.js | 55 ++++++++++++------- .../exercise/lab13/pages/AIPanel.js | 19 +++++++ .../exercise/lab13/pages/AIandSearchPanel.js | 19 +++++++ .../exercise/lab13/pages/Conclusion.js | 31 +++++++++++ .../exercise/lab13/pages/ConfidenceRanking.js | 19 +++++++ .../lab13/pages/DunningKrugerExplination.js | 19 +++++++ .../lab13/pages/ExerciseIntroduction.js | 27 +++++++++ .../exercise/lab13/pages/HaloExplination.js | 19 +++++++ .../exercise/lab13/pages/IDEExercise.js | 19 +++++++ .../exercise/lab13/pages/IDEIntroduction.js | 19 +++++++ .../lab13/pages/PanelswithIDEFixes.js | 19 +++++++ .../lab13/pages/TruthBiasExplination.js | 19 +++++++ 12 files changed, 264 insertions(+), 20 deletions(-) create mode 100644 client/src/components/exercise/lab13/pages/AIPanel.js create mode 100644 client/src/components/exercise/lab13/pages/AIandSearchPanel.js create mode 100644 client/src/components/exercise/lab13/pages/Conclusion.js create mode 100644 client/src/components/exercise/lab13/pages/ConfidenceRanking.js create mode 100644 client/src/components/exercise/lab13/pages/DunningKrugerExplination.js create mode 100644 client/src/components/exercise/lab13/pages/ExerciseIntroduction.js create mode 100644 client/src/components/exercise/lab13/pages/HaloExplination.js create mode 100644 client/src/components/exercise/lab13/pages/IDEExercise.js create mode 100644 client/src/components/exercise/lab13/pages/IDEIntroduction.js create mode 100644 client/src/components/exercise/lab13/pages/PanelswithIDEFixes.js create mode 100644 client/src/components/exercise/lab13/pages/TruthBiasExplination.js diff --git a/client/src/components/exercise/lab13/Main.js b/client/src/components/exercise/lab13/Main.js index 5a0bd4390..74a639d80 100644 --- a/client/src/components/exercise/lab13/Main.js +++ b/client/src/components/exercise/lab13/Main.js @@ -7,14 +7,18 @@ import ExerciseStateContext from "./Lab13Context"; // lab imported dependencies; // import GradApplication from "./components/GradApplication.js"; // import Diploma from "./components/Diploma"; -// import AlumniNewsletter from "./pages/AlumniNewsletter"; -// import ExerciseIntro from "./pages/Explanations/ExerciseIntro"; -// import PreWrongDiploma from "./pages/Explanations/PreWrongDiploma"; -// import PostWrongNewsletter from "./pages/Explanations/PostWrongNewsletter"; -// import PreCorrectDiploma from "./pages/Explanations/PreCorrectDiploma"; -// import PostCorrectNewsletter from "./pages/Explanations/PostCorrectNewsletter"; -// import KeyTakeaways from "./pages/Explanations/KeyTakeaways"; -// import PreDbRepair from "./pages/Explanations/PreDbRepair"; +import ExerciseIntroduction from "./pages/ExerciseIntroduction"; +import ConfidenceRanking from "./pages/ConfidenceRanking"; +import AIPanel from "./pages/AIPanel.js"; +import AIandSearchPanel from "./pages/AIandSearchPanel.js"; +import Conclusion from "./pages/Conclusion.js"; +import DunningKrugerExplination from "./pages/DunningKrugerExplination"; +// import ExerciseIntro from "./pages/ExerciseIntroduction"; +import HaloExplination from "./pages/HaloExplination"; +import IDEExercise from "./pages/IDEExercise"; +import IDEIntroduction from "./pages/IDEIntroduction"; +import PanelswithIDEFixes from "./pages/PanelswithIDEFixes"; +import TruthBiasExplination from "./pages/TruthBiasExplination"; /** * Main(): is the routing component for managing the lab exercise progression, @@ -56,18 +60,29 @@ const Main = () => { }} > - {/* - - - - - - - - - - - */} + + + + + + + + + + + + {/* // /* + // + // + // + // + // + // + // + // + // + // + // */}
    diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js new file mode 100644 index 000000000..c8f5c24aa --- /dev/null +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -0,0 +1,19 @@ +import { React } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; + +const AIPanel = () => { + const handleContinue = () => { + startExercise(); + navigate("/Lab13/Exercise/HaloExplination"); + }; + + return ( +
    + AI Panel Page + +
    + ); +}; + +export default AIPanel; diff --git a/client/src/components/exercise/lab13/pages/AIandSearchPanel.js b/client/src/components/exercise/lab13/pages/AIandSearchPanel.js new file mode 100644 index 000000000..27c25ea8c --- /dev/null +++ b/client/src/components/exercise/lab13/pages/AIandSearchPanel.js @@ -0,0 +1,19 @@ +import { React } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; + +const AIandSearchPanel = () => { + const handleContinue = () => { + startExercise(); + navigate("/Lab13/Exercise/TruthBiasExplination"); + }; + + return ( +
    + AI and Search Panel Page + +
    + ); +}; + +export default AIandSearchPanel; diff --git a/client/src/components/exercise/lab13/pages/Conclusion.js b/client/src/components/exercise/lab13/pages/Conclusion.js new file mode 100644 index 000000000..dc401ccac --- /dev/null +++ b/client/src/components/exercise/lab13/pages/Conclusion.js @@ -0,0 +1,31 @@ +import { React } from "react"; +import useMainStateContext from "src/reducers/MainContext"; +import UserLabService from "../../../../services/UserLabService"; +import { navigate } from "@reach/router"; +import { EXERCISE_IDLE } from "src/constants/index"; +import { LAB_ID } from "../../../../constants/lab13"; + +const Conclusion = () => { + const { actions, state } = useMainStateContext(); + + const handleFinish = async () => { + actions.updateUserState(EXERCISE_IDLE); + await navigate("/Lab13/Reinforcement"); + await UserLabService.complete_exercise(LAB_ID); + if (state.main.user?.firstname !== null && state.main.user !== null) { + await UserLabService.user_complete_exercise( + state.main.user.userid, + LAB_ID, + ); + } + }; + + return ( +
    + Conclusion Page + +
    + ); +}; + +export default Conclusion; diff --git a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js new file mode 100644 index 000000000..7800409de --- /dev/null +++ b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js @@ -0,0 +1,19 @@ +import { React } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; + +const ConfidenceRanking = () => { + const handleContinue = () => { + startExercise(); + navigate("/Lab13/Exercise/AIPanel"); + }; + + return ( +
    + Confidence Ranking Page + +
    + ); +}; + +export default ConfidenceRanking; diff --git a/client/src/components/exercise/lab13/pages/DunningKrugerExplination.js b/client/src/components/exercise/lab13/pages/DunningKrugerExplination.js new file mode 100644 index 000000000..bf084190c --- /dev/null +++ b/client/src/components/exercise/lab13/pages/DunningKrugerExplination.js @@ -0,0 +1,19 @@ +import { React } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; + +const DunningKrugerExplination = () => { + const handleContinue = () => { + startExercise(); + navigate("/Lab13/Exercise/ConclusionPage"); + }; + + return ( +
    + Dunning Kruger Explination Page + +
    + ); +}; + +export default DunningKrugerExplination; diff --git a/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js b/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js new file mode 100644 index 000000000..87350089c --- /dev/null +++ b/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js @@ -0,0 +1,27 @@ +import { React, useEffect } from "react"; +import { EXERCISE_PLAYING } from "src/constants/index"; +import { startExercise } from "src/reducers/lab2/actions"; +import useMainStateContext from "src/reducers/MainContext"; +import { navigate } from "@reach/router"; + +const ExerciseIntroduction = () => { + const { actions } = useMainStateContext(); + + useEffect(() => { + actions.updateUserState(EXERCISE_PLAYING); + }, []); + + const handleContinue = () => { + startExercise(); + navigate("/Lab13/Exercise/ConfidenceRanking"); + }; + + return ( +
    + Exercise Introduction Page + +
    + ); +}; + +export default ExerciseIntroduction; diff --git a/client/src/components/exercise/lab13/pages/HaloExplination.js b/client/src/components/exercise/lab13/pages/HaloExplination.js new file mode 100644 index 000000000..bdaf22aa2 --- /dev/null +++ b/client/src/components/exercise/lab13/pages/HaloExplination.js @@ -0,0 +1,19 @@ +import { React } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; + +const HaloExplination = () => { + const handleContinue = () => { + startExercise(); + navigate("/Lab13/Exercise/AIandSearchPanel"); + }; + + return ( +
    + Halo Effect Explination Page + +
    + ); +}; + +export default HaloExplination; diff --git a/client/src/components/exercise/lab13/pages/IDEExercise.js b/client/src/components/exercise/lab13/pages/IDEExercise.js new file mode 100644 index 000000000..4907b23a1 --- /dev/null +++ b/client/src/components/exercise/lab13/pages/IDEExercise.js @@ -0,0 +1,19 @@ +import { React } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; + +const IDEExercise = () => { + const handleContinue = () => { + startExercise(); + navigate("/Lab13/Exercise/PanelswithIDEFixes"); + }; + + return ( +
    + IDE Exercise + +
    + ); +}; + +export default IDEExercise; diff --git a/client/src/components/exercise/lab13/pages/IDEIntroduction.js b/client/src/components/exercise/lab13/pages/IDEIntroduction.js new file mode 100644 index 000000000..f03cf7a96 --- /dev/null +++ b/client/src/components/exercise/lab13/pages/IDEIntroduction.js @@ -0,0 +1,19 @@ +import { React } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; + +const IDEIntroduction = () => { + const handleContinue = () => { + startExercise(); + navigate("/Lab13/Exercise/IDEExercise"); + }; + + return ( +
    + IDE Introduction Page + +
    + ); +}; + +export default IDEIntroduction; diff --git a/client/src/components/exercise/lab13/pages/PanelswithIDEFixes.js b/client/src/components/exercise/lab13/pages/PanelswithIDEFixes.js new file mode 100644 index 000000000..d8c4c32cb --- /dev/null +++ b/client/src/components/exercise/lab13/pages/PanelswithIDEFixes.js @@ -0,0 +1,19 @@ +import { React } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; + +const IDEIntroduction = () => { + const handleContinue = () => { + startExercise(); + navigate("/Lab13/Exercise/DunningKrugerExplination"); + }; + + return ( +
    + AI/Search Panel with IDE Fixes Page + +
    + ); +}; + +export default IDEIntroduction; diff --git a/client/src/components/exercise/lab13/pages/TruthBiasExplination.js b/client/src/components/exercise/lab13/pages/TruthBiasExplination.js new file mode 100644 index 000000000..101f47334 --- /dev/null +++ b/client/src/components/exercise/lab13/pages/TruthBiasExplination.js @@ -0,0 +1,19 @@ +import { React } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; + +const TruthBiasExplination = () => { + const handleContinue = () => { + startExercise(); + navigate("/Lab13/Exercise/IDEIntroduction"); + }; + + return ( +
    + Truth Bias Explination Page + +
    + ); +}; + +export default TruthBiasExplination; From 4793e2e5c76094a4329ee00149aafe8c1133f03c Mon Sep 17 00:00:00 2001 From: Emma Schmitt Date: Wed, 5 Nov 2025 15:22:27 -0500 Subject: [PATCH 010/180] DOM HELPED ME FIX THE ISSUE YIPPEEE --- client/src/components/exercise/lab13/Main.js | 4 +--- client/src/components/exercise/lab13/pages/Conclusion.js | 8 ++++---- .../exercise/lab13/pages/DunningKrugerExplination.js | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/client/src/components/exercise/lab13/Main.js b/client/src/components/exercise/lab13/Main.js index 74a639d80..ed6afadcd 100644 --- a/client/src/components/exercise/lab13/Main.js +++ b/client/src/components/exercise/lab13/Main.js @@ -5,15 +5,13 @@ import { EXERCISE_STATES } from "../../../constants/lab13"; import ExerciseStateContext from "./Lab13Context"; // lab imported dependencies; -// import GradApplication from "./components/GradApplication.js"; -// import Diploma from "./components/Diploma"; + import ExerciseIntroduction from "./pages/ExerciseIntroduction"; import ConfidenceRanking from "./pages/ConfidenceRanking"; import AIPanel from "./pages/AIPanel.js"; import AIandSearchPanel from "./pages/AIandSearchPanel.js"; import Conclusion from "./pages/Conclusion.js"; import DunningKrugerExplination from "./pages/DunningKrugerExplination"; -// import ExerciseIntro from "./pages/ExerciseIntroduction"; import HaloExplination from "./pages/HaloExplination"; import IDEExercise from "./pages/IDEExercise"; import IDEIntroduction from "./pages/IDEIntroduction"; diff --git a/client/src/components/exercise/lab13/pages/Conclusion.js b/client/src/components/exercise/lab13/pages/Conclusion.js index dc401ccac..419179569 100644 --- a/client/src/components/exercise/lab13/pages/Conclusion.js +++ b/client/src/components/exercise/lab13/pages/Conclusion.js @@ -1,7 +1,6 @@ -import { React } from "react"; +import { React, useEffect } from "react"; import useMainStateContext from "src/reducers/MainContext"; import UserLabService from "../../../../services/UserLabService"; -import { navigate } from "@reach/router"; import { EXERCISE_IDLE } from "src/constants/index"; import { LAB_ID } from "../../../../constants/lab13"; @@ -10,7 +9,6 @@ const Conclusion = () => { const handleFinish = async () => { actions.updateUserState(EXERCISE_IDLE); - await navigate("/Lab13/Reinforcement"); await UserLabService.complete_exercise(LAB_ID); if (state.main.user?.firstname !== null && state.main.user !== null) { await UserLabService.user_complete_exercise( @@ -19,7 +17,9 @@ const Conclusion = () => { ); } }; - + useEffect(() => { + handleFinish(); + }, []); return (
    Conclusion Page diff --git a/client/src/components/exercise/lab13/pages/DunningKrugerExplination.js b/client/src/components/exercise/lab13/pages/DunningKrugerExplination.js index bf084190c..e84ef0b1e 100644 --- a/client/src/components/exercise/lab13/pages/DunningKrugerExplination.js +++ b/client/src/components/exercise/lab13/pages/DunningKrugerExplination.js @@ -5,7 +5,7 @@ import { navigate } from "@reach/router"; const DunningKrugerExplination = () => { const handleContinue = () => { startExercise(); - navigate("/Lab13/Exercise/ConclusionPage"); + navigate("/Lab13/Exercise/Conclusion"); }; return ( From bd7b2b00bec1c90cb1da46614a4254c1f6576c67 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Thu, 6 Nov 2025 16:51:17 -0500 Subject: [PATCH 011/180] Fix scroll behavior and update reading section - Remove tw-overflow-y-auto from App.js to take away duplicate scrolling - Add tw-h-[35rem] to Reading.js container for height constraint - Add tw-overflow-y-scroll to inner content div for scroll behavior - Update About section with lab description - Merge 'How AI Design Amplifies Bias' into 'What Can We Do About It' section - Improve AI literacy explanation --- client/src/App.js | 2 +- client/src/components/body/Reading/Reading.js | 4 ++-- server/database/schema.sql | 17 +++++++++++------ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/client/src/App.js b/client/src/App.js index ec0db3378..8404b6b92 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -96,7 +96,7 @@ const App = () => { const renderLabs = () => { return ( -
    +
    diff --git a/client/src/components/body/Reading/Reading.js b/client/src/components/body/Reading/Reading.js index 002ab1afe..2390d699e 100644 --- a/client/src/components/body/Reading/Reading.js +++ b/client/src/components/body/Reading/Reading.js @@ -122,7 +122,7 @@ const Reading = (props) => { return (

    { > Reading

    -
    +
    {readingData?.description !== "" ? ( <> diff --git a/server/database/schema.sql b/server/database/schema.sql index a9d97f600..a7454ef28 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3458,8 +3458,13 @@ e'[ "LO2: Create design strategies that promote critical thinking, such as certainty indicators and disclaimers about AI limitations (Synthesis)", "LO3: Identify common hallucination patterns in generative AI, including false citations and misleading self-references (Application)", "LO4: Experience how confident language, polished grammar, and proximity to credible sources can lead to overestimation of AI accuracy (Comprehension)" -]', 'Emma Schmitt, Kristen Fang, Darlyn Gomez, Christine Espeleta', 'https://ball.rit.edu/Lab13/', null, 'In this lab, you will learn about how a persons own bias can play a part into Generative AI interactions. You will learn about what Cognitive Bias is, how it plays into Human Interactions with Generative AI, Three Specific Cognitive Biases that normally impact AI Interactions, view related media to reinforce the topic, and take a quiz to test your knowledge! Click -“Next” to start!', e'{ +]', 'Emma Schmitt, Kristen Fang, Darlyn Gomez, Christine Espeleta', 'https://ball.rit.edu/Lab13/', null, +'In this lab, you will explore what cognitive bias is and +how it influences trust in AI systems. You will evaluate AI +responses, compare them with search results, and reflect on +your own decision-making process. Afterwards, you will spot +bias mitigation features in real-world AI platforms and take +a quiz to test your knowledge. Click "Next" to start!', e'{ "description": { "header":"", "content":"" @@ -3528,14 +3533,14 @@ e'[ "content": ["In the case of Mata V. Avianca (2023), experienced lawyers fell victim to cognitive bias when relying on generative AI output. Attorneys Steven A. Schwartz and Peter LoDuca used ChatGPT to help prepare a legal filing for a passenger, Roberto Mata, who claimed injury on an Avianca flight. The AI confidently produced realistic legal citations and reasoning, but every case it cited wasn\'t real. When questioned by Avianca\'s lawyers and the court on the location of the cited legal cases, Mata\'s lawyers continued to defend the fake citations because ChatGPT assured them the cases \'indeed exist\' and \'can be found in reputable legal databases such as LexisNexis and Westlaw.\' The court later sanctioned them making this one of the first high profile examples of cognitive bias in human-AI interactions! This case shows how polished tone, confident phrasing, and the perceived expertise of the AI can create a halo of trust, even making skilled professionals overrely on it and overlook errors."] }, { - "header": "How AI Design Amplifies Bias", + "header": "What Can We Do About It: AI Literacy", "type": "", - "content": ["So why do even experienced lawyers fall for AI-generated content? The answer lies in how AI systems are built. AI systems are intentionally designed to feel smart. Developers craft their structure, tone and human-like phrasing to make interactions natural and engaging, unconsciously influencing perception. When an AI\'s content draws in our sense of trust, it becomes difficult to separate credibility from confidence."] + "content": ["So why does AI seem so convincing, even when it\'s wrong? The reason lies in how AI systems are built: they’re designed to sound smart. Developers craft their tone, structure, and human-like phrasing to make interactions natural and engaging, which can unconsciously influence our perception."] }, { - "header": "What Can We Do About It: AI Literacy", + "header": "", "type": "", - "content": ["Developing AI literacy means resisting the urge to accept AI outputs at face value. Here are some small but powerful habits:"] + "content": ["This is why AI literacy matters. AI literacy is the skill of using AI thoughtfully by understanding how it works, recognizing its limits, and knowing when you should question its responses instead of accepting output at face value. Here are a few small powerful habits:"] }, { "header": "", From fb8920a80466365ff442cc863ed97f6a4585b8ba Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Fri, 7 Nov 2025 14:27:14 -0500 Subject: [PATCH 012/180] Putting in exercise scenario --- .../lab13/pages/ExerciseIntroduction.js | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js b/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js index 87350089c..14e80fa84 100644 --- a/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js +++ b/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js @@ -18,8 +18,26 @@ const ExerciseIntroduction = () => { return (
    - Exercise Introduction Page - +

    Exercise Start

    +
    +

    + You are a student at ALL university who is doing their psychology + homework. You are given 3 questions to answer and are allowed to use + ALL's new Generative AI tool, AL, to help you answer them. You + want to tackle each question from your most least knowledgeable to + most knowledgable. Let's start with ranking your knowledge about + each topic before you use AL to help you answer. +

    +
    + Click the Start button to begin the exercise! +
    +
    +
    ); }; From 3abe668bd77b58add81f3a194f2b6af4ffb89861 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Fri, 7 Nov 2025 16:17:09 -0500 Subject: [PATCH 013/180] Ranking component within Confidence Ranking, so far has no styling, just working --- .../imagine-components/Ranking.js | 78 +++++++++++------ .../components/exercise/lab13/Lab13Context.js | 79 ++++++++++++++++- client/src/components/exercise/lab13/Main.js | 57 +++++++++--- .../exercise/lab13/pages/ConfidenceRanking.js | 86 ++++++++++++++++++- client/src/constants/lab13/RankingConfig.js | 39 +++++++++ 5 files changed, 296 insertions(+), 43 deletions(-) create mode 100644 client/src/constants/lab13/RankingConfig.js diff --git a/client/src/components/all-components/imagine-components/Ranking.js b/client/src/components/all-components/imagine-components/Ranking.js index 6fdaa4b4a..69717785a 100644 --- a/client/src/components/all-components/imagine-components/Ranking.js +++ b/client/src/components/all-components/imagine-components/Ranking.js @@ -54,43 +54,80 @@ const RankingEntry = (option, length, handleOption, currrentValue) => { }; const RankingQuestion = (props) => { - //Both are used in order to ensure mutual exculivity between a value and it's key + //Both are used in order to ensure mutual exclusivity between a value and its key //These are answers in {option: ranking} eg: {"Option11": 2} const [selectedAnswers, setSelectedAnswers] = useState({}); //These are the answers in the inverted order {ranking: option} eg {2: "Option1"} const [availableAnswers, setAvailableAnswers] = useState({}); - //sets the base value of each hashmap. for selcted answers 0 is the defalut value, and for available answers "" is the default + // Work with a local copy of options to avoid mutating props.options directly + const [displayOptions, setDisplayOptions] = useState([...props.options]); + + // Shuffle displayOptions on mount unless disabled + useEffect(() => { + if (props.disableShuffle) { + setDisplayOptions([...props.options]); + return; + } + const arr = [...props.options]; + for (let i = arr.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + const temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } + setDisplayOptions(arr); + }, [props.options]); + + // sets the base value of each hashmap. for selected answers 0 is the default value, and for available answers "" is the default + // If props.initialSelectedAnswers is provided, use it to pre-populate both maps useEffect(() => { const selectedOptions = {}; const availableOptions = {}; - for (let i = 0; i < props.options.length; i++) { - availableOptions[i + 1] = ""; - selectedOptions[props.options[i]] = 0; + + for (let i = 0; i < displayOptions.length; i++) { + const opt = displayOptions[i]; + const initialVal = props.initialSelectedAnswers?.[opt] ?? 0; + selectedOptions[opt] = initialVal; } + for (let i = 0; i < displayOptions.length; i++) { + const rank = i + 1; + // find which option (if any) is assigned to this rank from initialSelectedAnswers + let assigned = ""; + if (props.initialSelectedAnswers) { + for (const [k, v] of Object.entries(props.initialSelectedAnswers)) { + if (v === rank) { + assigned = k; + break; + } + } + } + availableOptions[rank] = assigned; + } + setSelectedAnswers(selectedOptions); setAvailableAnswers(availableOptions); - }, [props.options.length]); + }, [displayOptions, props.initialSelectedAnswers]); - //anytime selected answers are updated, notify the registered observer + // anytime selected answers are updated, notify the registered observer useEffect(() => { props.updatedSelectedAnswers?.(selectedAnswers); }, [selectedAnswers]); - //handles selection to ensure mutal exclusivity + // handles selection to ensure mutual exclusivity const handleSelection = (rankingNumber, option) => { const prevSelectedAnswer = selectedAnswers[option]; const prevAvailableAnswer = availableAnswers[rankingNumber]; - //if current ranking is already taken, remove is - if (prevAvailableAnswer != 0) { + // if current ranking is already taken, remove it + if (prevAvailableAnswer && prevAvailableAnswer !== "") { setSelectedAnswers((prevState) => ({ ...prevState, [prevAvailableAnswer]: 0, })); } - //if current option is already taken, remove it - if (prevSelectedAnswer != "") { + // if current option is already taken, remove it + if (prevSelectedAnswer && prevSelectedAnswer !== 0) { setAvailableAnswers((prevState) => ({ ...prevState, [prevSelectedAnswer]: "", @@ -106,24 +143,14 @@ const RankingQuestion = (props) => { })); }; - useEffect(() => { - for (let i = props.options.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - const temp = props.options[i]; - props.options[i] = props.options[j]; - props.options[j] = temp; - } - return; - }, []); - return (
    - {props.options.map((option) => ( + {displayOptions.map((option) => (
    {RankingEntry( option, - props.options.length, + displayOptions.length, handleSelection, selectedAnswers[option], )} @@ -137,6 +164,9 @@ const RankingQuestion = (props) => { RankingQuestion.propTypes = { options: PropTypes.array.isRequired, updatedSelectedAnswers: PropTypes.func, + initialSelectedAnswers: PropTypes.object, + // when true, do not shuffle options on mount + disableShuffle: PropTypes.bool, }; export default RankingQuestion; diff --git a/client/src/components/exercise/lab13/Lab13Context.js b/client/src/components/exercise/lab13/Lab13Context.js index cb82fb2c1..5485285b5 100644 --- a/client/src/components/exercise/lab13/Lab13Context.js +++ b/client/src/components/exercise/lab13/Lab13Context.js @@ -1,5 +1,8 @@ -import { createContext } from "react"; +import React from "react"; +import { createContext, useState } from "react"; +import PropTypes from "prop-types"; const ExerciseStateContext = createContext({ + // Existing user info state exerciseState: "", setExerciseState: () => {}, firstName: "", @@ -16,6 +19,80 @@ const ExerciseStateContext = createContext({ setMajor: () => {}, gradTerm: "", setGradTerm: () => {}, + + // Ranking state + rankingSuccess: false, + setRankingSuccess: () => {}, + rankingColumns: [], + setRankingColumns: () => {}, + rankingBank: [], + setRankingBank: () => {}, + rankingComplete: false, + setRankingComplete: () => {}, + resetRanking: () => {}, }); +export const ExerciseStateProvider = ({ children }) => { + const [exerciseState, setExerciseState] = useState("submitting"); + const [firstName, setFirstName] = useState(""); + const [lastName, setLastName] = useState(""); + const [preferredName, setPreferredName] = useState(""); + const [pronouns, setPronouns] = useState(""); + const [college, setCollege] = useState(""); + const [major, setMajor] = useState(""); + const [gradTerm, setGradTerm] = useState(""); + + // Ranking state + const [rankingSuccess, setRankingSuccess] = useState(false); + const [rankingColumns, setRankingColumns] = useState(() => []); // Initialize as empty array + const [rankingBank, setRankingBank] = useState(() => []); // Initialize as empty array + const [rankingComplete, setRankingComplete] = useState(false); + + // Reset ranking function + const resetRanking = () => { + setRankingSuccess(false); + setRankingColumns([]); + setRankingBank([]); + setRankingComplete(false); + }; + + return ( + + {children} + + ); +}; + +ExerciseStateProvider.propTypes = { + children: PropTypes.node.isRequired, +}; + export default ExerciseStateContext; diff --git a/client/src/components/exercise/lab13/Main.js b/client/src/components/exercise/lab13/Main.js index ed6afadcd..1f6f2d5ce 100644 --- a/client/src/components/exercise/lab13/Main.js +++ b/client/src/components/exercise/lab13/Main.js @@ -27,13 +27,20 @@ const Main = () => { const [exerciseState, setExerciseState] = useState( EXERCISE_STATES.EXERCISE_SELECTION_DEFAULT, ); - // const [firstName, setFirstName] = useState(""); - // const [lastName, setLastName] = useState(""); - // const [preferredName, setPreferredName] = useState(""); - // const [pronouns, setPronouns] = useState(""); - // const [college, setCollege] = useState(""); - // const [major, setMajor] = useState(""); - // const [gradTerm, setGradTerm] = useState(""); + // User profile state + const [firstName, setFirstName] = useState(""); + const [lastName, setLastName] = useState(""); + const [preferredName, setPreferredName] = useState(""); + const [pronouns, setPronouns] = useState(""); + const [college, setCollege] = useState(""); + const [major, setMajor] = useState(""); + const [gradTerm, setGradTerm] = useState(""); + + // Ranking state + const [rankingSuccess, setRankingSuccess] = useState(false); + const [rankingColumns, setRankingColumns] = useState([]); + const [rankingBank, setRankingBank] = useState([]); + const [rankingComplete, setRankingComplete] = useState(false); return (
    @@ -41,13 +48,35 @@ const Main = () => { value={{ exerciseState, setExerciseState, - // firstName, - // setFirstName, - // lastName, - // setLastName, - // preferredName, - // setPreferredName, - // pronouns, + firstName, + setFirstName, + lastName, + setLastName, + preferredName, + setPreferredName, + pronouns, + setPronouns, + college, + setCollege, + major, + setMajor, + gradTerm, + setGradTerm, + // Ranking state + rankingSuccess, + setRankingSuccess, + rankingColumns, + setRankingColumns, + rankingBank, + setRankingBank, + rankingComplete, + setRankingComplete, + resetRanking: () => { + setRankingSuccess(false); + setRankingColumns([]); + setRankingBank([]); + setRankingComplete(false); + }, // setPronouns, // college, // setCollege, diff --git a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js index 7800409de..c8078d540 100644 --- a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js +++ b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js @@ -1,17 +1,95 @@ -import { React } from "react"; +import React, { useState, useEffect, useContext } from "react"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; +import DragDropGame from "src/components/all-components/DragAndDrop/DragDropGame"; +import ExerciseStateContext from "../Lab13Context"; +import { initialColumns, initialBank } from "src/constants/lab13/RankingConfig"; const ConfidenceRanking = () => { + const { + rankingSuccess, + setRankingSuccess, + rankingColumns, + setRankingColumns, + rankingBank, + setRankingBank, + } = useContext(ExerciseStateContext); + + // Initialize from context if available, otherwise use initial values + const [cols, setCols] = useState(() => + rankingColumns.length > 0 + ? rankingColumns + : structuredClone(initialColumns), + ); + const [bank, setBank] = useState(() => + rankingBank.length > 0 ? rankingBank : structuredClone(initialBank), + ); + const [success, setSuccess] = useState(rankingSuccess); + + // Create a permissive correctAssignments that accepts any arrangement + const correctAssignments = initialColumns.map((col) => ({ + id: col.id, + cards: initialBank.map((item) => item.id), // All cards are valid in any column + })); + + // Save to context whenever cols or bank changes + useEffect(() => { + setRankingColumns(cols); + setRankingBank(bank); + }, [cols, bank, setRankingColumns, setRankingBank]); + + // Custom validation: check if all items are placed + useEffect(() => { + const allItemsPlaced = + bank.length === 0 && + cols.every((col) => col.cards && col.cards.length > 0); + setSuccess(allItemsPlaced); + setRankingSuccess(allItemsPlaced); + }, [cols, bank, setRankingSuccess]); + const handleContinue = () => { + if (!success) { + alert( + "Please complete ranking your knowledge of all topics before continuing", + ); + return; + } startExercise(); navigate("/Lab13/Exercise/AIPanel"); }; return ( -
    - Confidence Ranking Page - +
    +

    Confidence Ranking Page

    +

    + Drag and drop the topics to rank them by your knowledge level +

    +
    + +
    ); }; diff --git a/client/src/constants/lab13/RankingConfig.js b/client/src/constants/lab13/RankingConfig.js new file mode 100644 index 000000000..4d160894c --- /dev/null +++ b/client/src/constants/lab13/RankingConfig.js @@ -0,0 +1,39 @@ +const initialColumns = [ + { id: "column1", title: "Most Knowledgeable", cards: [] }, + { id: "column2", title: "Moderately Knowledgeable", cards: [] }, + { id: "column3", title: "Least Knowledgeable", cards: [] }, +]; + +const initialBank = [ + { + id: "topic1", + title: "Deaf/Hard of Hearing (HOH)", + body: "", + isCorrect: true, + }, + { + id: "topic2", + title: "Dexterity", + body: "", + isCorrect: true, + }, + { + id: "topic3", + title: "Literacy", + body: "", + isCorrect: true, + }, +]; + +// Since ranking is subjective, we'll consider any complete ranking as correct +const correctAssignments = [ + { id: "column1", cards: [] }, + { id: "column2", cards: [] }, + { id: "column3", cards: [] }, +]; + +module.exports = { + initialColumns, + initialBank, + correctAssignments, +}; From 819192556e12eb4f76b7fa8fffab74eb16873344 Mon Sep 17 00:00:00 2001 From: domenicmangano Date: Fri, 7 Nov 2025 16:21:41 -0500 Subject: [PATCH 014/180] Started building local login --- .../src/components/body/login/AvatarData.js | 51 ++++++++++++++++ .../components/header/helpers/LoginButton.js | 59 ++++++++++++++++++- server/database/schema.sql | 2 + 3 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 client/src/components/body/login/AvatarData.js diff --git a/client/src/components/body/login/AvatarData.js b/client/src/components/body/login/AvatarData.js new file mode 100644 index 000000000..719dc9e10 --- /dev/null +++ b/client/src/components/body/login/AvatarData.js @@ -0,0 +1,51 @@ +export const AvatarData = [ + { + id: 1, + name: "Ally Accessibility", + avatarAttributes: { + topType: "LongHairStraight2", + accessoriesType: "Round", + hairColor: "BlondeGolden", + facialHairType: "Blank", + clotheType: "ShirtCrewNeck", + clotheColor: "Blue02", + eyeType: "Happy", + eyebrowType: "Default", + mouthType: "Twinkle", + skinColor: "Brown", + }, + }, + { + id: 2, + name: "Lily Labs", + avatarAttributes: { + topType: "ShortHairShaggyMullet", + accessoriesType: "Blank", + hairColor: "Brown", + facialHairType: "Blank", + facialHairColor: "Red", + clotheType: "BlazerSweater", + eyeType: "Close", + eyebrowType: "UpDownNatural", + mouthType: "Twinkle", + skinColor: "Yellow", + }, + }, + { + id: 3, + name: "Edna Education", + avatarAttributes: { + topType: "LongHairNotTooLong", + accessoriesType: "Round", + hairColor: "BlondeGolden", + facialHairType: "Blank", + facialHairColor: "Black", + clotheType: "ShirtCrewNeck", + clotheColor: "PastelRed", + eyeType: "Close", + eyebrowType: "DefaultNatural", + mouthType: "Eating", + skinColor: "Light", + }, + }, +]; diff --git a/client/src/components/header/helpers/LoginButton.js b/client/src/components/header/helpers/LoginButton.js index 1adcc079e..dccf2db6e 100644 --- a/client/src/components/header/helpers/LoginButton.js +++ b/client/src/components/header/helpers/LoginButton.js @@ -4,11 +4,64 @@ import React from "react"; import API from "../../../services/API"; import GoogleLogin from "../../../assets/images/google_buttons/Google_Sign_In.svg"; +import Avatar from "avataaars"; +import { AvatarData } from "../../body/login/AvatarData"; +import UserService from "../../../services/UserService"; const LoginButton = (props) => { const { enabled } = props; - if (enabled) { + const isDev = process.env.NODE_ENV === "development"; + + console.warn(isDev); + + const developmentLogin = async (id) => { + const user = await UserService.getUser(id); + console.warn(user); + return user; + }; + + const devLogin = () => { + return ( +
    +

    Who would you like to log in as?

    +
    + {AvatarData.map((data, index) => { + return ( +
    developmentLogin(data.id)} + key={index} + className={ + "tw-flex tw-flex-col tw-items-center tw-rounded-full hover:tw-shadow tw-p-2" + } + > + + {data.name} +
    + ); + })} +
    +
    + ); + }; + + const prodLogin = () => { return ( { ); + }; + + if (enabled) { + return isDev ? devLogin() : prodLogin(); } return
    ; diff --git a/server/database/schema.sql b/server/database/schema.sql index 1544b480e..52922e192 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -388,6 +388,8 @@ create table users UNIQUE (email1), UNIQUE (email2) ); +insert into users (userid, firstname, lastinitial, email1, email2, userpfp) +VALUES (1, 'Ally', 'A', 'allyaccessibility@all.edu', null, null), (2, 'Lily', 'L', 'lilylabs@all.edu', null, null), (3, 'Edna', 'E', 'ednaeducation@all.edu', null, null); create table lab8_exercise ( From 89e3dba5e61c521c29c00a5ea28e70ae5f979956 Mon Sep 17 00:00:00 2001 From: domenicmangano Date: Sun, 9 Nov 2025 08:45:04 -0500 Subject: [PATCH 015/180] Finished dev login --- .../src/components/body/login/AvatarData.js | 6 +++--- client/src/components/header/header.js | 2 +- .../components/header/helpers/LoginButton.js | 19 ++++++++++--------- client/src/reducers/MainContext.js | 13 +++++++++++++ client/src/reducers/MainReducer.js | 2 ++ client/src/reducers/MainReducerForContext.js | 1 + server/database/schema.sql | 2 +- 7 files changed, 31 insertions(+), 14 deletions(-) diff --git a/client/src/components/body/login/AvatarData.js b/client/src/components/body/login/AvatarData.js index 719dc9e10..6d431cdd6 100644 --- a/client/src/components/body/login/AvatarData.js +++ b/client/src/components/body/login/AvatarData.js @@ -1,6 +1,6 @@ export const AvatarData = [ { - id: 1, + id: 98, name: "Ally Accessibility", avatarAttributes: { topType: "LongHairStraight2", @@ -16,7 +16,7 @@ export const AvatarData = [ }, }, { - id: 2, + id: 99, name: "Lily Labs", avatarAttributes: { topType: "ShortHairShaggyMullet", @@ -32,7 +32,7 @@ export const AvatarData = [ }, }, { - id: 3, + id: 100, name: "Edna Education", avatarAttributes: { topType: "LongHairNotTooLong", diff --git a/client/src/components/header/header.js b/client/src/components/header/header.js index fde9ea0e9..05d2dff9d 100644 --- a/client/src/components/header/header.js +++ b/client/src/components/header/header.js @@ -205,7 +205,7 @@ const Header = (props) => {
    - navigate(state, props.state, actions, 2, 0) + navigate(state, props.state, actions, 2, 99) } aria-label="Google Profile Photo" className="tw-h-12 tw-object-cover" diff --git a/client/src/components/header/helpers/LoginButton.js b/client/src/components/header/helpers/LoginButton.js index dccf2db6e..0b2b5355a 100644 --- a/client/src/components/header/helpers/LoginButton.js +++ b/client/src/components/header/helpers/LoginButton.js @@ -6,19 +6,18 @@ import API from "../../../services/API"; import GoogleLogin from "../../../assets/images/google_buttons/Google_Sign_In.svg"; import Avatar from "avataaars"; import { AvatarData } from "../../body/login/AvatarData"; -import UserService from "../../../services/UserService"; +import useMainStateContext from "../../../reducers/MainContext"; const LoginButton = (props) => { const { enabled } = props; + const { actions } = useMainStateContext(); const isDev = process.env.NODE_ENV === "development"; console.warn(isDev); - const developmentLogin = async (id) => { - const user = await UserService.getUser(id); - console.warn(user); - return user; + const developmentLogin = (userId) => { + actions.devLogin(userId); }; const devLogin = () => { @@ -27,20 +26,22 @@ const LoginButton = (props) => { className={"tw-flex tw-flex-col tw-w-full tw-h-full tw-items-center"} >

    Who would you like to log in as?

    -
    +
    {AvatarData.map((data, index) => { return (
    developmentLogin(data.id)} key={index} className={ - "tw-flex tw-flex-col tw-items-center tw-rounded-full hover:tw-shadow tw-p-2" + "tw-flex tw-flex-col tw-items-center tw-rounded-full hover:tw-cursor-pointer hover:tw-font-bold" } > { console.error(error); } }, + devLogin: async (userId) => { + try { + console.warn(userId); + const user = await UserService.getUser(userId); + console.warn(user); + if (user) { + dispatch({ type: types.UPDATE_USER, payload: { user: user } }); + } + } catch (error) { + console.log(error); + } + }, setLab: (newLab) => dispatch({ type: types.SET_LAB, payload: { lab: newLab } }), updateUser: (newUser) => diff --git a/client/src/reducers/MainReducer.js b/client/src/reducers/MainReducer.js index 20ac72607..bc7df6f09 100644 --- a/client/src/reducers/MainReducer.js +++ b/client/src/reducers/MainReducer.js @@ -6,6 +6,7 @@ export const types = { SET_IS_IMAGINE: "@accessibility-lab/isImagine", SHOW_SNACKBAR: "@accessibility-lab/showSnackbar", HIDE_SNACKBAR: "@accessibility-lab/hideSnackbar", + DEV_LOGIN: "@accessibility-lab/devLogin", }; export const initialState = { @@ -67,6 +68,7 @@ export const MainReducer = (state = initialState, action) => { export const actions = { setBody: (body) => ({ type: types.SET_BODY, body }), login: () => ({ type: types.LOGIN }), + devLogin: (user) => ({ type: types.LOGIN, user }), setLab: (lab) => ({ type: types.SET_LAB, lab }), updateUser: (user) => ({ type: types.UPDATE_USER, user }), setIsImagine: (isImagine) => ({ type: types.SET_IS_IMAGINE, isImagine }), diff --git a/client/src/reducers/MainReducerForContext.js b/client/src/reducers/MainReducerForContext.js index fa564a6dc..9dc9cff07 100644 --- a/client/src/reducers/MainReducerForContext.js +++ b/client/src/reducers/MainReducerForContext.js @@ -26,6 +26,7 @@ export const types = { SET_IS_IMAGINE: "@accessibility-lab/context/set_is_imagine", SHOW_SNACKBAR: "@accessibility-lab/context/show_snackbar", HIDE_SNACKBAR: "@accessibility-lab/context/hide_snackbar", + DEV_LOGIN: "@accessibility-lab/context/dev_login", }; /** diff --git a/server/database/schema.sql b/server/database/schema.sql index 52922e192..df208e2bf 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -389,7 +389,7 @@ create table users UNIQUE (email2) ); insert into users (userid, firstname, lastinitial, email1, email2, userpfp) -VALUES (1, 'Ally', 'A', 'allyaccessibility@all.edu', null, null), (2, 'Lily', 'L', 'lilylabs@all.edu', null, null), (3, 'Edna', 'E', 'ednaeducation@all.edu', null, null); +VALUES (98, 'Ally', 'A', 'allyaccessibility@all.edu', null, null), (99, 'Lily', 'L', 'lilylabs@all.edu', null, null), (100, 'Edna', 'E', 'ednaeducation@all.edu', null, null); create table lab8_exercise ( From 309357896a6dc0ec177e2123e50ffb17d8737ac5 Mon Sep 17 00:00:00 2001 From: Owen Luts Date: Mon, 10 Nov 2025 15:45:59 -0500 Subject: [PATCH 016/180] grammar update --- server/database/schema.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/database/schema.sql b/server/database/schema.sql index 7fafd87f2..dbcbc0f0b 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3618,7 +3618,7 @@ e'[ "multiChoice": false }, { - "question": "Select all of the following that users can use to check the validity of Generative AI responses.", + "question": "Which of the following can users use to check the validity of Generative AI responses?", "answers": [ { "val": 1, From 9ce86696226fd48f9a87686bb8a9b09d16baeef5 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Tue, 11 Nov 2025 13:01:12 -0500 Subject: [PATCH 017/180] Drag and Drop look and saved ranking, still some bugs, but need functionatlity to move on to next component --- .../DragDropGame.js | 0 .../DraggableCard.js | 0 .../DroppableBank.js | 0 .../DroppableColumn.js | 0 .../CreateExperientialExercise.js | 2 +- .../LabIdeaActivity/DesignLabIntroduction.js | 2 +- .../LabIdeaActivity/DesignSortNewCategory.js | 2 +- .../ScrumActivity/ScrumBoardActivity.js | 2 +- .../ScrumActivity/ScrumVelocityActivity.js | 2 +- .../components/DragAndDrop/DragDropGame.js | 248 ++++++++++++++++++ .../components/DragAndDrop/DraggableCard.js | 61 +++++ .../components/DragAndDrop/DroppableBank.js | 29 ++ .../components/DragAndDrop/DroppableColumn.js | 46 ++++ .../exercise/lab13/pages/ConfidenceRanking.js | 51 ++-- 14 files changed, 411 insertions(+), 34 deletions(-) rename client/src/components/all-components/{DragAndDrop => DragAndDropNoCorrectAnswer}/DragDropGame.js (100%) rename client/src/components/all-components/{DragAndDrop => DragAndDropNoCorrectAnswer}/DraggableCard.js (100%) rename client/src/components/all-components/{DragAndDrop => DragAndDropNoCorrectAnswer}/DroppableBank.js (100%) rename client/src/components/all-components/{DragAndDrop => DragAndDropNoCorrectAnswer}/DroppableColumn.js (100%) create mode 100644 client/src/components/exercise/lab13/components/DragAndDrop/DragDropGame.js create mode 100644 client/src/components/exercise/lab13/components/DragAndDrop/DraggableCard.js create mode 100644 client/src/components/exercise/lab13/components/DragAndDrop/DroppableBank.js create mode 100644 client/src/components/exercise/lab13/components/DragAndDrop/DroppableColumn.js diff --git a/client/src/components/all-components/DragAndDrop/DragDropGame.js b/client/src/components/all-components/DragAndDropNoCorrectAnswer/DragDropGame.js similarity index 100% rename from client/src/components/all-components/DragAndDrop/DragDropGame.js rename to client/src/components/all-components/DragAndDropNoCorrectAnswer/DragDropGame.js diff --git a/client/src/components/all-components/DragAndDrop/DraggableCard.js b/client/src/components/all-components/DragAndDropNoCorrectAnswer/DraggableCard.js similarity index 100% rename from client/src/components/all-components/DragAndDrop/DraggableCard.js rename to client/src/components/all-components/DragAndDropNoCorrectAnswer/DraggableCard.js diff --git a/client/src/components/all-components/DragAndDrop/DroppableBank.js b/client/src/components/all-components/DragAndDropNoCorrectAnswer/DroppableBank.js similarity index 100% rename from client/src/components/all-components/DragAndDrop/DroppableBank.js rename to client/src/components/all-components/DragAndDropNoCorrectAnswer/DroppableBank.js diff --git a/client/src/components/all-components/DragAndDrop/DroppableColumn.js b/client/src/components/all-components/DragAndDropNoCorrectAnswer/DroppableColumn.js similarity index 100% rename from client/src/components/all-components/DragAndDrop/DroppableColumn.js rename to client/src/components/all-components/DragAndDropNoCorrectAnswer/DroppableColumn.js diff --git a/client/src/components/exercise/lab0/DesignLabSection/ExperientialActivity/CreateExperientialExercise.js b/client/src/components/exercise/lab0/DesignLabSection/ExperientialActivity/CreateExperientialExercise.js index a503d1694..32642cd9e 100644 --- a/client/src/components/exercise/lab0/DesignLabSection/ExperientialActivity/CreateExperientialExercise.js +++ b/client/src/components/exercise/lab0/DesignLabSection/ExperientialActivity/CreateExperientialExercise.js @@ -4,7 +4,7 @@ import { initialColumns, correctAssignments, } from "../../../../../constants/lab0/DesignALab/ExperientialDND"; -import DragDropGame from "../../../../all-components/DragAndDrop/DragDropGame"; +import DragDropGame from "../../../../all-components/DragAndDropNoCorrectAnswer/DragDropGame"; import Lab0Context from "../../Lab0Context"; import { SECTION_STATUSES } from "../../../../../constants/lab0"; diff --git a/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignLabIntroduction.js b/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignLabIntroduction.js index f7915a4a1..c9583e3a1 100644 --- a/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignLabIntroduction.js +++ b/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignLabIntroduction.js @@ -1,5 +1,5 @@ import React, { useContext, useEffect, useState } from "react"; -import DragDropGame from "../../../../all-components/DragAndDrop/DragDropGame"; +import DragDropGame from "../../../../all-components/DragAndDropNoCorrectAnswer/DragDropGame"; import Lab0Context from "../../Lab0Context"; import { columns, diff --git a/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignSortNewCategory.js b/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignSortNewCategory.js index a8f34e686..02ecfc03c 100644 --- a/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignSortNewCategory.js +++ b/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignSortNewCategory.js @@ -1,6 +1,6 @@ import React, { useContext, useEffect, useState } from "react"; import Lab0Context from "../../Lab0Context"; -import DragDropGame from "../../../../all-components/DragAndDrop/DragDropGame"; +import DragDropGame from "../../../../all-components/DragAndDropNoCorrectAnswer/DragDropGame"; import _ from "lodash"; import { columns_new_category, diff --git a/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumBoardActivity.js b/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumBoardActivity.js index 732edea1e..62aab94da 100644 --- a/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumBoardActivity.js +++ b/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumBoardActivity.js @@ -1,5 +1,5 @@ import React, { useContext, useState, useEffect } from "react"; -import DragDropGame from "../../../../all-components/DragAndDrop/DragDropGame"; +import DragDropGame from "../../../../all-components/DragAndDropNoCorrectAnswer/DragDropGame"; import { initialColumns, initialBank, diff --git a/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumVelocityActivity.js b/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumVelocityActivity.js index 4bd225b18..5cea30756 100644 --- a/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumVelocityActivity.js +++ b/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumVelocityActivity.js @@ -1,4 +1,4 @@ -import DragDropGame from "../../../../all-components/DragAndDrop/DragDropGame"; +import DragDropGame from "../../../../all-components/DragAndDropNoCorrectAnswer/DragDropGame"; import { correctAssignments, initialBank, diff --git a/client/src/components/exercise/lab13/components/DragAndDrop/DragDropGame.js b/client/src/components/exercise/lab13/components/DragAndDrop/DragDropGame.js new file mode 100644 index 000000000..5c145e8ef --- /dev/null +++ b/client/src/components/exercise/lab13/components/DragAndDrop/DragDropGame.js @@ -0,0 +1,248 @@ +import React, { useState } from "react"; +import { DndContext } from "@dnd-kit/core"; +import DroppableColumn from "./DroppableColumn"; +import DroppableBank from "./DroppableBank"; +import PropTypes from "prop-types"; +import LabButton from "../LabButton"; +import StatusBanner from "../StatusBanner"; + +/** + * Use this format to pass in columns, bank and correct assignments + * Note: Keep ids the same across objects + * + * const initialColumns = [ + * { id: "column1", title: "Column 1", cards: [] }, + * { id: "column2", title: "Column 2", cards: [] }, + * ]; + * + * const initialBank = [ + * { id: "card1", content: "Card 1", isCorrect: true }, + * { id: "card2", content: "Card 2", isCorrect: true }, + * { id: "card3", content: "Card 3", isCorrect: true }, + * ]; + * + * const correctAssignments = [ + * { id: "column1", cards: ["card1"] }, + * { id: "column2", cards: ["card2", "card3"] }, + * ]; + */ + +const arrayToObject = (array, key) => { + return array.reduce((obj, item) => { + return { + ...obj, + [item[key]]: item, + }; + }, {}); +}; + +const DragDropGame = ({ + containerStyle, + colStyle, + bankStyle, + colCardStyle, + bankCardStyle, + msgStyle, + cols, + initialBank, + correctAssignments, + success, + setSuccess, + colHeaderStyle, + handleNav, + colContainerStyle, + gameStyle, +}) => { + const [columns, setColumns] = useState(arrayToObject(cols, "id")); + const [bank, setBank] = useState(initialBank); + const [message, setMessage] = useState(""); + const correct_assignments = arrayToObject(correctAssignments, "id"); + + const [correct, setCorrect] = useState(success); + + const onDragEnd = (event) => { + const { active, over } = event; + if (!over) return; + + const sourceId = active.id; + const destinationId = over.id; + + setColumns((prevColumns) => { + let newColumns = { ...prevColumns }; + let movedCard; + + if (sourceId === destinationId) { + return prevColumns; + } + + // First, find and remove the card from its source + for (let key in newColumns) { + if (newColumns[key].cards.some((card) => card.id === sourceId)) { + movedCard = newColumns[key].cards.find( + (card) => card.id === sourceId, + ); + newColumns[key].cards = newColumns[key].cards.filter( + (card) => card.id !== sourceId, + ); + break; + } + } + + // If card was not found in columns, get it from the bank + if (!movedCard) { + movedCard = bank.find((card) => card.id === sourceId); + if (movedCard) { + setBank((prevBank) => + prevBank.filter((card) => card.id !== sourceId), + ); + } + } + + if (movedCard) { + if (destinationId === "bank") { + setBank((prevBank) => { + if (!prevBank.some((card) => card.id === movedCard.id)) { + return [...prevBank, movedCard]; + } + return prevBank; + }); + } else { + newColumns[destinationId].cards = [ + ...newColumns[destinationId].cards.filter( + (card) => card.id !== movedCard.id, + ), + movedCard, + ]; + } + } + + return newColumns; + }); + }; + + const verifyPlacement = () => { + let incorrectCards = []; + let updatedColumns = { ...columns }; + + // Don't let them submit without placing all the cards + if (bank.length !== 0) { + setMessage("Please place all cards before submitting."); + return; + } + + for (const [columnId, currentCol] of Object.entries(correct_assignments)) { + const placedCards = updatedColumns[columnId].cards; + const correctCards = currentCol.cards; + + // Find misplaced card objects + const misplaced = placedCards.filter( + (card) => !correctCards.includes(card.id), + ); + + placedCards.forEach((card) => { + if (correctCards.includes(card.id)) { + card.isCorrect = true; + } + }); + + if (misplaced.length > 0) { + incorrectCards = incorrectCards.concat(misplaced); + } + } + if (incorrectCards.length > 0) { + setMessage("Incorrect placement. Try again!"); + + incorrectCards.forEach((card) => { + card.isCorrect = false; + }); + + setColumns(updatedColumns); + return; + } + + for (const columnId in updatedColumns) { + updatedColumns[columnId].cards.forEach((card) => { + card.isCorrect = true; // Revert all cards to correct state + }); + } + + setMessage("Correct placement! Well done!"); + setSuccess(true); + setCorrect(true); + setColumns(updatedColumns); + }; + + return ( + +
    +
    + {Object.keys(columns).map((colId) => ( + + ))} +
    +
    + +
    +
    +
    + {message && {message}} + +
    +
    + ); +}; + +DragDropGame.propTypes = { + containerStyle: PropTypes.string.isRequired, + colStyle: PropTypes.string.isRequired, + bankStyle: PropTypes.string.isRequired, + colCardStyle: PropTypes.string.isRequired, + bankCardStyle: PropTypes.string.isRequired, + msgStyle: PropTypes.string.isRequired, + cols: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + cards: PropTypes.array.isRequired, + }), + ), + initialBank: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.string.isRequired, + content: PropTypes.string.isRequired, + }), + ), + correctAssignments: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.string.isRequired, + cards: PropTypes.array.isRequired, + }), + ), + success: PropTypes.bool, + setSuccess: PropTypes.func, + colHeaderStyle: PropTypes.string, + handleNav: PropTypes.func.isRequired, + colContainerStyle: PropTypes.string, + gameStyle: PropTypes.string, +}; + +export default DragDropGame; diff --git a/client/src/components/exercise/lab13/components/DragAndDrop/DraggableCard.js b/client/src/components/exercise/lab13/components/DragAndDrop/DraggableCard.js new file mode 100644 index 000000000..5ef98fb2a --- /dev/null +++ b/client/src/components/exercise/lab13/components/DragAndDrop/DraggableCard.js @@ -0,0 +1,61 @@ +import { useDraggable } from "@dnd-kit/core"; +import React, { useState, useEffect } from "react"; +import PropTypes from "prop-types"; +import { twMerge } from "tailwind-merge"; + +const DraggableCard = ({ card, cardStyle }) => { + const [borderColor, setBorderColor] = useState(""); + + const { attributes, listeners, setNodeRef, transform } = useDraggable({ + id: card.id, + }); + + const style = transform + ? { transform: `translate(${transform.x}px, ${transform.y}px)` } + : {}; + + useEffect(() => { + if (!card.isCorrect) { + setBorderColor( + "tw-border-solid !tw-shadow-lg !tw-border-brightRed tw-shadow-brightRed tw-font-bold tw-text-brightRed", + ); + } else { + setBorderColor(""); + } + }, [card.isCorrect]); + + return ( +
    + {card.content} +

    {card.title}

    +
    +        {card.body}
    +      
    +
    + ); +}; + +DraggableCard.propTypes = { + card: PropTypes.shape({ + id: PropTypes.string.isRequired, + title: PropTypes.string, + content: PropTypes.string.isRequired, + body: PropTypes.string, + color: PropTypes.string, + isCorrect: PropTypes.bool, + }).isRequired, + cardStyle: PropTypes.string.isRequired, +}; + +export default DraggableCard; diff --git a/client/src/components/exercise/lab13/components/DragAndDrop/DroppableBank.js b/client/src/components/exercise/lab13/components/DragAndDrop/DroppableBank.js new file mode 100644 index 000000000..993efb2bd --- /dev/null +++ b/client/src/components/exercise/lab13/components/DragAndDrop/DroppableBank.js @@ -0,0 +1,29 @@ +import { useDroppable } from "@dnd-kit/core"; +import React from "react"; +import DraggableCard from "./DraggableCard"; +import PropTypes from "prop-types"; + +const DroppableBank = ({ bank, bankStyle, cardStyle }) => { + const { setNodeRef } = useDroppable({ id: "bank" }); + + return ( +
    + {bank.map((card) => ( + + ))} +
    + ); +}; + +DroppableBank.propTypes = { + bank: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.string.isRequired, + content: PropTypes.string.isRequired, + }), + ).isRequired, + bankStyle: PropTypes.string.isRequired, + cardStyle: PropTypes.string.isRequired, +}; + +export default DroppableBank; diff --git a/client/src/components/exercise/lab13/components/DragAndDrop/DroppableColumn.js b/client/src/components/exercise/lab13/components/DragAndDrop/DroppableColumn.js new file mode 100644 index 000000000..9a9dd9c8d --- /dev/null +++ b/client/src/components/exercise/lab13/components/DragAndDrop/DroppableColumn.js @@ -0,0 +1,46 @@ +import React from "react"; +import { useDroppable } from "@dnd-kit/core"; +import DraggableCard from "./DraggableCard"; +import PropTypes from "prop-types"; + +const DroppableColumn = ({ + column, + cards, + colStyle, + cardStyle, + colHeaderStyle, + colContainerStyle, +}) => { + const { setNodeRef } = useDroppable({ id: column.id }); + + return ( +
    +

    {column.title}

    +
    + {cards.map((card) => ( + + ))} +
    +
    + ); +}; + +DroppableColumn.propTypes = { + column: PropTypes.shape({ + id: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + }).isRequired, + cards: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.string.isRequired, + content: PropTypes.string.isRequired, + isCorrect: PropTypes.bool, + }), + ).isRequired, + colStyle: PropTypes.string.isRequired, + cardStyle: PropTypes.string.isRequired, + colHeaderStyle: PropTypes.string.isRequired, + colContainerStyle: PropTypes.string, +}; + +export default DroppableColumn; diff --git a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js index c8078d540..b6c0dc281 100644 --- a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js +++ b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js @@ -1,7 +1,7 @@ import React, { useState, useEffect, useContext } from "react"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; -import DragDropGame from "src/components/all-components/DragAndDrop/DragDropGame"; +import DragDropGame from "src/components/all-components/DragAndDropNoCorrectAnswer/DragDropGame"; import ExerciseStateContext from "../Lab13Context"; import { initialColumns, initialBank } from "src/constants/lab13/RankingConfig"; @@ -61,35 +61,28 @@ const ConfidenceRanking = () => { return (

    Confidence Ranking Page

    -

    - Drag and drop the topics to rank them by your knowledge level +

    + Drag and Drop each of the three topics, Dexterity, Literacy and + Deaf/Hard of Hearing from your most familiar to least familiar.

    -
    - -
    +
    ); }; From 9e2c26eec28f07463f25fb72ac85acff0b8f8695 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Tue, 11 Nov 2025 15:59:05 -0500 Subject: [PATCH 018/180] fixing the folder and file names and imports --- .../DragDropGame.js | 0 .../DraggableCard.js | 0 .../DroppableBank.js | 0 .../DroppableColumn.js | 0 .../ExperientialActivity/CreateExperientialExercise.js | 2 +- .../DesignLabSection/LabIdeaActivity/DesignLabIntroduction.js | 2 +- .../DesignLabSection/LabIdeaActivity/DesignSortNewCategory.js | 2 +- .../lab0/DesignLabSection/ScrumActivity/ScrumBoardActivity.js | 2 +- .../DesignLabSection/ScrumActivity/ScrumVelocityActivity.js | 2 +- .../DragDropGame.js | 4 ++-- .../DraggableCard.js | 0 .../DroppableBank.js | 0 .../DroppableColumn.js | 0 .../src/components/exercise/lab13/pages/ConfidenceRanking.js | 2 +- 14 files changed, 8 insertions(+), 8 deletions(-) rename client/src/components/all-components/{DragAndDropNoCorrectAnswer => DragAndDrop}/DragDropGame.js (100%) rename client/src/components/all-components/{DragAndDropNoCorrectAnswer => DragAndDrop}/DraggableCard.js (100%) rename client/src/components/all-components/{DragAndDropNoCorrectAnswer => DragAndDrop}/DroppableBank.js (100%) rename client/src/components/all-components/{DragAndDropNoCorrectAnswer => DragAndDrop}/DroppableColumn.js (100%) rename client/src/components/exercise/lab13/components/{DragAndDrop => DragAndDropNoCorrectAnswer}/DragDropGame.js (98%) rename client/src/components/exercise/lab13/components/{DragAndDrop => DragAndDropNoCorrectAnswer}/DraggableCard.js (100%) rename client/src/components/exercise/lab13/components/{DragAndDrop => DragAndDropNoCorrectAnswer}/DroppableBank.js (100%) rename client/src/components/exercise/lab13/components/{DragAndDrop => DragAndDropNoCorrectAnswer}/DroppableColumn.js (100%) diff --git a/client/src/components/all-components/DragAndDropNoCorrectAnswer/DragDropGame.js b/client/src/components/all-components/DragAndDrop/DragDropGame.js similarity index 100% rename from client/src/components/all-components/DragAndDropNoCorrectAnswer/DragDropGame.js rename to client/src/components/all-components/DragAndDrop/DragDropGame.js diff --git a/client/src/components/all-components/DragAndDropNoCorrectAnswer/DraggableCard.js b/client/src/components/all-components/DragAndDrop/DraggableCard.js similarity index 100% rename from client/src/components/all-components/DragAndDropNoCorrectAnswer/DraggableCard.js rename to client/src/components/all-components/DragAndDrop/DraggableCard.js diff --git a/client/src/components/all-components/DragAndDropNoCorrectAnswer/DroppableBank.js b/client/src/components/all-components/DragAndDrop/DroppableBank.js similarity index 100% rename from client/src/components/all-components/DragAndDropNoCorrectAnswer/DroppableBank.js rename to client/src/components/all-components/DragAndDrop/DroppableBank.js diff --git a/client/src/components/all-components/DragAndDropNoCorrectAnswer/DroppableColumn.js b/client/src/components/all-components/DragAndDrop/DroppableColumn.js similarity index 100% rename from client/src/components/all-components/DragAndDropNoCorrectAnswer/DroppableColumn.js rename to client/src/components/all-components/DragAndDrop/DroppableColumn.js diff --git a/client/src/components/exercise/lab0/DesignLabSection/ExperientialActivity/CreateExperientialExercise.js b/client/src/components/exercise/lab0/DesignLabSection/ExperientialActivity/CreateExperientialExercise.js index 32642cd9e..a503d1694 100644 --- a/client/src/components/exercise/lab0/DesignLabSection/ExperientialActivity/CreateExperientialExercise.js +++ b/client/src/components/exercise/lab0/DesignLabSection/ExperientialActivity/CreateExperientialExercise.js @@ -4,7 +4,7 @@ import { initialColumns, correctAssignments, } from "../../../../../constants/lab0/DesignALab/ExperientialDND"; -import DragDropGame from "../../../../all-components/DragAndDropNoCorrectAnswer/DragDropGame"; +import DragDropGame from "../../../../all-components/DragAndDrop/DragDropGame"; import Lab0Context from "../../Lab0Context"; import { SECTION_STATUSES } from "../../../../../constants/lab0"; diff --git a/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignLabIntroduction.js b/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignLabIntroduction.js index c9583e3a1..f7915a4a1 100644 --- a/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignLabIntroduction.js +++ b/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignLabIntroduction.js @@ -1,5 +1,5 @@ import React, { useContext, useEffect, useState } from "react"; -import DragDropGame from "../../../../all-components/DragAndDropNoCorrectAnswer/DragDropGame"; +import DragDropGame from "../../../../all-components/DragAndDrop/DragDropGame"; import Lab0Context from "../../Lab0Context"; import { columns, diff --git a/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignSortNewCategory.js b/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignSortNewCategory.js index 02ecfc03c..a8f34e686 100644 --- a/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignSortNewCategory.js +++ b/client/src/components/exercise/lab0/DesignLabSection/LabIdeaActivity/DesignSortNewCategory.js @@ -1,6 +1,6 @@ import React, { useContext, useEffect, useState } from "react"; import Lab0Context from "../../Lab0Context"; -import DragDropGame from "../../../../all-components/DragAndDropNoCorrectAnswer/DragDropGame"; +import DragDropGame from "../../../../all-components/DragAndDrop/DragDropGame"; import _ from "lodash"; import { columns_new_category, diff --git a/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumBoardActivity.js b/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumBoardActivity.js index 62aab94da..732edea1e 100644 --- a/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumBoardActivity.js +++ b/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumBoardActivity.js @@ -1,5 +1,5 @@ import React, { useContext, useState, useEffect } from "react"; -import DragDropGame from "../../../../all-components/DragAndDropNoCorrectAnswer/DragDropGame"; +import DragDropGame from "../../../../all-components/DragAndDrop/DragDropGame"; import { initialColumns, initialBank, diff --git a/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumVelocityActivity.js b/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumVelocityActivity.js index 5cea30756..4bd225b18 100644 --- a/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumVelocityActivity.js +++ b/client/src/components/exercise/lab0/DesignLabSection/ScrumActivity/ScrumVelocityActivity.js @@ -1,4 +1,4 @@ -import DragDropGame from "../../../../all-components/DragAndDropNoCorrectAnswer/DragDropGame"; +import DragDropGame from "../../../../all-components/DragAndDrop/DragDropGame"; import { correctAssignments, initialBank, diff --git a/client/src/components/exercise/lab13/components/DragAndDrop/DragDropGame.js b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js similarity index 98% rename from client/src/components/exercise/lab13/components/DragAndDrop/DragDropGame.js rename to client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js index 5c145e8ef..4e0adf783 100644 --- a/client/src/components/exercise/lab13/components/DragAndDrop/DragDropGame.js +++ b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js @@ -3,8 +3,8 @@ import { DndContext } from "@dnd-kit/core"; import DroppableColumn from "./DroppableColumn"; import DroppableBank from "./DroppableBank"; import PropTypes from "prop-types"; -import LabButton from "../LabButton"; -import StatusBanner from "../StatusBanner"; +import LabButton from "../../../../all-components/LabButton"; +import StatusBanner from "../../../../all-components/StatusBanner"; /** * Use this format to pass in columns, bank and correct assignments diff --git a/client/src/components/exercise/lab13/components/DragAndDrop/DraggableCard.js b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DraggableCard.js similarity index 100% rename from client/src/components/exercise/lab13/components/DragAndDrop/DraggableCard.js rename to client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DraggableCard.js diff --git a/client/src/components/exercise/lab13/components/DragAndDrop/DroppableBank.js b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableBank.js similarity index 100% rename from client/src/components/exercise/lab13/components/DragAndDrop/DroppableBank.js rename to client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableBank.js diff --git a/client/src/components/exercise/lab13/components/DragAndDrop/DroppableColumn.js b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableColumn.js similarity index 100% rename from client/src/components/exercise/lab13/components/DragAndDrop/DroppableColumn.js rename to client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableColumn.js diff --git a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js index b6c0dc281..6aa5ea7b4 100644 --- a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js +++ b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js @@ -1,7 +1,7 @@ import React, { useState, useEffect, useContext } from "react"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; -import DragDropGame from "src/components/all-components/DragAndDropNoCorrectAnswer/DragDropGame"; +import DragDropGame from "../components/DragAndDropNoCorrectAnswer/DragDropGame"; import ExerciseStateContext from "../Lab13Context"; import { initialColumns, initialBank } from "src/constants/lab13/RankingConfig"; From 60b09aa1c0d4b5204cc34efd0e1e9ca7ea2bfa47 Mon Sep 17 00:00:00 2001 From: domenicmangano Date: Wed, 12 Nov 2025 12:34:22 -0500 Subject: [PATCH 019/180] Working on local storage --- client/src/reducers/MainReducer.js | 1 + client/src/reducers/MainReducerForContext.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/reducers/MainReducer.js b/client/src/reducers/MainReducer.js index bc7df6f09..f74437ff8 100644 --- a/client/src/reducers/MainReducer.js +++ b/client/src/reducers/MainReducer.js @@ -29,6 +29,7 @@ export const MainReducer = (state = initialState, action) => { body: action.body, }; case types.UPDATE_USER: + localStorage.setItem("user", JSON.stringify(action.user)); return { ...state, user: action.user, diff --git a/client/src/reducers/MainReducerForContext.js b/client/src/reducers/MainReducerForContext.js index 9dc9cff07..ce4b718ae 100644 --- a/client/src/reducers/MainReducerForContext.js +++ b/client/src/reducers/MainReducerForContext.js @@ -47,7 +47,7 @@ export const types = { export const initialState = { userState: EXERCISE_IDLE, main: { - user: null, + user: JSON.parse(localStorage.getItem("user")) || null, lab: 99, body: 0, isImagine: false, From 72527434461f02bc79436a694940e34bae6b312a Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 12 Nov 2025 12:53:22 -0500 Subject: [PATCH 020/180] Made it so that only one card can be put in each of the columns boxes --- .../DragDropGame.js | 30 ++++++++++++++----- .../exercise/lab13/pages/ConfidenceRanking.js | 12 ++++---- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js index 4e0adf783..82c8106f6 100644 --- a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js +++ b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js @@ -9,6 +9,7 @@ import StatusBanner from "../../../../all-components/StatusBanner"; /** * Use this format to pass in columns, bank and correct assignments * Note: Keep ids the same across objects + * Each column can now only accept ONE card * * const initialColumns = [ * { id: "column1", title: "Column 1", cards: [] }, @@ -23,7 +24,7 @@ import StatusBanner from "../../../../all-components/StatusBanner"; * * const correctAssignments = [ * { id: "column1", cards: ["card1"] }, - * { id: "column2", cards: ["card2", "card3"] }, + * { id: "column2", cards: ["card2"] }, * ]; */ @@ -75,6 +76,23 @@ const DragDropGame = ({ return prevColumns; } + // Check if destination column already has a card (and it's not the bank) + if ( + destinationId !== "bank" && + newColumns[destinationId].cards.length >= 1 + ) { + // Move the existing card back to the bank + const existingCard = newColumns[destinationId].cards[0]; + setBank((prevBank) => { + if (!prevBank.some((card) => card.id === existingCard.id)) { + return [...prevBank, existingCard]; + } + return prevBank; + }); + // Clear the column + newColumns[destinationId].cards = []; + } + // First, find and remove the card from its source for (let key in newColumns) { if (newColumns[key].cards.some((card) => card.id === sourceId)) { @@ -107,12 +125,8 @@ const DragDropGame = ({ return prevBank; }); } else { - newColumns[destinationId].cards = [ - ...newColumns[destinationId].cards.filter( - (card) => card.id !== movedCard.id, - ), - movedCard, - ]; + // Add the moved card to the destination column + newColumns[destinationId].cards = [movedCard]; } } @@ -198,7 +212,7 @@ const DragDropGame = ({
    {message && {message}} diff --git a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js index 6aa5ea7b4..60da8976b 100644 --- a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js +++ b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js @@ -66,13 +66,13 @@ const ConfidenceRanking = () => { Deaf/Hard of Hearing from your most familiar to least familiar.

    Date: Wed, 12 Nov 2025 13:08:33 -0500 Subject: [PATCH 021/180] making the users ranking stay persistent --- .../exercise/lab13/pages/ConfidenceRanking.js | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js index 60da8976b..0d1e6a6bb 100644 --- a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js +++ b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js @@ -15,21 +15,29 @@ const ConfidenceRanking = () => { setRankingBank, } = useContext(ExerciseStateContext); - // Initialize from context if available, otherwise use initial values const [cols, setCols] = useState(() => rankingColumns.length > 0 - ? rankingColumns + ? structuredClone(rankingColumns) : structuredClone(initialColumns), ); - const [bank, setBank] = useState(() => - rankingBank.length > 0 ? rankingBank : structuredClone(initialBank), - ); + + const [bank, setBank] = useState(() => { + const placedIds = new Set( + (rankingColumns.length > 0 ? rankingColumns : initialColumns).flatMap( + (col) => col.cards.map((card) => card.id), + ), + ); + + const sourceBank = rankingBank.length > 0 ? rankingBank : initialBank; + return sourceBank.filter((card) => !placedIds.has(card.id)); + }); + const [success, setSuccess] = useState(rankingSuccess); // Create a permissive correctAssignments that accepts any arrangement const correctAssignments = initialColumns.map((col) => ({ id: col.id, - cards: initialBank.map((item) => item.id), // All cards are valid in any column + cards: initialBank.map((item) => item.id), })); // Save to context whenever cols or bank changes From 4cc13bd543adc823cfc6ae18e84812118627988e Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 12 Nov 2025 13:36:13 -0500 Subject: [PATCH 022/180] make bank style align left --- .../DragDropGame.js | 132 +++++++----------- .../exercise/lab13/pages/ConfidenceRanking.js | 10 +- 2 files changed, 56 insertions(+), 86 deletions(-) diff --git a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js index 82c8106f6..6554c7c97 100644 --- a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js +++ b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js @@ -7,21 +7,15 @@ import LabButton from "../../../../all-components/LabButton"; import StatusBanner from "../../../../all-components/StatusBanner"; /** - * Use this format to pass in columns, bank and correct assignments - * Note: Keep ids the same across objects - * Each column can now only accept ONE card - * + * Example usage: * const initialColumns = [ * { id: "column1", title: "Column 1", cards: [] }, * { id: "column2", title: "Column 2", cards: [] }, * ]; - * * const initialBank = [ - * { id: "card1", content: "Card 1", isCorrect: true }, - * { id: "card2", content: "Card 2", isCorrect: true }, - * { id: "card3", content: "Card 3", isCorrect: true }, + * { id: "card1", content: "Card 1" }, + * { id: "card2", content: "Card 2" }, * ]; - * * const correctAssignments = [ * { id: "column1", cards: ["card1"] }, * { id: "column2", cards: ["card2"] }, @@ -29,12 +23,7 @@ import StatusBanner from "../../../../all-components/StatusBanner"; */ const arrayToObject = (array, key) => { - return array.reduce((obj, item) => { - return { - ...obj, - [item[key]]: item, - }; - }, {}); + return array.reduce((obj, item) => ({ ...obj, [item[key]]: item }), {}); }; const DragDropGame = ({ @@ -57,10 +46,10 @@ const DragDropGame = ({ const [columns, setColumns] = useState(arrayToObject(cols, "id")); const [bank, setBank] = useState(initialBank); const [message, setMessage] = useState(""); - const correct_assignments = arrayToObject(correctAssignments, "id"); - const [correct, setCorrect] = useState(success); + const correct_assignments = arrayToObject(correctAssignments, "id"); + const onDragEnd = (event) => { const { active, over } = event; if (!over) return; @@ -69,44 +58,38 @@ const DragDropGame = ({ const destinationId = over.id; setColumns((prevColumns) => { - let newColumns = { ...prevColumns }; + const newColumns = { ...prevColumns }; let movedCard; - if (sourceId === destinationId) { - return prevColumns; - } + if (sourceId === destinationId) return prevColumns; - // Check if destination column already has a card (and it's not the bank) + // Prevent placing more than one card in a column if ( destinationId !== "bank" && newColumns[destinationId].cards.length >= 1 ) { - // Move the existing card back to the bank const existingCard = newColumns[destinationId].cards[0]; - setBank((prevBank) => { - if (!prevBank.some((card) => card.id === existingCard.id)) { - return [...prevBank, existingCard]; - } - return prevBank; - }); - // Clear the column + setBank((prevBank) => + prevBank.some((card) => card.id === existingCard.id) + ? prevBank + : [...prevBank, existingCard], + ); newColumns[destinationId].cards = []; } - // First, find and remove the card from its source - for (let key in newColumns) { - if (newColumns[key].cards.some((card) => card.id === sourceId)) { - movedCard = newColumns[key].cards.find( - (card) => card.id === sourceId, - ); - newColumns[key].cards = newColumns[key].cards.filter( + // Remove the card from its source + for (const key in newColumns) { + const sourceCards = newColumns[key].cards; + if (sourceCards.some((card) => card.id === sourceId)) { + movedCard = sourceCards.find((card) => card.id === sourceId); + newColumns[key].cards = sourceCards.filter( (card) => card.id !== sourceId, ); break; } } - // If card was not found in columns, get it from the bank + // If not found in columns, get from bank if (!movedCard) { movedCard = bank.find((card) => card.id === sourceId); if (movedCard) { @@ -118,14 +101,12 @@ const DragDropGame = ({ if (movedCard) { if (destinationId === "bank") { - setBank((prevBank) => { - if (!prevBank.some((card) => card.id === movedCard.id)) { - return [...prevBank, movedCard]; - } - return prevBank; - }); + setBank((prevBank) => + prevBank.some((card) => card.id === movedCard.id) + ? prevBank + : [...prevBank, movedCard], + ); } else { - // Add the moved card to the destination column newColumns[destinationId].cards = [movedCard]; } } @@ -135,52 +116,38 @@ const DragDropGame = ({ }; const verifyPlacement = () => { - let incorrectCards = []; - let updatedColumns = { ...columns }; - - // Don't let them submit without placing all the cards if (bank.length !== 0) { setMessage("Please place all cards before submitting."); return; } - for (const [columnId, currentCol] of Object.entries(correct_assignments)) { + const updatedColumns = { ...columns }; + let incorrectCards = []; + + for (const [columnId, correctCol] of Object.entries(correct_assignments)) { const placedCards = updatedColumns[columnId].cards; - const correctCards = currentCol.cards; + const correctCards = correctCol.cards; - // Find misplaced card objects const misplaced = placedCards.filter( (card) => !correctCards.includes(card.id), ); placedCards.forEach((card) => { - if (correctCards.includes(card.id)) { - card.isCorrect = true; - } + card.isCorrect = correctCards.includes(card.id); }); if (misplaced.length > 0) { - incorrectCards = incorrectCards.concat(misplaced); + incorrectCards = [...incorrectCards, ...misplaced]; } } + if (incorrectCards.length > 0) { setMessage("Incorrect placement. Try again!"); - - incorrectCards.forEach((card) => { - card.isCorrect = false; - }); - setColumns(updatedColumns); return; } - for (const columnId in updatedColumns) { - updatedColumns[columnId].cards.forEach((card) => { - card.isCorrect = true; // Revert all cards to correct state - }); - } - - setMessage("Correct placement! Well done!"); + setMessage("Success! All cards are placed."); setSuccess(true); setCorrect(true); setColumns(updatedColumns); @@ -188,7 +155,20 @@ const DragDropGame = ({ return ( -
    +
    +
    + +
    +
    {Object.keys(columns).map((colId) => ( ))}
    -
    - -
    -
    + +
    {message && {message}} { Deaf/Hard of Hearing from your most familiar to least familiar.

    Date: Wed, 12 Nov 2025 14:26:50 -0500 Subject: [PATCH 023/180] Created Card Icon for dnd --- .../all-components/DragAndDrop/DragDropGame.js | 3 +++ .../all-components/DragAndDrop/DraggableCard.js | 5 ++++- .../all-components/DragAndDrop/DroppableBank.js | 10 ++++++++-- .../DragAndDropNoCorrectAnswer/DragDropGame.js | 4 ++++ .../DragAndDropNoCorrectAnswer/DraggableCard.js | 12 ++++++++++-- .../DragAndDropNoCorrectAnswer/DroppableBank.js | 10 ++++++++-- .../DragAndDropNoCorrectAnswer/DroppableColumn.js | 9 ++++++++- .../exercise/lab13/pages/ConfidenceRanking.js | 2 ++ 8 files changed, 47 insertions(+), 8 deletions(-) diff --git a/client/src/components/all-components/DragAndDrop/DragDropGame.js b/client/src/components/all-components/DragAndDrop/DragDropGame.js index eee223053..202299634 100644 --- a/client/src/components/all-components/DragAndDrop/DragDropGame.js +++ b/client/src/components/all-components/DragAndDrop/DragDropGame.js @@ -52,6 +52,7 @@ const DragDropGame = ({ handleNav, colContainerStyle, gameStyle, + cardIcon, }) => { const [columns, setColumns] = useState(arrayToObject(cols, "id")); const [bank, setBank] = useState(initialBank); @@ -193,6 +194,7 @@ const DragDropGame = ({ bank={bank} bankStyle={bankStyle} cardStyle={bankCardStyle} + cardIcon={cardIcon} />
    @@ -243,6 +245,7 @@ DragDropGame.propTypes = { handleNav: PropTypes.func.isRequired, colContainerStyle: PropTypes.string, gameStyle: PropTypes.string, + cardIcon: PropTypes.any, }; export default DragDropGame; diff --git a/client/src/components/all-components/DragAndDrop/DraggableCard.js b/client/src/components/all-components/DragAndDrop/DraggableCard.js index 5ef98fb2a..3411fed91 100644 --- a/client/src/components/all-components/DragAndDrop/DraggableCard.js +++ b/client/src/components/all-components/DragAndDrop/DraggableCard.js @@ -2,6 +2,7 @@ import { useDraggable } from "@dnd-kit/core"; import React, { useState, useEffect } from "react"; import PropTypes from "prop-types"; import { twMerge } from "tailwind-merge"; +import DragIndicatorRoundedIcon from "@mui/icons-material/DragIndicatorRounded"; const DraggableCard = ({ card, cardStyle }) => { const [borderColor, setBorderColor] = useState(""); @@ -38,7 +39,9 @@ const DraggableCard = ({ card, cardStyle }) => { )} > {card.content} -

    {card.title}

    +

    + {card.title} +

             {card.body}
           
    diff --git a/client/src/components/all-components/DragAndDrop/DroppableBank.js b/client/src/components/all-components/DragAndDrop/DroppableBank.js index 993efb2bd..2dacf5c45 100644 --- a/client/src/components/all-components/DragAndDrop/DroppableBank.js +++ b/client/src/components/all-components/DragAndDrop/DroppableBank.js @@ -3,13 +3,18 @@ import React from "react"; import DraggableCard from "./DraggableCard"; import PropTypes from "prop-types"; -const DroppableBank = ({ bank, bankStyle, cardStyle }) => { +const DroppableBank = ({ bank, bankStyle, cardStyle, cardIcon }) => { const { setNodeRef } = useDroppable({ id: "bank" }); return (
    {bank.map((card) => ( - + ))}
    ); @@ -24,6 +29,7 @@ DroppableBank.propTypes = { ).isRequired, bankStyle: PropTypes.string.isRequired, cardStyle: PropTypes.string.isRequired, + cardIcon: PropTypes.any, }; export default DroppableBank; diff --git a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js index 6554c7c97..f94dc5913 100644 --- a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js +++ b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DragDropGame.js @@ -42,6 +42,7 @@ const DragDropGame = ({ handleNav, colContainerStyle, gameStyle, + cardIcon, }) => { const [columns, setColumns] = useState(arrayToObject(cols, "id")); const [bank, setBank] = useState(initialBank); @@ -166,6 +167,7 @@ const DragDropGame = ({ bank={bank} bankStyle={bankStyle} cardStyle={bankCardStyle} + cardIcon={cardIcon} />
    @@ -179,6 +181,7 @@ const DragDropGame = ({ cardStyle={colCardStyle} colHeaderStyle={colHeaderStyle} colContainerStyle={colContainerStyle} + cardIcon={cardIcon} /> ))}
    @@ -227,6 +230,7 @@ DragDropGame.propTypes = { handleNav: PropTypes.func.isRequired, colContainerStyle: PropTypes.string, gameStyle: PropTypes.string, + cardIcon: PropTypes.any, }; export default DragDropGame; diff --git a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DraggableCard.js b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DraggableCard.js index 5ef98fb2a..3269c1df1 100644 --- a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DraggableCard.js +++ b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DraggableCard.js @@ -3,7 +3,7 @@ import React, { useState, useEffect } from "react"; import PropTypes from "prop-types"; import { twMerge } from "tailwind-merge"; -const DraggableCard = ({ card, cardStyle }) => { +const DraggableCard = ({ card, cardStyle, cardIcon }) => { const [borderColor, setBorderColor] = useState(""); const { attributes, listeners, setNodeRef, transform } = useDraggable({ @@ -38,7 +38,14 @@ const DraggableCard = ({ card, cardStyle }) => { )} > {card.content} -

    {card.title}

    +

    + {" "} + {cardIcon} {card.title} +

             {card.body}
           
    @@ -56,6 +63,7 @@ DraggableCard.propTypes = { isCorrect: PropTypes.bool, }).isRequired, cardStyle: PropTypes.string.isRequired, + cardIcon: PropTypes.any, }; export default DraggableCard; diff --git a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableBank.js b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableBank.js index 993efb2bd..2dacf5c45 100644 --- a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableBank.js +++ b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableBank.js @@ -3,13 +3,18 @@ import React from "react"; import DraggableCard from "./DraggableCard"; import PropTypes from "prop-types"; -const DroppableBank = ({ bank, bankStyle, cardStyle }) => { +const DroppableBank = ({ bank, bankStyle, cardStyle, cardIcon }) => { const { setNodeRef } = useDroppable({ id: "bank" }); return (
    {bank.map((card) => ( - + ))}
    ); @@ -24,6 +29,7 @@ DroppableBank.propTypes = { ).isRequired, bankStyle: PropTypes.string.isRequired, cardStyle: PropTypes.string.isRequired, + cardIcon: PropTypes.any, }; export default DroppableBank; diff --git a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableColumn.js b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableColumn.js index 9a9dd9c8d..d5728f3e0 100644 --- a/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableColumn.js +++ b/client/src/components/exercise/lab13/components/DragAndDropNoCorrectAnswer/DroppableColumn.js @@ -10,6 +10,7 @@ const DroppableColumn = ({ cardStyle, colHeaderStyle, colContainerStyle, + cardIcon, }) => { const { setNodeRef } = useDroppable({ id: column.id }); @@ -18,7 +19,12 @@ const DroppableColumn = ({

    {column.title}

    {cards.map((card) => ( - + ))}
    @@ -41,6 +47,7 @@ DroppableColumn.propTypes = { cardStyle: PropTypes.string.isRequired, colHeaderStyle: PropTypes.string.isRequired, colContainerStyle: PropTypes.string, + cardIcon: PropTypes.any, }; export default DroppableColumn; diff --git a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js index d1ee014d8..ca81cf7c0 100644 --- a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js +++ b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js @@ -4,6 +4,7 @@ import { navigate } from "@reach/router"; import DragDropGame from "../components/DragAndDropNoCorrectAnswer/DragDropGame"; import ExerciseStateContext from "../Lab13Context"; import { initialColumns, initialBank } from "src/constants/lab13/RankingConfig"; +import DragIndicatorRoundedIcon from "@mui/icons-material/DragIndicatorRounded"; const ConfidenceRanking = () => { const { @@ -89,6 +90,7 @@ const ConfidenceRanking = () => { correctAssignments={correctAssignments} setSuccess={setSuccess} success={success} + cardIcon={} handleNav={handleContinue} />
    From 12ea88d10f61e3cd265b41384292c250f5d5374e Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Thu, 13 Nov 2025 12:04:25 -0500 Subject: [PATCH 024/180] Fixed wording of why halo effect was the correct answer for question 2 --- server/database/schema.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/database/schema.sql b/server/database/schema.sql index dbcbc0f0b..f9394ff83 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3585,7 +3585,7 @@ e'[ "val": 1, "type": "1", "content": "Generative AI using \"✅\" in its responses", - "explanation": "The Halo Effect is a cognitive bias in which our overall impression of a person, company, brand, or product influences how we feel and think about their character or properties. In this case, the use of \"✅\" gives the impression that the answer is correct, even if it is not." + "explanation": "The Halo Effect is a cognitive bias in which our overall impression of a person, company, brand, or product is influenced by how we feel and think about their character or properties. In this case, the use of \"✅\" gives the impression that the answer is correct, even if it is not." }, { "val": 0, From 593323d3e33a24cef37284240f433e2569ebd0d5 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Thu, 13 Nov 2025 18:56:46 -0500 Subject: [PATCH 025/180] Implement modular tab interface components --- .../exercise/lab13/components/Tab.js | 25 +++ .../exercise/lab13/components/Tab/Tab.js | 25 +++ .../exercise/lab13/components/Tab/Tabs.css | 150 ++++++++++++++++++ .../exercise/lab13/components/Tab/Tabs.js | 60 +++++++ .../lab13/components/Tab/TabsContext.js | 12 ++ .../exercise/lab13/components/Tabs.css | 96 +++++++++++ .../exercise/lab13/components/Tabs.js | 59 +++++++ .../exercise/lab13/components/TabsContext.js | 12 ++ .../exercise/lab13/pages/AIPanel.js | 51 +++++- 9 files changed, 489 insertions(+), 1 deletion(-) create mode 100644 client/src/components/exercise/lab13/components/Tab.js create mode 100644 client/src/components/exercise/lab13/components/Tab/Tab.js create mode 100644 client/src/components/exercise/lab13/components/Tab/Tabs.css create mode 100644 client/src/components/exercise/lab13/components/Tab/Tabs.js create mode 100644 client/src/components/exercise/lab13/components/Tab/TabsContext.js create mode 100644 client/src/components/exercise/lab13/components/Tabs.css create mode 100644 client/src/components/exercise/lab13/components/Tabs.js create mode 100644 client/src/components/exercise/lab13/components/TabsContext.js diff --git a/client/src/components/exercise/lab13/components/Tab.js b/client/src/components/exercise/lab13/components/Tab.js new file mode 100644 index 000000000..79a72e633 --- /dev/null +++ b/client/src/components/exercise/lab13/components/Tab.js @@ -0,0 +1,25 @@ +import { useContext, useEffect } from "react"; +import { TabsContext } from "./TabsContext"; +import PropTypes from "prop-types"; + +export const Tab = ({ label, children }) => { + /** + * A component that defines a singular tab + * @param {string} label - Name of the tab + * @param {object} children - Content of the tab + */ + + const { logTab } = useContext(TabsContext); + + // Log tab once it appears on the screen + useEffect(() => { + logTab({ label, content: children }); + }, []); + + return null; +}; + +Tab.propTypes = { + label: PropTypes.string.isRequired, + children: PropTypes.node.isRequired, +}; diff --git a/client/src/components/exercise/lab13/components/Tab/Tab.js b/client/src/components/exercise/lab13/components/Tab/Tab.js new file mode 100644 index 000000000..79a72e633 --- /dev/null +++ b/client/src/components/exercise/lab13/components/Tab/Tab.js @@ -0,0 +1,25 @@ +import { useContext, useEffect } from "react"; +import { TabsContext } from "./TabsContext"; +import PropTypes from "prop-types"; + +export const Tab = ({ label, children }) => { + /** + * A component that defines a singular tab + * @param {string} label - Name of the tab + * @param {object} children - Content of the tab + */ + + const { logTab } = useContext(TabsContext); + + // Log tab once it appears on the screen + useEffect(() => { + logTab({ label, content: children }); + }, []); + + return null; +}; + +Tab.propTypes = { + label: PropTypes.string.isRequired, + children: PropTypes.node.isRequired, +}; diff --git a/client/src/components/exercise/lab13/components/Tab/Tabs.css b/client/src/components/exercise/lab13/components/Tab/Tabs.css new file mode 100644 index 000000000..3d691adef --- /dev/null +++ b/client/src/components/exercise/lab13/components/Tab/Tabs.css @@ -0,0 +1,150 @@ +:root { + /* Curve size */ + --tabGirth: 12px; + /* Tabs overlapping value */ + --tabOverlap: -24px; +} + +/* Container holding entire tab */ +.tabs-container { + position: relative; + width: 100%; + height: 100%; + margin-bottom: 25px; + /* background-color: #EEEEEE; */ + border-radius: 8px 8px 0 0; +} + +/* Header container holding all tabs */ +.tabs-header { + display: flex; + align-items: flex-start; + /* Horizontal scroll if tabs exceed width */ + overflow-x: auto; + /* All tabs on one line */ + flex-wrap: nowrap; + /* space for shadows */ + padding: 8px 8px 0 8px; +} + +/* Wrapper for shadow and tab-headers overlapping */ +.tab-shadow-wrapper { + flex: 1 1 0; + position: relative; + display: flex; + max-width: 200px; + /* Overlap the previous tab */ + margin-left: var(--tabOverlap); + filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.4)); + z-index: 1; + overflow: hidden; +} +.tab-shadow-wrapper.active { + z-index: 100; +} + +/* First button does not overlap with prev */ +.tab-shadow-wrapper:first-child { + margin-left: 0; +} + +/* Tab header buttons */ +.tabs-header button { + flex: 1; + max-width: none; + border: none; + padding: 8px 25px; + cursor: pointer; + /* Color of tabs */ + background-color: #eeeeee; + /* Hide wrapped long */ + white-space: nowrap; + /* Add ellispes for overflowed text */ + text-overflow: ellipsis; + + clip-path: shape( + from bottom left, + curve to var(--tabGirth) calc(100% - var(--tabGirth)) with var(--tabGirth) + 100%, + vline to calc(var(--tabGirth)), + curve to calc(var(--tabGirth) * 2) 0 with var(--tabGirth) 0, + hline to calc(100% - calc(var(--tabGirth) * 2)), + curve to calc(100% - var(--tabGirth)) var(--tabGirth) with + calc(100% - var(--tabGirth)) 0, + vline to calc(100% - var(--tabGirth)), + curve to 100% 100% with calc(100% - var(--tabGirth)) 100% + ); + + transition: transform 0.1s; + overflow: hidden; +} + +.tabs-header button:not(.active):hover { + transform: translateY(2px); +} + +.tabs-header button:not(.active):active { + transform: translateY(4px); +} + +/* Hover overlay for inactive tabs */ +.tabs-header button:not(.active):before { + content: ""; + position: absolute; + top: 50%; + left: 50%; + width: calc(100% - 48px); + height: calc(100% - 12px); + /* Color of inner rectangle in-active tabs */ + background-color: #dddddd; + transform: translate(-50%, -50%); + opacity: 0; + visibility: hidden; + + transition: + opacity 0.2s ease, + visibility 0.2s ease; + z-index: -1; + border-radius: 8px; +} + +.tabs-header button:not(.active):hover::before { + opacity: 1; + visibility: visible; +} + +.tabs-header button:not(.active) tab-label { + position: relative; + z-index: 1; + color: black; +} + +/* Active tab precise styling */ +.tab-shadow-wrapper.active button { + background-color: white; +} + +.tabs-header button.active { + clip-path: shape( + from bottom left, + curve to 12px calc(100% - 12px) with 12px 100%, + vline to 12px, + curve to 24px 0 with 12px 0, + hline to calc(100% - 24px), + curve to calc(100% - 12px) 12px with calc(100% - 12px) 0, + vline to calc(100% - 12px), + curve to 100% 100% with calc(100% - 12px) 100% + ); +} + +.tab-panels { + position: relative; + background: white; + /* Blend line between active tab and panel */ + margin-top: -1px; + box-shadow: 0 5px 6px rgba(0, 0, 0, 0.3); + padding: 25px 30px 25px 25px; + height: calc(75vh - 150px); + overflow-y: scroll; + border-bottom: 30px solid white; +} diff --git a/client/src/components/exercise/lab13/components/Tab/Tabs.js b/client/src/components/exercise/lab13/components/Tab/Tabs.js new file mode 100644 index 000000000..01b528860 --- /dev/null +++ b/client/src/components/exercise/lab13/components/Tab/Tabs.js @@ -0,0 +1,60 @@ +import React, { useState } from "react"; +import { TabsContext } from "./TabsContext"; +import PropTypes from "prop-types"; +import "./Tabs.css"; + +export const Tabs = ({ children }) => { + /** + * A component that displays and holds tabs + * + * @param {object} children - Tab components placed inside Tabs + * @returns {JSX.Element} + */ + + // State storing index of current active tab + const [activeTab, setActiveTab] = useState(0); // First tab is active by default + // Store tab(s) that log themselves in Tabs parent + const [tabs, setTabs] = useState([]); + + // Add newly register tabs to existing tab array + const logTab = (tab) => { + setTabs((prev) => { + if (prev.some((t) => t.label === tab.label)) return prev; + return [...prev, tab]; + }); + }; + + return ( + +
    + {/* Populate headers with buttons for logged tabs */} +
    + {tabs.map((tab, index) => ( +
    + +
    + ))} +
    + {/* Populate with tab content */} +
    + {tabs.map((tab, index) => + index === activeTab ?
    {tab.content}
    : null, + )} +
    +
    + {children} +
    + ); +}; + +Tabs.propTypes = { + children: PropTypes.node.isRequired, +}; diff --git a/client/src/components/exercise/lab13/components/Tab/TabsContext.js b/client/src/components/exercise/lab13/components/Tab/TabsContext.js new file mode 100644 index 000000000..6f184a204 --- /dev/null +++ b/client/src/components/exercise/lab13/components/Tab/TabsContext.js @@ -0,0 +1,12 @@ +import { createContext } from "react"; + +export const TabsContext = createContext({ + /** + * Shares the context and current active tab inbetween all + * Tabs components + */ + // Function tabs will call to log themselves as a new tab + logTab: () => {}, + activeTab: 0, + setActiveTab: () => {}, +}); diff --git a/client/src/components/exercise/lab13/components/Tabs.css b/client/src/components/exercise/lab13/components/Tabs.css new file mode 100644 index 000000000..4a48b0065 --- /dev/null +++ b/client/src/components/exercise/lab13/components/Tabs.css @@ -0,0 +1,96 @@ +.tabs-container { + position: relative; + width: 100%; + height: 100%; + overflow-y: scroll; +} + +.tabs-header { + display: flex; + align-items: flex-start; + margin: 0; + /* All tabs on one line */ + flex-wrap: nowrap; + /* Horizontal scroll if tabs exceed width */ + overflow-x: auto; +} + +.tabs-header button { + border-radius: 4px 4px 0 0; + flex-grow: 1; + flex-shrink: 1; + flex-basis: auto; + max-width: 175px; + padding: 8px 15px; + cursor: pointer; + + /* Hide wrapped long */ + white-space: nowrap; + overflow: hidden; + /* Add ellispes for overflowed text */ + text-overflow: ellipsis; + + height: 50px; + + border-bottom: none; +} + +.tabs-header button:not(.active) { + /* background-image: linear-gradient(to bottom, #d7d7d7, #ededed, #ffffff); */ + background-color: #ededed; + border-bottom: 2px black solid; +} + +.tabs-header button:hover { + background-color: #d7d7d7; +} + +.tabs-header button:before, +.tabs-header button:after { + content: ""; + position: absolute; + bottom: 0; + width: 16px; /* Adjust size for desired curve */ + height: 16px; /* Adjust size for desired curve */ + background-color: transparent; + border-radius: 50%; /* Creates a circle */ + box-shadow: 0 0 0 9999px #f1f1f1; /* Matches parent background */ + /* This creates a large shadow that effectively "fills" the cut-out */ +} + +.tabs-header button:before { + left: -8px; /* Position to cut out the bottom-left */ + clip-path: inset( + 50% 0 0 50% + ); /* Clips the circle to the bottom-left quadrant */ +} + +.tabs-header button:after { + right: -8px; /* Position to cut out the bottom-right */ + clip-path: inset( + 50% 50% 0 0 + ); /* Clips the circle to the bottom-right quadrant */ +} + +.fill-space { + flex-grow: 1; + height: 50px; + border-bottom: 2px solid black; + margin: 0; + padding: 0; +} + +.tabs-header button.active { + background-color: white; + border-bottom-color: #ffffff; +} + +.tab-panels { + margin: 0; + background-color: rgb(255, 255, 255); + border: 2px black solid; + border-radius: 0 0 4px 4px; + border-top: none; + height: 800px; + padding: 10px; +} diff --git a/client/src/components/exercise/lab13/components/Tabs.js b/client/src/components/exercise/lab13/components/Tabs.js new file mode 100644 index 000000000..8f964815e --- /dev/null +++ b/client/src/components/exercise/lab13/components/Tabs.js @@ -0,0 +1,59 @@ +import React, { useState } from "react"; +import { TabsContext } from "./TabsContext"; +import PropTypes from "prop-types"; +import "./Tabs.css"; + +export const Tabs = ({ children }) => { + /** + * A component that displays and holds tabs + * + * @param {object} children - Tab components placed inside Tabs + * @returns {JSX.Element} + */ + + // State storing index of current active tab + const [activeTab, setActiveTab] = useState(0); // First tab is active by default + // Store tab(s) that log themselves in Tabs parent + const [tabs, setTabs] = useState([]); + + // Add newly register tabs to existing tab array + const logTab = (tab) => { + setTabs((prev) => { + if (prev.some((t) => t.label === tab.label)) return prev; + return [...prev, tab]; + }); + }; + + return ( + +
    + {/* Populate headers with buttons for logged tabs */} +
    + {tabs.map((tab, index) => ( + + ))} + {/* Fills space to the right of div */} +
    +
    + {/* Populate with tab content */} +
    + {tabs.map((tab, index) => + index === activeTab ?
    {tab.content}
    : null, + )} +
    +
    + {children} +
    + ); +}; + +Tabs.propTypes = { + children: PropTypes.node.isRequired, +}; diff --git a/client/src/components/exercise/lab13/components/TabsContext.js b/client/src/components/exercise/lab13/components/TabsContext.js new file mode 100644 index 000000000..6f184a204 --- /dev/null +++ b/client/src/components/exercise/lab13/components/TabsContext.js @@ -0,0 +1,12 @@ +import { createContext } from "react"; + +export const TabsContext = createContext({ + /** + * Shares the context and current active tab inbetween all + * Tabs components + */ + // Function tabs will call to log themselves as a new tab + logTab: () => {}, + activeTab: 0, + setActiveTab: () => {}, +}); diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index c8f5c24aa..8b1904529 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -1,6 +1,9 @@ import { React } from "react"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; +import { Tabs } from "../components/Tab/Tabs"; +import { Tab } from "../components/Tab/Tab"; +import "./styles.css"; const AIPanel = () => { const handleContinue = () => { @@ -8,9 +11,55 @@ const AIPanel = () => { navigate("/Lab13/Exercise/HaloExplination"); }; + const lorem = ` + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + `; + return (
    - AI Panel Page + {/* AI Panel Page */} + {/* TESTER TABS */} + + +

    Introduction to AI

    +

    {lorem.repeat(5)}

    +
    +

    {lorem.repeat(3)}

    +
    +

    {lorem.repeat(2)}

    +
    + + +

    Example Cases of AI

    +

    {lorem.repeat(4)}

    +
    +
      +
    • Self-driving cars
    • +
    • Speech recognition
    • +
    • Recommendation systems
    • +
    +
    +

    {lorem.repeat(2)}

    +
    + + +

    Example 3

    +

    {lorem.repeat(6)}

    +
    +

    {lorem.repeat(3)}

    +
    + + +

    Example 4

    +

    {lorem.repeat(5)}

    +
    +

    {lorem.repeat(2)}

    +
    +

    {lorem.repeat(3)}

    +
    +
    ); From 91facf48f0feca31b525e3f771aa59a0b035e262 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Thu, 13 Nov 2025 19:03:35 -0500 Subject: [PATCH 026/180] Remove unused styles import --- client/src/components/exercise/lab13/pages/AIPanel.js | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 8b1904529..f5f477c85 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -3,7 +3,6 @@ import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; import { Tabs } from "../components/Tab/Tabs"; import { Tab } from "../components/Tab/Tab"; -import "./styles.css"; const AIPanel = () => { const handleContinue = () => { From fcda40e494a3d507cfed6180b2aed3ecb7ce2f09 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Fri, 14 Nov 2025 14:49:46 -0500 Subject: [PATCH 027/180] Initial look of the AI panel with generic questions and answers showing on the AI Panel Page --- .../exercise/lab13/components/AIChatBot.js | 122 ++++++++++++++++++ .../exercise/lab13/pages/AIPanel.js | 14 ++ 2 files changed, 136 insertions(+) create mode 100644 client/src/components/exercise/lab13/components/AIChatBot.js diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js new file mode 100644 index 000000000..76657e83c --- /dev/null +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -0,0 +1,122 @@ +import React, { useState, useRef } from "react"; +import PropTypes from "prop-types"; +import ArrowDropUpIcon from "@mui/icons-material/ArrowDropUp"; +import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; + +// Example prop +// const questions = [ +// { id: 1, text: "What is the weather today?" }, +// { id: 2, text: "How do I reset my password?" }, +// { id: 3, text: "Tell me a fun fact." }, +// ]; + +// const answers = [ +// { id: 1, text: "The weather today is sunny with a high of 75°F." }, +// { id: 2, text: "To reset your password, click 'Forgot Password' on the login page." }, +// { id: 3, text: "Did you know honey never spoils?" }, +// ]; + +const AIChatBot = ({ userQuestions, fixedAIResponse }) => { + const [isOpen, setIsOpen] = useState(false); + const [messages, setMessages] = useState([]); + const dropdownRef = useRef(null); + + const handleQuestionClick = (question) => { + const userMsg = { sender: "user", text: question.text }; + + // Find the AI response with matching id + const botObj = fixedAIResponse.find((resp) => resp.id === question.id); + const botMsg = { + sender: "bot", + text: botObj ? botObj.text : "No response found.", + }; + + setMessages((prev) => [...prev, userMsg, botMsg]); + setIsOpen(false); + }; + + return ( +
    +
    + {messages.map((msg, index) => ( +
    +
    + {msg.text} +
    +
    + ))} +
    + +
    +
    + {userQuestions.map((question) => ( + + ))} +
    +
    + +
    + +
    +
    + ); +}; + +AIChatBot.propTypes = { + userQuestions: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, + text: PropTypes.string.isRequired, + }), + ), + fixedAIResponse: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, + text: PropTypes.string.isRequired, + }), + ), +}; + +export default AIChatBot; diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index c8f5c24aa..ae0f3eeae 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -1,6 +1,7 @@ import { React } from "react"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; +import AIChatBot from "../components/AIChatBot"; const AIPanel = () => { const handleContinue = () => { @@ -8,8 +9,21 @@ const AIPanel = () => { navigate("/Lab13/Exercise/HaloExplination"); }; + const questions = [ + { id: 1, text: "Question1" }, + { id: 2, text: "Question2" }, + { id: 3, text: "Question3" }, + ]; + + const answers = [ + { id: 1, text: "Answer1" }, + { id: 2, text: "Answer2" }, + { id: 3, text: "Answer3" }, + ]; + return (
    + AI Panel Page
    From 1a37be5c00a21f56f61d6a427b73af0ca0dca931 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Tue, 18 Nov 2025 17:11:50 -0500 Subject: [PATCH 028/180] Add typing animation to AI chatbot component and style dropdown menu - Added typewriter effect for bot responses - Added fade in animations for new messages - Added auto scroll down functionality while typing - Disable dropdown toggle while AI is typing to prevent multiple response generation - Styled bot and user messages --- .../exercise/lab13/components/AIChatBot.js | 220 ++++++++++++++++-- .../exercise/lab13/pages/AIPanel.js | 20 +- 2 files changed, 211 insertions(+), 29 deletions(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 76657e83c..1fa66288c 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -1,4 +1,4 @@ -import React, { useState, useRef } from "react"; +import React, { useState, useRef, useEffect } from "react"; import PropTypes from "prop-types"; import ArrowDropUpIcon from "@mui/icons-material/ArrowDropUp"; import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; @@ -16,76 +16,216 @@ import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; // { id: 3, text: "Did you know honey never spoils?" }, // ]; +/** + * Typewriter animation component effect for bot responses + * that displays text character by character + * @param {*} text : Text string to display with the typing effect + * @param {*} onUpdate : Functon to flag after each character is written + * @returns + */ +const TypingMessage = ({ text, onUpdate, onComplete }) => { + const [displayedText, setDisplayedText] = useState(""); + const [currentIndex, setCurrentIndex] = useState(0); + + /** + * Adds character from currentIndex to displayedText + * one at a time everytime the currentIndex, text, or onUpdate changes + */ + useEffect(() => { + if (currentIndex < text.length) { + const timeout = setTimeout(() => { + setDisplayedText((prev) => prev + text[currentIndex]); + setCurrentIndex((prev) => prev + 1); + + // Scroll to bottom when onUpdate is called by component + if (onUpdate) onUpdate(); + // Typing speed, one character every 15ms + }, 15); + + return () => clearTimeout(timeout); + // onComplete becomes true when finished typing + } else if (currentIndex === text.length && onComplete) { + onComplete(); + } + }, [currentIndex, text, onUpdate, onComplete]); + + return <>{displayedText}; +}; + +/** + * Chatbot component that displays user-ai messages + * and responds to user interactions + * @param {*} userQuestions : Array of question objects to show on dropdown menu + * @param {*} fixedAIResponse : Array of response objects corresponding to user questions + * @returns + */ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { const [isOpen, setIsOpen] = useState(false); const [messages, setMessages] = useState([]); + const [isTyping, setIsTyping] = useState(false); const dropdownRef = useRef(null); + const messagesContainerRef = useRef(null); + // Scroll function to show the most recent message + const scrollToBottom = () => { + if (messagesContainerRef.current) { + messagesContainerRef.current.scrollTop = + messagesContainerRef.current.scrollHeight; + } + }; + /** Scroll to bottom when message array is updated + * to enable message visibility + */ + useEffect(() => { + scrollToBottom(); + }, [messages]); + + /** + * Function handling when user clicks on a question in + * the dropdown creating a user and corresponding bot message + * and adding it in the chat + * @param {} question : Question object from questions array + */ const handleQuestionClick = (question) => { const userMsg = { sender: "user", text: question.text }; - // Find the AI response with matching id + // Find the corresponding AI response by the matching ID const botObj = fixedAIResponse.find((resp) => resp.id === question.id); const botMsg = { sender: "bot", text: botObj ? botObj.text : "No response found.", }; - setMessages((prev) => [...prev, userMsg, botMsg]); + setMessages((prev) => [...prev, userMsg]); + setIsTyping(true); + + // Add message display delay proportional to the AI output size + const delay = Math.ceil(botMsg.text.length / 100) * 500 + 500; + + setTimeout(() => { + setMessages((prev) => [...prev, botMsg]); + }, delay); + // Delay before the AI begins typing + + // Close dropdown menu after question is selected setIsOpen(false); }; return (
    -
    + {/* Scrollable container that displays the chat messages */} +
    + {/* Container for indvidual messages */} {messages.map((msg, index) => (
    - {msg.text} + {/* Scroll to the bottom each time a new chaarcter is generated */} + {msg.sender === "bot" ? ( + // Add animation to the latest bot message + index === messages.length - 1 ? ( + setIsTyping(false)} + /> + ) : ( + msg.text + ) + ) : ( + msg.text + )}
    ))}
    -
    +
    + {/* Upside down triangle on dropdown menu box */} +
    + + {/* Container with list of question buttons */}
    - {userQuestions.map((question) => ( - - ))} + {/* Container for indvidual questions */} +
    + {userQuestions.map((question, index) => ( + + ))} +
    + {/* AI search bottom panel */}
    + {/* Toggle button for dropdown menu */}
    + {/* Message fade in keyframe animation */} +
    ); }; +TypingMessage.propTypes = { + text: PropTypes.string.isRequired, + onUpdate: PropTypes.func, + onComplete: PropTypes.func, +}; + AIChatBot.propTypes = { userQuestions: PropTypes.arrayOf( PropTypes.shape({ diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index ae0f3eeae..d61c34ddd 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -10,14 +10,26 @@ const AIPanel = () => { }; const questions = [ - { id: 1, text: "Question1" }, - { id: 2, text: "Question2" }, + { + id: 1, + text: "Question1: How much wood could a woodchuck chuck if a woodchuck could chuck wood?", + }, + { + id: 2, + text: "A farmer went to a market and bought a wolf, a goat, and a cabbage. On his way home, the farmer came to the bank of a river and rented a boat. But crossing the river by boat, the farmer could carry only himself and a single one of his purchases: the wolf, the goat, or the cabbage. If left unattended together, the wolf would eat the goat, or the goat would eat the cabbage. The farmer’s challenge was to carry himself and his purchases to the far bank of the river, leaving each purchase intact. How did he do it?", + }, { id: 3, text: "Question3" }, ]; const answers = [ - { id: 1, text: "Answer1" }, - { id: 2, text: "Answer2" }, + { + id: 1, + text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. ", + }, + { + id: 2, + text: "Loreum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.", + }, { id: 3, text: "Answer3" }, ]; From 712ef4a5411b818836dde2685faf0557b3353b12 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Fri, 21 Nov 2025 13:13:19 -0500 Subject: [PATCH 029/180] Making the whole bottom portion a clickable toggle --- .../exercise/lab13/components/AIChatBot.js | 45 +++++++++---------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 1fa66288c..0e1c7ccdc 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -113,8 +113,11 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { return (
    {/* Scrollable container that displays the chat messages */}
    { {/* Container with list of question buttons */}
    { }} > {/* Container for indvidual questions */} -
    +
    {userQuestions.map((question, index) => ( ))} @@ -216,30 +215,26 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => {
    {/* AI search bottom panel */} -
    + -
    +
    + {/* Message fade in keyframe animation */} +
    + ); +} + +BlobLoader.propTypes = { + animationMode: PropTypes.oneOf(["pulsing", "spinning", "static"]).isRequired, +}; + +const styles = { + // Blob container + blobContainer: { + position: "relative", + width: "48px", + height: "48px", + display: "flex", + alignItems: "center", + justifyContent: "center", + left: "12px", + top: "20px", + }, + // Base blob styling + blob: { + position: "absolute", + top: 0, + left: 0, + width: "80%", + height: "80%", + border: "1px solid black", + }, +}; diff --git a/client/src/components/exercise/lab13/components/robot.png b/client/src/components/exercise/lab13/components/robot.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b52b0e63bd8d0b1d39814f901704080b4b0108 GIT binary patch literal 136497 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

    k!`#f|Ct=uRwX>22e=4r;&H~}OyJlEc4vT)(A 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%0A#7wr#nL0Uo%O@E0aZw#+uXla9^#Mmni{XB4@bQ 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 NI_`0-#wqmbe*lD>l{f$Z literal 0 HcmV?d00001 From 29b22af93f18b1654c31d4c7416e557eec84f51e Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 16 Jan 2026 14:41:10 -0500 Subject: [PATCH 033/180] Change color of pulsing blob and dropdown when response is being generated --- client/src/components/exercise/lab13/components/AIChatBot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 300bd3c20..7b1e1751a 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -288,7 +288,7 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { onClick={handleToggleClick} disabled={isTyping || isThinking} style={{ - opacity: isTyping ? 0.5 : 1, + opacity: isTyping || isThinking ? 0.5 : 1, }} > {isOpen ? ( From 7b05256703906ff3f3c5fb5f5f107e1ffe004f15 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 16 Jan 2026 15:01:38 -0500 Subject: [PATCH 034/180] Update default tab height in Tabs.css --- client/src/components/exercise/lab13/components/Tab/Tabs.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/components/exercise/lab13/components/Tab/Tabs.css b/client/src/components/exercise/lab13/components/Tab/Tabs.css index 3d691adef..cae0da12d 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tabs.css +++ b/client/src/components/exercise/lab13/components/Tab/Tabs.css @@ -140,11 +140,11 @@ .tab-panels { position: relative; background: white; - /* Blend line between active tab and panel */ + /* Blend the line between active tab and panel */ margin-top: -1px; box-shadow: 0 5px 6px rgba(0, 0, 0, 0.3); padding: 25px 30px 25px 25px; - height: calc(75vh - 150px); + height: calc(75vh - 125px); overflow-y: scroll; border-bottom: 30px solid white; } From bae391a7043988c6707e6f1c68176db953211b9b Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Wed, 21 Jan 2026 15:00:01 -0500 Subject: [PATCH 035/180] this is in git ignore, not sure how its being pushed but oh well --- configPath.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/configPath.js b/configPath.js index 19f008860..7afd6373d 100644 --- a/configPath.js +++ b/configPath.js @@ -1,18 +1,19 @@ const path = require('path'); const os = require('os'); -const NODE_MODULES = 'node_modules'; -const NPM = 'npm'; -const BIN = 'bin'; -const NPM_CLI = 'npm-cli.js' - const platform = os.platform(); -const isWindows = platform === 'win32'; +const isWindows = platform === 'win32'; // 'win32' is returned for all windows versions, including 64-bit systems -const NODE_PATH = isWindows && process.env.Path.split(';').filter( f => f.includes('nodejs') )[0]; -const NPM_PATH = isWindows && path.join(NODE_PATH, NODE_MODULES, NPM, BIN, NPM_CLI); +/* + There is an open (Windows only) bug in PM2 that makes it find the wrong npm path when running. + This fix finds a dev's OS, and get's their path to the npm executable if necessary. +*/ +const NODE_PATH = isWindows && process.env.Path.split(';').filter(f => f.includes('node'))[0]; +const WINDOWS_PATH = isWindows && path.join(NODE_PATH, 'node_modules', 'npm', 'bin', 'npm-cli.js'); +const UNIX_PATH = 'npm'; module.exports = { isWindows, - NPM_PATH + WINDOWS_PATH, + UNIX_PATH }; \ No newline at end of file From 4b6de9e1218fb976f3dca1cfa9da872b1a06fadb Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 21 Jan 2026 15:21:35 -0500 Subject: [PATCH 036/180] started modal for questionaire --- .../exercise/lab13/pages/HaloExplination.js | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/HaloExplination.js b/client/src/components/exercise/lab13/pages/HaloExplination.js index bdaf22aa2..ca4b0dbea 100644 --- a/client/src/components/exercise/lab13/pages/HaloExplination.js +++ b/client/src/components/exercise/lab13/pages/HaloExplination.js @@ -1,8 +1,15 @@ -import { React } from "react"; +import { React, useState } from "react"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; +// import ALLModal from "src/components/all-components/ALLModal"; +import ALLModal from "src/components/all-components/ALLModal"; const HaloExplination = () => { + const [modalOpen, setModalOpen] = useState(false); + + const handleOpenModal = () => { + setModalOpen(true); + }; const handleContinue = () => { startExercise(); navigate("/Lab13/Exercise/AIandSearchPanel"); @@ -10,7 +17,21 @@ const HaloExplination = () => { return (

    - Halo Effect Explination Page + Halo Effect Explanation Page + + + Rate each factor by it's influence on your trust. +
    + } + showFooter={false} + customBody={
    hi
    } + // timeOutTime={2} + />
    ); From 161c226d58de8a8473a02b193fef5f907fa2422b Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 21 Jan 2026 16:56:33 -0500 Subject: [PATCH 037/180] Making the Rating Modal a component within Lab 13 --- .../exercise/lab13/components/RatingModal.js | 139 ++++++++++++++++++ .../exercise/lab13/pages/HaloExplination.js | 33 +++-- 2 files changed, 162 insertions(+), 10 deletions(-) create mode 100644 client/src/components/exercise/lab13/components/RatingModal.js diff --git a/client/src/components/exercise/lab13/components/RatingModal.js b/client/src/components/exercise/lab13/components/RatingModal.js new file mode 100644 index 000000000..c006b6f08 --- /dev/null +++ b/client/src/components/exercise/lab13/components/RatingModal.js @@ -0,0 +1,139 @@ +import React, { useRef } from "react"; +import PropTypes from "prop-types"; +import ALLModal from "src/components/all-components/ALLModal"; + +const optionsList = ["Very Low", "Low", "Medium", "High", "Very High"]; + +const RatingModal = ({ + show, + setShow, + toneRating, + setToneRating, + confidenceRating, + setConfidenceRating, + onSubmit, + showTextModal, + setShowTextModal, + textModalHeader, + textModalBody, +}) => { + const firstModalRef = useRef(null); + + RatingModal.propTypes = { + show: PropTypes.bool.isRequired, + setShow: PropTypes.func.isRequired, + toneRating: PropTypes.string.isRequired, + setToneRating: PropTypes.func.isRequired, + confidenceRating: PropTypes.string.isRequired, + setConfidenceRating: PropTypes.func.isRequired, + onSubmit: PropTypes.func.isRequired, + showTextModal: PropTypes.bool.isRequired, + setShowTextModal: PropTypes.func.isRequired, + textModalHeader: PropTypes.node.isRequired, + textModalBody: PropTypes.node.isRequired, + }; + + return ( +
    + + Rate each factor by its influence on your trust. +
    + } + showFooter={false} + customBody={ +
    +
    Tone:
    +
    + + Low influence + + {optionsList.map((option) => { + const value = option.toLowerCase().replace(/ /g, "-"); + const selected = toneRating === value; + return ( + + ); + })} + + High influence + +
    + {toneRating && ( +
    + Tone selected:{" "} + + {optionsList.find( + (o) => o.toLowerCase().replace(/ /g, "-") === toneRating, + )} + +
    + )} +
    Confidence:
    +
    + + Low influence + + {optionsList.map((option) => { + const value = option.toLowerCase().replace(/ /g, "-"); + const selected = confidenceRating === value; + return ( + + ); + })} + + High influence + +
    + {confidenceRating && ( +
    + Confidence selected:{" "} + + {optionsList.find( + (o) => + o.toLowerCase().replace(/ /g, "-") === confidenceRating, + )} + +
    + )} +
    + +
    +
    + } + /> + +
    + ); +}; + +export default RatingModal; diff --git a/client/src/components/exercise/lab13/pages/HaloExplination.js b/client/src/components/exercise/lab13/pages/HaloExplination.js index ca4b0dbea..e2faf2811 100644 --- a/client/src/components/exercise/lab13/pages/HaloExplination.js +++ b/client/src/components/exercise/lab13/pages/HaloExplination.js @@ -1,15 +1,18 @@ import { React, useState } from "react"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; -// import ALLModal from "src/components/all-components/ALLModal"; -import ALLModal from "src/components/all-components/ALLModal"; +import RatingModal from "../components/RatingModal"; const HaloExplination = () => { const [modalOpen, setModalOpen] = useState(false); + const [toneRating, setToneRating] = useState(""); + const [confidenceRating, setConfidenceRating] = useState(""); + const [showTextModal, setShowTextModal] = useState(false); const handleOpenModal = () => { setModalOpen(true); }; + const handleContinue = () => { startExercise(); navigate("/Lab13/Exercise/AIandSearchPanel"); @@ -19,18 +22,28 @@ const HaloExplination = () => {
    Halo Effect Explanation Page - - Rate each factor by it's influence on your trust. + toneRating={toneRating} + setToneRating={setToneRating} + confidenceRating={confidenceRating} + setConfidenceRating={setConfidenceRating} + onSubmit={() => setShowTextModal(true)} + showTextModal={showTextModal} + setShowTextModal={setShowTextModal} + textModalHeader={ +
    + Halo Effect Explanation +
    + } + textModalBody={ +
    + When a single positive or appealing part of an AI system, whether it + be its tone of voice, aesthetic appeal, or fluency creates a + favorable emotional response to the user.
    } - showFooter={false} - customBody={
    hi
    } - // timeOutTime={2} />
    From ce96a16eb9ced8cabf7515ba7f6de9b0ec192a40 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Wed, 21 Jan 2026 19:55:50 -0500 Subject: [PATCH 038/180] WOOOHOOOO WE SUCCESFULLY BACKMERGED (inster tounge out emoji) --- client/src/App.js | 2 +- server/database/schema.sql | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/src/App.js b/client/src/App.js index 8d881fe00..41c4980da 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -203,7 +203,7 @@ const App = () => { {renderLabs()} ) : ( -
    +
    {renderPages()}
    )} diff --git a/server/database/schema.sql b/server/database/schema.sql index de50cf24e..a90d6df1c 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3461,6 +3461,7 @@ to test your knowledge. Click "Next" to start!', e'{ } ] ', 2, 'coming soon', 'coming soon', true), + (12, 'Accessibility to Identity', 'Identity', 'Accessibility', '/identity.jpg', 'Learn about developing identity sensitive software.', 'This lab will introduce the idea of gender and identity and the importance of creating software that is accessible to those who conform outside the social/gender norm. Participants will learn how to design and implement gender sensitive terminology in their software. In the exercise portion of the lab they will encounter an interface that is not accessible, and learn how and why to implement an interface that is accessible to gender and identity.', e'[ "LO1: Knowledge of user significance, characteristics, and needs: Recognize the significance of the population that identifies outside the gender norm, and their needs for accessible use of software (Knowledge)", @@ -3692,6 +3693,7 @@ e'[ "multiChoice": false } ]', 2, 'coming soon', 'coming soon', true), + (13, 'Human Cognitive Bias and Generative AI', 'Cognitive Bias', 'AI', '/cognitivebiasai.jpg', 'Learn about Human Cognitive Bias and how it impacts day to day interactions with Generative Artifical Intelligence (AI).', 'This lab will introduce the idea of Human Cognitive Bias and how it impacts day to day interactions with Generative AI. Human Bias plays a large part into why do individuals trust AI generated responses without questions if the responses they are recieving are accurate. Participants will learn how to their own unconsicous bias play into typical interactions with AI, impacting a users trust in AI generated responses. In the exercise portion of the lab they will encounter an interface.', e'[ "LO1: Recognize how cognitive biases such as the Halo Effect, Authority Bias, and Truth Bias influence trust in AI-generated content (Knowledge)", @@ -3913,11 +3915,9 @@ e'[ ], "multiChoice": false } -]', 1, 'coming soon', 'coming soon', true); - - +]', 1, 'coming soon', 'coming soon', true), -]', 2, 'coming soon', 'coming soon', true), (14, 'Quantum Cryptography', 'Quantum', 'AI', '/quantumcryptography.jpg', 'Learn about quantum computing through the lens of cryptography.', '', +(14, 'Quantum Cryptography', 'Quantum', 'AI', '/quantumcryptography.jpg', 'Learn about quantum computing through the lens of cryptography.', '', e'[ "LO1: Understand role of qubits giving quantum computers greater computational power (Comprehension)", "LO2: Interact with a simple quantum simulation to see how adding qubits improves factoring (Application)", From 85377a3a7634008fd204ae0f0302c5b9b5abdf6b Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Thu, 22 Jan 2026 19:37:59 -0500 Subject: [PATCH 039/180] this should be the page complete for now --- .../exercise/lab13/pages/IDEIntroduction.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/IDEIntroduction.js b/client/src/components/exercise/lab13/pages/IDEIntroduction.js index f03cf7a96..cf39f2f78 100644 --- a/client/src/components/exercise/lab13/pages/IDEIntroduction.js +++ b/client/src/components/exercise/lab13/pages/IDEIntroduction.js @@ -1,6 +1,7 @@ import { React } from "react"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; +import LabButton from "src/components/all-components/LabButton"; const IDEIntroduction = () => { const handleContinue = () => { @@ -9,9 +10,18 @@ const IDEIntroduction = () => { }; return ( -
    - IDE Introduction Page - +
    +

    AI Cognitive Bias Repair

    +

    + Let's tweak our AI chatbot to reduce the chances of a human + experiencing cognitive biases. +

    +
    +

    + Click "Continue to Repair" to proceed! +

    + +
    ); }; From efe6b7dbd91b668078ad72def2b230cd6c413312 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 23 Jan 2026 20:30:11 -0500 Subject: [PATCH 040/180] Improve chatbot input field bar - Expand dropdown button to full width - Add rounded blue box with hover effect around dropdown triangle --- .../exercise/lab13/components/AIChatBot.js | 52 ++++++++----------- .../exercise/lab13/components/BlobLoader.jsx | 4 +- .../exercise/lab13/pages/AIPanel.js | 16 ++++-- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 7b1e1751a..d2857e6f4 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -152,22 +152,20 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { ref={messagesContainerRef} className="tw-flex-1 tw-overflow-y-auto tw-rounded-lg tw-p-4 tw-pb-16 tw-space-y-3 tw-relative tw-z-0" > - {showOverlay && ( -
    - )} +
    {/* Container for indvidual messages */} {messages.map((msg, index) => (
    {
    {/* AI search bottom panel */} -
    +
    {/* Toggle button for dropdown menu */}
    {/* Message fade in keyframe animation */} diff --git a/client/src/components/exercise/lab13/components/BlobLoader.jsx b/client/src/components/exercise/lab13/components/BlobLoader.jsx index 799f3d7a6..6ea206ced 100644 --- a/client/src/components/exercise/lab13/components/BlobLoader.jsx +++ b/client/src/components/exercise/lab13/components/BlobLoader.jsx @@ -156,8 +156,8 @@ const styles = { // Blob container blobContainer: { position: "relative", - width: "48px", - height: "48px", + width: "40px", + height: "40px", display: "flex", alignItems: "center", justifyContent: "center", diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index d61c34ddd..54102db47 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -12,25 +12,31 @@ const AIPanel = () => { const questions = [ { id: 1, - text: "Question1: How much wood could a woodchuck chuck if a woodchuck could chuck wood?", + text: "Lorem ipsum dolor sit amet?", }, { id: 2, - text: "A farmer went to a market and bought a wolf, a goat, and a cabbage. On his way home, the farmer came to the bank of a river and rented a boat. But crossing the river by boat, the farmer could carry only himself and a single one of his purchases: the wolf, the goat, or the cabbage. If left unattended together, the wolf would eat the goat, or the goat would eat the cabbage. The farmer’s challenge was to carry himself and his purchases to the far bank of the river, leaving each purchase intact. How did he do it?", + text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat?", + }, + { + id: 3, + text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum?", }, - { id: 3, text: "Question3" }, ]; const answers = [ { id: 1, - text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. ", + text: "Lorem ipsum dolor.", }, { id: 2, + text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.", + }, + { + id: 3, text: "Loreum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.", }, - { id: 3, text: "Answer3" }, ]; return ( From 660b258a3dc212b4db8c36e36774fc385870e88f Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 23 Jan 2026 20:38:07 -0500 Subject: [PATCH 041/180] Update chatbot png positioning --- client/src/components/exercise/lab13/components/AIChatBot.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index d2857e6f4..acf7a975d 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -153,7 +153,7 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { className="tw-flex-1 tw-overflow-y-auto tw-rounded-lg tw-p-4 tw-pb-16 tw-space-y-3 tw-relative tw-z-0" >
    { width: "255px", height: "255px", padding: "none", - marginTop: "30px", opacity: showOverlay ? 0.3 : 0, }} /> From 095ff9efb20a4c84fc0a7144b9aa28deb765b158 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 23 Jan 2026 20:38:58 -0500 Subject: [PATCH 042/180] Update chatbot png duration --- client/src/components/exercise/lab13/components/AIChatBot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index acf7a975d..20d21219a 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -153,7 +153,7 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { className="tw-flex-1 tw-overflow-y-auto tw-rounded-lg tw-p-4 tw-pb-16 tw-space-y-3 tw-relative tw-z-0" >
    Date: Fri, 23 Jan 2026 21:01:41 -0500 Subject: [PATCH 043/180] Back merge development/lab13 and adjust height of tab panels --- .../src/components/exercise/lab13/components/Tab/Tabs.css | 6 ++++-- client/src/components/exercise/lab13/pages/AIPanel.js | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/client/src/components/exercise/lab13/components/Tab/Tabs.css b/client/src/components/exercise/lab13/components/Tab/Tabs.css index cae0da12d..d1ff5be30 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tabs.css +++ b/client/src/components/exercise/lab13/components/Tab/Tabs.css @@ -144,7 +144,9 @@ margin-top: -1px; box-shadow: 0 5px 6px rgba(0, 0, 0, 0.3); padding: 25px 30px 25px 25px; - height: calc(75vh - 125px); + height: calc(56vh); overflow-y: scroll; - border-bottom: 30px solid white; + border-top: 15px solid white; + border: solid white; + border-width: 15px 0; } diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index f5f477c85..dfb6f2ade 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -31,7 +31,9 @@ const AIPanel = () => { -

    Example Cases of AI

    +

    Example 2

    +

    Subtitle

    +

    {lorem.repeat(4)}


      From da1a3ad119f3e59a7eaf75ef742e0753054aacd5 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Tue, 27 Jan 2026 16:01:33 -0500 Subject: [PATCH 044/180] Fix next button positioning --- .../exercise/lab13/components/Tab/Tabs.css | 3 +-- .../src/components/exercise/lab13/pages/AIPanel.js | 14 +++++++++++++- client/tailwind.config.js | 4 ++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/client/src/components/exercise/lab13/components/Tab/Tabs.css b/client/src/components/exercise/lab13/components/Tab/Tabs.css index d1ff5be30..cfc24bc1f 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tabs.css +++ b/client/src/components/exercise/lab13/components/Tab/Tabs.css @@ -10,7 +10,6 @@ position: relative; width: 100%; height: 100%; - margin-bottom: 25px; /* background-color: #EEEEEE; */ border-radius: 8px 8px 0 0; } @@ -144,7 +143,7 @@ margin-top: -1px; box-shadow: 0 5px 6px rgba(0, 0, 0, 0.3); padding: 25px 30px 25px 25px; - height: calc(56vh); + height: calc(54vh); overflow-y: scroll; border-top: 15px solid white; border: solid white; diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index dfb6f2ade..5ee2131e2 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -61,7 +61,19 @@ const AIPanel = () => {

      {lorem.repeat(3)}

      - + +
      + +
    ); }; diff --git a/client/tailwind.config.js b/client/tailwind.config.js index c2954ecac..ce0b3f56a 100644 --- a/client/tailwind.config.js +++ b/client/tailwind.config.js @@ -51,6 +51,8 @@ module.exports = { labYellow: "#ffc334", labGreen: "#7B7B7B", labBlue: "#0d28bc", + lightBlue: "#5D90FE", + mediumBlue: "#0143D0", darkGreen: "#0c3515", lightGreen: "#47ff72", brightRed: "#dc2626", @@ -143,6 +145,8 @@ module.exports = { extend: { animation: ["group", "responsive", "hover", "focus", "reduced-bounce"], bg: ["group", "responsive", "hover", "focus"], + translate: ["group-hover"], + transform: ["group-hover"], }, }, plugins: [ From 35a83933139422a204c77a074d8d8b6ed39174b3 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Tue, 27 Jan 2026 19:40:51 -0500 Subject: [PATCH 045/180] removed --- client/src/components/exercise/lab13/pages/IDEIntroduction.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/IDEIntroduction.js b/client/src/components/exercise/lab13/pages/IDEIntroduction.js index cf39f2f78..e266fd2f4 100644 --- a/client/src/components/exercise/lab13/pages/IDEIntroduction.js +++ b/client/src/components/exercise/lab13/pages/IDEIntroduction.js @@ -1,11 +1,9 @@ import { React } from "react"; -import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; import LabButton from "src/components/all-components/LabButton"; const IDEIntroduction = () => { const handleContinue = () => { - startExercise(); navigate("/Lab13/Exercise/IDEExercise"); }; From 8df01656ac2dc9c8dfc48a5e8eb68a9f0093de0a Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 28 Jan 2026 12:40:39 -0500 Subject: [PATCH 046/180] Initial repair code block --- .../exercise/lab13/pages/IDEExercise.js | 67 ++++++++++++++++++- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/IDEExercise.js b/client/src/components/exercise/lab13/pages/IDEExercise.js index 4907b23a1..344add7db 100644 --- a/client/src/components/exercise/lab13/pages/IDEExercise.js +++ b/client/src/components/exercise/lab13/pages/IDEExercise.js @@ -1,4 +1,5 @@ -import { React } from "react"; +import React from "react"; +import Repair from "src/components/body/Repair/Repair"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; @@ -8,9 +9,71 @@ const IDEExercise = () => { navigate("/Lab13/Exercise/PanelswithIDEFixes"); }; + const CodeBlock = () => { + const [inputValue, setInputValue] = React.useState(""); + return ( +
    + {`function addDisclaimers() { disclaimerText = " + `} + setInputValue(e.target.value)} + style={{ + width: "80px", + fontFamily: "monospace", + fontSize: "1em", + margin: "0 8px", + borderRadius: 4, + border: "1px solid #888", + padding: "2px 6px", + background: "#fff", + color: "#222", + }} + placeholder="?" + /> + {`"; }`} +
    + ); + }; + + const data = { + exercisePromptsState: [], + validInputs: {}, + isFirst: true, + }; + const functions = { + handleUserInputChange: () => {}, + checkInputValid: () => true, + fetchRepair: () => {}, + postRepair: () => {}, + }; + return (
    - IDE Exercise + {}} + />
    ); From 7da42fe96abe560e3ee6bd750ac0a86aa94d6087 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Wed, 28 Jan 2026 13:16:25 -0500 Subject: [PATCH 047/180] fixing backmerge errors --- client/src/components/body/Reading/Reading.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/client/src/components/body/Reading/Reading.js b/client/src/components/body/Reading/Reading.js index a0fbb534c..23b04f56c 100644 --- a/client/src/components/body/Reading/Reading.js +++ b/client/src/components/body/Reading/Reading.js @@ -66,14 +66,6 @@ const Reading = (props) => { positionPercentage: scrollPositionPercentage, }, ]); - console.log( - "Scroll position percentage: " + - JSON.stringify(pagePosition) + - "\n" + - "at " + - seconds + - " seconds", - ); }, 1000); return () => { @@ -122,7 +114,9 @@ const Reading = (props) => { return (

    Date: Wed, 28 Jan 2026 13:47:20 -0500 Subject: [PATCH 048/180] fixed issue --- client/src/App.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/client/src/App.js b/client/src/App.js index 66720070c..b7db4531f 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -113,7 +113,7 @@ const App = () => { const renderLabs = () => { return ( -
    +
    @@ -200,11 +200,7 @@ const App = () => { return ( <>
    From 3ad4c2c35cb4dd0a3763d72f3a3450721fc53834 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Wed, 28 Jan 2026 14:09:47 -0500 Subject: [PATCH 049/180] Remove demo of tab component on exercise page --- .../exercise/lab13/pages/AIPanel.js | 66 +------------------ 1 file changed, 2 insertions(+), 64 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 5ee2131e2..c8f5c24aa 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -1,8 +1,6 @@ import { React } from "react"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; -import { Tabs } from "../components/Tab/Tabs"; -import { Tab } from "../components/Tab/Tab"; const AIPanel = () => { const handleContinue = () => { @@ -10,70 +8,10 @@ const AIPanel = () => { navigate("/Lab13/Exercise/HaloExplination"); }; - const lorem = ` - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - `; - return (
    - {/* AI Panel Page */} - {/* TESTER TABS */} - - -

    Introduction to AI

    -

    {lorem.repeat(5)}

    -
    -

    {lorem.repeat(3)}

    -
    -

    {lorem.repeat(2)}

    -
    - - -

    Example 2

    -

    Subtitle

    -
    -

    {lorem.repeat(4)}

    -
    -
      -
    • Self-driving cars
    • -
    • Speech recognition
    • -
    • Recommendation systems
    • -
    -
    -

    {lorem.repeat(2)}

    -
    - - -

    Example 3

    -

    {lorem.repeat(6)}

    -
    -

    {lorem.repeat(3)}

    -
    - - -

    Example 4

    -

    {lorem.repeat(5)}

    -
    -

    {lorem.repeat(2)}

    -
    -

    {lorem.repeat(3)}

    -
    -
    - -
    - -
    + AI Panel Page +
    ); }; From 528b83b84c40823387eec858dff7148d2018e281 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Wed, 28 Jan 2026 15:27:31 -0500 Subject: [PATCH 050/180] Create merged tab and chatbot ai for exercise --- client/.eslintrc.json | 17 ++-- .../exercise/lab13/components/AIChatBot.js | 86 +++++++++--------- .../exercise/lab13/components/dyslexia.jpg | Bin 0 -> 19331 bytes .../exercise/lab13/pages/AIPanel.js | 76 +++++++++++++--- 4 files changed, 115 insertions(+), 64 deletions(-) create mode 100644 client/src/components/exercise/lab13/components/dyslexia.jpg diff --git a/client/.eslintrc.json b/client/.eslintrc.json index cf83c43f3..c04623882 100644 --- a/client/.eslintrc.json +++ b/client/.eslintrc.json @@ -8,8 +8,7 @@ "eslint:recommended", "plugin:react/recommended", "plugin:react/jsx-runtime", - "plugin:jest/recommended", - "plugin:prettier/recommended" + "plugin:jest/recommended" ], "overrides": [ { @@ -40,7 +39,7 @@ "varsIgnorePattern": "React" } ], - "indent": "off", + "indent": "off" // "indent": [ // "error", // 2, @@ -48,11 +47,11 @@ // "ignoredNodes": ["TemplateLiteral", "BinaryExpression"] // } // ], - "prettier/prettier": [ - "error", - { - "endOfLine": "auto" - } - ] + // "prettier/prettier": [ + // "error", + // { + // "endOfLine": "auto" + // } + // ] } } \ No newline at end of file diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 20d21219a..6311c2a5c 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -1,9 +1,9 @@ -import React, { useState, useRef, useEffect } from "react"; -import PropTypes from "prop-types"; -import ArrowDropUpIcon from "@mui/icons-material/ArrowDropUp"; -import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; -import BlobLoader from "./BlobLoader"; -import robotImage from "./robot.png"; +import React, { useState, useRef, useEffect } from 'react'; +import PropTypes from 'prop-types'; +import ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp'; +import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; +import BlobLoader from './BlobLoader'; +import robotImage from './robot.png'; // Example prop // const questions = [ @@ -26,7 +26,7 @@ import robotImage from "./robot.png"; * @returns */ const TypingMessage = ({ text, onUpdate, onComplete }) => { - const [displayedText, setDisplayedText] = useState(""); + const [displayedText, setDisplayedText] = useState(''); const [currentIndex, setCurrentIndex] = useState(0); /** @@ -91,13 +91,13 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { * @param {} question : Question object from questions array */ const handleQuestionClick = (question) => { - const userMsg = { sender: "user", text: question.text }; + const userMsg = { sender: 'user', text: question.text }; // Find the corresponding AI response by the matching ID const botObj = fixedAIResponse.find((resp) => resp.id === question.id); const botMsg = { - sender: "bot", - text: botObj ? botObj.text : "No response found.", + sender: 'bot', + text: botObj ? botObj.text : 'No response found.', }; setMessages((prev) => [...prev, userMsg]); @@ -127,9 +127,9 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { * @returns {string} "pulsing" | "spinning" | "static" */ const getBlobMode = () => { - if (isThinking) return "pulsing"; - if (isTyping) return "spinning"; - return "static"; + if (isThinking) return 'pulsing'; + if (isTyping) return 'spinning'; + return 'static'; }; const handleToggleClick = () => { @@ -145,7 +145,7 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { return (
    {/* Scrollable container that displays the chat messages */}
    { className="tw-absolute tw-inset-0 tw-m-auto tw-z-0 tw-pointer-events-none tw-transition-opacity tw-duration-500 tw-ease-in-out" style={{ backgroundImage: `url(${robotImage})`, - backgroundSize: "cover", - backgroundPosition: "center", - backgroundRepeat: "no-repeat", - width: "255px", - height: "255px", - padding: "none", + backgroundSize: 'cover', + backgroundPosition: 'center', + backgroundRepeat: 'no-repeat', + width: '255px', + height: '255px', + padding: 'none', opacity: showOverlay ? 0.3 : 0, }} /> @@ -170,22 +170,22 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => {
    {/* Scroll to the bottom each time a new chaarcter is generated */} - {msg.sender === "bot" ? ( + {msg.sender === 'bot' ? ( // Add animation to the latest bot message index === messages.length - 1 ? ( { )}
    {/* Show blob for most recent AI messages */} - {msg.sender === "bot" && index === messages.length - 1 && ( + {msg.sender === 'bot' && index === messages.length - 1 && (
    @@ -213,7 +213,7 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { {isThinking && (
    @@ -226,18 +226,18 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { {/* Upside down triangle on dropdown menu box */}
    @@ -246,13 +246,13 @@ const AIChatBot = ({ userQuestions, fixedAIResponse }) => { ref={dropdownRef} className={`tw-absolute tw-bottom-[48px] tw-w-[95%] tw-bg-white tw-shadow-lg tw-transition-all tw-duration-300 tw-border-2 tw-overflow-y-auto tw-border-black tw-rounded-lg tw-z-20 tw-ease-[cubic-bezier(0.4,0,0.2,1)] ${ isOpen - ? "tw-opacity-100 tw-pointer-events-auto" - : "tw-opacity-0 tw-pointer-events-none" + ? 'tw-opacity-100 tw-pointer-events-auto' + : 'tw-opacity-0 tw-pointer-events-none' }`} style={{ - maxHeight: isOpen ? "400px" : "0px", - fontFamily: "Calibri, sans-serif", - overflowY: isOpen ? "auto" : "hidden", + maxHeight: isOpen ? '400px' : '0px', + fontFamily: 'Calibri, sans-serif', + overflowY: isOpen ? 'auto' : 'hidden', }} > {/* Container for indvidual questions */} @@ -336,13 +336,13 @@ AIChatBot.propTypes = { PropTypes.shape({ id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, text: PropTypes.string.isRequired, - }), + }) ), fixedAIResponse: PropTypes.arrayOf( PropTypes.shape({ id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, text: PropTypes.string.isRequired, - }), + }) ), }; diff --git a/client/src/components/exercise/lab13/components/dyslexia.jpg b/client/src/components/exercise/lab13/components/dyslexia.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ebf735643a5b28dd07fe450f57b7f02e20140d4d GIT binary patch literal 19331 zcmb5VRa6{Z*Dc%x4ekU_kf4pbhTtBgAvgq=4(<>vI5g0>ySuvucXxMp*BqYr{hsf? z_|MI$u}0tQ9#y;cs@iL=IcNQy|GNYb1t7q|Bf!HUAiyIaA|fCmVkCdNj=;-MP$$>0DS{7V1cgN%$r zON38E`~Q6W?EqjQ!H~f`!@^Ji-eJMOV!{0F29N+?0Po(x!T|oi0|5~Z9tIZa-P@=f zCIAK&76u*;5djts3HCkUpMS%`!DD?wz-ARuLc}q!rC|H&6P4MCOUbTmSBdvy0^fJz z9EnO)Oa)qXVQ8O4K+VBvs|H4i@okkQ3`|9`69~FbMGP5Mll^ zpSKY>EO_isZ&$*>rC>9#Mexb2oQOK7WdEw%xp9F<^>-0~`Zo1A%n&~ao7qT5Lvv0oyV9n$LdDf~0YvM6hnersG~om~!@P(3-62_)N2zg2d4VR|6v zGynrl=TC6(Q)HP}*w?zB*;?w!*7yS2phYuceFJdeF`ngW%_Q}jl6~}>Ig3T%}c*e*e#{9FIt+oX++PSQhXpJSXf+i8(5e|6cm8B z_{6xb4IBd$yzUt z_8+;ub~^Fy)QiH6U%*>WBQ>r3e*p!+dk&1O@zT7Rc(nYML{9?b0q5$WNn!DlkC2ak z<6#UG>=>~m6chs$>ZXr;;AGmO?FGx2%!(N)lMHu=ui;V8Mr&BaE}Xq;(zX$%$VXqK zkL$iXn67wT6hUil($O27oHbZjwp>U--fw|Ymi3|NBNRDkiHeP*^4O-|Mj+()`wZuF35zx<9XO=_MKt{3ZO zS#iamF6qZRqaG(Wc3+4~1@4W~sSy?E!9BdrzmZ)LpfEBq@MUR5i&*K~0ZIRdjks(+O#A;e~07B5OLIjBQI=#D?_-6=isW0 zg|!t0#q>J9ICH_7a8{oNZd-QCs}DfkEGU+2919EZ7Whej0iJnveN^z}akRfHgz#$$(>ZerNDyN=JxRM82`FAtMe!oo7R6P8`y1yk* z8EbQ#w){QOATzhDkORaqUPr@v(NJ?5W}E{X>1GRh$3eiunGw(b1u!5a!e!1rdR(YA zkp`(=K48X0E2-~4pi9|fEw`7o)3k9AsHz4zFO2-Dnlpbw>s@0oIMbn0Mhrib4VC4& z*e&70-u2boh4SzRU1{@1yNNNT@K@Fxhf3cr3{o&geWm!=Ay;w)s>|AAH3A@T&qb{k zdljCmXz9d3R$&v#U3s<`{b-hXFzf=OlXXbR)nxm+QeV`?L}`!fkt;~?*!?hSX)=T? zLrzBz8BB197Tuhq0=@f$g#>EVc&E1ymFVh&7EI--1Us{r^G__I7c{+&Tj&1*_F#oy z>i+^JdkT+7H#_7x|3C~UP8>`R@rptNTQv^3v=ynnim$~n92VSXO8svfuoD6ae?0YK zu<^M6nGBbZ$aIr3v*Qp#X0B-_0Jm~pc6W+vyU62wv5dH?_qqDO(CV7(mPDh}%XMS- zJRy@c(xQ2Id~=pv9@?DP7D=hr+Mbx7@LlGI`Hg79fHVz3%^wQJWccWxB}r=A0;T=PRPStO+Nz4_z_q8}mHcmHMeLG!hY)`36SN*4D z3>$9fz+a;Yk`v7HSHp=mCP26?!K`Mw;?mzg5PQl&SoO`k@MZ(@k z#!#xUQf&2tMp_oqwjzy2XSC8C?(b7-<0M6e?)u?wLrtK%pJ~FK2*hdRMLbLTIowKx7iLlfmr@>k=1*AIn_vD@ z>j&n-2E9#y<_I7c3P;yEn8cBZOIOBfO|LhF*Z2q_;crqTiSN z89{7Z^p&qG&3#j2Y_4fWrb)(KtTR*KwqDDjIO>r8(l`fpah74WKAL?O=i{~+p*69c zwqTN_Os!C-3GIR)(!T&N%v+l4HpC$Loq)N)-kR4>ztc(s+E!$#ZEDqIPk{43*;!S6 zqESZMzyf_EvQBoxMd7BXevSXLlRrVR8AkYM3h=Lq?Wy=D=giKO3Xg{-pSK#FRVMb z-qpm~m#OnyEKlE!J$`cU%)O`6i8;Q!Fl!B2N>!YfXGI{GY^(~tO5KIJa1&ulD1f53 ztBUtdCv^YY;TkI)1kqP*0)tBlAH7O#l>?=R**}2aA$^{Fi$+R=9sfvv&tPDX!m5rgK^u-g^xVj(Ek5rWCv5T#%ueu_}B5)4l zY(!2-oBAu3lFU~#o+VlyC0?Q)=mctvPP02l&!p4QNfrsamYSPgDg3_i-&8$|puBg^ z&H<&PHX<{kxK-Vn;BTjxwvlJB=}*AQ8XN(N?3SLUKJVJPt|tJ@sGTcwz}&h2&Kf9f;*SyFxGKRwgvG zP!#6Gl{ArToG1+g-|;|&WPlH>{&p!IsQG``SdV{OLt@(7a^fIy^n4~F3M=yoEQsvW z>DbLtc*b?B^P6!4EUL4V>@tghY@%d( z)Siw|MRVgsV!YQwr*FNeDRt6Lw$Y}qw@OK=jDLbdT#IaK^fu0?c}u1Ig@G@yrrGE> z@*rQ6)suX8>4W}roUUMK=VxtU3I>my6OY#8aEJ#4)lgG=k7pf#AT0!7lr^3VIC>wq zqK+qvSlV!+wYy5WTJ#ri9kh71!Ou@NHZjnw<7m!~pK6$gsOLVGy-gBA8(T*|f!uqv z#%(v3U6fyz6H*r7VqtDf2r<(o>x)1{Lq64|S}4tFIUZ3es8}}1a);>l>i5tbhCMRf zoAzj`rLCP-^ffzIPJkLPy7Lmpu{|_J13ML)e=iX#HzY%Gtm792)oMv=xRx1G#$|ZVCrDe#nRR`C zzvVNQNNuiCBH$RI9Fb0CK9qP&K@nr-tkk0)m0$&+ieAzX1)?z z=4RV>L&Z9%B2lf|7o7wYK)mygfhX}rq0`619I(xSlwqSp>8JHVcks^sGS8CnCqPxn z8uynzZ9eQUlH~nA6!h~QZ#~WwNTm%im949DIsR*;YZ%1eK?sUSlF%VMXj9759;B+D z?cr9=aL>jd*pUZIpx-La5%)i^TOjSHaRVt9Wp7^b6nK44wDTvx(DCW{dkB9gL3y# z5>r{5TP9pYu1g?MW@^e{rQ11UY~rskjH&EDWe=aZ=R}=F#tUvYc3;sbx2dLEJDEQ5 zI$AGWf@gRgd1NLee+Q3r&Xg4hCZ(g53XHMi^PUk zW_X#JSB{L0rClghtrnBo(9#)$@8wn~D8B2wJMncjUulIa4@=|E4>=UG)(NLU8nGJy z6WVE88hvn-OV~#jHV%=dp@J%6J2L#%0JrVdPJr}wdYG$tkx!2=(~qBs!6e(3dBUr< z!gY8bUGTiD>dtOWCK^Pn7bts$rM_K}|A{OQYd_y?%bR$^5-tD0dV=mMw$B8Ex2%4P z_TEUR*FLSl>J$95Y_pRnY-092;d?ozhx6~&i--E2$eMu|1RQi&-Ay{G8e|#{eJ#Nh z;ZC7a^mRflTTI?uPJaOoN0-!gBc-`CQ@I6ZhbS_eXKwY&jOw(Mu_JLZ=0x+`2IjUv z9vG|2vNGw0>N+lC-B~8K%MfXN9r3!R*o!qs zfNQRRLFaU|r<3UD&bF4P{3JH4Yy^PKBhJsVu56*ICLFqcCzSO?j-yh4fEm(O?3Hk^ zTl@lDOfH*0(T*sMQPC>cV3!n!`Q+anP}6eZN=T!_-a&m&^7(iyLNl=ZT;1-X#V+%(;{k1GJe`ikp_ftGzF}++yq6tJZ_&79 zp7{$v0AF6|xEGzBvfur7iwdWV=q%mY>#>Z&6|0>f^FxwAiDQu3Awa6Ka+*@)1d7t+ zCP|r^ltQ`j8{Gedf^XWk+#9EL*SaCZ}Ar z%spV`->JSxI^mdnTF}CwUDTj9%8>@Ky9mkIkPoiHZjDIACz>vx*qQP@acQt_(avTw zZD8Swz7=19n9@l5BKh&`upmRz4V^w$a^UYwRW&*oY7`(7zsUBd<9rH1l??`QjBMWR4L^BR7~<)M5% z?12s5k~3dCVv_X_ySaJIwQUvy+=L68UKg}44M(&XNyv88RGs(oZ)l`~VhJLHf&gz( zrZ8lYQ@9`@NrP;jj)I}Kzj40$Nu|Ux?Y1`Desz;*w#KL-4d4>%ejJ`VtCOCa9ZhMM>#6Ri5*8DKk4NjtKc&_3!vu7X1VDfz)o?k%_+5jIqkqR^EJ1X zrQwJ0aQ*#RpC{UMGk0TzL9NC4q=C~~w9jb-ZlxsrZ{V3$0FgZ()YiIUUNUP@oNMqo zElud$r)O`$?1IYYOjo~kh5k(4B00SCX@Faw?97rW%P5RF4>~$x zkPRPZg_7>Hs&dHjZ^g~C>8e}FpG(z7byb-F9jrSCk~X zf@OxGx>J$6DVT1)cnb@~KOMQamdl(il6ptA=QG{Ak}(kpZ8x=TyCRQbN0sJOzYOGx z+f(QUVVQ{{g$DB55Re<;oPVLN&tmW_V4rKv*yU-3*&BXVYqZnWmW?1FNq5^|jA=|8 z)9>#4KHZyeFM@@i`iCDeAK=iCKE1 z0}ey={RnMhIzZI=Ku35@z zons-6HPQ$!BlkgRFnma1k={lk1z~>q=-07d8t#9>){txrty&yhNV`8UC@@-Cs!%|< z??i-6=(UNqZMp>Z?POm)VW014TP^k$;rQ8CwzCHP-Bz zJ1CdVXsAz&aZ~Mpeq2o478kyv?iX%)`96N@zuQ0nVm20*4fY#b3%AiVKp<~~Jv}8v z^!D5uyL6cZm)a+J!1}-gLQHF(1o5)XC|=2Cy9W#0@4l>J@w~%>Vr4?6MY|WoXF3xvL==qx5`o(IZB{@95ySPFqS7UW# zOJ7jV&^IxMO2N;vP5e<;Uwr1Hf}o#z}oA0J|z_qe)^A0z%^4;$S3;#J-eUcvb>rn zF(r!ailTH_y#5`(#p-4o5-BqbuD@VQZ+b@EC>h5)r%db6@9>?;tP2GA-F^?53RN!3 z#Z_YiJI!xnVM+1)v!wqCOtM9b!*=h*LQRbM5!qCRK<tUkld9wa{5>b zS#LpQ`{%+`oxrKk``_NA+|KsVXE0*;dq&oJ9n9A^yOfOb=nyrI^*A2=t!}fgUB~7> z>_VlkiD4AJN}ft|8V2HpuFiRX?f40Gi_~ZXSY5wu<%r1 zqlT<(ty;80rey|TMkJo)ms1+>F#?a0sOSC7CBx=@#ODaVrbBhw#;dK(26-744X(wa zB;r_V(A!i$#g_jLI3s;N$QMeu_}(uCOXEFVY7`SKH|SVVT1RPP?(Btz`4}bYCUa&aimw5 zx&~n7*vW89PYBWzT~vB92S+cD$`zk5O_od3vezjnoW7zMSUuAT>x~25=Cy>873Z!| zP%-{R4JcVniLo*EQ!)n{B*TpES--X_TsD@Qn6AH2G?*IB;Hb+PHg?Hd^`CMl7$?-j zenkNEVI-}pIPn`Bdd>b+=S>}RZVvm^qX@1gH1l8na;*qTDO{EfHl1=Pj;TE;bzimJ9RhuXWJkXMql>C<)^A)CNc(a6+q_YzPOYjmV+Z zQC}lI4C|2Gwq+w1mK7F%Y|1Ju&P#(D;;AZzh?E@#l4DJ~l*O7a)0&^+_9Ew5S4WXm zW2mKxs}m$4E*5PEWOmtRdsd|q?f$aHAPXKv_ptj#FsZj@a4IBIYkqA)v~g->wH7sE zD9j!NyQ%v1s7P3AiP}y{ z=|I`USN~YxA>s3@5D(DMYg&UTpTD+8q z!g8ef{omd3DD^7^ppuKPb*3)uR0Cx<-`PnPB5hsui^x6hLQPB9o~t<2#O5<1+JGic z+zr{s!;*&8fgeUug5}{`u4U%^Hiy_HNy{|tsLeJWwVudm&q@c+><3u5wheE%TYQW< zS=6eq1ZLRGNOI|y_k*K`lHERpdm9vi?rsEqOkl{%D@%%jRZ&9a-B=ai7Loy>1*CdA zPY!%Kzy5mPU{xBo*~?WI(YnlQ83sWobwmvGJtJ{i>sGJw!u`?7sj&3qK>Lyvm*hSp zH?4r~v(4{<`tI0G%*EI;b^^3e>#OgcUN?m^5`E^8f*ii$&QuaauvmsU9dU18-{kz< zMR_Y{NEH`Sa%JGKye41OtaXGxGOe97aQHqyhv!qboAR%ysqWI$P@_Zr5{LLf^*+gbHhZS$yoXC1m zTrZaIv|5y9n5tTqF9k3h;!3-^xI%AcrXeX!6~$G-Th$1mboC>&Zs)tFBib*`&M))s zQb#e42to`J6xl>xMW>e@0AtzHrA`kv2y&@*;xC!+9~3b4CIv@W5);eTr|2AzdRYNw zYzgUr<<##EQ`sHc_9-alck%x$+$;ZT&(OU27k7Lh3lrCxb}CeO|HPT)45=EOefDO^ z6Pod4ZmBwWuGM^AY`CmcZ(i8f=+DGIoji_ZLMw)p1*MxGW3#v~l@G|3)~eRiZYBlf z5hXb{pkERMVlcz*)+TR<#xzsv84DI1H7+*7QUTc9;2UsbPWZ&8cBOSn3@M+vINL;# zn@uxa(u|@5~r6+frc>cpp>9u4Of++$|X~~uJCYFiQ6cJuqO`n+^3C-3_fgh(-l2Y;Od9 za}pwcyb}Mkw1l}ZQdF7|o}&!?oc9+n==3HZYn>|X9NcIT>z72Bs2LLw^0dQv_E1F* z4j4pT$P)W4P@pHHsge)9~alh}p?l&d zDhZ~o`X^gZ#AR-)%)Io7F54fGi*Kj#IB{Ok-*v+IvPk02Hl=?1X6=Tx)Ay`47yVoF zvA7k;3&db+v5U}lzXv)bi_i%>DiTXx@x&I_VVw>nEaPxf+kYh$Y8AHo8p5-ZQGht* zOMvn2>u6q^ij1gambooUG?`@v4r~z0S;Ig?j?0gK0ScC!j*0@RC#z{{-OHv-JQ6q4!_IAiX->Xl zpdU>mB3iz;`gIZ!5)xz>);{lX5mLKrEtAN*#vNGS;Btl&xMUmlW zwpysXhoq+QkEB~g#eEGmzQUu@Z>lpA{o9c^0XCF;BzA+N+N|Lat}3q6$_&oz43c-- zmX+tQcqS6qWUqaF$SAs04GY$wY^W zx*cf-AsQN>%^3!hM@otj3v^2h`lU!mBhx$K3F|4^#IMLGQkToGpME;FP0rowVv313 z!ckD5raEGZE4>eKLS(r-*c4Ee*%EuCyCXkfIqZ8icv0AZ?VEliH63pmCeqracTiZ7OaJo`OG2S zpA*_YNpD$d$U7hf<%GQZ7l7zWkw}plTY+6z1`2LoeGGic#Ka>}xJDexs^++==9C{T z0#dbCL|aIvvIBj-OI1ulr;ZV`pM;iVz$MxCWW7@>`ey7?e)|nx-6oE}F|2NKTjiM@ z2DI6%KG&SaiM_VGU$>{8PET?|a7N53-_%5GGxJNcf4y*u{rJ8zQ#S4XK#p0UZ5dF) zk9+iB{K$GrCfg)Xbqcu_lYXCxg$aX&36HlFJ4)1Ake3l6AZ;CJr@`vGCycRj35z%! ztIcp!n;Oo&2;)#E-s+fRLP{)A%ZldgrQ%3g(7#{sO#}cz8E>Gz(Fp#a{+bqX`f<2S zskYG-DJVJW9R(?ZA{jhAKbZ&$DZ{?!ZL+)H+TuGy-)4H1lD}VmbXy)HA@sRazGl zgNe5;OY(mR+hy~l9fN(r2#Hmi5m!fw!RhjdaY0S%@J;YzMFbFwAYZ7)&4WMsOc6*ZesT4m`D#5)^kO6K~rMe=Y$(I(mSU zf=5>%Rj3KeuCS?^XRxQ#5_4r1pF;A|zSIAJm{FS>MfH#Gw&n+Yyg(US$+MEJ`%zl! zbbhx`MBYqxF_7;%*KE6sQMJ|QGZ)_FZ<`zQ623ycH4%JS@e<#I-c5>y_uKo8FcrY_ zThJYv)gcuehzdIBTkhjX;z&2Ezp^88Dfu~c%l@RO`&e|_pmCrL=S@NscyZc!5JrI2 z?=#|tK${)#SsczPgm&>muf+Il1v&txgMN*03x(VPG^?wZ{}S#321@HbJ8{JD1FiD` zqvWcu=w`;w05?%`(8ty5gurpzu&z^Hi_(07QDLOpCHYs{K=qdWwY3cT`vrwRB{ARnm?mfB9g2H(aG6=A zYOX(Auk1=)s?Fe03!*X56=Xn=o!lyWmtnT{Hk&7(A#~u@Pv@C%W+A_FOd{Uu2$ZFt z%VZq!N(C`Jv`Srn-ZO?O{dgq@+i@ii_EwpSWSZJD{nTrEe~VnSvmmIE=Yl6mDYeKSW~mI zjVhQQ&=Pz_1HT-TK(c$Zmc%s#n>uYvvqN}`=rTNpA#wrj4n}_AF7H~-YM)FU7qf9J zhgp@oPwo%a%~8=eTBK+CNPiI(6Kp&($F9!SpO=N{b<@D3YdD`vOknB4WrCf4cxy9b zR-O#Az8t5Cdf%mZ%ofT&2^)QdRG#pr^b>6ia}&7-k9FF%c|=;JchRbE_hO%{Jz{6s z**R)6slONb_1~)c_RIamt`x<|4)Hr9e8PGH9)=v>UNm>~q9$@DMmXQo*=NQ!@p11B z$mZ?SUJm4p@jgoi(qECRH%Zeh4b0ZvK5!o-@m5bTXb!rj+03t;ebAEO^Q!I^`Ph(> zVk6yfGp*o{4j%I4uv@RyAx>#@Bz5GUz*3d{@;%-i3|w6RS(lr<0A*3FN&3DDh;)*D zGR_({TA$8dft4<0A0#LSizl6FfJ>g;G*EvEq)v2ogps@bQH!_cs_SyBTS-_(P6!vs ze^@A1e9n2s)0}EQbkoZ*z12>%{lby} zJ_;#mSu%Xg@rr#r|7e-*1r5!59c}2)adMS{ox4@FIBn_2piq@h|0zu{hI3u3Q&7ab z5y=@NCUtH1T=A$X<|5t|%Rpa4kT}5H&4j4{M>jO$w z6%@JQj-D{Z#%5yVlA+b+DgX+b>eJbx2@7)lytACt-(JjuLZ3vl8WOljZzu0&Ufibvdrl}wcrO6@LQ^N zc0Opn<{2`nB?-E2rR-_@MS9qU#Nta9i%HgzZ%tUOh>JHhr4dWP#D1$yt`^|gl8i2vrUZWAIV#G;n_HS`Ge4ef z{_V=5JiNaHI6nidIPut;likQLlmlc}a30&q+Y7bE{sMS2f`S)N>C!qTc%!Cg+dox# z4k3O+m%cx^PzsfA)5^7^%b4P8y`Ko*^%`Ry);yHa>pN!6l`n#zi&EMGt=ZrMkZ|Zz#AO}g7DaW6AbnqaAUIzpy6M2AO{J6 z(%6Bk&~ty@F()$$3gxf=E%jH{qx+iGVDGDyU{<)C$oZ$Cy7_0 zW8zXzs;p)PSwB;AQe0sv-=T5$wmTu_$F~LIi4$~k&Kv!jr9vh=yqFk{an&}VlS%Op z2KM$TB<9`lm(?dUQ!y^^h@q_pV`8KDe*rJwxM+h4;HTfP@4wMOWHHgKPJ1!9uc7`a zBztqbQawk1ES;#)6YJ}6#AmUsn>Q$y#iPx$jtxVF4l8%h^eqDkJUn{1K&mz}kXm;3 zk=L*+l-sE2z|1LbMMam$JUf1pi4e8_BhLdi@|M{~RP4%8u!9|d$Q9M@u>_gkbXHAe zN=%a~O`>~p%Nqs4c`kFJqiI^ap@AAkJ5*(Rv6cT!7J~Tk&1W0tm$KK#5L;fcm|eA) zkrAL_Z1m;Pjt9Cm1{=AL;A4f&U3yJ_LiPA&6|T^KyP=P}LA;r;|NH8^WrY_Jkrzn$ zO{5n?`%*1DAkU&%km?4FLW3}##L!)tyY+rB!b%#BTYW4Cc? zzK2L#=W&_d&%r8cB7y>PAw`KXRh5~oLsXVsUx@S}x-RtSAafz3?+xg7Zye$1;(n7` zN*1HV;iC+~nVPC3x(jC?laOdgK(w_~)u^rSZuBIZl7vNFZ+IZ?^wh}n=qJBJHQ3w9 zob={QZ;V~{h-;lV&WMgC4?S!Q?WZRk)o%s2li9+qqOgIN{Toj^R%W+tzRK`&_A2DV z5>LM<^`K;LzN4i3I_d}+x2Iz$lR8M?eEJV{ek`=tg*WgM_?Rn^sn(!@A~EpHXd7{d zjOJNY%akZ;?Wk~;L9@*desIVA1Yf5&s9+2mq*R?kzofsmCa|KZIty6Xnu zjs1D7JJeHMGbtol=k`zoRSQF?zpUrmN)#B2lx4S5hwM}n#s6U?Rd7!}y5*jhD}X@p z)#L^aiI#=bsvQJgt?a0sv#3VS3Tp3=g8bgvQW!*zFTYXGEod0iP_|klc(7U05#N=+ z>pCGAGBSh^-QtY%Fy}_1oYHVYImg1QI7s4nA~6Dz%74!xlDIOm(;eh#auIG7)JzSa zF)w_ugZrqDN=8{AsOGkxQDh9p#bZsWQ-dw1?1-?{IbeLMo+$VWU=nm5f3xZzziHv` zDAvB8B(4+{{!B46Ab*S)2W}v8=ZKDt79-??)8nTPvKQV|GNecdmP# zQkmhAU;Fh9Dg6D=AgoQZ4=`De7ve%#-!vr?Oii_tE$hafMZ}yUJEe65%3L5U6I2k} ziJS|1U7icr?jjtp^=QjV5gazbw<`4y7x}K`WxvwM%u;_%Nu_sOwoWdrT+g;TKa<{- zmL&byFLm|(l<%=|&^&Y*krdk4b7sFPn|30bVyBp>O%a8>1z(W$=CW;M+pT;vsx3p_ zdLH8?COodeI#s0>wl5+;d*_6|07Py--)mvhB@OYK+bp_G2(&H%Mv&NrU4Ue?RM5pQ zQx~kIlh8U+U4JN>%Imz$fA&FmQOvfC4WH7DGcs@QfmQOR(3nTN;K@W3? zb^obl=fzFp(>9Ic?#@0=z?T4J+|#IGxIIyH@2mvy`!M( z{umU*_LeBL@V1UFe4{Z{bHi-B?CotgIPZ>a42r1 zS=iG0DMPsMR2XEtu`I*d8)l_wnW;9iQI&cb3pS6ve27}A6kLnVd5#S@Nv~~w8ONBs z!zk)1S>X4$km}zq@bk=Vw7jc~8u#b5<6k)9?sKu ztPi}I;?Jgk4f3N8>*#&EH_m(FHRwuZ_kQbAdGBb)C~_K8;v(eAnUe9hDA}urQt(^z zgKrcpKcxnw^t-S$gkig)dJ7&NuRCrQA%h|LurEK0r1|Q&0wU66625_^$0vGZ;l&`3 zPfb&F7*4$Jwt8p=$Fh`{$^HU931gOV%PZ8+4KRxnf;VeOjSO4n@pS~xp~M1&V?1LM zk`QA%{1(@2rv^~nf>Td*vv4asfva;vI4Z}U6VI4rzXM`tBYpBB+5GLF^F3s@`4f&k z5mH!god`nGcycG4uwUekLy17+ezNp`5_N{91t`;rKTJ{au0nhGqm{HE@0w&pt2E9;n}asEM2d_Rq7rs-C5fj9ti*Ql6rihL|~^#sE@Iwi(^ z+C(f7kZiG6pxIYZN(J>*&~s} zi@`U>y_nxZ!rb4wE`$v%`>=IXs6)pWYaNZMiV3!&%(Hm-DE(7%voyl<2^qD#9uZDj zsKyH{?#j$pZlEThnY26QU)+%bzE0L^+V*DO0Te-HGr=AL#52eJ(@a_NxDeo@a>e zUqH}tap`3wT0sSP>aeyeL3 z-rll3!OCT_Y);c(0Od2WXReM1+%AC??v*Oeve@2MFbQI-Lv%p2uMLmA46mNT?|ka% z$>|m$=eQaUSZ_cd{B(1XF^+T#<+8J&%R^c00nb2DR!+^$Qv2aIHjd+HMFT7X`^Y!u zLeEyhIJU%^z$5<8{9-15Sv*lHVmv2`Fx`&{27&u0=(%m0{9rrTuU>ni59708oY^pT zzkQDI{WiaDzmt&2?sVN+@)#R%Q<|LQ5fd+f6Vm{^X_-2|TEBg#{k7m2CuQ#JhZ-I{ z2~Y$$i}bo;*FM24I_90#eeRPP(7==XGNn4W(#1G3z$M@0+5pQs3LeQiFlxH^b9rV6NlwL zp}vC;=0LvMNz^*csI8HbSEa(e34X05O7{k#iJ$Rr4%x|eY~FmCL`j@SO$XS-xvX-$ zF+UrZIXurJJJ0z1m*6XQl5{HaFaLa;3+qh;2nrbn{?nZOUpxc06cpKEe<(h_+sTI` z^S23l=e=m5t^~&GMeH{C3;6DyFv)@<8w}qnfk9oO8(f}|(;%`uHzle_Bke^J8{9bc4C(E^)Dd(nIww> zs_IMe5qYYvU~J)d@)9F9{d0O&aqP_E2w~v@;^;)Yvcf=nlP7`KG#-6ZSH&3K>D#xS zKc)T!r4?{{mBnzxBJ~{S)6ySsqnaus8|Tlo|F8)7@b?Y4LF2|ySPlaT)B8w>UxjWq zj|2y+MjUe*wTw?K&5f|TUq52?L-fOZd41KZxG2r{Z`)1j%BFctUARB{@j75fXao)g z33S4%^Nccch8#HRv~@3Arl?cwTWgN@22=nhI$->X7QZKooz>L1VW+D<`~~E5e%6#P zsvEM&4xjF5`c9(L_~5e@fm_u?-(>6GTIW!=MDLgC*-uA3%H))j68i^JG*s$S*H@%Y zq|yPZnvi60>+iSM?stH%_7{K=)aKnol7uKuPHbmojd73IsWYKvnna1WTjh(Qa-+r% z?>YbTWS6j4vM8OkyX8f-HA52(snzqpfNrPoJ9JBRkYjnFnN_XwDU5e7X|K;VJ~A!7 zu;tZ_APS=YmI3p5_T0>kK?l!H7fqo~g(3$!y07^U%4D*yhvLN{od~>TOTdG7d_cz8N1`IOM&y^wASdfQ@T{z!Q65AC68_&F|wREP7HPk#4 zk43OMB*X-vjWLZlg=FGX$bx1Os59Dbwx;g*v2x2PhFx%plB~ZFJsEWzYbfumO6`QhpxNgwXwREhOg@ie; z61KRnw^x?3o#sL=^rb|$>&^70Nkv)Ghj~!fZQeIKY~!d9)uFmr;^|s*amAOb?UIJ? zt4CtytJlD$F-vY{mH8Jao75BQLcqw;i+|v`kdXwXu*VMkW%iNZFOspPt)vZh8D(h4y82n%a-3`A{n__B7%rPPPqP#;}I3 zI?aCpU%9lG>A`s40080)SQspV?AU*Z^|z?QANv!1^YU)4)W7;X=f&$wMaLaB1wGI3 zzg$dbv{KETn-*u9TS(QUcAq4P*bzfehZ!m7T!t#K1QDW$znxQ*VQzVqqOGeH$U!Nd zP344}uh-)}p97ETrfE?8=ZPQd7rv#nYo3Y?^{B&V!B}T##}2#sXe&VT2xprJN#_7w z15sKyrjp=VpnaBog{W(E*KQt57b!n~!}nPha!?D7w()ZLD-gO{#_X>33oUC7cp1>DM29# zO?W^;kx-@RvIdZ#pkM%ju&(qTFo0AMT`5Wsl+Xi$Qbj4Dgh+`fkkAbR2}A*r9*T%G zSNFf|+dJo-^ZWk$GI!?A+&d#PPdSraDiDdswLJIV%Qn)aKI;t$eB+Sn(P3`9Eqb@$ zsA1J4(~%s~ld*%kjKQ1#GyMgcKx?BD+K_2p zxYL}Q!TzaVU`k^+UDL-+_|^F5Jk*J@027@9+9(%r-1Q^_h~cEyYn5#ByF(L!%Y9Q) z`fHh-w*b(?INJ$qLW&vs^N?e-*85X;d7I#iSMo=vg#?Ky~a;b#Cy-s>hZ(w z{kBE47M99jKDklmz>}LhXBfali;bxHGMm>u|71U6BOQK*VI%p_U*4a5swAwyQ{h^q zPUHuLr_-~JRW6?cL_-LZOR@bX*j%5AHsOrYA0W{mAk$4J=r~Th0_mRpy^fbhoIhq; z;7)tOiI~dr6Oq>0+1UD3RPy$p(E+dm$puqr|8HOF<`I?nKGMw8_ZuF#`lHMXm(;`? z!yG3Zr>3Dzh2v3Jg(ikA&{Ix*C~upzV4QzlXFG%X7A109PUuECq9PKZD4qE9n5!g`|v08>#)lW1<|tRdTS8rAUMTX z;(Tx7kaG~Tg#grbzn7~f{qTc|8lq6lRSDZA!T45t>aOBy>XF5#zOq;JxyYxP8%8!7 zSmEm~1266%p%+;h{#_$%Z-X1E1 zhz;NXld;H_-D#1KQnXlX_cQVWIvHSn8MlDdK8CLQ700Y5!ZU z;&fpaZXVy$4V{uJ5`DP*E%XtvJRE(_P}pFx9RIkew9$1*WqwfzbFz(K(g86TmOYVH zATTd*XdIsu@ZJZ-C;8((wdPrvTU!XlWZqaa^uTt~GZt+M2NFCgyn5V*u|Ggw-Z>jz zX(DCI=Ee~PIS*7?il)6~woCo!MIY1nS`)$){?BRb;jtA^+=?sMaiH?b=C!9ioiA2{1S$x zcYM)D|17J(RCctj?91P1OZ2EWk(Bt3Yc7?X`3J5qSK4PhC zBti9T2w(#-`n&xV>+f&yW!F1&^GBmL0<0gcbR7$^T0HpGabsS$>+xtIYIJ1xT)@{| zC!{@@&Bk=Q`J9rk+E=Wc-R_EC7GwBvg{V13udQ>JiPN=!fxo`Qyqkw7$+^QdapLKg zqsmCyn-X3!Y}u+S)%=x$l42YX!qi+pOFQS<#^WlrUc?9<+;!0OxLA(sK-CJe?{TNVB(8UFPy<+phT z5C>*C>+3$>lg}4BM=v}1aQfJ{*L?86I7jQK0j1^bK+S#(W}+~UBp(H?;b3^=<(`B( z^AkTn87qJ(NXl^=aXkNdVmIT25rh7+gVAAZx~St?yR1~(SbOhS^jrNq{hkrktZDYl z&zIhOS+H3QFP>E{ORRj-A-SL*Y^r^$BXJ@qdkC|wihG;(?$Ikf16{^=hp}+pq14e! zr|)aGL>(^3hvomrIa`VrgcsG9zGUTkB{?zqpo)e}=eaJlx$b(CB<=a+Y+AfXmP?WN z=+%({t$@ycW*yAz(obhoRQI@7L>fg6qsA8tG@*sAnd5wNg75O(JhB;nAKJEmMJQa4 zzJqW7GWgjwsOm`>zzotGjxliH9;Kvjjux8hv%(IK38WKnmThJ~P=Svk?U!!4tD>FmW*!FRuqI;fI_bbSd{smcHO^V!+ZAvnQ zd-zl6*YbMkXYUWMl5)@|t#uH@=}@GZgptfQ@wIA?^erxm_M$9fW7tY3YgI9dvP@u} z+I`*{F&TLWGelHZRji*}@i@P{shrVjgLLppV>@4sCTYY9Y8YGYFN=KSzwqCY_6U=X z*(Ywy4e!eDDn*B()~d>V!1h+3sKnd2V>moU=TY6|VS0$5qk9@p`hd;OI=%utF2KS@ z=^|RyVb1bsdZpBD`YNz~z;gE7?4n?m@R76&;dGn}60KMk5xe>+=s@GdNlCE~mPW@N zDm7j~E&H(HJ8zn+Vm>+NP{o2=YD>nW^-Qw1!F#z77UKt~d9%$8rfyT`EN-Uge!5{! z9Odf?CT)atihT03Hf9r6AZ zYAcaWuNOdE7eQt@EBD?n+c44_d#tg>x#zkzy2g|}GWAoc)NOzv<+~bf8t;v%BVJWf z=>ZpL>4ubtFGJm{Ai-&;?gTci^^ibt8yTw+IN3x1q28KJZP;~GRn4uu7Ow?^G^yQr zp^bX)KQ}_!9PI|EJ;o5o39@3{-PfXPTb`w)Xhh`^y`|G*Sfp|F!q`Dx)NBHpbo7di z)JIa_Y30_vEgqQ&lS`@sf%Na@2vh?)!CzuQob2=dLi5l*SYk7!RnUyY`YXW!+9|V6Y9uj~VE20gpmXX)$L7r`hj9n&E5S3obPG zY!S0BU&$tY20hlo2AYo^cmiV%35%cxg;d{#T$BsfnX1l9E|or2JoZ3Xef|c?$@^({ z^H5CIhQ0llp{E(0-Jh96S`YLwUrzM^5EVtN2Abj3YJEG|{V#~H?H&YrY zfY}t`mVJwVdb&b}6Xx6JNgc#-0|ti%lq{2G#m>6$UWEn*=Y7OOdlJ?^Jv3k&EZVS^ YRk|6Wr8>J%Lj}~)m;WOzocY1|1AG^Lb^rhX literal 0 HcmV?d00001 diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 54102db47..000bdc7b5 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -1,33 +1,36 @@ -import { React } from "react"; -import { startExercise } from "src/reducers/lab2/actions"; -import { navigate } from "@reach/router"; -import AIChatBot from "../components/AIChatBot"; +import { React } from 'react'; +import { startExercise } from 'src/reducers/lab2/actions'; +import { navigate } from '@reach/router'; +import AIChatBot from '../components/AIChatBot'; +import { Tabs } from '../components/Tab/Tabs'; +import { Tab } from '../components/Tab/Tab'; +import dyslexiaImage from '../components/dyslexia.jpg'; const AIPanel = () => { const handleContinue = () => { startExercise(); - navigate("/Lab13/Exercise/HaloExplination"); + navigate('/Lab13/Exercise/HaloExplination'); }; const questions = [ { id: 1, - text: "Lorem ipsum dolor sit amet?", + text: 'Is dyslexia a vision problem?', }, { id: 2, - text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat?", + text: 'Do people who have dyslexia see words and letters backward?', }, { id: 3, - text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum?", + text: 'Can dyslexia be cured?', }, ]; const answers = [ { id: 1, - text: "Lorem ipsum dolor.", + text: 'Lorem ipsum dolor.', }, { id: 2, @@ -41,9 +44,58 @@ const AIPanel = () => { return (
    - - AI Panel Page - + + +
    + +
    +
    + +
    +

    Dyslexia

    +
    + +
    +
    +

    + Dyslexia is a neurological learning disability that primarily + affects reading and language processing. It is not a vision + problem and does not affect intelligence. People with dyslexia + may have difficulty connecting written letters to spoken + sounds, not how letters visually appear. +

    +

    +

    + Dyslexia cannot be cured, but it can be effectively supported + through early intervention, structured reading instruction, + and classroom accommodations. +

    +
    +
    +
    +
    +
    +
    +
    + +
    ); }; From 8a9b4ec0b3160c0db067e5bc270079e717fe7c1c Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 29 Jan 2026 13:02:13 -0500 Subject: [PATCH 051/180] Removed absolute height of modal and tw-h-full to fix scroll bar; removed double scroll bars in Reinforcement --- client/src/App.js | 10 +++++----- .../src/components/all-components/Lab/LabWindow.js | 14 ++++++-------- client/src/components/body/Reinforcement.js | 4 ++-- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/client/src/App.js b/client/src/App.js index 1396347fe..5e834c1a2 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -112,7 +112,7 @@ const App = () => { const renderLabs = () => { return ( -
    +
    @@ -200,13 +200,13 @@ const App = () => {
    -
    -
    +
    +
    }> {labInProgress ? ( { } = props; return ( -
    +

    {props.title}

    -
    +
    {/* Blue and Yellow stripes*/}
    { {/* Nav Pane and Lab Window */}
    {
    {children} diff --git a/client/src/components/body/Reinforcement.js b/client/src/components/body/Reinforcement.js index 5d21ae13f..90312c725 100644 --- a/client/src/components/body/Reinforcement.js +++ b/client/src/components/body/Reinforcement.js @@ -28,14 +28,14 @@ const Reinforcement = (props) => { } return ( -
    +

    Reinforcement

    Here is some supplemental material to reinforce the topic.

    -
    +
    {reinforcement.map((data, index) => { return (
    From f7adbbd8b7daba85c8b3d4c21292b3fd4c81455d Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Thu, 29 Jan 2026 14:41:18 -0500 Subject: [PATCH 052/180] Made simple reapir section for lab13, the specific wording can be changed later --- .../components/exercise/lab13/Lab13Context.js | 71 +++++- client/src/components/exercise/lab13/Main.js | 97 ++------ .../exercise/lab13/pages/IDEExercise.js | 207 ++++++++++++++---- 3 files changed, 257 insertions(+), 118 deletions(-) diff --git a/client/src/components/exercise/lab13/Lab13Context.js b/client/src/components/exercise/lab13/Lab13Context.js index 5485285b5..fdb9eb072 100644 --- a/client/src/components/exercise/lab13/Lab13Context.js +++ b/client/src/components/exercise/lab13/Lab13Context.js @@ -1,5 +1,4 @@ -import React from "react"; -import { createContext, useState } from "react"; +import React, { createContext, useState, useContext } from "react"; import PropTypes from "prop-types"; const ExerciseStateContext = createContext({ // Existing user info state @@ -56,9 +55,64 @@ export const ExerciseStateProvider = ({ children }) => { setRankingComplete(false); }; + // --- REPAIR SECTION STATE --- + const [exercisePromptsState, setExercisePromptsState] = useState([ + { + id: "disclaimer", + fileId: 0, + value: "", + }, + { + id: "confidence", + fileId: 0, + value: false, + }, + { + id: "citations", + fileId: 0, + value: false, + }, + ]); + const [validInputs, setValidInputs] = useState({ + disclaimer: null, + confidence: null, + citations: null, + }); + const [isFirst, setIsFirst] = useState(true); + + const handleUserInputChange = (id, value) => { + setExercisePromptsState((prev) => + prev.map((item) => (item.id === id ? { ...item, value } : item)), + ); + setIsFirst(false); + }; + + const checkInputValid = () => { + const disclaimerValid = + exercisePromptsState.find((i) => i.id === "disclaimer").value.trim() === + "Disclaimer - ALL-IE's outputs can be wrong and should be double-checked."; + const confidenceValid = !!exercisePromptsState.find( + (i) => i.id === "confidence", + ).value; + const citationsValid = !!exercisePromptsState.find( + (i) => i.id === "citations", + ).value; + setValidInputs({ + disclaimer: disclaimerValid, + confidence: confidenceValid, + citations: citationsValid, + }); + return disclaimerValid && confidenceValid && citationsValid; + }; + + // No-ops for fetchRepair/postRepair for this exercise + const fetchRepair = () => {}; + const postRepair = () => {}; + return ( { rankingComplete, setRankingComplete, resetRanking, + // --- REPAIR SECTION CONTEXT --- + exercisePromptsState, + setExercisePromptsState, + validInputs, + setValidInputs, + isFirst, + setIsFirst, + handleUserInputChange, + checkInputValid, + fetchRepair, + postRepair, }} > {children} @@ -95,4 +160,6 @@ ExerciseStateProvider.propTypes = { children: PropTypes.node.isRequired, }; +export const useLab13 = () => useContext(ExerciseStateContext); + export default ExerciseStateContext; diff --git a/client/src/components/exercise/lab13/Main.js b/client/src/components/exercise/lab13/Main.js index 1f6f2d5ce..cc745c086 100644 --- a/client/src/components/exercise/lab13/Main.js +++ b/client/src/components/exercise/lab13/Main.js @@ -1,10 +1,6 @@ -import React, { useState } from "react"; +import React from "react"; import { Router } from "@reach/router"; - -import { EXERCISE_STATES } from "../../../constants/lab13"; -import ExerciseStateContext from "./Lab13Context"; - -// lab imported dependencies; +import { ExerciseStateProvider } from "./Lab13Context"; import ExerciseIntroduction from "./pages/ExerciseIntroduction"; import ConfidenceRanking from "./pages/ConfidenceRanking"; @@ -24,68 +20,9 @@ import TruthBiasExplination from "./pages/TruthBiasExplination"; * and acting as the container managing the state of the user. */ const Main = () => { - const [exerciseState, setExerciseState] = useState( - EXERCISE_STATES.EXERCISE_SELECTION_DEFAULT, - ); - // User profile state - const [firstName, setFirstName] = useState(""); - const [lastName, setLastName] = useState(""); - const [preferredName, setPreferredName] = useState(""); - const [pronouns, setPronouns] = useState(""); - const [college, setCollege] = useState(""); - const [major, setMajor] = useState(""); - const [gradTerm, setGradTerm] = useState(""); - - // Ranking state - const [rankingSuccess, setRankingSuccess] = useState(false); - const [rankingColumns, setRankingColumns] = useState([]); - const [rankingBank, setRankingBank] = useState([]); - const [rankingComplete, setRankingComplete] = useState(false); - return (
    - { - setRankingSuccess(false); - setRankingColumns([]); - setRankingBank([]); - setRankingComplete(false); - }, - // setPronouns, - // college, - // setCollege, - // major, - // setMajor, - // gradTerm, - // setGradTerm, - }} - > + @@ -98,20 +35,22 @@ const Main = () => { - {/* // /* - // - // - // - // - // - // - // - // - // - // - // */} + {/* + // + // + // + // + // + // + // + // + // + // + // + // + */} - +
    ); }; diff --git a/client/src/components/exercise/lab13/pages/IDEExercise.js b/client/src/components/exercise/lab13/pages/IDEExercise.js index 344add7db..ef25560b6 100644 --- a/client/src/components/exercise/lab13/pages/IDEExercise.js +++ b/client/src/components/exercise/lab13/pages/IDEExercise.js @@ -1,59 +1,193 @@ import React from "react"; +import CodeBlockInput from "src/components/all-components/CodeBlock/Components/CodeBlockInput"; +import { useLab13 } from "../Lab13Context"; import Repair from "src/components/body/Repair/Repair"; +import PropTypes from "prop-types"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; const IDEExercise = () => { + const { + exercisePromptsState, + validInputs, + isFirst, + handleUserInputChange, + checkInputValid, + fetchRepair, + postRepair, + } = useLab13(); + const handleContinue = () => { startExercise(); navigate("/Lab13/Exercise/PanelswithIDEFixes"); }; - const CodeBlock = () => { - const [inputValue, setInputValue] = React.useState(""); - return ( + const CodeBlock = React.useCallback( + ({ inputs, userInput, validInputs, isFirst }) => (
    - {`function addDisclaimers() { disclaimerText = " - `} - setInputValue(e.target.value)} - style={{ - width: "80px", - fontFamily: "monospace", - fontSize: "1em", - margin: "0 8px", - borderRadius: 4, - border: "1px solid #888", - padding: "2px 6px", - background: "#fff", - color: "#222", - }} - placeholder="?" - /> - {`"; }`} +
    + function{" "} + addDisclaimers() {"{"} +
    +
    +
    + { + "// Enter 'Disclaimer - ALL-IE's outputs can be wrong and should be double-checked.' below:" + } +
    + disclaimerText = " + i.id === "disclaimer").value} + attributes={{ + type: "text", + onChange: (e) => userInput("disclaimer", e.target.value), + placeholder: "Enter Answer Here", + className: "tw-p-1 code_editor__input", + style: { + width: 400, + fontFamily: "monospace", + fontSize: "1em", + margin: "0 8px", + borderRadius: 4, + border: + validInputs.disclaimer === false && !isFirst + ? "1px solid #e00" + : "1px solid #888", + padding: "2px 6px", + background: "#333", + color: "lightsalmon", + }, + }} + /> + "; + {validInputs.disclaimer === false && !isFirst && ( +
    + Please enter the correct disclaimer. +
    + )} +
    +
    +
    + {"// Enter 'True' below:"} +
    + showConfidenceScores = + i.id === "confidence").value} + attributes={{ + type: "text", + onChange: (e) => userInput("confidence", e.target.value), + placeholder: "Enter Answer Here", + className: "tw-p-1 code_editor__input", + style: { + width: 400, + fontFamily: "monospace", + fontSize: "1em", + margin: "0 8px", + borderRadius: 4, + border: + validInputs.confidence === false && !isFirst + ? "1px solid #e00" + : "1px solid #888", + padding: "2px 6px", + background: "#333", + color: "lightsalmon", + }, + }} + /> + {validInputs.confidence === false && !isFirst && ( +
    + Please enter "True". +
    + )} +
    +
    +
    + {"// Enter 'True' below:"} +
    + showCitations = + i.id === "citations").value} + attributes={{ + type: "text", + onChange: (e) => userInput("citations", e.target.value), + placeholder: "Enter Answer Here", + className: "tw-p-1 code_editor__input", + style: { + width: 400, + fontFamily: "monospace", + fontSize: "1em", + margin: "0 8px", + borderRadius: 4, + border: + validInputs.citations === false && !isFirst + ? "1px solid #e00" + : "1px solid #888", + padding: "2px 6px", + background: "#333", + color: "lightsalmon", + }, + }} + /> + {validInputs.citations === false && !isFirst && ( +
    + Please enter "True". +
    + )} +
    +
    {"}"}
    - ); + ), + [], + ); + + CodeBlock.propTypes = { + inputs: PropTypes.array.isRequired, + userInput: PropTypes.func.isRequired, + validInputs: PropTypes.object.isRequired, + isFirst: PropTypes.bool.isRequired, }; const data = { - exercisePromptsState: [], - validInputs: {}, - isFirst: true, + exercisePromptsState, + validInputs, + isFirst, }; const functions = { - handleUserInputChange: () => {}, - checkInputValid: () => true, - fetchRepair: () => {}, - postRepair: () => {}, + handleUserInputChange, + checkInputValid, + fetchRepair, + postRepair, }; return ( @@ -68,13 +202,12 @@ const IDEExercise = () => { files={[ { fileId: 0, - fileName: "ALLIEChatbot.js", + fileName: "ALLIEChatbot.py", implementation: CodeBlock, }, ]} - navigateNext={() => {}} + navigateNext={handleContinue} /> -
    ); }; From 85e3d8dd445909c993cef055291b6eb9e5df6644 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Fri, 30 Jan 2026 12:27:20 -0500 Subject: [PATCH 053/180] minor bug fix --- client/src/components/body/Reading/Reading.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/body/Reading/Reading.js b/client/src/components/body/Reading/Reading.js index 23b04f56c..6e55afed7 100644 --- a/client/src/components/body/Reading/Reading.js +++ b/client/src/components/body/Reading/Reading.js @@ -125,7 +125,7 @@ const Reading = (props) => { > Reading

    -
    +
    {readingData?.description !== "" ? ( <> From c5fb5255d3309e90ac19c861b0e2f0c7d2120def Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Fri, 30 Jan 2026 12:49:27 -0500 Subject: [PATCH 054/180] removing uneccessary pages --- client/src/components/exercise/lab13/Main.js | 8 +-- .../exercise/lab13/pages/AIPanel.js | 2 +- .../exercise/lab13/pages/AIandSearchPanel.js | 2 +- .../lab13/pages/DunningKrugerExplination.js | 19 ------- .../exercise/lab13/pages/HaloExplination.js | 53 ------------------- .../lab13/pages/PanelswithIDEFixes.js | 2 +- .../lab13/pages/TruthBiasExplination.js | 19 ------- 7 files changed, 4 insertions(+), 101 deletions(-) delete mode 100644 client/src/components/exercise/lab13/pages/DunningKrugerExplination.js delete mode 100644 client/src/components/exercise/lab13/pages/HaloExplination.js delete mode 100644 client/src/components/exercise/lab13/pages/TruthBiasExplination.js diff --git a/client/src/components/exercise/lab13/Main.js b/client/src/components/exercise/lab13/Main.js index cc745c086..635916477 100644 --- a/client/src/components/exercise/lab13/Main.js +++ b/client/src/components/exercise/lab13/Main.js @@ -7,12 +7,9 @@ import ConfidenceRanking from "./pages/ConfidenceRanking"; import AIPanel from "./pages/AIPanel.js"; import AIandSearchPanel from "./pages/AIandSearchPanel.js"; import Conclusion from "./pages/Conclusion.js"; -import DunningKrugerExplination from "./pages/DunningKrugerExplination"; -import HaloExplination from "./pages/HaloExplination"; import IDEExercise from "./pages/IDEExercise"; import IDEIntroduction from "./pages/IDEIntroduction"; import PanelswithIDEFixes from "./pages/PanelswithIDEFixes"; -import TruthBiasExplination from "./pages/TruthBiasExplination"; /** * Main(): is the routing component for managing the lab exercise progression, @@ -28,12 +25,9 @@ const Main = () => { - - - + - {/* // diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 54102db47..063f3e889 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -6,7 +6,7 @@ import AIChatBot from "../components/AIChatBot"; const AIPanel = () => { const handleContinue = () => { startExercise(); - navigate("/Lab13/Exercise/HaloExplination"); + navigate("/Lab13/Exercise/AIandSearchPanel"); }; const questions = [ diff --git a/client/src/components/exercise/lab13/pages/AIandSearchPanel.js b/client/src/components/exercise/lab13/pages/AIandSearchPanel.js index 27c25ea8c..ba1b8de80 100644 --- a/client/src/components/exercise/lab13/pages/AIandSearchPanel.js +++ b/client/src/components/exercise/lab13/pages/AIandSearchPanel.js @@ -5,7 +5,7 @@ import { navigate } from "@reach/router"; const AIandSearchPanel = () => { const handleContinue = () => { startExercise(); - navigate("/Lab13/Exercise/TruthBiasExplination"); + navigate("/Lab13/Exercise/IDEIntroduction"); }; return ( diff --git a/client/src/components/exercise/lab13/pages/DunningKrugerExplination.js b/client/src/components/exercise/lab13/pages/DunningKrugerExplination.js deleted file mode 100644 index e84ef0b1e..000000000 --- a/client/src/components/exercise/lab13/pages/DunningKrugerExplination.js +++ /dev/null @@ -1,19 +0,0 @@ -import { React } from "react"; -import { startExercise } from "src/reducers/lab2/actions"; -import { navigate } from "@reach/router"; - -const DunningKrugerExplination = () => { - const handleContinue = () => { - startExercise(); - navigate("/Lab13/Exercise/Conclusion"); - }; - - return ( -
    - Dunning Kruger Explination Page - -
    - ); -}; - -export default DunningKrugerExplination; diff --git a/client/src/components/exercise/lab13/pages/HaloExplination.js b/client/src/components/exercise/lab13/pages/HaloExplination.js deleted file mode 100644 index e2faf2811..000000000 --- a/client/src/components/exercise/lab13/pages/HaloExplination.js +++ /dev/null @@ -1,53 +0,0 @@ -import { React, useState } from "react"; -import { startExercise } from "src/reducers/lab2/actions"; -import { navigate } from "@reach/router"; -import RatingModal from "../components/RatingModal"; - -const HaloExplination = () => { - const [modalOpen, setModalOpen] = useState(false); - const [toneRating, setToneRating] = useState(""); - const [confidenceRating, setConfidenceRating] = useState(""); - const [showTextModal, setShowTextModal] = useState(false); - - const handleOpenModal = () => { - setModalOpen(true); - }; - - const handleContinue = () => { - startExercise(); - navigate("/Lab13/Exercise/AIandSearchPanel"); - }; - - return ( -
    - Halo Effect Explanation Page - - setShowTextModal(true)} - showTextModal={showTextModal} - setShowTextModal={setShowTextModal} - textModalHeader={ -
    - Halo Effect Explanation -
    - } - textModalBody={ -
    - When a single positive or appealing part of an AI system, whether it - be its tone of voice, aesthetic appeal, or fluency creates a - favorable emotional response to the user. -
    - } - /> - -
    - ); -}; - -export default HaloExplination; diff --git a/client/src/components/exercise/lab13/pages/PanelswithIDEFixes.js b/client/src/components/exercise/lab13/pages/PanelswithIDEFixes.js index d8c4c32cb..743726405 100644 --- a/client/src/components/exercise/lab13/pages/PanelswithIDEFixes.js +++ b/client/src/components/exercise/lab13/pages/PanelswithIDEFixes.js @@ -5,7 +5,7 @@ import { navigate } from "@reach/router"; const IDEIntroduction = () => { const handleContinue = () => { startExercise(); - navigate("/Lab13/Exercise/DunningKrugerExplination"); + navigate("/Lab13/Exercise/Conclusion"); }; return ( diff --git a/client/src/components/exercise/lab13/pages/TruthBiasExplination.js b/client/src/components/exercise/lab13/pages/TruthBiasExplination.js deleted file mode 100644 index 101f47334..000000000 --- a/client/src/components/exercise/lab13/pages/TruthBiasExplination.js +++ /dev/null @@ -1,19 +0,0 @@ -import { React } from "react"; -import { startExercise } from "src/reducers/lab2/actions"; -import { navigate } from "@reach/router"; - -const TruthBiasExplination = () => { - const handleContinue = () => { - startExercise(); - navigate("/Lab13/Exercise/IDEIntroduction"); - }; - - return ( -
    - Truth Bias Explination Page - -
    - ); -}; - -export default TruthBiasExplination; From e561a6910305fb756acb5cfb975d60b68065d276 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Fri, 30 Jan 2026 17:03:35 -0500 Subject: [PATCH 055/180] Added explanations for the three code fixes --- .../exercise/lab13/pages/IDEIntroduction.js | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/IDEIntroduction.js b/client/src/components/exercise/lab13/pages/IDEIntroduction.js index e266fd2f4..41a4e45ac 100644 --- a/client/src/components/exercise/lab13/pages/IDEIntroduction.js +++ b/client/src/components/exercise/lab13/pages/IDEIntroduction.js @@ -11,8 +11,29 @@ const IDEIntroduction = () => {

    AI Cognitive Bias Repair

    - Let's tweak our AI chatbot to reduce the chances of a human - experiencing cognitive biases. + There are quite a few types of biases that can impact how we view our AI + chatbot responses! Let's explore a few common ways to mitigate + these biases through some common additions to AI chatbots that can help + us reduce the issue of experiencing cognitive biases. +

    +

    + Some of these additions include making the AI chatbot provide a + confidence score. Confidence scores are the way the + chatbot let's the user know how sure it is that it completed + it's request. Be careful though, this is not the same as an + accuracy score. +

    +

    + Another additions would be the disclaimer text that + many AI chatbots include somewhere in their interface. Disclaimers are a + great way to have a constant reminder to their user that AI can be wrong + and should be double-checked. +

    +

    + Finally, another common addition is having the AI chatbot provide + citations for where it got its information from. This + is a great way to help users fact-check the information provided by the + AI chatbot and reduce the chances of falling for misinformation.

    From 58ac8bf6e71f6056ec51c3172966fad15d62aace Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Fri, 30 Jan 2026 22:31:54 -0500 Subject: [PATCH 056/180] Fixing styling for code blocks --- .../exercise/lab13/pages/IDEExercise.js | 199 +++--------------- .../repairs/IDEExerciseImplementation.js | 108 ++++++++++ 2 files changed, 132 insertions(+), 175 deletions(-) create mode 100644 client/src/components/exercise/lab13/pages/repairs/IDEExerciseImplementation.js diff --git a/client/src/components/exercise/lab13/pages/IDEExercise.js b/client/src/components/exercise/lab13/pages/IDEExercise.js index ef25560b6..52cf6561d 100644 --- a/client/src/components/exercise/lab13/pages/IDEExercise.js +++ b/client/src/components/exercise/lab13/pages/IDEExercise.js @@ -1,10 +1,10 @@ import React from "react"; -import CodeBlockInput from "src/components/all-components/CodeBlock/Components/CodeBlockInput"; import { useLab13 } from "../Lab13Context"; import Repair from "src/components/body/Repair/Repair"; import PropTypes from "prop-types"; import { startExercise } from "src/reducers/lab2/actions"; import { navigate } from "@reach/router"; +import IDEExerciseImplementation from "./repairs/IDEExerciseImplementation"; const IDEExercise = () => { const { @@ -22,167 +22,12 @@ const IDEExercise = () => { navigate("/Lab13/Exercise/PanelswithIDEFixes"); }; - const CodeBlock = React.useCallback( - ({ inputs, userInput, validInputs, isFirst }) => ( -

    -
    - function{" "} - addDisclaimers() {"{"} -
    -
    -
    - { - "// Enter 'Disclaimer - ALL-IE's outputs can be wrong and should be double-checked.' below:" - } -
    - disclaimerText = " - i.id === "disclaimer").value} - attributes={{ - type: "text", - onChange: (e) => userInput("disclaimer", e.target.value), - placeholder: "Enter Answer Here", - className: "tw-p-1 code_editor__input", - style: { - width: 400, - fontFamily: "monospace", - fontSize: "1em", - margin: "0 8px", - borderRadius: 4, - border: - validInputs.disclaimer === false && !isFirst - ? "1px solid #e00" - : "1px solid #888", - padding: "2px 6px", - background: "#333", - color: "lightsalmon", - }, - }} - /> - "; - {validInputs.disclaimer === false && !isFirst && ( -
    - Please enter the correct disclaimer. -
    - )} -
    -
    -
    - {"// Enter 'True' below:"} -
    - showConfidenceScores = - i.id === "confidence").value} - attributes={{ - type: "text", - onChange: (e) => userInput("confidence", e.target.value), - placeholder: "Enter Answer Here", - className: "tw-p-1 code_editor__input", - style: { - width: 400, - fontFamily: "monospace", - fontSize: "1em", - margin: "0 8px", - borderRadius: 4, - border: - validInputs.confidence === false && !isFirst - ? "1px solid #e00" - : "1px solid #888", - padding: "2px 6px", - background: "#333", - color: "lightsalmon", - }, - }} - /> - {validInputs.confidence === false && !isFirst && ( -
    - Please enter "True". -
    - )} -
    -
    -
    - {"// Enter 'True' below:"} -
    - showCitations = - i.id === "citations").value} - attributes={{ - type: "text", - onChange: (e) => userInput("citations", e.target.value), - placeholder: "Enter Answer Here", - className: "tw-p-1 code_editor__input", - style: { - width: 400, - fontFamily: "monospace", - fontSize: "1em", - margin: "0 8px", - borderRadius: 4, - border: - validInputs.citations === false && !isFirst - ? "1px solid #e00" - : "1px solid #888", - padding: "2px 6px", - background: "#333", - color: "lightsalmon", - }, - }} - /> - {validInputs.citations === false && !isFirst && ( -
    - Please enter "True". -
    - )} -
    -
    {"}"}
    -
    - ), - [], - ); - - CodeBlock.propTypes = { - inputs: PropTypes.array.isRequired, - userInput: PropTypes.func.isRequired, - validInputs: PropTypes.object.isRequired, - isFirst: PropTypes.bool.isRequired, - }; - const data = { exercisePromptsState, validInputs, isFirst, }; + const functions = { handleUserInputChange, checkInputValid, @@ -191,25 +36,29 @@ const IDEExercise = () => { }; return ( -
    - -
    + ); }; +IDEExercise.propTypes = { + exercisePromptsState: PropTypes.object, + validInputs: PropTypes.object, + isFirst: PropTypes.bool, +}; + export default IDEExercise; diff --git a/client/src/components/exercise/lab13/pages/repairs/IDEExerciseImplementation.js b/client/src/components/exercise/lab13/pages/repairs/IDEExerciseImplementation.js new file mode 100644 index 000000000..8da0bbd23 --- /dev/null +++ b/client/src/components/exercise/lab13/pages/repairs/IDEExerciseImplementation.js @@ -0,0 +1,108 @@ +import React from "react"; +import CodeLine from "../../../../../components/all-components/CodeBlock/Components/CodeLine"; +import CodeBlockInput from "../../../../../components/all-components/CodeBlock/Components/CodeBlockInput"; +import MultiTab from "../../../../../components/all-components/CodeBlock/Components/MultiTab"; +import PropTypes from "prop-types"; +import ReactText from "../../../../../components/all-components/CodeBlock/StyleComponents/ReactText"; +import CommentText from "../../../../../components/all-components/CodeBlock/StyleComponents/CommentText"; +import ErrorText from "../../../../../components/all-components/CodeBlock/StyleComponents/ErrorText"; + +/** + * IDEExerciseImplementation is a component that is responsible for displaying the codeblock contents + * and user inputs where the participant will make their changes to the codebase and complete the IDE exercise section. + * @param {props} inputs contains the data used for answer validation and display of its contents + * @param {props} userInput is a function that takes the user's input in each input and sends the data to the useDataService hook, + * which then sends that to the useLabService hook + * @param {props} validInputs returns an object based on the number of correct and incorrect inputs of the user in the exercise section + * @param {props} isFirst returns a boolean value of whether or not this is the first time a user is viewing this exercise section + * @returns + */ + +const IDEExerciseImplementation = (props = {}) => { + const { inputs, userInput, validInputs, isFirst } = props; + + return ( + <> + + const addDisclaimers( ) => { + + + + {`// Enter 'Disclaimer - ALL-IE's outputs can be wrong and should be double-checked.' below:`} + + + + disclaimerText = + {'"'} + i.id === "disclaimer")?.value || ""} + attributes={{ + type: "text", + onChange: (e) => userInput("disclaimer", e.target.value), + placeholder: "Enter Answer Here", + }} + /> + {'"'} + ; + {validInputs.disclaimer === false && !isFirst && ( + + + Please enter the correct disclaimer. + + )} + + + + {`// Enter 'True' below:`} + + + + showConfidenceScores = + i.id === "confidence")?.value || ""} + attributes={{ + type: "text", + onChange: (e) => userInput("confidence", e.target.value), + placeholder: "Enter Answer Here", + }} + /> + ; + {validInputs.confidence === false && !isFirst && ( + Please enter {'"True"'}. + )} + + + + {`// Enter 'True' below:`} + + + + showCitations = + i.id === "citations")?.value || ""} + attributes={{ + type: "text", + onChange: (e) => userInput("citations", e.target.value), + placeholder: "Enter Answer Here", + }} + /> + ; + {validInputs.citations === false && !isFirst && ( + Please enter {'"True"'}. + )} + + + } + + + ); +}; + +IDEExerciseImplementation.propTypes = { + inputs: PropTypes.array.isRequired, + userInput: PropTypes.func.isRequired, + validInputs: PropTypes.object.isRequired, + isFirst: PropTypes.bool.isRequired, +}; + +export default IDEExerciseImplementation; From 7fd66989052f70c41f67e738d282d74be3dc662d Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Tue, 3 Feb 2026 10:22:55 -0500 Subject: [PATCH 057/180] Forced scroll to always appear and removed margin from navigation pane --- client/src/assets/stylesheets/components/App.scss | 1 + client/src/components/all-components/Lab/LabWindow.js | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/client/src/assets/stylesheets/components/App.scss b/client/src/assets/stylesheets/components/App.scss index 4f5d7066c..6ac2cbc75 100644 --- a/client/src/assets/stylesheets/components/App.scss +++ b/client/src/assets/stylesheets/components/App.scss @@ -9,6 +9,7 @@ html { margin: 0; padding: 0; + overflow-y: scroll; } ul { diff --git a/client/src/components/all-components/Lab/LabWindow.js b/client/src/components/all-components/Lab/LabWindow.js index 80f5b38b1..ee83872fc 100644 --- a/client/src/components/all-components/Lab/LabWindow.js +++ b/client/src/components/all-components/Lab/LabWindow.js @@ -50,9 +50,7 @@ const LabWindow = (props) => { } >
    Date: Tue, 3 Feb 2026 10:57:35 -0500 Subject: [PATCH 058/180] Changed search icon to magnifying glass --- client/src/pages/labspage/LabsPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 1b4b7986b..016fb99e3 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -310,7 +310,7 @@ const LabsPage = (props) => { className="tw-fill-darkGray tw-w-5 tw-h-5 tw-align-middle tw-justify-self-center" viewBox="0 0 512 512" > - +
    From 7ec3029ea55ce3d43c0329d7e863267df74323c8 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Tue, 3 Feb 2026 15:17:39 -0500 Subject: [PATCH 059/180] minor bug fix --- client/src/components/body/Reading/Reading.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/client/src/components/body/Reading/Reading.js b/client/src/components/body/Reading/Reading.js index 6e55afed7..cd2d80510 100644 --- a/client/src/components/body/Reading/Reading.js +++ b/client/src/components/body/Reading/Reading.js @@ -114,9 +114,7 @@ const Reading = (props) => { return (

    Date: Wed, 4 Feb 2026 13:50:11 -0500 Subject: [PATCH 060/180] Topics routing with small change in Tabs to retain chat history --- .../exercise/lab13/components/AIChatBot.js | 558 +++++++++--------- .../exercise/lab13/components/RatingModal.js | 266 +++++---- .../exercise/lab13/components/Tab/Tab.js | 26 +- .../exercise/lab13/components/Tab/Tabs.js | 97 +-- .../exercise/lab13/pages/AIPanel.js | 280 ++++++--- .../constants/lab13/BiasQuestionsConfig.js | 320 ++++++++++ client/src/constants/lab13/RankingConfig.js | 54 +- 7 files changed, 1023 insertions(+), 578 deletions(-) create mode 100644 client/src/constants/lab13/BiasQuestionsConfig.js diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 6311c2a5c..2c7919b6d 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -5,19 +5,6 @@ import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; import BlobLoader from './BlobLoader'; import robotImage from './robot.png'; -// Example prop -// const questions = [ -// { id: 1, text: "What is the weather today?" }, -// { id: 2, text: "How do I reset my password?" }, -// { id: 3, text: "Tell me a fun fact." }, -// ]; - -// const answers = [ -// { id: 1, text: "The weather today is sunny with a high of 75°F." }, -// { id: 2, text: "To reset your password, click 'Forgot Password' on the login page." }, -// { id: 3, text: "Did you know honey never spoils?" }, -// ]; - /** * Typewriter animation component effect for bot responses * that displays text character by character @@ -26,32 +13,32 @@ import robotImage from './robot.png'; * @returns */ const TypingMessage = ({ text, onUpdate, onComplete }) => { - const [displayedText, setDisplayedText] = useState(''); - const [currentIndex, setCurrentIndex] = useState(0); + const [displayedText, setDisplayedText] = useState(''); + const [currentIndex, setCurrentIndex] = useState(0); - /** - * Adds character from currentIndex to displayedText - * one at a time everytime the currentIndex, text, or onUpdate changes - */ - useEffect(() => { - if (currentIndex < text.length) { - const timeout = setTimeout(() => { - setDisplayedText((prev) => prev + text[currentIndex]); - setCurrentIndex((prev) => prev + 1); + /** + * Adds character from currentIndex to displayedText + * one at a time everytime the currentIndex, text, or onUpdate changes + */ + useEffect(() => { + if (currentIndex < text.length) { + const timeout = setTimeout(() => { + setDisplayedText((prev) => prev + text[currentIndex]); + setCurrentIndex((prev) => prev + 1); - // Scroll to bottom when onUpdate is called by component - if (onUpdate) onUpdate(); - // Typing speed, one character every 15ms - }, 15); + // Scroll to bottom when onUpdate is called by component + if (onUpdate) onUpdate(); + // Typing speed, one character every 15ms + }, 15); - return () => clearTimeout(timeout); - // onComplete becomes true when finished typing - } else if (currentIndex === text.length && onComplete) { - onComplete(); - } - }, [currentIndex, text, onUpdate, onComplete]); + return () => clearTimeout(timeout); + // onComplete becomes true when finished typing + } else if (currentIndex === text.length && onComplete) { + onComplete(); + } + }, [currentIndex, text, onUpdate, onComplete]); - return <>{displayedText}; + return <>{displayedText}; }; /** @@ -59,246 +46,270 @@ const TypingMessage = ({ text, onUpdate, onComplete }) => { * and responds to user interactions * @param {*} userQuestions : Array of question objects to show on dropdown menu * @param {*} fixedAIResponse : Array of response objects corresponding to user questions + * @param {*} onAnswerSelected : Callback function when an answer is displayed * @returns */ -const AIChatBot = ({ userQuestions, fixedAIResponse }) => { - const [isOpen, setIsOpen] = useState(false); - const [messages, setMessages] = useState([]); - const [isTyping, setIsTyping] = useState(false); - const [isThinking, setIsThinking] = useState(false); - const [showOverlay, setShowOverlay] = useState(true); - const dropdownRef = useRef(null); - const messagesContainerRef = useRef(null); +const AIChatBot = ({ userQuestions, fixedAIResponse, onAnswerSelected }) => { + const [isOpen, setIsOpen] = useState(false); + const [messages, setMessages] = useState([]); + const [isTyping, setIsTyping] = useState(false); + const [isThinking, setIsThinking] = useState(false); + const [showOverlay, setShowOverlay] = useState(true); + const [currentAnswerData, setCurrentAnswerData] = useState(null); + const dropdownRef = useRef(null); + const messagesContainerRef = useRef(null); - // Scroll function to show the most recent message - const scrollToBottom = () => { - if (messagesContainerRef.current) { - messagesContainerRef.current.scrollTop = - messagesContainerRef.current.scrollHeight; - } - }; - /** Scroll to bottom when message array is updated - * to enable message visibility - */ - useEffect(() => { - scrollToBottom(); - }, [messages]); + // Close dropdown and reset answer data when questions change (moving to next topic) + // Keep messages to maintain chat history + useEffect(() => { + setIsOpen(false); + setCurrentAnswerData(null); + }, [userQuestions]); - /** - * Function handling when user clicks on a question in - * the dropdown creating a user and corresponding bot message - * and adding it in the chat - * @param {} question : Question object from questions array - */ - const handleQuestionClick = (question) => { - const userMsg = { sender: 'user', text: question.text }; - - // Find the corresponding AI response by the matching ID - const botObj = fixedAIResponse.find((resp) => resp.id === question.id); - const botMsg = { - sender: 'bot', - text: botObj ? botObj.text : 'No response found.', + // Scroll function to show the most recent message + const scrollToBottom = () => { + if (messagesContainerRef.current) { + messagesContainerRef.current.scrollTop = + messagesContainerRef.current.scrollHeight; + } }; + /** Scroll to bottom when message array is updated + * to enable message visibility + */ + useEffect(() => { + scrollToBottom(); + }, [messages]); + + /** + * Function handling when user clicks on a question in + * the dropdown creating a user and corresponding bot message + * and adding it in the chat + * @param {} question : Question object from questions array + */ + const handleQuestionClick = (question) => { + const userMsg = { sender: 'user', text: question.text }; - setMessages((prev) => [...prev, userMsg]); - // AI begins processing before they type - // Start pulsing animation - setIsThinking(true); + // Find the corresponding AI response by the matching ID + const botObj = fixedAIResponse.find((resp) => resp.id === question.id); + const botMsg = { + sender: 'bot', + text: botObj ? botObj.text : 'No response found.', + }; - // Add message display delay proportional to the AI output size - const delay = Math.ceil(botMsg.text.length / 100) * 500 + 500; + // Store the answer data for the callback + setCurrentAnswerData({ + biasType: botObj?.biasType, + biasDefinition: botObj?.biasDefinition, + explanation: botObj?.explanation, + }); - setTimeout(() => { - setMessages((prev) => [...prev, botMsg]); - // Stop pulsing animation - setIsThinking(false); - // Start spinning animation - setIsTyping(true); - }, delay); - // Delay before the AI begins typing + setMessages((prev) => [...prev, userMsg]); + // AI begins processing before they type + // Start pulsing animation + setIsThinking(true); - // Close dropdown menu after question is selected - setIsOpen(false); - }; + // Add message display delay proportional to the AI output size + const delay = Math.ceil(botMsg.text.length / 100) * 500 + 500; - /** - * Decide which animation the blob should use based - * on the AI state - * @returns {string} "pulsing" | "spinning" | "static" - */ - const getBlobMode = () => { - if (isThinking) return 'pulsing'; - if (isTyping) return 'spinning'; - return 'static'; - }; + setTimeout(() => { + setMessages((prev) => [...prev, botMsg]); + // Stop pulsing animation + setIsThinking(false); + // Start spinning animation + setIsTyping(true); + }, delay); + // Delay before the AI begins typing - const handleToggleClick = () => { - if (!isTyping) { - setIsOpen(!isOpen); - // Hide overlay on first click - if (showOverlay) { - setShowOverlay(false); - } - } - }; + // Close dropdown menu after question is selected + setIsOpen(false); + }; + + /** + * Decide which animation the blob should use based + * on the AI state + * @returns {string} "pulsing" | "spinning" | "static" + */ + const getBlobMode = () => { + if (isThinking) return 'pulsing'; + if (isTyping) return 'spinning'; + return 'static'; + }; + + const handleToggleClick = () => { + if (!isTyping) { + setIsOpen(!isOpen); + // Hide overlay on first click + if (showOverlay) { + setShowOverlay(false); + } + } + }; - return ( -
    - {/* Scrollable container that displays the chat messages */} -
    + return (
    - {/* Container for indvidual messages */} - {messages.map((msg, index) => ( -
    + className="tw-w-full tw-h-[400px] tw-rounded-lg tw-border-solid tw-border-primary-blue tw-flex tw-flex-col tw-overflow-hidden tw-font-sans" + style={{ backgroundColor: '#faf9f6', fontFamily: 'Calibri, sans-serif' }} + > + {/* Scrollable container that displays the chat messages */}
    - {/* Scroll to the bottom each time a new chaarcter is generated */} - {msg.sender === 'bot' ? ( - // Add animation to the latest bot message - index === messages.length - 1 ? ( - setIsTyping(false)} - /> - ) : ( - msg.text - ) - ) : ( - msg.text - )} -
    - {/* Show blob for most recent AI messages */} - {msg.sender === 'bot' && index === messages.length - 1 && ( -
    - -
    - )} -
    - ))} - {/* Show thinking blob when AI is thinking (before message appears) */} - {isThinking && ( -
    -
    - +
    + {/* Container for indvidual messages */} + {messages.map((msg, index) => ( +
    +
    + {/* Scroll to the bottom each time a new chaarcter is generated */} + {msg.sender === 'bot' ? ( + // Add animation to the latest bot message + index === messages.length - 1 ? ( + { + setIsTyping(false); + if (onAnswerSelected && currentAnswerData) { + setTimeout(() => { + onAnswerSelected( + currentAnswerData.biasType, + currentAnswerData.biasDefinition, + currentAnswerData.explanation, + ); + setCurrentAnswerData(null); + }, 500); // Small delay before showing modal + } + }} + /> + ) : ( + msg.text + ) + ) : ( + msg.text + )} +
    + {/* Show blob for most recent AI messages */} + {msg.sender === 'bot' && index === messages.length - 1 && ( +
    + +
    + )} +
    + ))} + {/* Show thinking blob when AI is thinking (before message appears) */} + {isThinking && ( +
    +
    + +
    +
    + )}
    -
    - )} -
    -
    - {/* Upside down triangle on dropdown menu box */} -
    +
    + {/* Upside down triangle on dropdown menu box */} +
    - {/* Container with list of question buttons */} -
    - {/* Container for indvidual questions */} -
    - {userQuestions.map((question, index) => ( - - ))} -
    -
    -
    + {/* Container with list of question buttons */} +
    + {/* Container for indvidual questions */} +
    + {userQuestions.map((question, index) => ( + + ))} +
    +
    +
    - {/* AI search bottom panel */} -
    - {/* Toggle button for dropdown menu */} - -
    - {/* Message fade in keyframe animation */} - -
    - ); +
    + ); }; TypingMessage.propTypes = { - text: PropTypes.string.isRequired, - onUpdate: PropTypes.func, - onComplete: PropTypes.func, + text: PropTypes.string.isRequired, + onUpdate: PropTypes.func, + onComplete: PropTypes.func, }; AIChatBot.propTypes = { - userQuestions: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, - text: PropTypes.string.isRequired, - }) - ), - fixedAIResponse: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, - text: PropTypes.string.isRequired, - }) - ), + userQuestions: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, + text: PropTypes.string.isRequired, + }) + ), + fixedAIResponse: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, + text: PropTypes.string.isRequired, + }) + ), + onAnswerSelected: PropTypes.func, }; export default AIChatBot; diff --git a/client/src/components/exercise/lab13/components/RatingModal.js b/client/src/components/exercise/lab13/components/RatingModal.js index c006b6f08..b587ccd57 100644 --- a/client/src/components/exercise/lab13/components/RatingModal.js +++ b/client/src/components/exercise/lab13/components/RatingModal.js @@ -5,135 +5,149 @@ import ALLModal from "src/components/all-components/ALLModal"; const optionsList = ["Very Low", "Low", "Medium", "High", "Very High"]; const RatingModal = ({ - show, - setShow, - toneRating, - setToneRating, - confidenceRating, - setConfidenceRating, - onSubmit, - showTextModal, - setShowTextModal, - textModalHeader, - textModalBody, + show, + setShow, + toneRating, + setToneRating, + confidenceRating, + setConfidenceRating, + onSubmit, + showTextModal, + setShowTextModal, + textModalHeader, + textModalBody, + onCloseTextModal, }) => { - const firstModalRef = useRef(null); + const firstModalRef = useRef(null); - RatingModal.propTypes = { - show: PropTypes.bool.isRequired, - setShow: PropTypes.func.isRequired, - toneRating: PropTypes.string.isRequired, - setToneRating: PropTypes.func.isRequired, - confidenceRating: PropTypes.string.isRequired, - setConfidenceRating: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - showTextModal: PropTypes.bool.isRequired, - setShowTextModal: PropTypes.func.isRequired, - textModalHeader: PropTypes.node.isRequired, - textModalBody: PropTypes.node.isRequired, - }; + RatingModal.propTypes = { + show: PropTypes.bool.isRequired, + setShow: PropTypes.func.isRequired, + toneRating: PropTypes.string.isRequired, + setToneRating: PropTypes.func.isRequired, + confidenceRating: PropTypes.string.isRequired, + setConfidenceRating: PropTypes.func.isRequired, + onSubmit: PropTypes.func.isRequired, + showTextModal: PropTypes.bool.isRequired, + setShowTextModal: PropTypes.func.isRequired, + textModalHeader: PropTypes.node.isRequired, + textModalBody: PropTypes.node.isRequired, + onCloseTextModal: PropTypes.func.isRequired, + }; - return ( -
    - - Rate each factor by its influence on your trust. -
    - } - showFooter={false} - customBody={ -
    -
    Tone:
    -
    - - Low influence - - {optionsList.map((option) => { - const value = option.toLowerCase().replace(/ /g, "-"); - const selected = toneRating === value; - return ( - - ); - })} - - High influence - -
    - {toneRating && ( -
    - Tone selected:{" "} - - {optionsList.find( - (o) => o.toLowerCase().replace(/ /g, "-") === toneRating, - )} - -
    - )} -
    Confidence:
    -
    - - Low influence - - {optionsList.map((option) => { - const value = option.toLowerCase().replace(/ /g, "-"); - const selected = confidenceRating === value; - return ( - - ); - })} - - High influence - -
    - {confidenceRating && ( -
    - Confidence selected:{" "} - - {optionsList.find( - (o) => - o.toLowerCase().replace(/ /g, "-") === confidenceRating, - )} - -
    - )} -
    - -
    -
    - } - /> - -
    - ); + return ( +
    + + Rate each factor by its influence on your trust. +
    + } + showFooter={false} + customBody={ +
    +
    Tone:
    +
    + + Low influence + + {optionsList.map((option) => { + const value = option.toLowerCase().replace(/ /g, "-"); + const selected = toneRating === value; + return ( + + ); + })} + + High influence + +
    + {toneRating && ( +
    + Tone selected:{" "} + + {optionsList.find( + (o) => o.toLowerCase().replace(/ /g, "-") === toneRating, + )} + +
    + )} +
    Confidence:
    +
    + + Low influence + + {optionsList.map((option) => { + const value = option.toLowerCase().replace(/ /g, "-"); + const selected = confidenceRating === value; + return ( + + ); + })} + + High influence + +
    + {confidenceRating && ( +
    + Confidence selected:{" "} + + {optionsList.find( + (o) => + o.toLowerCase().replace(/ /g, "-") === confidenceRating, + )} + +
    + )} +
    + +
    +
    + } + /> + + {textModalHeader} + +
    + } + showFooter={false} + customBody={textModalBody} + /> +
    + ); }; export default RatingModal; diff --git a/client/src/components/exercise/lab13/components/Tab/Tab.js b/client/src/components/exercise/lab13/components/Tab/Tab.js index 79a72e633..850a1873a 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tab.js +++ b/client/src/components/exercise/lab13/components/Tab/Tab.js @@ -3,23 +3,23 @@ import { TabsContext } from "./TabsContext"; import PropTypes from "prop-types"; export const Tab = ({ label, children }) => { - /** - * A component that defines a singular tab - * @param {string} label - Name of the tab - * @param {object} children - Content of the tab - */ + /** + * A component that defines a singular tab + * @param {string} label - Name of the tab + * @param {object} children - Content of the tab + */ - const { logTab } = useContext(TabsContext); + const { logTab } = useContext(TabsContext); - // Log tab once it appears on the screen - useEffect(() => { - logTab({ label, content: children }); - }, []); + // Log tab once it appears on the screen, and update when children change + useEffect(() => { + logTab({ label, content: children }); + }, [children, logTab]); - return null; + return null; }; Tab.propTypes = { - label: PropTypes.string.isRequired, - children: PropTypes.node.isRequired, + label: PropTypes.string.isRequired, + children: PropTypes.node.isRequired, }; diff --git a/client/src/components/exercise/lab13/components/Tab/Tabs.js b/client/src/components/exercise/lab13/components/Tab/Tabs.js index 01b528860..1d8b5f97e 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tabs.js +++ b/client/src/components/exercise/lab13/components/Tab/Tabs.js @@ -4,57 +4,62 @@ import PropTypes from "prop-types"; import "./Tabs.css"; export const Tabs = ({ children }) => { - /** - * A component that displays and holds tabs - * - * @param {object} children - Tab components placed inside Tabs - * @returns {JSX.Element} - */ + /** + * A component that displays and holds tabs + * + * @param {object} children - Tab components placed inside Tabs + * @returns {JSX.Element} + */ - // State storing index of current active tab - const [activeTab, setActiveTab] = useState(0); // First tab is active by default - // Store tab(s) that log themselves in Tabs parent - const [tabs, setTabs] = useState([]); + // State storing index of current active tab + const [activeTab, setActiveTab] = useState(0); // First tab is active by default + // Store tab(s) that log themselves in Tabs parent + const [tabs, setTabs] = useState([]); - // Add newly register tabs to existing tab array - const logTab = (tab) => { - setTabs((prev) => { - if (prev.some((t) => t.label === tab.label)) return prev; - return [...prev, tab]; - }); - }; + // Add newly register tabs to existing tab array, or update if it already exists + const logTab = (tab) => { + setTabs((prev) => { + const existingIndex = prev.findIndex((t) => t.label === tab.label); + if (existingIndex !== -1) { + const updated = [...prev]; + updated[existingIndex] = tab; + return updated; + } + return [...prev, tab]; + }); + }; - return ( - -
    - {/* Populate headers with buttons for logged tabs */} -
    - {tabs.map((tab, index) => ( -
    - + return ( + +
    + {/* Populate headers with buttons for logged tabs */} +
    + {tabs.map((tab, index) => ( +
    + +
    + ))} +
    + {/* Populate with tab content */} +
    + {tabs.map((tab, index) => + index === activeTab ?
    {tab.content}
    : null, + )} +
    - ))} -
    - {/* Populate with tab content */} -
    - {tabs.map((tab, index) => - index === activeTab ?
    {tab.content}
    : null, - )} -
    -
    - {children} - - ); + {children} + + ); }; Tabs.propTypes = { - children: PropTypes.node.isRequired, + children: PropTypes.node.isRequired, }; diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 000bdc7b5..6b1130fc8 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -1,103 +1,197 @@ -import { React } from 'react'; +import { React, useContext, useMemo, useState } from 'react'; import { startExercise } from 'src/reducers/lab2/actions'; import { navigate } from '@reach/router'; import AIChatBot from '../components/AIChatBot'; import { Tabs } from '../components/Tab/Tabs'; import { Tab } from '../components/Tab/Tab'; -import dyslexiaImage from '../components/dyslexia.jpg'; +import RatingModal from '../components/RatingModal'; +import ExerciseStateContext from '../Lab13Context'; +import { + BIAS_TYPES, + BIAS_DEFINITIONS, + getTopicById, +} from 'src/constants/lab13/BiasQuestionsConfig'; const AIPanel = () => { - const handleContinue = () => { - startExercise(); - navigate('/Lab13/Exercise/HaloExplination'); - }; - - const questions = [ - { - id: 1, - text: 'Is dyslexia a vision problem?', - }, - { - id: 2, - text: 'Do people who have dyslexia see words and letters backward?', - }, - { - id: 3, - text: 'Can dyslexia be cured?', - }, - ]; - - const answers = [ - { - id: 1, - text: 'Lorem ipsum dolor.', - }, - { - id: 2, - text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.", - }, - { - id: 3, - text: "Loreum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.", - }, - ]; - - return ( -
    - - -
    - -
    -
    - -
    -

    Dyslexia

    -
    - -
    -
    -

    - Dyslexia is a neurological learning disability that primarily - affects reading and language processing. It is not a vision - problem and does not affect intelligence. People with dyslexia - may have difficulty connecting written letters to spoken - sounds, not how letters visually appear. -

    -

    -

    - Dyslexia cannot be cured, but it can be effectively supported - through early intervention, structured reading instruction, - and classroom accommodations. -

    -
    -
    -
    -
    -
    -
    -
    - -
    -
    - ); + const { rankingColumns } = useContext(ExerciseStateContext); + const [topicIndex, setTopicIndex] = useState(0); + const [showRatingModal, setShowRatingModal] = useState(false); + const [toneRating, setToneRating] = useState(''); + const [confidenceRating, setConfidenceRating] = useState(''); + const [showBiasExplanation, setShowBiasExplanation] = useState(false); + const [selectedBiasData, setSelectedBiasData] = useState(null); + + // Get all three topics in order: medium, most, least + const getOrderedTopics = useMemo(() => { + if (!rankingColumns || rankingColumns.length === 0) { + return []; + } + + const topics = []; + // Medium knowledgeable (index 1) - Halo Effect + if (rankingColumns[1]?.cards?.length > 0) { + topics.push({ id: rankingColumns[1].cards[0].id, biasPosition: 1 }); + } + // Most knowledgeable (index 0) - Truth Bias + if (rankingColumns[0]?.cards?.length > 0) { + topics.push({ id: rankingColumns[0].cards[0].id, biasPosition: 0 }); + } + // Least knowledgeable (index 2) - Dunning-Kruger + if (rankingColumns[2]?.cards?.length > 0) { + topics.push({ id: rankingColumns[2].cards[0].id, biasPosition: 2 }); + } + + return topics; + }, [rankingColumns]); + + const currentTopic = getOrderedTopics && getOrderedTopics.length > 0 ? getOrderedTopics[topicIndex] || null : null; + + const getActiveBiasForTopic = (biasPosition) => { + const biasMap = { + 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable + 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable + 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable + }; + return biasMap[biasPosition] || BIAS_TYPES.HALO_EFFECT; + }; + + const activeTopic = currentTopic ? currentTopic.id : null; + + const activeBias = currentTopic ? getActiveBiasForTopic(currentTopic.biasPosition) : BIAS_TYPES.HALO_EFFECT; + + // Get questions formatted for AIChatBot + const generateQuestionsAndAnswers = () => { + if (!activeTopic) { + return { questions: [], answers: [] }; + } + + const topic = getTopicById(activeTopic); + if (!topic) { + return { questions: [], answers: [] }; + } + + const questions = topic.questions.map((q, index) => ({ + id: index + 1, + text: q.text, + })); + + const answers = topic.questions.map((q, index) => ({ + id: index + 1, + text: q.answers[activeBias].text, + isCorrect: q.answers[activeBias].isCorrect, + explanation: q.answers[activeBias].explanation, + biasType: activeBias, + biasDefinition: BIAS_DEFINITIONS[activeBias], + })); + + return { questions, answers }; + }; + + const { questions, answers } = useMemo(() => generateQuestionsAndAnswers(), [activeTopic, activeBias]); + + const topicData = getTopicById(activeTopic); + + const handleAnswerSelected = (biasType, biasDefinition, explanation) => { + setSelectedBiasData({ biasType, biasDefinition, explanation }); + setShowRatingModal(true); + }; + + const handleRatingSubmit = () => { + setShowBiasExplanation(true); + }; + + const handleBiasExplanationClose = () => { + // Close both modals first + setShowBiasExplanation(false); + setShowRatingModal(false); + + // Reset modal data + setSelectedBiasData(null); + setToneRating(''); + setConfidenceRating(''); + + // Delay the topic index update to ensure modals are fully closed + setTimeout(() => { + // Move to next topic - use functional update to avoid stale closure + setTopicIndex((prevIndex) => { + const nextIndex = prevIndex + 1; + // Check if we've completed all topics + if (nextIndex >= getOrderedTopics.length) { + // Navigate to next page after a small delay to ensure state settles + setTimeout(() => { + startExercise(); + navigate('/Lab13/Exercise/HaloExplination'); + }, 50); + } + return nextIndex; + }); + }, 100); + }; + + return ( +
    + {activeTopic && topicData && ( + <> + + +
    + +
    +
    +
    + + + {BIAS_DEFINITIONS[selectedBiasData.biasType]?.name} +
    + ) : null + } + textModalBody={ + selectedBiasData ? ( +
    +
    +

    + {selectedBiasData.explanation} +

    +
    +
    +

    + Understanding {BIAS_DEFINITIONS[selectedBiasData.biasType]?.name}: +

    +

    {BIAS_DEFINITIONS[selectedBiasData.biasType]?.definition}

    +
    +
    + ) : null + } + onCloseTextModal={handleBiasExplanationClose} + /> + + )} + + {!activeTopic && ( +
    +

    + Please complete the ranking to see questions. +

    +
    + )} +
    + ); }; export default AIPanel; diff --git a/client/src/constants/lab13/BiasQuestionsConfig.js b/client/src/constants/lab13/BiasQuestionsConfig.js new file mode 100644 index 000000000..6189e2c8c --- /dev/null +++ b/client/src/constants/lab13/BiasQuestionsConfig.js @@ -0,0 +1,320 @@ +/** + * Bias Questions Configuration for Lab 13 + * + * Structure: + * - Each topic has 9 AI responses (3 per bias) + * - Only ONE bias is activated per topic based on student's knowledge ranking + * - Mapping: Least knowledgeable → Dunning-Kruger + * Medium knowledgeable → Halo Effect (shown first) + * Most knowledgeable → Truth Bias + */ + +export const BIAS_TYPES = { + TRUTH_BIAS: 'TRUTH_BIAS', + HALO_EFFECT: 'HALO_EFFECT', + DUNNING_KRUGER: 'DUNNING_KRUGER', +}; + +export const BIAS_DEFINITIONS = { + TRUTH_BIAS: { + name: 'Truth Bias', + definition: + 'Truth bias is the tendency to believe that statements are true, especially when they are presented in a confident and clear manner. People are more likely to accept information that sounds authoritative without questioning its accuracy.', + }, + HALO_EFFECT: { + name: 'Halo Effect', + definition: + 'The halo effect is when a single positive characteristic or polished presentation influences your overall perception of something. If information is presented professionally or sounds credible, people tend to trust it more, even if the content itself may not be accurate.', + }, + DUNNING_KRUGER: { + name: 'Dunning-Kruger Effect', + definition: + 'The Dunning-Kruger effect occurs when complex or technical language makes people less likely to question information. When something sounds academic or expert-like, people assume it must be correct and don\'t scrutinize it as carefully.', + }, +}; + +export const biasQuestionsData = [ + { + id: 'localization', + topicName: 'Localization', + topicDefinition: + 'Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references.', + questions: [ + { + id: 'loc_q1', + text: 'Is localization the same as translation?', + answers: { + [BIAS_TYPES.TRUTH_BIAS]: { + text: 'Yes, localization and translation are essentially the same process. Both involve converting content from one language to another to make it understandable for different audiences. The terms are often used interchangeably in professional settings.', + isCorrect: false, + explanation: + 'The definitive wording makes this claim sound trustworthy, which can encourage truth bias.', + }, + [BIAS_TYPES.HALO_EFFECT]: { + text: 'Localization and translation are closely related practices within global communication workflows, often used interchangeably across professional contexts.', + isCorrect: false, + explanation: + 'The polished phrasing and professional tone boosts perceived credibility, which can reinforce the halo effect.', + }, + [BIAS_TYPES.DUNNING_KRUGER]: { + text: 'In localization theory, translation is considered a subordinate linguistic function, meaning it is functionally equivalent to localization in applied contexts.', + isCorrect: false, + explanation: + 'The technical language and theoretical framing can play into the Dunning-Kruger effect by reducing questioning.', + }, + }, + }, + { + id: 'loc_q2', + text: 'Is the statement, "Changing clothing material to be more breathable for a local climate is not localization," true?', + answers: { + [BIAS_TYPES.TRUTH_BIAS]: { + text: 'No, changing clothing materials is a physical product decision, not localization, which focuses on cultural or linguistic adaptation.', + isCorrect: true, + explanation: + 'The clear, direct explanation feels dependable, which can reinforce truth bias in a justified way.', + }, + [BIAS_TYPES.HALO_EFFECT]: { + text: "It's technically correct, but it's confusing because people mix this up all the time. Changing clothing materials isn't localization, it's product adaptation. Localization focuses on cultural and linguistic elements, not physical manufacturing changes.", + isCorrect: true, + explanation: + 'The confident structure and clean distinctions enhance trust through presentation which can play into the halo effect.', + }, + [BIAS_TYPES.DUNNING_KRUGER]: { + text: 'Localization frameworks distinguish between cultural adaptation and material optimization, placing climate-driven textile changes outside localization scope.', + isCorrect: true, + explanation: + 'Although the academic tone may seem authoritative, limiting scrutiny, it correctly aligns with the definition, reinforcing the careful trust provided by the Dunning-Kruger effect.', + }, + }, + }, + { + id: 'loc_q3', + text: 'If I change the way I speak to my teacher, is that localizing to the school culture?', + answers: { + [BIAS_TYPES.TRUTH_BIAS]: { + text: 'Yes, adjusting how you communicate based on social context can be considered a form of cultural localization.', + isCorrect: true, + explanation: + 'The simple, confident phrasing makes the answer feel intuitively right, which can prompt truth bias.', + }, + [BIAS_TYPES.HALO_EFFECT]: { + text: 'Adapting communication style to social norms reflects cultural awareness, which aligns with broader definitions of localization.', + isCorrect: true, + explanation: + 'Formal language creates an "expert" impression, which can amplify the halo effect.', + }, + [BIAS_TYPES.DUNNING_KRUGER]: { + text: 'Sociolinguistic code-switching is not based on localization theory, which is mostly from translation studies (Venuti, 1995), and applies only to cross-cultural content adaptation.', + isCorrect: false, + explanation: + 'This response sounds academic and authoritative, making the claim hard to challenge which can elicit the Dunning-Kruger effect.', + }, + }, + }, + ], + }, + { + id: 'colorblindness', + topicName: 'Color Blindness', + topicDefinition: + 'Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. Although many cases are inherited, they can also develop later in life due to eye disease, injury, aging, or certain medications.', + questions: [ + { + id: 'cb_q1', + text: 'Is the color blindness gene carried in the X or Y chromosome?', + answers: { + [BIAS_TYPES.TRUTH_BIAS]: { + text: 'The gene responsible for most forms of color blindness is carried on the X chromosome, which is why the condition is more common in males than females.', + isCorrect: true, + explanation: + 'This clear, factual delivery encourages truth bias, making the statement easy to accept without hesitation.', + }, + [BIAS_TYPES.HALO_EFFECT]: { + text: 'Color blindness is typically inherited through the Y chromosome, a well-established genetic pattern observed in vision science.', + isCorrect: false, + explanation: + 'The scientific-sounding language increases credibility through its style which can trigger the halo effect.', + }, + [BIAS_TYPES.DUNNING_KRUGER]: { + text: 'X-linked recessive inheritance patterns explain the higher prevalence of color blindness in males, as identified in genetic ophthalmology research.', + isCorrect: true, + explanation: + 'The technical language signals expertise, which may induce the Dunning-Kruger effect by discouraging doubt.', + }, + }, + }, + { + id: 'cb_q2', + text: 'Do people who have Red-Green color blindness only see red and green?', + answers: { + [BIAS_TYPES.TRUTH_BIAS]: { + text: 'Yes, people with red-green color blindness mainly see only red and green, which limits their overall color perception.', + isCorrect: false, + explanation: + 'Familiar wording makes the statement feel accurate, even though it reinforces a common myth, which can reinforce truth bias.', + }, + [BIAS_TYPES.HALO_EFFECT]: { + text: 'Individuals with red-green color blindness primarily experience a reduced visual palette around red and green hues.', + isCorrect: false, + explanation: + 'The polished wording makes the misconception sound legitimate, which can feed into the halo effect.', + }, + [BIAS_TYPES.DUNNING_KRUGER]: { + text: 'Red-green color blindness results in selective chromatic restriction, effectively narrowing visual perception to red-green channels.', + isCorrect: false, + explanation: + 'The academic phrasing may trigger the Dunning-Kruger effect, discouraging readers from questioning the claim.', + }, + }, + }, + { + id: 'cb_q3', + text: 'Can people develop color blindness later in life? Or can only people born with color blindness have it?', + answers: { + [BIAS_TYPES.TRUTH_BIAS]: { + text: 'Yes, color blindness can develop later in life due to eye disease, injury, aging, or certain medications.', + isCorrect: true, + explanation: + 'The specific, concrete explanation feels reliable which can strengthen truth bias.', + }, + [BIAS_TYPES.HALO_EFFECT]: { + text: 'Although many cases are inherited, medical conditions or neurological damage can also lead to acquired color blindness.', + isCorrect: true, + explanation: + 'The calm, professional tone increases trust, which can activate the halo effect.', + }, + [BIAS_TYPES.DUNNING_KRUGER]: { + text: 'Color blindness is strictly a genetic condition, meaning individuals are born with it and cannot develop it later in life.', + isCorrect: false, + explanation: + 'The definitive tone discourages skepticism which may activate the Dunning-Kruger effect for readers unfamiliar with medical causes.', + }, + }, + }, + ], + }, + { + id: 'dyslexia', + topicName: 'Dyslexia', + topicDefinition: + 'Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. Dyslexia cannot be cured, but it can be effectively supported through early intervention, structured reading instruction, and classroom accommodations.', + questions: [ + { + id: 'dys_q1', + text: 'Is dyslexia a vision problem?', + answers: { + [BIAS_TYPES.TRUTH_BIAS]: { + text: 'Yes, dyslexia is mainly caused by vision problems that make letters difficult to see clearly while reading.', + isCorrect: false, + explanation: + 'The confident delivery makes the claim feel reliable, which can encourage truth bias even when it\'s wrong.', + }, + [BIAS_TYPES.HALO_EFFECT]: { + text: 'Dyslexia is often associated with visual processing challenges that interfere with reading accuracy.', + isCorrect: false, + explanation: + 'The polished, professional tone boosts perceived credibility, which can trigger the halo effect.', + }, + [BIAS_TYPES.DUNNING_KRUGER]: { + text: 'Dyslexia originates from impairments in visual-perceptual pathways involved in orthographic recognition.', + isCorrect: false, + explanation: + 'Technical wording signals expertise, which may activate the Dunning-Kruger effect, by reducing questioning.', + }, + }, + }, + { + id: 'dys_q2', + text: 'Do people who have dyslexia see words and letters backward?', + answers: { + [BIAS_TYPES.TRUTH_BIAS]: { + text: 'Yes, people with dyslexia often see letters and words backward, which explains their reading difficulties.', + isCorrect: false, + explanation: + 'A familiar explanation matches common assumptions, which can promote truth bias.', + }, + [BIAS_TYPES.HALO_EFFECT]: { + text: 'Letter reversals are a characteristic feature of dyslexia and contribute to challenges in reading fluency.', + isCorrect: false, + explanation: + 'The structured, authoritative phrasing makes the false response sound valid, which can amplify the halo effect.', + }, + [BIAS_TYPES.DUNNING_KRUGER]: { + text: 'Dyslexia manifests through reversed orthographic encoding during early language acquisition.', + isCorrect: false, + explanation: + 'Complex terminology that implies expertise may activate the Dunning-Kruger effect, causing readers to accept the claim without scrutiny.', + }, + }, + }, + { + id: 'dys_q3', + text: 'Can dyslexia be cured?', + answers: { + [BIAS_TYPES.TRUTH_BIAS]: { + text: 'Dyslexia cannot be cured, but with consistent practice and proper educational support, individuals can significantly improve their reading and learning skills.', + isCorrect: true, + explanation: + 'Clear, confident phrasing makes the response easy to accept, which can reinforce truth bias.', + }, + [BIAS_TYPES.HALO_EFFECT]: { + text: 'Advances in educational interventions have made it possible for many individuals with dyslexia to achieve strong reading and academic outcomes.', + isCorrect: true, + explanation: + 'An optimistic professional tone builds trust through presentation which can activate the halo effect.', + }, + [BIAS_TYPES.DUNNING_KRUGER]: { + text: 'Dyslexia is a lifelong neurological learning difference that cannot be cured, but can be effectively supported through structured instruction and accommodations.', + isCorrect: true, + explanation: + 'Although accurate, the formal tone and phrasing may discourage questioning, activating the Dunning-Kruger effect through perceived expertise.', + }, + }, + }, + ], + }, +]; + +/** + * Helper function to get questions for a specific bias from a topic + * @param {string} topicId - The ID of the topic (e.g., 'localization', 'colorblindness', 'dyslexia') + * @param {string} biasType - The bias type (TRUTH_BIAS, HALO_EFFECT, DUNNING_KRUGER) + * @returns {Array} Array of questions with only the specified bias answers + */ +export const getQuestionsByBias = (topicId, biasType) => { + const topic = biasQuestionsData.find((t) => t.id === topicId); + if (!topic) return []; + + return topic.questions.map((question) => ({ + id: question.id, + text: question.text, + answer: { + ...question.answers[biasType], + biasType, + }, + })); +}; + +/** + * Helper function to get topic by ID + * @param {string} topicId - The ID of the topic + * @returns {Object} Topic object with definition and questions + */ +export const getTopicById = (topicId) => { + return biasQuestionsData.find((t) => t.id === topicId); +}; + +/** + * Helper function to determine which bias is activated based on ranking position + * @param {number} rankPosition - The position in ranking (0 = most knowledgeable, 1 = medium, 2 = least) + * @returns {string} The bias type for that ranking position + */ +export const getBiasForRankingPosition = (rankPosition) => { + const biasMap = { + 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable + 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable + 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable + }; + return biasMap[rankPosition] || BIAS_TYPES.HALO_EFFECT; +}; diff --git a/client/src/constants/lab13/RankingConfig.js b/client/src/constants/lab13/RankingConfig.js index 4d160894c..a7b1ddf7d 100644 --- a/client/src/constants/lab13/RankingConfig.js +++ b/client/src/constants/lab13/RankingConfig.js @@ -1,39 +1,39 @@ const initialColumns = [ - { id: "column1", title: "Most Knowledgeable", cards: [] }, - { id: "column2", title: "Moderately Knowledgeable", cards: [] }, - { id: "column3", title: "Least Knowledgeable", cards: [] }, + { id: "column1", title: "Most Knowledgeable", cards: [] }, + { id: "column2", title: "Moderately Knowledgeable", cards: [] }, + { id: "column3", title: "Least Knowledgeable", cards: [] }, ]; const initialBank = [ - { - id: "topic1", - title: "Deaf/Hard of Hearing (HOH)", - body: "", - isCorrect: true, - }, - { - id: "topic2", - title: "Dexterity", - body: "", - isCorrect: true, - }, - { - id: "topic3", - title: "Literacy", - body: "", - isCorrect: true, - }, + { + id: "dyslexia", + title: "Dyslexia", + body: "", + isCorrect: true, + }, + { + id: "colorblindness", + title: "Color Blindness", + body: "", + isCorrect: true, + }, + { + id: "localization", + title: "Localization", + body: "", + isCorrect: true, + }, ]; // Since ranking is subjective, we'll consider any complete ranking as correct const correctAssignments = [ - { id: "column1", cards: [] }, - { id: "column2", cards: [] }, - { id: "column3", cards: [] }, + { id: "column1", cards: [] }, + { id: "column2", cards: [] }, + { id: "column3", cards: [] }, ]; module.exports = { - initialColumns, - initialBank, - correctAssignments, + initialColumns, + initialBank, + correctAssignments, }; From 5a27cfab8b4e226b884e3724465fa7b51d53051b Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 4 Feb 2026 15:29:15 -0500 Subject: [PATCH 061/180] made a button for the questioning modal to pop up --- .../exercise/lab13/components/AIChatBot.js | 44 ++--- .../exercise/lab13/pages/AIPanel.js | 153 ++++++++---------- 2 files changed, 94 insertions(+), 103 deletions(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 2c7919b6d..1d5e80150 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -49,13 +49,12 @@ const TypingMessage = ({ text, onUpdate, onComplete }) => { * @param {*} onAnswerSelected : Callback function when an answer is displayed * @returns */ -const AIChatBot = ({ userQuestions, fixedAIResponse, onAnswerSelected }) => { +const AIChatBot = ({ userQuestions, fixedAIResponse, onAnswerDataChange, onTypingChange, onThinkingChange }) => { const [isOpen, setIsOpen] = useState(false); const [messages, setMessages] = useState([]); const [isTyping, setIsTyping] = useState(false); const [isThinking, setIsThinking] = useState(false); const [showOverlay, setShowOverlay] = useState(true); - const [currentAnswerData, setCurrentAnswerData] = useState(null); const dropdownRef = useRef(null); const messagesContainerRef = useRef(null); @@ -63,9 +62,22 @@ const AIChatBot = ({ userQuestions, fixedAIResponse, onAnswerSelected }) => { // Keep messages to maintain chat history useEffect(() => { setIsOpen(false); - setCurrentAnswerData(null); }, [userQuestions]); + // Notify parent when typing state changes + useEffect(() => { + if (onTypingChange) { + onTypingChange(isTyping); + } + }, [isTyping, onTypingChange]); + + // Notify parent when thinking state changes + useEffect(() => { + if (onThinkingChange) { + onThinkingChange(isThinking); + } + }, [isThinking, onThinkingChange]); + // Scroll function to show the most recent message const scrollToBottom = () => { if (messagesContainerRef.current) { @@ -96,12 +108,15 @@ const AIChatBot = ({ userQuestions, fixedAIResponse, onAnswerSelected }) => { text: botObj ? botObj.text : 'No response found.', }; - // Store the answer data for the callback - setCurrentAnswerData({ + // Store the answer data and notify parent + const answerData = { biasType: botObj?.biasType, biasDefinition: botObj?.biasDefinition, explanation: botObj?.explanation, - }); + }; + if (onAnswerDataChange) { + onAnswerDataChange(answerData); + } setMessages((prev) => [...prev, userMsg]); // AI begins processing before they type @@ -192,19 +207,8 @@ const AIChatBot = ({ userQuestions, fixedAIResponse, onAnswerSelected }) => { { setIsTyping(false); - if (onAnswerSelected && currentAnswerData) { - setTimeout(() => { - onAnswerSelected( - currentAnswerData.biasType, - currentAnswerData.biasDefinition, - currentAnswerData.explanation, - ); - setCurrentAnswerData(null); - }, 500); // Small delay before showing modal - } }} /> ) : ( @@ -287,7 +291,7 @@ const AIChatBot = ({ userQuestions, fixedAIResponse, onAnswerSelected }) => {

    - {/* AI search bottom panel */} + {/* Dropdown and toggle button */}
    {/* Toggle button for dropdown menu */} + )} +
    @@ -159,14 +144,14 @@ const AIPanel = () => { showTextModal={showBiasExplanation} setShowTextModal={setShowBiasExplanation} textModalHeader={ - selectedBiasData ? ( + biasDefinition ? (
    - {BIAS_DEFINITIONS[selectedBiasData.biasType]?.name} + {biasDefinition.name}
    ) : null } textModalBody={ - selectedBiasData ? ( + selectedBiasData && biasDefinition ? (

    @@ -175,9 +160,9 @@ const AIPanel = () => {

    - Understanding {BIAS_DEFINITIONS[selectedBiasData.biasType]?.name}: + Understanding {biasDefinition.name}:

    -

    {BIAS_DEFINITIONS[selectedBiasData.biasType]?.definition}

    +

    {biasDefinition.definition}

    ) : null From e6a13b2f199136b7d65caba9e1725504c2d5b745 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 5 Feb 2026 13:57:19 -0500 Subject: [PATCH 062/180] Remove internal scroll bars from lab activities --- client/src/components/exercise/lab0/Main.js | 2 +- client/src/components/exercise/lab1/Main.js | 2 +- client/src/components/exercise/lab10/Main.js | 2 +- client/src/components/exercise/lab11/Main.js | 2 +- client/src/components/exercise/lab12/Main.js | 2 +- client/src/components/exercise/lab14/Main.js | 2 +- client/src/components/exercise/lab3/Main.js | 2 +- client/src/components/exercise/lab4/Main.js | 2 +- client/src/components/exercise/lab5/Main.js | 2 +- client/src/components/exercise/lab6/Main.js | 2 +- client/src/components/exercise/lab7/Main.js | 2 +- client/src/components/exercise/lab8/Main.js | 2 +- client/src/components/exercise/lab9/Main.js | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/client/src/components/exercise/lab0/Main.js b/client/src/components/exercise/lab0/Main.js index 46bc87890..9b6a6c908 100644 --- a/client/src/components/exercise/lab0/Main.js +++ b/client/src/components/exercise/lab0/Main.js @@ -89,7 +89,7 @@ const Main = (props) => { const [newLabTopics, setNewLabTopics] = useState([]); return ( -
    +
    +
    { return ( -
    +
    {/* Exercise Start */} diff --git a/client/src/components/exercise/lab11/Main.js b/client/src/components/exercise/lab11/Main.js index 977b4ea28..4e3c0d482 100644 --- a/client/src/components/exercise/lab11/Main.js +++ b/client/src/components/exercise/lab11/Main.js @@ -44,7 +44,7 @@ const Main = () => { useScroll(); return ( -
    +
    { const [gradTerm, setGradTerm] = useState(""); return ( -
    +
    { const [rsaShiftValue, setRsaShiftValue] = useState(1024); return ( -
    +
    +
    diff --git a/client/src/components/exercise/lab4/Main.js b/client/src/components/exercise/lab4/Main.js index b289ea15f..22bf95796 100644 --- a/client/src/components/exercise/lab4/Main.js +++ b/client/src/components/exercise/lab4/Main.js @@ -18,7 +18,7 @@ import ExerciseStart from "./pages/ExerciseStart"; const Main = () => { return ( -
    +
    diff --git a/client/src/components/exercise/lab5/Main.js b/client/src/components/exercise/lab5/Main.js index 220fa9380..a2c06876d 100644 --- a/client/src/components/exercise/lab5/Main.js +++ b/client/src/components/exercise/lab5/Main.js @@ -46,7 +46,7 @@ class Main extends Component { render() { const { actions, state, user } = this.props; return ( -
    +
    { return ( -
    +
    {/* Part 1: Applicant */} diff --git a/client/src/components/exercise/lab7/Main.js b/client/src/components/exercise/lab7/Main.js index f345a5fbc..9c90fe0e4 100644 --- a/client/src/components/exercise/lab7/Main.js +++ b/client/src/components/exercise/lab7/Main.js @@ -22,7 +22,7 @@ import { Lab7ContextProvider } from "src/reducers/lab7/Lab7Context"; const Main = () => { return ( -
    +
    diff --git a/client/src/components/exercise/lab8/Main.js b/client/src/components/exercise/lab8/Main.js index bb6f3061e..c09a9a0b4 100644 --- a/client/src/components/exercise/lab8/Main.js +++ b/client/src/components/exercise/lab8/Main.js @@ -19,7 +19,7 @@ const Main = () => { ); return ( -
    +
    { EXERCISE_STATES.EXERCISE_SELECTION_DEFAULT, ); return ( -
    +
    From 214e48233b1dfc75b89439b1cc313a91eb7589fe Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 5 Feb 2026 14:04:43 -0500 Subject: [PATCH 063/180] Remove overflow hidden to allow for sticky elements --- client/src/assets/stylesheets/components/App.css | 1 - client/src/assets/stylesheets/components/App.scss | 1 - client/src/assets/stylesheets/main.css | 1 - 3 files changed, 3 deletions(-) diff --git a/client/src/assets/stylesheets/components/App.css b/client/src/assets/stylesheets/components/App.css index a17572f04..003a85479 100644 --- a/client/src/assets/stylesheets/components/App.css +++ b/client/src/assets/stylesheets/components/App.css @@ -1987,7 +1987,6 @@ header.masthead .intro-text .intro-heading { body { background-color: white; - overflow-x: hidden; font-family: "Roboto Slab", -apple-system, diff --git a/client/src/assets/stylesheets/components/App.scss b/client/src/assets/stylesheets/components/App.scss index 6ac2cbc75..c27990177 100644 --- a/client/src/assets/stylesheets/components/App.scss +++ b/client/src/assets/stylesheets/components/App.scss @@ -2425,7 +2425,6 @@ header.masthead { body { background-color: white; - overflow-x: hidden; font-family: "Roboto Slab", -apple-system, diff --git a/client/src/assets/stylesheets/main.css b/client/src/assets/stylesheets/main.css index 0fe649d2c..2cfa6cccc 100644 --- a/client/src/assets/stylesheets/main.css +++ b/client/src/assets/stylesheets/main.css @@ -2146,7 +2146,6 @@ header.masthead .intro-text .intro-heading { body { background-color: white; - overflow-x: hidden; font-family: "Roboto Slab", -apple-system, From 402e2f4f10dd6292f39346a122c7c7e06b5caa82 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 5 Feb 2026 14:27:42 -0500 Subject: [PATCH 064/180] Remove overflow hidden and clean up conditional --- client/src/App.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/client/src/App.js b/client/src/App.js index 5e834c1a2..0e3321d48 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -197,13 +197,7 @@ const App = () => { initializeReactGA(); return ( <> -
    +
    From 55d389202fe4763b64778ac61a9289f167e1e507 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 5 Feb 2026 14:32:06 -0500 Subject: [PATCH 065/180] Made NavigationPane and background stripes fixed; slightly changed NavigationPane padding --- .../all-components/Lab/LabWindow.js | 26 +++++++++++-------- .../all-components/Lab/NavigationPane.jsx | 4 +-- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/client/src/components/all-components/Lab/LabWindow.js b/client/src/components/all-components/Lab/LabWindow.js index ee83872fc..4230af858 100644 --- a/client/src/components/all-components/Lab/LabWindow.js +++ b/client/src/components/all-components/Lab/LabWindow.js @@ -29,7 +29,7 @@ const LabWindow = (props) => { {/* Blue and Yellow stripes*/}
    { {/* Nav Pane and Lab Window */}
    - +
    + +
    {body !== 2 && }
    { "tw-flex tw-flex-col tw-justify-between tw-py-3 tw-border-solid tw-border-primary-yellow tw-bg-white tw-border-8 tw-border-l-0 tw-border-b-0 tw-rounded-tr-lg tw-z-10 tw-rounded-bl-lg tw-h-full tw-shadow-md" } > -
    +

    Table of Contents From 9958bdb170c7ac7e2503d96879cef71e8a794492 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 5 Feb 2026 14:36:39 -0500 Subject: [PATCH 066/180] Fixed x overflow issue --- client/src/App.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/App.js b/client/src/App.js index 0e3321d48..b3468326c 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -197,7 +197,11 @@ const App = () => { initializeReactGA(); return ( <> -

    +
    From 96d7de5bd259a60757d352b3e44bf07e787fc73b Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Thu, 5 Feb 2026 17:26:06 -0500 Subject: [PATCH 067/180] Make the disclaimer validation be 20 characters and include verify and output --- client/src/components/exercise/lab13/Lab13Context.js | 10 ++++++++-- .../lab13/pages/repairs/IDEExerciseImplementation.js | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/client/src/components/exercise/lab13/Lab13Context.js b/client/src/components/exercise/lab13/Lab13Context.js index fdb9eb072..dde706088 100644 --- a/client/src/components/exercise/lab13/Lab13Context.js +++ b/client/src/components/exercise/lab13/Lab13Context.js @@ -88,9 +88,15 @@ export const ExerciseStateProvider = ({ children }) => { }; const checkInputValid = () => { + const disclaimerValue = exercisePromptsState + .find((i) => i.id === "disclaimer") + .value.trim() + .toLowerCase(); + // The disclaimer should be at least 20 characters, and include the words "verify" and "output" const disclaimerValid = - exercisePromptsState.find((i) => i.id === "disclaimer").value.trim() === - "Disclaimer - ALL-IE's outputs can be wrong and should be double-checked."; + disclaimerValue.length >= 20 && + disclaimerValue.includes("verify") && + disclaimerValue.includes("output"); const confidenceValid = !!exercisePromptsState.find( (i) => i.id === "confidence", ).value; diff --git a/client/src/components/exercise/lab13/pages/repairs/IDEExerciseImplementation.js b/client/src/components/exercise/lab13/pages/repairs/IDEExerciseImplementation.js index 8da0bbd23..ebc8d4827 100644 --- a/client/src/components/exercise/lab13/pages/repairs/IDEExerciseImplementation.js +++ b/client/src/components/exercise/lab13/pages/repairs/IDEExerciseImplementation.js @@ -28,7 +28,7 @@ const IDEExerciseImplementation = (props = {}) => { - {`// Enter 'Disclaimer - ALL-IE's outputs can be wrong and should be double-checked.' below:`} + {`// Enter a disclaimer of at least 20 characters, including the words "verify" and "output".`} From c8b247f551c9b19089acf32ff9465069a4161e97 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Thu, 5 Feb 2026 19:24:36 -0500 Subject: [PATCH 068/180] basic conclusion page done --- .../exercise/lab13/pages/Conclusion.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/Conclusion.js b/client/src/components/exercise/lab13/pages/Conclusion.js index 419179569..0e355f0c7 100644 --- a/client/src/components/exercise/lab13/pages/Conclusion.js +++ b/client/src/components/exercise/lab13/pages/Conclusion.js @@ -22,8 +22,22 @@ const Conclusion = () => { }, []); return (
    - Conclusion Page - +

    Exercise Complete

    +
    +

    + Great job! You've completed the exercise and now have a stronger + understanding about how AI bias works. +

    +
    + Click the Finish button to complete the Exercise! +
    +
    +
    ); }; From 29f1b25f1ba2b8aee591eacbdfe454d7c073d773 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Thu, 5 Feb 2026 19:33:30 -0500 Subject: [PATCH 069/180] lfg --- client/src/components/exercise/lab13/pages/Conclusion.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/Conclusion.js b/client/src/components/exercise/lab13/pages/Conclusion.js index 0e355f0c7..22c2ef45f 100644 --- a/client/src/components/exercise/lab13/pages/Conclusion.js +++ b/client/src/components/exercise/lab13/pages/Conclusion.js @@ -1,14 +1,16 @@ -import { React, useEffect } from "react"; +import { React } from "react"; import useMainStateContext from "src/reducers/MainContext"; import UserLabService from "../../../../services/UserLabService"; import { EXERCISE_IDLE } from "src/constants/index"; import { LAB_ID } from "../../../../constants/lab13"; +import { navigate } from "@reach/router"; const Conclusion = () => { const { actions, state } = useMainStateContext(); const handleFinish = async () => { actions.updateUserState(EXERCISE_IDLE); + await navigate("/Lab13/Reinforcement"); await UserLabService.complete_exercise(LAB_ID); if (state.main.user?.firstname !== null && state.main.user !== null) { await UserLabService.user_complete_exercise( @@ -17,9 +19,6 @@ const Conclusion = () => { ); } }; - useEffect(() => { - handleFinish(); - }, []); return (

    Exercise Complete

    From 378a82b944e0de4e8a3c9bb509b982bb289f874c Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 6 Feb 2026 09:31:15 -0500 Subject: [PATCH 070/180] AI chatbot bias detection exercise with Wikipedia fact-checking - Add 4-phase interactive exercise teaching AI bias recognition - Implement wikipedia time tracking in context --- .../components/exercise/lab13/Lab13Context.js | 126 ++- client/src/components/exercise/lab13/Main.js | 22 +- .../exercise/lab13/components/AIChatBot.js | 657 +++++++------- .../exercise/lab13/components/Avatar.js | 55 ++ .../exercise/lab13/components/RatingModal.js | 330 ++++--- .../exercise/lab13/components/Tab/Tab.js | 34 +- .../exercise/lab13/components/Tab/Tabs.css | 6 +- .../exercise/lab13/components/Tab/Tabs.js | 125 +-- .../exercise/lab13/pages/AIPanel.js | 844 ++++++++++++++---- .../exercise/lab13/pages/ConfidenceRanking.js | 32 +- .../exercise/lab13/pages/IDEExercise.js | 176 ++-- .../constants/lab13/BiasQuestionsConfig.js | 579 ++++++------ 12 files changed, 1904 insertions(+), 1082 deletions(-) create mode 100644 client/src/components/exercise/lab13/components/Avatar.js diff --git a/client/src/components/exercise/lab13/Lab13Context.js b/client/src/components/exercise/lab13/Lab13Context.js index fdb9eb072..1e90148d1 100644 --- a/client/src/components/exercise/lab13/Lab13Context.js +++ b/client/src/components/exercise/lab13/Lab13Context.js @@ -1,22 +1,22 @@ -import React, { createContext, useState, useContext } from "react"; -import PropTypes from "prop-types"; +import React, { createContext, useState, useContext } from 'react'; +import PropTypes from 'prop-types'; const ExerciseStateContext = createContext({ // Existing user info state - exerciseState: "", + exerciseState: '', setExerciseState: () => {}, - firstName: "", + firstName: '', setFirstName: () => {}, - lastName: "", + lastName: '', setLastName: () => {}, - preferredName: "", + preferredName: '', setPreferredName: () => {}, - pronouns: "", + pronouns: '', setPronouns: () => {}, - college: "", + college: '', setCollege: () => {}, - major: "", + major: '', setMajor: () => {}, - gradTerm: "", + gradTerm: '', setGradTerm: () => {}, // Ranking state @@ -29,17 +29,41 @@ const ExerciseStateContext = createContext({ rankingComplete: false, setRankingComplete: () => {}, resetRanking: () => {}, + + // Save chat history + chatMessages: [], + setChatMessages: () => {}, + resetChatMessages: () => {}, + + // Wikpedia page states + currentPhase: 1, + setCurrentPhase: () => {}, + hasVisitedWikipedia: false, + setHasVisitedWikipedia: () => {}, + wikipediaTimeSpent: 0, + setWikipediaTimeSpent: () => {}, + + // IDE fix states + showConfidenceScore: false, + setShowConfidenceScore: () => {}, + showCitations: false, + setShowCitations: () => {}, + disclaimerMessage: '', + setDisclaimerMessage: () => {}, + // Question tracking states + askedQuestions: [], + setAskedQuestions: () => {}, }); export const ExerciseStateProvider = ({ children }) => { - const [exerciseState, setExerciseState] = useState("submitting"); - const [firstName, setFirstName] = useState(""); - const [lastName, setLastName] = useState(""); - const [preferredName, setPreferredName] = useState(""); - const [pronouns, setPronouns] = useState(""); - const [college, setCollege] = useState(""); - const [major, setMajor] = useState(""); - const [gradTerm, setGradTerm] = useState(""); + const [exerciseState, setExerciseState] = useState('submitting'); + const [firstName, setFirstName] = useState(''); + const [lastName, setLastName] = useState(''); + const [preferredName, setPreferredName] = useState(''); + const [pronouns, setPronouns] = useState(''); + const [college, setCollege] = useState(''); + const [major, setMajor] = useState(''); + const [gradTerm, setGradTerm] = useState(''); // Ranking state const [rankingSuccess, setRankingSuccess] = useState(false); @@ -47,6 +71,25 @@ export const ExerciseStateProvider = ({ children }) => { const [rankingBank, setRankingBank] = useState(() => []); // Initialize as empty array const [rankingComplete, setRankingComplete] = useState(false); + // Chat history state + const [chatMessages, setChatMessages] = useState([]); + + // Wikpedia page tracking states + const [wikipediaTimeSpent, setWikipediaTimeSpent] = useState(0); + const [currentPhase, setCurrentPhase] = useState(1); + const [hasVisitedWikipedia, setHasVisitedWikipedia] = useState(false); + const [wikipediaAccumulatedTime, setWikipediaAccumulatedTime] = useState(0); + const [wikipediaSessionStart, setWikipediaSessionStart] = useState(null); + + // Post IDE fix tracking states + const [showConfidenceScore, setShowConfidenceScore] = useState(false); + const [showCitations, setShowCitations] = useState(false); + const [disclaimerMessage, setDisclaimerMessage] = useState(''); + + // Question tracking states + const [askedQuestions, setAskedQuestions] = useState([]); + const [topicIndex, setTopicIndex] = useState(0); + // Reset ranking function const resetRanking = () => { setRankingSuccess(false); @@ -55,20 +98,24 @@ export const ExerciseStateProvider = ({ children }) => { setRankingComplete(false); }; + const resetChatMessages = () => { + setChatMessages([]); + }; + // --- REPAIR SECTION STATE --- const [exercisePromptsState, setExercisePromptsState] = useState([ { - id: "disclaimer", + id: 'disclaimer', fileId: 0, - value: "", + value: '', }, { - id: "confidence", + id: 'confidence', fileId: 0, value: false, }, { - id: "citations", + id: 'citations', fileId: 0, value: false, }, @@ -82,20 +129,20 @@ export const ExerciseStateProvider = ({ children }) => { const handleUserInputChange = (id, value) => { setExercisePromptsState((prev) => - prev.map((item) => (item.id === id ? { ...item, value } : item)), + prev.map((item) => (item.id === id ? { ...item, value } : item)) ); setIsFirst(false); }; const checkInputValid = () => { const disclaimerValid = - exercisePromptsState.find((i) => i.id === "disclaimer").value.trim() === + exercisePromptsState.find((i) => i.id === 'disclaimer').value.trim() === "Disclaimer - ALL-IE's outputs can be wrong and should be double-checked."; const confidenceValid = !!exercisePromptsState.find( - (i) => i.id === "confidence", + (i) => i.id === 'confidence' ).value; const citationsValid = !!exercisePromptsState.find( - (i) => i.id === "citations", + (i) => i.id === 'citations' ).value; setValidInputs({ disclaimer: disclaimerValid, @@ -149,6 +196,33 @@ export const ExerciseStateProvider = ({ children }) => { checkInputValid, fetchRepair, postRepair, + // --- CHAT HISTORY IN AICHATBOT --- + chatMessages, + setChatMessages, + resetChatMessages, + // --- WIKIPEDIA PAGE TRACKING --- + wikipediaTimeSpent, + setWikipediaTimeSpent, + currentPhase, + setCurrentPhase, + hasVisitedWikipedia, + setHasVisitedWikipedia, + wikipediaAccumulatedTime, + setWikipediaAccumulatedTime, + wikipediaSessionStart, + setWikipediaSessionStart, + + showConfidenceScore, + setShowConfidenceScore, + showCitations, + setShowCitations, + disclaimerMessage, + setDisclaimerMessage, + askedQuestions, + setAskedQuestions, + topicIndex, + setTopicIndex, + }} > {children} diff --git a/client/src/components/exercise/lab13/Main.js b/client/src/components/exercise/lab13/Main.js index 635916477..5179cd073 100644 --- a/client/src/components/exercise/lab13/Main.js +++ b/client/src/components/exercise/lab13/Main.js @@ -1,15 +1,14 @@ -import React from "react"; -import { Router } from "@reach/router"; -import { ExerciseStateProvider } from "./Lab13Context"; +import React from 'react'; +import { Router } from '@reach/router'; +import { ExerciseStateProvider } from './Lab13Context'; -import ExerciseIntroduction from "./pages/ExerciseIntroduction"; -import ConfidenceRanking from "./pages/ConfidenceRanking"; -import AIPanel from "./pages/AIPanel.js"; -import AIandSearchPanel from "./pages/AIandSearchPanel.js"; -import Conclusion from "./pages/Conclusion.js"; -import IDEExercise from "./pages/IDEExercise"; -import IDEIntroduction from "./pages/IDEIntroduction"; -import PanelswithIDEFixes from "./pages/PanelswithIDEFixes"; +import ExerciseIntroduction from './pages/ExerciseIntroduction'; +import ConfidenceRanking from './pages/ConfidenceRanking'; +import AIPanel from './pages/AIPanel.js'; +import AIandSearchPanel from './pages/AIandSearchPanel.js'; +import Conclusion from './pages/Conclusion.js'; +import IDEExercise from './pages/IDEExercise'; +import IDEIntroduction from './pages/IDEIntroduction'; /** * Main(): is the routing component for managing the lab exercise progression, @@ -27,7 +26,6 @@ const Main = () => { - {/* // diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 1d5e80150..6585bdf70 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -1,9 +1,7 @@ import React, { useState, useRef, useEffect } from 'react'; import PropTypes from 'prop-types'; -import ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp'; -import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; import BlobLoader from './BlobLoader'; -import robotImage from './robot.png'; +import Avatar from './Avatar'; /** * Typewriter animation component effect for bot responses @@ -13,32 +11,32 @@ import robotImage from './robot.png'; * @returns */ const TypingMessage = ({ text, onUpdate, onComplete }) => { - const [displayedText, setDisplayedText] = useState(''); - const [currentIndex, setCurrentIndex] = useState(0); - - /** - * Adds character from currentIndex to displayedText - * one at a time everytime the currentIndex, text, or onUpdate changes - */ - useEffect(() => { - if (currentIndex < text.length) { - const timeout = setTimeout(() => { - setDisplayedText((prev) => prev + text[currentIndex]); - setCurrentIndex((prev) => prev + 1); - - // Scroll to bottom when onUpdate is called by component - if (onUpdate) onUpdate(); - // Typing speed, one character every 15ms - }, 15); - - return () => clearTimeout(timeout); - // onComplete becomes true when finished typing - } else if (currentIndex === text.length && onComplete) { - onComplete(); - } - }, [currentIndex, text, onUpdate, onComplete]); + const [displayedText, setDisplayedText] = useState(''); + const [currentIndex, setCurrentIndex] = useState(0); + + /** + * Adds character from currentIndex to displayedText + * one at a time everytime the currentIndex, text, or onUpdate changes + */ + useEffect(() => { + if (currentIndex < text.length) { + const timeout = setTimeout(() => { + setDisplayedText((prev) => prev + text[currentIndex]); + setCurrentIndex((prev) => prev + 1); + + // Scroll to bottom when onUpdate is called by component + if (onUpdate) onUpdate(); + // Typing speed, one character every 15ms + }, 15); + + return () => clearTimeout(timeout); + // onComplete becomes true when finished typing + } else if (currentIndex === text.length && onComplete) { + onComplete(); + } + }, [currentIndex, text, onUpdate, onComplete]); - return <>{displayedText}; + return <>{displayedText}; }; /** @@ -49,271 +47,310 @@ const TypingMessage = ({ text, onUpdate, onComplete }) => { * @param {*} onAnswerSelected : Callback function when an answer is displayed * @returns */ -const AIChatBot = ({ userQuestions, fixedAIResponse, onAnswerDataChange, onTypingChange, onThinkingChange }) => { - const [isOpen, setIsOpen] = useState(false); - const [messages, setMessages] = useState([]); - const [isTyping, setIsTyping] = useState(false); - const [isThinking, setIsThinking] = useState(false); - const [showOverlay, setShowOverlay] = useState(true); - const dropdownRef = useRef(null); - const messagesContainerRef = useRef(null); - - // Close dropdown and reset answer data when questions change (moving to next topic) - // Keep messages to maintain chat history - useEffect(() => { - setIsOpen(false); - }, [userQuestions]); - - // Notify parent when typing state changes - useEffect(() => { - if (onTypingChange) { - onTypingChange(isTyping); - } - }, [isTyping, onTypingChange]); +const AIChatBot = ({ + userQuestions, + fixedAIResponse, + onAnswerDataChange, + onTypingChange, + onThinkingChange, + messages = [], + setMessages, + canSelectQuestion = true, + showConfidenceScore = false, + showCitations = false, + disclaimerMessage = '', + onCitationClick = null, + onQuestionAsked = null, +}) => { + const [isTyping, setIsTyping] = useState(false); + const [isThinking, setIsThinking] = useState(false); + const [showQuestionOptions, setShowQuestionOptions] = useState(false); + const messagesContainerRef = useRef(null); - // Notify parent when thinking state changes - useEffect(() => { - if (onThinkingChange) { - onThinkingChange(isThinking); - } - }, [isThinking, onThinkingChange]); + useEffect(() => { + if (onTypingChange) { + onTypingChange(isTyping); + } + }, [isTyping, onTypingChange]); - // Scroll function to show the most recent message - const scrollToBottom = () => { - if (messagesContainerRef.current) { - messagesContainerRef.current.scrollTop = - messagesContainerRef.current.scrollHeight; - } - }; - /** Scroll to bottom when message array is updated - * to enable message visibility - */ - useEffect(() => { - scrollToBottom(); - }, [messages]); - - /** - * Function handling when user clicks on a question in - * the dropdown creating a user and corresponding bot message - * and adding it in the chat - * @param {} question : Question object from questions array - */ - const handleQuestionClick = (question) => { - const userMsg = { sender: 'user', text: question.text }; - - // Find the corresponding AI response by the matching ID - const botObj = fixedAIResponse.find((resp) => resp.id === question.id); + useEffect(() => { + if (onThinkingChange) { + onThinkingChange(isThinking); + } + }, [isThinking, onThinkingChange]); + + // Show question options when messages end with a bot message + useEffect(() => { + if (messages.length > 0 && canSelectQuestion) { + const lastMessage = messages[messages.length - 1]; + if (lastMessage.sender === 'bot' && !isTyping && !isThinking) { + // Small delay to show questions after bot finishes typing + setTimeout(() => { + setShowQuestionOptions(true); + }, 500); + } + } else { + setShowQuestionOptions(false); + } + }, [messages, isTyping, isThinking, canSelectQuestion]); + + + // Scroll function to show the most recent message + const scrollToBottom = () => { + if (messagesContainerRef.current) { + messagesContainerRef.current.scrollTop = + messagesContainerRef.current.scrollHeight; + } + }; + /** Scroll to bottom when message array is updated + * to enable message visibility + */ + useEffect(() => { + scrollToBottom(); + }, [messages, isThinking, showQuestionOptions]); + + /** + * Function handling when user clicks on a question in + * the dropdown creating a user and corresponding bot message + * and adding it in the chat + * @param {} question : Question object from questions array + */ + const handleQuestionClick = (question) => { + if (!canSelectQuestion) return; + + setShowQuestionOptions(false); + + // Track question before adding to messages + if (onQuestionAsked && question.originalIndex !== undefined) { + onQuestionAsked(question.originalIndex); + } + + // Add user message after small delay + setTimeout(() => { + const userMsg = { + sender: 'user', + text: question.text, + id: `user-${question.id}-${Date.now()}`, + timestamp: new Date(), + }; + // Add new user message to message history + setMessages((prev) => [...prev, userMsg]); + + // Find the corresponding AI response by the matching ID + const botObj = fixedAIResponse.find((resp) => resp.id === question.id); + + // Store the answer data and notify parent + const answerData = { + biasType: botObj?.biasType, + biasDefinition: botObj?.biasDefinition, + explanation: botObj?.explanation, + }; + + setIsThinking(true); + + // Calculate delay based on response length + const delay = Math.ceil((botObj?.text.length || 100) / 100) * 500 + 500; + + setTimeout(() => { const botMsg = { - sender: 'bot', - text: botObj ? botObj.text : 'No response found.', + sender: 'bot', + text: botObj ? botObj.text : 'No response found.', + id: `bot-${question.id}-${Date.now()}`, + timestamp: new Date(), + confidence: botObj?.confidence, + isPhase4: showConfidenceScore || showCitations || disclaimerMessage, }; - // Store the answer data and notify parent - const answerData = { - biasType: botObj?.biasType, - biasDefinition: botObj?.biasDefinition, - explanation: botObj?.explanation, - }; + // Add bot response to message history + setMessages((prev) => [...prev, botMsg]); + setIsThinking(false); + setIsTyping(true); + if (onAnswerDataChange) { - onAnswerDataChange(answerData); + onAnswerDataChange(answerData); } + }, delay); + }, 300); // delay for question fade + }; - setMessages((prev) => [...prev, userMsg]); - // AI begins processing before they type - // Start pulsing animation - setIsThinking(true); + /** + * Decide which animation the blob should use based + * on the AI state + * @returns {string} "pulsing" | "spinning" | "static" + */ + const getBlobMode = () => { + if (isThinking) return 'pulsing'; + if (isTyping) return 'spinning'; + return 'static'; + }; - // Add message display delay proportional to the AI output size - const delay = Math.ceil(botMsg.text.length / 100) * 500 + 500; + return ( +
    + {/* Scrollable container that displays the chat messages */} +
    + {/* Container for indvidual messages */} + {messages && messages.length > 0 + ? messages.map((msg, index) => ( +
    + {/* Avatar circle */} + + {/* Message box adjacent to user message */} +
    +
    + {/* User messages - just display text */} + {msg.sender === 'user' ? ( + msg.text + ) : ( + // Bot messages - use renderAIMessage for additional features + <> + {index === messages.length - 1 && isTyping ? ( + // Typing animation for latest message + { + setIsTyping(false); + }} + /> + ) : ( + // Display message text + msg.text + )} + + {/* Show confidence, disclaimer, citations AFTER typing completes */} + {(!isTyping || index !== messages.length - 1) && + msg.confidence && + msg.isPhase4 && ( + <> + {showConfidenceScore && ( +
    + Confidence Score:{' '} + {msg.confidence} +
    + )} + + {disclaimerMessage && ( +
    + Disclaimer:{' '} + {disclaimerMessage} +
    + )} + + {showCitations && ( + + )} + + )} + + )} +
    + {/* Show blob for most recent AI messages */} + {msg.sender === 'bot' && + index === messages.length - 1 && + !isTyping && ( +
    + +
    + )} +
    +
    + )) + : null} + + {/* Question options after greeting */} + {showQuestionOptions && messages.length > 0 && !isTyping && ( +
    + - setTimeout(() => { - setMessages((prev) => [...prev, botMsg]); - // Stop pulsing animation - setIsThinking(false); - // Start spinning animation - setIsTyping(true); - }, delay); - // Delay before the AI begins typing - - // Close dropdown menu after question is selected - setIsOpen(false); - }; - - /** - * Decide which animation the blob should use based - * on the AI state - * @returns {string} "pulsing" | "spinning" | "static" - */ - const getBlobMode = () => { - if (isThinking) return 'pulsing'; - if (isTyping) return 'spinning'; - return 'static'; - }; - - const handleToggleClick = () => { - if (!isTyping) { - setIsOpen(!isOpen); - // Hide overlay on first click - if (showOverlay) { - setShowOverlay(false); - } - } - }; - - return ( -
    - {/* Scrollable container that displays the chat messages */}
    -
    - {/* Container for indvidual messages */} - {messages.map((msg, index) => ( -
    + {userQuestions.map((question, index) => ( + +
    + {question.text} + + {index < userQuestions.length - 1 && ( +
    + )} + ))} - {/* Show thinking blob when AI is thinking (before message appears) */} - {isThinking && ( -
    -
    - -
    -
    - )} +
    +
    + )} -
    - {/* Upside down triangle on dropdown menu box */} -
    - - {/* Container with list of question buttons */} -
    - {/* Container for indvidual questions */} -
    - {userQuestions.map((question, index) => ( - - ))} -
    -
    + {/* Show thinking blob when AI is thinking (before message appears) */} + {isThinking && ( +
    + +
    +
    +
    + )} +
    - {/* Dropdown and toggle button */} -
    - {/* Toggle button for dropdown menu */} - -
    - {/* Message fade in keyframe animation */} - -
    - ); +
    + ); }; TypingMessage.propTypes = { - text: PropTypes.string.isRequired, - onUpdate: PropTypes.func, - onComplete: PropTypes.func, + text: PropTypes.string.isRequired, + onUpdate: PropTypes.func, + onComplete: PropTypes.func, }; AIChatBot.propTypes = { - userQuestions: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, - text: PropTypes.string.isRequired, - }) - ), - fixedAIResponse: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, - text: PropTypes.string.isRequired, - }) - ), - onAnswerDataChange: PropTypes.func, - onTypingChange: PropTypes.func, - onThinkingChange: PropTypes.func, + userQuestions: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, + text: PropTypes.string.isRequired, + }) + ), + fixedAIResponse: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, + text: PropTypes.string.isRequired, + biasType: PropTypes.string, + biasDefinition: PropTypes.object, + explanation: PropTypes.string, + }) + ), + onAnswerDataChange: PropTypes.func, + onTypingChange: PropTypes.func, + onThinkingChange: PropTypes.func, + messages: PropTypes.array.isRequired, + setMessages: PropTypes.func.isRequired, + canSelectQuestion: PropTypes.bool, + showConfidenceScore: PropTypes.bool, + showCitations: PropTypes.bool, + disclaimerMessage: PropTypes.string, + onCitationClick: PropTypes.func, + onQuestionAsked: PropTypes.func, }; export default AIChatBot; diff --git a/client/src/components/exercise/lab13/components/Avatar.js b/client/src/components/exercise/lab13/components/Avatar.js new file mode 100644 index 000000000..3ff39ceb1 --- /dev/null +++ b/client/src/components/exercise/lab13/components/Avatar.js @@ -0,0 +1,55 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import RobotImage from './robot.png'; + +const Avatar = ({ type, size = 40 }) => { + const isAI = type === 'ai'; + + return ( +
    + {isAI ? ( + AI Avatar + ) : ( + + 👤 + + )} +
    + ); +}; + +Avatar.propTypes = { + type: PropTypes.oneOf(['ai', 'user']).isRequired, + size: PropTypes.number, +}; + +export default Avatar; diff --git a/client/src/components/exercise/lab13/components/RatingModal.js b/client/src/components/exercise/lab13/components/RatingModal.js index b587ccd57..e90b69295 100644 --- a/client/src/components/exercise/lab13/components/RatingModal.js +++ b/client/src/components/exercise/lab13/components/RatingModal.js @@ -1,153 +1,207 @@ -import React, { useRef } from "react"; -import PropTypes from "prop-types"; -import ALLModal from "src/components/all-components/ALLModal"; +import React, { useRef, useEffect } from 'react'; +import PropTypes from 'prop-types'; +import ALLModal from 'src/components/all-components/ALLModal'; -const optionsList = ["Very Low", "Low", "Medium", "High", "Very High"]; +const optionsList = ['Very Low', 'Low', 'Medium', 'High', 'Very High']; const RatingModal = ({ - show, - setShow, - toneRating, - setToneRating, - confidenceRating, - setConfidenceRating, - onSubmit, - showTextModal, - setShowTextModal, - textModalHeader, - textModalBody, - onCloseTextModal, + show, + setShow, + toneRating, + setToneRating, + confidenceRating, + setConfidenceRating, + onSubmit, + showTextModal, + setShowTextModal, + textModalHeader, + textModalBody, + onCloseTextModal, }) => { - const firstModalRef = useRef(null); - - RatingModal.propTypes = { - show: PropTypes.bool.isRequired, - setShow: PropTypes.func.isRequired, - toneRating: PropTypes.string.isRequired, - setToneRating: PropTypes.func.isRequired, - confidenceRating: PropTypes.string.isRequired, - setConfidenceRating: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - showTextModal: PropTypes.bool.isRequired, - setShowTextModal: PropTypes.func.isRequired, - textModalHeader: PropTypes.node.isRequired, - textModalBody: PropTypes.node.isRequired, - onCloseTextModal: PropTypes.func.isRequired, + const firstModalRef = useRef(null); + // Control overlay when modals are shown + useEffect(() => { + if (show || showTextModal) { + document.body.style.overflow = 'hidden'; + } else { + document.body.style.overflow = 'unset'; + } + return () => { + document.body.style.overflow = 'unset'; }; + }, [show, showTextModal]); + + const handleSubmit = () => { + if (!toneRating || !confidenceRating) { + alert('Please rate both factors before submitting.'); + return; + } + onSubmit(); + }; - return ( + return ( + <> +
    - - Rate each factor by its influence on your trust. -
    - } - showFooter={false} - customBody={ -
    -
    Tone:
    -
    - - Low influence - - {optionsList.map((option) => { - const value = option.toLowerCase().replace(/ /g, "-"); - const selected = toneRating === value; - return ( - - ); - })} - - High influence - -
    - {toneRating && ( -
    - Tone selected:{" "} - - {optionsList.find( - (o) => o.toLowerCase().replace(/ /g, "-") === toneRating, - )} - -
    - )} -
    Confidence:
    -
    - - Low influence - - {optionsList.map((option) => { - const value = option.toLowerCase().replace(/ /g, "-"); - const selected = confidenceRating === value; - return ( - - ); - })} - - High influence - -
    - {confidenceRating && ( -
    - Confidence selected:{" "} - - {optionsList.find( - (o) => - o.toLowerCase().replace(/ /g, "-") === confidenceRating, - )} - -
    + +
    + Rate each factor by its influence on your trust. +
    + +
    + } + showFooter={false} + customBody={ +
    +
    +
    Tone:
    +
    + + Low influence + + {optionsList.map((option) => { + const value = option.toLowerCase().replace(/ /g, '-'); + const selected = toneRating === value; + return ( + + ); + })} + + High influence + +
    + {toneRating && ( +
    + Tone selected:{' '} + + {optionsList.find( + (o) => + o.toLowerCase().replace(/ /g, '-') === toneRating )} -
    - -
    +
    - } - /> - - {textModalHeader} + )} +
    + + {/* Confidence rating */} +
    +
    Confidence:
    + +
    + + Low influence + + {optionsList.map((option) => { + const value = option.toLowerCase().replace(/ /g, '-'); + const selected = confidenceRating === value; + return ( + key={value} + type="button" + className={`tw-w-11 tw-h-11 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-border-2 tw-transition-all tw-duration-200 tw-ease-in-out ${ + selected + ? 'tw-bg-blue-500 tw-border-blue-600 tw-scale-110 tw-shadow-lg' + : 'tw-bg-white tw-border-gray-300 hover:tw-border-blue-400 hover:tw-scale-105' + }`} + onClick={() => setConfidenceRating(value)} + aria-label={option} + > + ); + })} + + High influence + +
    + {confidenceRating && ( +
    + Confidence selected:{' '} + + {optionsList.find( + (o) => + o.toLowerCase().replace(/ /g, '-') === + confidenceRating + )} +
    - } - showFooter={false} - customBody={textModalBody} - /> + )} +
    +
    + +
    +
    + } + /> + + {textModalHeader} + +
    + } + showFooter={false} + customBody={textModalBody} + />
    - ); +
    + + ); +}; + +RatingModal.propTypes = { + show: PropTypes.bool.isRequired, + setShow: PropTypes.func.isRequired, + toneRating: PropTypes.string.isRequired, + setToneRating: PropTypes.func.isRequired, + confidenceRating: PropTypes.string.isRequired, + setConfidenceRating: PropTypes.func.isRequired, + onSubmit: PropTypes.func.isRequired, + showTextModal: PropTypes.bool.isRequired, + setShowTextModal: PropTypes.func.isRequired, + textModalHeader: PropTypes.node, + textModalBody: PropTypes.node, + onCloseTextModal: PropTypes.func.isRequired, }; export default RatingModal; diff --git a/client/src/components/exercise/lab13/components/Tab/Tab.js b/client/src/components/exercise/lab13/components/Tab/Tab.js index 850a1873a..e3b176668 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tab.js +++ b/client/src/components/exercise/lab13/components/Tab/Tab.js @@ -1,25 +1,27 @@ -import { useContext, useEffect } from "react"; -import { TabsContext } from "./TabsContext"; -import PropTypes from "prop-types"; +import { useContext, useEffect, useRef } from 'react'; +import { TabsContext } from './TabsContext'; +import PropTypes from 'prop-types'; export const Tab = ({ label, children }) => { - /** - * A component that defines a singular tab - * @param {string} label - Name of the tab - * @param {object} children - Content of the tab - */ + const { logTab } = useContext(TabsContext); - const { logTab } = useContext(TabsContext); + // Use ref to track if this is the first render + const isFirstRender = useRef(true); + const prevChildrenRef = useRef(children); - // Log tab once it appears on the screen, and update when children change - useEffect(() => { - logTab({ label, content: children }); - }, [children, logTab]); + useEffect(() => { + // Only log if children actually changed or first render + if (isFirstRender.current || prevChildrenRef.current !== children) { + logTab({ label, content: children }); + prevChildrenRef.current = children; + isFirstRender.current = false; + } + }, [children, label, logTab]); - return null; + return null; }; Tab.propTypes = { - label: PropTypes.string.isRequired, - children: PropTypes.node.isRequired, + label: PropTypes.string.isRequired, + children: PropTypes.node.isRequired, }; diff --git a/client/src/components/exercise/lab13/components/Tab/Tabs.css b/client/src/components/exercise/lab13/components/Tab/Tabs.css index cfc24bc1f..f7f534c0a 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tabs.css +++ b/client/src/components/exercise/lab13/components/Tab/Tabs.css @@ -143,9 +143,9 @@ margin-top: -1px; box-shadow: 0 5px 6px rgba(0, 0, 0, 0.3); padding: 25px 30px 25px 25px; - height: calc(54vh); + height: calc(59vh); overflow-y: scroll; - border-top: 15px solid white; + border-top: 10px solid white; border: solid white; - border-width: 15px 0; + border-width: 10px 0; } diff --git a/client/src/components/exercise/lab13/components/Tab/Tabs.js b/client/src/components/exercise/lab13/components/Tab/Tabs.js index 1d8b5f97e..5d9ed9eca 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tabs.js +++ b/client/src/components/exercise/lab13/components/Tab/Tabs.js @@ -1,65 +1,78 @@ -import React, { useState } from "react"; -import { TabsContext } from "./TabsContext"; -import PropTypes from "prop-types"; -import "./Tabs.css"; +import React, { useState, useCallback } from 'react'; +import { TabsContext } from './TabsContext'; +import PropTypes from 'prop-types'; +import './Tabs.css'; -export const Tabs = ({ children }) => { - /** - * A component that displays and holds tabs - * - * @param {object} children - Tab components placed inside Tabs - * @returns {JSX.Element} - */ +export const Tabs = ({ + children, + activeTab: externalActiveTab, + onTabChange, +}) => { + // Store tab(s) that log themselves in Tabs parent + const [tabs, setTabs] = useState([]); - // State storing index of current active tab - const [activeTab, setActiveTab] = useState(0); // First tab is active by default - // Store tab(s) that log themselves in Tabs parent - const [tabs, setTabs] = useState([]); + // Use external activeTab or fall back to first tab + const activeTabIndex = tabs.findIndex( + (tab) => tab.label === externalActiveTab + ); + const currentActiveIndex = activeTabIndex !== -1 ? activeTabIndex : 0; - // Add newly register tabs to existing tab array, or update if it already exists - const logTab = (tab) => { - setTabs((prev) => { - const existingIndex = prev.findIndex((t) => t.label === tab.label); - if (existingIndex !== -1) { - const updated = [...prev]; - updated[existingIndex] = tab; - return updated; - } - return [...prev, tab]; - }); - }; + // Memoize logTab to prevent infinite loops + const logTab = useCallback((tab) => { + setTabs((prev) => { + const existingIndex = prev.findIndex((t) => t.label === tab.label); + if (existingIndex !== -1) { + const updated = [...prev]; + updated[existingIndex] = tab; + return updated; + } + return [...prev, tab]; + }); + }, []); // Empty dependency array since it only uses setTabs - return ( - -
    - {/* Populate headers with buttons for logged tabs */} -
    - {tabs.map((tab, index) => ( -
    - -
    - ))} -
    - {/* Populate with tab content */} -
    - {tabs.map((tab, index) => - index === activeTab ?
    {tab.content}
    : null, - )} -
    + const handleTabClick = (index) => { + if (onTabChange) { + onTabChange(tabs[index].label); + } + }; + + return ( + {} }} + > +
    + {/* Populate headers with buttons for logged tabs */} +
    + {tabs.map((tab, index) => ( +
    +
    - {children} - - ); + ))} +
    + {/* Populate with tab content */} +
    + {tabs.map((tab, index) => + index === currentActiveIndex ? ( +
    {tab.content}
    + ) : null + )} +
    +
    + {children} +
    + ); }; Tabs.propTypes = { - children: PropTypes.node.isRequired, + children: PropTypes.node.isRequired, + activeTab: PropTypes.string, + onTabChange: PropTypes.func, }; diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index d13f40f9f..4cd97cb08 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -1,4 +1,12 @@ -import { React, useContext, useMemo, useState, useCallback } from 'react'; +import { + React, + useContext, + useMemo, + useState, + useCallback, + useEffect, + useRef, +} from 'react'; import { startExercise } from 'src/reducers/lab2/actions'; import { navigate } from '@reach/router'; import AIChatBot from '../components/AIChatBot'; @@ -7,180 +15,696 @@ import { Tab } from '../components/Tab/Tab'; import RatingModal from '../components/RatingModal'; import ExerciseStateContext from '../Lab13Context'; import { - BIAS_TYPES, - BIAS_DEFINITIONS, - getTopicById, + BIAS_TYPES, + BIAS_DEFINITIONS, + getTopicById, } from 'src/constants/lab13/BiasQuestionsConfig'; const AIPanel = () => { - const { rankingColumns } = useContext(ExerciseStateContext); - const [topicIndex, setTopicIndex] = useState(0); - const [showRatingModal, setShowRatingModal] = useState(false); - const [showBiasExplanation, setShowBiasExplanation] = useState(false); - const [selectedBiasData, setSelectedBiasData] = useState(null); - const [currentAnswerData, setCurrentAnswerData] = useState(null); - const [isBotTyping, setIsBotTyping] = useState(false); - const [isBotThinking, setIsBotThinking] = useState(false); - const [toneRating, setToneRating] = useState(''); - const [confidenceRating, setConfidenceRating] = useState(''); - - const BIAS_POSITION_MAP = { - 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable - 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable - 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable - }; + const { + rankingColumns, + chatMessages, + setChatMessages, + hasVisitedWikipedia, + setHasVisitedWikipedia, + currentPhase, + setCurrentPhase, + showConfidenceScore, + showCitations, + disclaimerMessage, + askedQuestions, + setAskedQuestions, + topicIndex, + setTopicIndex, + wikipediaAccumulatedTime, + setWikipediaAccumulatedTime, + wikipediaSessionStart, + setWikipediaSessionStart, + } = useContext(ExerciseStateContext); + + const [showRatingModal, setShowRatingModal] = useState(false); + const [showBiasExplanation, setShowBiasExplanation] = useState(false); + const [selectedBiasData, setSelectedBiasData] = useState(null); + const [currentAnswerData, setCurrentAnswerData] = useState(null); + const [isBotTyping, setIsBotTyping] = useState(false); + const [isBotThinking, setIsBotThinking] = useState(false); + const [toneRating, setToneRating] = useState(''); + const [confidenceRating, setConfidenceRating] = useState(''); + const [questionAnswered, setQuestionAnswered] = useState(false); + const [activeTab, setActiveTab] = useState('AIChatBot'); + const [currentDisplayTime, setCurrentDisplayTime] = useState(0); + const phase4IntroAddedRef = useRef(false); + + const BIAS_POSITION_MAP = { + 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable + 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable + 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable + }; + + // Get all three topics in order: medium, most, least + const getOrderedTopics = useMemo(() => { + if (!rankingColumns?.length) return []; + + const topics = []; + // Medium knowledgeable (index 1) - Halo Effect + if (rankingColumns[1]?.cards?.length > 0) { + topics.push({ + id: rankingColumns[1].cards[0].id, + biasPosition: 1, + title: rankingColumns[1].cards[0].title, + }); + } + // Most knowledgeable (index 0) - Truth Bias + if (rankingColumns[0]?.cards?.length > 0) { + topics.push({ + id: rankingColumns[0].cards[0].id, + biasPosition: 0, + title: rankingColumns[0].cards[0].title, + }); + } + // Least knowledgeable (index 2) - Dunning-Kruger + if (rankingColumns[2]?.cards?.length > 0) { + topics.push({ + id: rankingColumns[2].cards[0].id, + biasPosition: 2, + title: rankingColumns[2].cards[0].title, + }); + } + + return topics; + }, [rankingColumns]); + + const currentTopic = getOrderedTopics[topicIndex] || null; + const activeTopic = currentTopic?.id || null; + const activeBias = + BIAS_POSITION_MAP[currentTopic?.biasPosition] || BIAS_TYPES.HALO_EFFECT; + const topicData = getTopicById(activeTopic); + + // Display Wikipedia based on current phase + const showWikipediaTab = topicIndex >= 1; + const requireWikipedia = topicIndex === 2; + + // Wikipedia time tracking with interval + useEffect(() => { + let intervalId; - // Get all three topics in order: medium, most, least - const getOrderedTopics = useMemo(() => { - if (!rankingColumns?.length) return []; + if (activeTab === 'ALLpedia' && showWikipediaTab) { + // Mark as visited + setHasVisitedWikipedia(true); - const topics = []; - // Medium knowledgeable (index 1) - Halo Effect - if (rankingColumns[1]?.cards?.length > 0) { - topics.push({ id: rankingColumns[1].cards[0].id, biasPosition: 1 }); + // Start new session if not already started + if (!wikipediaSessionStart) { + setWikipediaSessionStart(Date.now()); + } + + intervalId = setInterval(() => { + if (wikipediaSessionStart) { + const sessionElapsed = Math.floor( + (Date.now() - wikipediaSessionStart) / 1000 + ); + const total = wikipediaAccumulatedTime + sessionElapsed; + setCurrentDisplayTime(total); + + // Stop at 15 seconds + if (total >= 15) { + clearInterval(intervalId); + } } - // Most knowledgeable (index 0) - Truth Bias - if (rankingColumns[0]?.cards?.length > 0) { - topics.push({ id: rankingColumns[0].cards[0].id, biasPosition: 0 }); + }, 100); + } else { + // Leaving Wikipedia tab ensure you save the time + if (wikipediaSessionStart) { + const sessionElapsed = Math.floor( + (Date.now() - wikipediaSessionStart) / 1000 + ); + setWikipediaAccumulatedTime((prev) => prev + sessionElapsed); + setWikipediaSessionStart(null); + } + // Keep displaying the accumulated time + setCurrentDisplayTime(wikipediaAccumulatedTime); + } + + return () => { + if (intervalId) clearInterval(intervalId); + }; + }, [ + activeTab, + showWikipediaTab, + wikipediaSessionStart, + wikipediaAccumulatedTime, + setHasVisitedWikipedia, + setWikipediaAccumulatedTime, + setWikipediaSessionStart, + ]); + + const getWikipediaTimeSpent = useCallback(() => { + return currentDisplayTime; + }, [currentDisplayTime]); + + // Filter questions for round 4 to only show unasked questions + const getAvailableQuestions = useMemo(() => { + if (!topicData?.questions) return []; + + if (currentPhase === 4) { + // Phase 4, show only unasked questions from current topic + console.log('Phase 4 - Topic:', activeTopic); + console.log('Phase 4 - All questions:', topicData.questions.length); + console.log('Asked questions:', askedQuestions); + + const available = topicData.questions + .map((q, index) => ({ ...q, originalIndex: index })) + .filter((q) => { + const questionKey = `${activeTopic}-${q.originalIndex}`; + return !askedQuestions.includes(questionKey); + }) + .slice(0, 2); // Only first 2 unasked + + console.log('Available questions:', available.length); + return available; + } + + // All other phases, show all questions with originalIndex + return topicData.questions.map((q, index) => ({ + ...q, + originalIndex: index, + })); + }, [currentPhase, topicData, askedQuestions, activeTopic]); + + // Switch to Wikipedia tab on citation click + const handleCitationClick = useCallback(() => { + setActiveTab('ALLpedia'); + }, []); + + // Track when a question is asked + const handleQuestionAsked = useCallback( + (questionIndex) => { + const questionKey = `${activeTopic}-${questionIndex}`; + + setAskedQuestions((prev) => { + if (!prev.includes(questionKey)) { + console.log( + 'Tracking question:', + questionKey, + 'Phase:', + currentPhase + ); + return [...prev, questionKey]; } - // Least knowledgeable (index 2) - Dunning-Kruger - if (rankingColumns[2]?.cards?.length > 0) { - topics.push({ id: rankingColumns[2].cards[0].id, biasPosition: 2 }); + return prev; + }); + }, + [currentPhase, setAskedQuestions, activeTopic] + ); + + // Get Wikipedia content based on topic + const getWikipediaContent = (topicId) => { + const content = { + localization: { + title: 'Localization', + text: `Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references. + +This may include using local currency or changing date formats, but it does not involve physical changes, such as changing clothing materials for climate. However, modifying language or tone to fit different social settings can be considered a form of cultural localization.`, + sources: [ + 'https://resources.gala-global.org/accessibility-localization/', + 'https://www.vistatec.com/localization-for-all-advancing-accessibility-and-inclusion-in-a-globalized-world/', + ], + imageUrl: + 'https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?w=400', // Placeholder + }, + colorblindness: { + title: 'Color Blindness', + text: `Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. + +Although many cases are inherited, they can also develop later in life due to eye disease, injury, aging, or certain medications. Complete color blindness is rare and should not be assumed.`, + sources: [ + 'https://www.colourblindawareness.org/colour-blindness/', + 'https://www.nei.nih.gov/eye-health-information/eye-conditions-and-diseases/color-blindness', + ], + imageUrl: + 'https://images.unsplash.com/photo-1584036561566-baf8f5f1b144?w=400', // Placeholder + }, + dyslexia: { + title: 'Dyslexia', + text: `Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. + + Dyslexia cannot be cured, but it can be effectively supported through early intervention, structured reading instruction, and classroom accommodations.`, + sources: [ + 'https://dyslexiaida.org/definition-of-dyslexia/', + 'https://www.losdschools.org/student-services/dyslexia-handbook/definition-of-dyslexia', + ], + imageUrl: + 'https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=400', // Placeholder + }, + }; + + return content[topicId?.toLowerCase()] || content.localization; + }; + + const wikipediaContent = getWikipediaContent(activeTopic); + + // Initialize first exercise chat with the ALLie greeting + useEffect(() => { + if (chatMessages.length === 0 && currentTopic) { + setChatMessages([ + { + id: 'greeting', + sender: 'bot', + text: `Hi! I'm ALL-IE the AI, please choose your prompt on ${currentTopic.title}.`, + timestamp: new Date(), + }, + ]); + setCurrentPhase(1); + } + }, [currentTopic, chatMessages.length, setChatMessages, setCurrentPhase]); + + // Initialize phase 4 after IDE fixes + useEffect(() => { + if (currentPhase === 4 && currentTopic) { + console.log('Phase 4 Init - Topic Index:', topicIndex); + console.log('Phase 4 Init - Current Topic:', currentTopic); + console.log('Phase 4 Init - Topic Position:', currentTopic.biasPosition); + + // Reset Wikipedia tracking for Phase 4 + if (!phase4IntroAddedRef.current) { + setHasVisitedWikipedia(false); + setWikipediaAccumulatedTime(0); + setWikipediaSessionStart(null); + setCurrentDisplayTime(0); + } + + // Enusure we're on the least knowledgeable topic + if (currentTopic.biasPosition !== 2) { + console.warn('Phase 4 should be on least topic! Forcing to index 2'); + setTopicIndex(2); + return; + } + + // Add intro message once + if (!phase4IntroAddedRef.current && chatMessages.length > 0) { + const lastMessage = chatMessages[chatMessages.length - 1]; + const phase4IntroText = `Great! Now that you've implemented your IDE fixes, let's see the difference in your interaction. You must review the ALLpedia page for at least 15 seconds before proceeding. Select a prompt for ${currentTopic.title}.`; + + if ( + lastMessage.text !== phase4IntroText && + !lastMessage.text.includes('implemented your IDE fixes') + ) { + setQuestionAnswered(false); + phase4IntroAddedRef.current = true; + + setTimeout(() => { + setChatMessages((prev) => [ + ...prev, + { + id: 'phase4-intro', + sender: 'bot', + text: phase4IntroText, + timestamp: new Date(), + }, + ]); + }, 500); } + } + } + }, [ + currentPhase, + currentTopic, + topicIndex, + chatMessages.length, + setChatMessages, + setHasVisitedWikipedia, + setWikipediaAccumulatedTime, + setWikipediaSessionStart, + setTopicIndex, + ]); - return topics; - }, [rankingColumns]); - - const currentTopic = getOrderedTopics[topicIndex] || null; - const activeTopic = currentTopic?.id || null; - const activeBias = BIAS_POSITION_MAP[currentTopic?.biasPosition] || BIAS_TYPES.HALO_EFFECT; - const topicData = getTopicById(activeTopic); - - const resetModalState = useCallback(() => { - setShowBiasExplanation(false); - setShowRatingModal(false); - setSelectedBiasData(null); - setCurrentAnswerData(null); - setToneRating(''); - setConfidenceRating(''); - }, []); - - const handleAnswerSelected = useCallback((biasType, biasDefinition, explanation) => { - setSelectedBiasData({ biasType, biasDefinition, explanation }); - setShowRatingModal(true); - }, []); - - const handleRatingSubmit = useCallback(() => { - setShowBiasExplanation(true); - }, []); - - const handleBiasExplanationClose = useCallback(() => { - resetModalState(); - - setTimeout(() => { - setTopicIndex((prevIndex) => { - const nextIndex = prevIndex + 1; - if (nextIndex >= getOrderedTopics.length) { - setTimeout(() => { - startExercise(); - navigate('/Lab13/Exercise/AIandSearchPanel'); - }, 50); - } - return nextIndex; - }); - }, 100); - }, [resetModalState, getOrderedTopics.length]); - - const biasDefinition = selectedBiasData ? BIAS_DEFINITIONS[selectedBiasData.biasType] : null; - - return ( -
    - {activeTopic && topicData && ( - <> - - -
    -
    - ({ - id: index + 1, - text: q.text, - }))} - fixedAIResponse={topicData.questions.map((q, index) => ({ - id: index + 1, - text: q.answers[activeBias].text, - isCorrect: q.answers[activeBias].isCorrect, - explanation: q.answers[activeBias].explanation, - biasType: activeBias, - biasDefinition: BIAS_DEFINITIONS[activeBias], - }))} - onAnswerDataChange={setCurrentAnswerData} - onTypingChange={setIsBotTyping} - onThinkingChange={setIsBotThinking} - /> -
    -
    - {currentAnswerData && !isBotTyping && !isBotThinking && !showRatingModal && ( - - )} -
    -
    -
    -
    - - - {biasDefinition.name} -
    - ) : null + // Add transitions with instructional messages from ALL-ie + const handleBiasExplanationClose = useCallback(() => { + setShowBiasExplanation(false); + setShowRatingModal(false); + + setTimeout(() => { + setSelectedBiasData(null); + setCurrentAnswerData(null); + setToneRating(''); + setConfidenceRating(''); + setQuestionAnswered(false); + setActiveTab('AIChatBot'); + + setTimeout(() => { + setTopicIndex((prevIndex) => { + const nextIndex = prevIndex + 1; + + if (nextIndex >= getOrderedTopics.length && currentPhase < 4) { + setTimeout(() => { + startExercise(); + navigate('/Lab13/Exercise/IDEIntroduction'); + }, 300); + return prevIndex; + } + + if (currentPhase === 4) { + phase4IntroAddedRef.current = false; + setTimeout(() => { + startExercise(); + navigate('/Lab13/Exercise/Conclusion'); + }, 300); + return prevIndex; + } + + // Reset Wikipedia tracking for new phase + setHasVisitedWikipedia(false); + setWikipediaAccumulatedTime(0); + setWikipediaSessionStart(null); + setCurrentDisplayTime(0); + setCurrentPhase(nextIndex + 1); + + const nextTopic = getOrderedTopics[nextIndex]; + if (nextTopic) { + setTimeout(() => { + let transitionText = ''; + if (nextIndex === 1) { + transitionText = `Onto part ${nextIndex + 1}. This time you have access to the ALLpedia page to fact-check the AI on ${nextTopic.title}. Select a prompt for ${nextTopic.title}.`; + } else if (nextIndex === 2) { + transitionText = `Onto part ${nextIndex + 1}. You must review the ALLpedia page for at least 15 seconds before proceeding. Select a prompt for ${nextTopic.title}.`; + } else { + transitionText = `Onto part ${nextIndex + 1}. Select a prompt for ${nextTopic.title}.`; + } + + setChatMessages((prev) => [ + ...prev, + { + id: `transition-${nextIndex}`, + sender: 'bot', + text: transitionText, + timestamp: new Date(), + }, + ]); + }, 800); + } + + return nextIndex; + }); + }, 200); + }, 100); + }, [ + getOrderedTopics, + setChatMessages, + setHasVisitedWikipedia, + setWikipediaAccumulatedTime, + setWikipediaSessionStart, + setCurrentPhase, + currentPhase, + ]); + + const handleAnswerSelected = useCallback( + (biasType, biasDefinition, explanation) => { + setSelectedBiasData({ biasType, biasDefinition, explanation }); + setShowRatingModal(true); + }, + [] + ); + + const handleRatingSubmit = useCallback(() => { + setShowRatingModal(false); + setShowBiasExplanation(true); + }, []); + + // Check if ai review button should be enabled + const canReviewResponse = useMemo(() => { + if (!currentAnswerData || isBotTyping || isBotThinking || showRatingModal) { + return false; + } + + // Phase 3 and 4 require Wikipedia visit for 15 or more seconds + if (requireWikipedia) { + return hasVisitedWikipedia && getWikipediaTimeSpent() >= 15; + } + + return true; + }, [ + currentAnswerData, + isBotTyping, + isBotThinking, + showRatingModal, + requireWikipedia, + hasVisitedWikipedia, + getWikipediaTimeSpent, + ]); + + const biasDefinition = selectedBiasData + ? BIAS_DEFINITIONS[selectedBiasData.biasType] + : null; + + const handleAnswerDataChange = useCallback((data) => { + setCurrentAnswerData(data); + setQuestionAnswered(true); + }, []); + + return ( +
    + {/* Full-screen overlay when modal is shown */} + {(showRatingModal || showBiasExplanation) && ( +
    + )} + + {activeTopic && topicData && ( + <> +
    + + +
    +
    + ({ + id: index + 1, + text: q.text, + originalIndex: + q.originalIndex !== undefined + ? q.originalIndex + : index, + }))} + fixedAIResponse={getAvailableQuestions.map((q, index) => { + return { + id: index + 1, + text: q.answers[activeBias].text, + isCorrect: q.answers[activeBias].isCorrect, + explanation: q.answers[activeBias].explanation, + biasType: activeBias, + biasDefinition: BIAS_DEFINITIONS[activeBias], + confidence: q.answers[activeBias].confidence || 93, + }; + })} + onAnswerDataChange={handleAnswerDataChange} + onTypingChange={setIsBotTyping} + onThinkingChange={setIsBotThinking} + messages={chatMessages} + setMessages={setChatMessages} + canSelectQuestion={!questionAnswered} + showConfidenceScore={ + currentPhase === 4 && showConfidenceScore + } + showCitations={currentPhase === 4 && showCitations} + disclaimerMessage={ + currentPhase === 4 ? disclaimerMessage : '' + } + onCitationClick={handleCitationClick} + onQuestionAsked={handleQuestionAsked} + /> +
    +
    + {/* Wikipedia requirement warning for phase 3 */} + {requireWikipedia && + !canReviewResponse && + currentAnswerData && ( +
    + {!hasVisitedWikipedia + ? 'Visit the ALLpedia tab before reviewing' + : `Please spend ${15 - getWikipediaTimeSpent()} more seconds on ALLpedia`} +
    + )} + + {canReviewResponse && ( + + )} +
    +
    +
    + + {/* ALLpedia Tab, from phase 2 onwards */} + {showWikipediaTab && ( + +
    + {/* Header with Title and Timer */} +
    +
    + {/* Left: Empty spacer for balance */} +
    + {/* Empty div for grid balance */} +
    + + {/* Title */} +
    +

    + {wikipediaContent.title} +

    +
    + + {/* Timer */} +
    + {requireWikipedia && ( +
    + + {currentDisplayTime >= 15 + ? 'Duration completed' + : 'Time on page:'} + + {currentDisplayTime >= 15 ? ( +
    + + ✓ + + + Complete +
    - ) : null - } - onCloseTextModal={handleBiasExplanationClose} - /> - - )} + ) : ( + + {currentDisplayTime}s + + )} +
    + )} +
    +
    + + {/* Subtitle */} +

    + Use this resource to fact-check ALL-IE's responses +

    +
    + + {/* Text on left and image on right */} +
    +
    + {/* Left: Text Content */} +
    +
    + {wikipediaContent.text + .split('\n\n') + .map((paragraph, index) => ( +

    + {paragraph} +

    + ))} +
    +
    - {!activeTopic && ( -
    -

    - Please complete the ranking to see questions. + {/* Image */} +

    + {wikipediaContent.title} +
    +
    + + {/* Sources at bottom */} +
    +

    + Sources: +

    +
      + {wikipediaContent.sources.map((source, index) => ( +
    • + + {source} + +
    • + ))} +
    +
    +
    +
    + + )} + +
    + + + {biasDefinition.name} +
    + ) : null + } + textModalBody={ + selectedBiasData && biasDefinition ? ( +
    +
    +

    + {selectedBiasData.explanation}

    +
    +
    +

    + Understanding {biasDefinition.name}: +

    +

    {biasDefinition.definition}

    +
    - )} + ) : null + } + onCloseTextModal={handleBiasExplanationClose} + /> + + )} + + {!activeTopic && ( +
    +

    + Please complete the ranking to see questions. +

    - ); + )} +
    + ); }; export default AIPanel; diff --git a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js index ca81cf7c0..f22a61876 100644 --- a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js +++ b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js @@ -1,10 +1,10 @@ -import React, { useState, useEffect, useContext } from "react"; -import { startExercise } from "src/reducers/lab2/actions"; -import { navigate } from "@reach/router"; -import DragDropGame from "../components/DragAndDropNoCorrectAnswer/DragDropGame"; -import ExerciseStateContext from "../Lab13Context"; -import { initialColumns, initialBank } from "src/constants/lab13/RankingConfig"; -import DragIndicatorRoundedIcon from "@mui/icons-material/DragIndicatorRounded"; +import React, { useState, useEffect, useContext } from 'react'; +import { startExercise } from 'src/reducers/lab2/actions'; +import { navigate } from '@reach/router'; +import DragDropGame from '../components/DragAndDropNoCorrectAnswer/DragDropGame'; +import ExerciseStateContext from '../Lab13Context'; +import { initialColumns, initialBank } from 'src/constants/lab13/RankingConfig'; +import DragIndicatorRoundedIcon from '@mui/icons-material/DragIndicatorRounded'; const ConfidenceRanking = () => { const { @@ -19,14 +19,14 @@ const ConfidenceRanking = () => { const [cols, setCols] = useState(() => rankingColumns.length > 0 ? structuredClone(rankingColumns) - : structuredClone(initialColumns), + : structuredClone(initialColumns) ); const [bank, setBank] = useState(() => { const placedIds = new Set( (rankingColumns.length > 0 ? rankingColumns : initialColumns).flatMap( - (col) => col.cards.map((card) => card.id), - ), + (col) => col.cards.map((card) => card.id) + ) ); const sourceBank = rankingBank.length > 0 ? rankingBank : initialBank; @@ -59,20 +59,20 @@ const ConfidenceRanking = () => { const handleContinue = () => { if (!success) { alert( - "Please complete ranking your knowledge of all topics before continuing", + 'Please complete ranking your knowledge of all topics before continuing' ); return; } startExercise(); - navigate("/Lab13/Exercise/AIPanel"); + navigate('/Lab13/Exercise/AIPanel'); }; return (
    -

    Confidence Ranking Page

    +

    Confidence Ranking Page

    - Drag and Drop each of the three topics, Dexterity, Literacy and - Deaf/Hard of Hearing from your most familiar to least familiar. + Drag and Drop each of the three topics, Dyslexia, Color Blindness, and + Localization from your most familiar to least familiar.

    { colHeaderStyle="tw-m-1 tw-text-center tw-body-text tw-text-black" bankStyle="tw-flex tw-flex-col tw-gap-3 tw-w-full tw-p-3 tw-rounded-lg tw-bg-[#0144D5] tw-items-center tw-justify-center tw-h-full" bankCardStyle="tw-text-left tw-p-2 tw-w-[15rem] tw-h-[3.5rem] tw-rounded tw-shadow-sm tw-shadow-black tw-cursor-grab tw-text-black tw-text-sm tw-bg-white" - msgStyle={`${!success ? "tw-bg-error" : "tw-bg-success"} tw-p-4 tw-my-1 tw-text-white tw-rounded-md tw-mb-3`} + msgStyle={`${!success ? 'tw-bg-error' : 'tw-bg-success'} tw-p-4 tw-my-1 tw-text-white tw-rounded-md tw-mb-3`} cols={cols} setCols={setCols} initialBank={bank} diff --git a/client/src/components/exercise/lab13/pages/IDEExercise.js b/client/src/components/exercise/lab13/pages/IDEExercise.js index ef25560b6..5613284cf 100644 --- a/client/src/components/exercise/lab13/pages/IDEExercise.js +++ b/client/src/components/exercise/lab13/pages/IDEExercise.js @@ -1,10 +1,10 @@ -import React from "react"; -import CodeBlockInput from "src/components/all-components/CodeBlock/Components/CodeBlockInput"; -import { useLab13 } from "../Lab13Context"; -import Repair from "src/components/body/Repair/Repair"; -import PropTypes from "prop-types"; -import { startExercise } from "src/reducers/lab2/actions"; -import { navigate } from "@reach/router"; +import React from 'react'; +import CodeBlockInput from 'src/components/all-components/CodeBlock/Components/CodeBlockInput'; +import { useLab13 } from '../Lab13Context'; +import Repair from 'src/components/body/Repair/Repair'; +import PropTypes from 'prop-types'; +import { startExercise } from 'src/reducers/lab2/actions'; +import { navigate } from '@reach/router'; const IDEExercise = () => { const { @@ -15,36 +15,64 @@ const IDEExercise = () => { checkInputValid, fetchRepair, postRepair, + setShowConfidenceScore, + setShowCitations, + setDisclaimerMessage, + setCurrentPhase, + setTopicIndex, } = useLab13(); const handleContinue = () => { + if (!checkInputValid()) { + alert('Please complete all fields correctly before continuing.'); + return; + } + + // Save IDE settings to context + const disclaimerValue = exercisePromptsState.find( + (i) => i.id === 'disclaimer' + ).value; + const confidenceValue = exercisePromptsState.find( + (i) => i.id === 'confidence' + ).value; + const citationsValue = exercisePromptsState.find( + (i) => i.id === 'citations' + ).value; + + setDisclaimerMessage(disclaimerValue); + setShowConfidenceScore(!!confidenceValue); + setShowCitations(!!citationsValue); + + setCurrentPhase(4); + setTopicIndex(2); + startExercise(); - navigate("/Lab13/Exercise/PanelswithIDEFixes"); + navigate('/Lab13/Exercise/AIPanel'); }; const CodeBlock = React.useCallback( ({ inputs, userInput, validInputs, isFirst }) => (
    - function{" "} - addDisclaimers() {"{"} + function{' '} + addDisclaimers() {'{'}
    @@ -52,33 +80,33 @@ const IDEExercise = () => { "// Enter 'Disclaimer - ALL-IE's outputs can be wrong and should be double-checked.' below:" }
    - disclaimerText = " + disclaimerText = " i.id === "disclaimer").value} + value={inputs.find((i) => i.id === 'disclaimer').value} attributes={{ - type: "text", - onChange: (e) => userInput("disclaimer", e.target.value), - placeholder: "Enter Answer Here", - className: "tw-p-1 code_editor__input", + type: 'text', + onChange: (e) => userInput('disclaimer', e.target.value), + placeholder: 'Enter Answer Here', + className: 'tw-p-1 code_editor__input', style: { width: 400, - fontFamily: "monospace", - fontSize: "1em", - margin: "0 8px", + fontFamily: 'monospace', + fontSize: '1em', + margin: '0 8px', borderRadius: 4, border: validInputs.disclaimer === false && !isFirst - ? "1px solid #e00" - : "1px solid #888", - padding: "2px 6px", - background: "#333", - color: "lightsalmon", + ? '1px solid #e00' + : '1px solid #888', + padding: '2px 6px', + background: '#333', + color: 'lightsalmon', }, }} /> "; {validInputs.disclaimer === false && !isFirst && ( -
    +
    Please enter the correct disclaimer.
    )} @@ -86,40 +114,40 @@ const IDEExercise = () => {
    {"// Enter 'True' below:"}
    - showConfidenceScores = + showConfidenceScores = i.id === "confidence").value} + value={inputs.find((i) => i.id === 'confidence').value} attributes={{ - type: "text", - onChange: (e) => userInput("confidence", e.target.value), - placeholder: "Enter Answer Here", - className: "tw-p-1 code_editor__input", + type: 'text', + onChange: (e) => userInput('confidence', e.target.value), + placeholder: 'Enter Answer Here', + className: 'tw-p-1 code_editor__input', style: { width: 400, - fontFamily: "monospace", - fontSize: "1em", - margin: "0 8px", + fontFamily: 'monospace', + fontSize: '1em', + margin: '0 8px', borderRadius: 4, border: validInputs.confidence === false && !isFirst - ? "1px solid #e00" - : "1px solid #888", - padding: "2px 6px", - background: "#333", - color: "lightsalmon", + ? '1px solid #e00' + : '1px solid #888', + padding: '2px 6px', + background: '#333', + color: 'lightsalmon', }, }} /> {validInputs.confidence === false && !isFirst && ( -
    +
    Please enter "True".
    )} @@ -127,48 +155,48 @@ const IDEExercise = () => {
    {"// Enter 'True' below:"}
    - showCitations = + showCitations = i.id === "citations").value} + value={inputs.find((i) => i.id === 'citations').value} attributes={{ - type: "text", - onChange: (e) => userInput("citations", e.target.value), - placeholder: "Enter Answer Here", - className: "tw-p-1 code_editor__input", + type: 'text', + onChange: (e) => userInput('citations', e.target.value), + placeholder: 'Enter Answer Here', + className: 'tw-p-1 code_editor__input', style: { width: 400, - fontFamily: "monospace", - fontSize: "1em", - margin: "0 8px", + fontFamily: 'monospace', + fontSize: '1em', + margin: '0 8px', borderRadius: 4, border: validInputs.citations === false && !isFirst - ? "1px solid #e00" - : "1px solid #888", - padding: "2px 6px", - background: "#333", - color: "lightsalmon", + ? '1px solid #e00' + : '1px solid #888', + padding: '2px 6px', + background: '#333', + color: 'lightsalmon', }, }} /> {validInputs.citations === false && !isFirst && ( -
    +
    Please enter "True".
    )}
    -
    {"}"}
    +
    {'}'}
    ), - [], + [] ); CodeBlock.propTypes = { @@ -195,14 +223,14 @@ const IDEExercise = () => { { - const topic = biasQuestionsData.find((t) => t.id === topicId); - if (!topic) return []; + const topic = biasQuestionsData.find((t) => t.id === topicId); + if (!topic) return []; - return topic.questions.map((question) => ({ - id: question.id, - text: question.text, - answer: { - ...question.answers[biasType], - biasType, - }, - })); + return topic.questions.map((question) => ({ + id: question.id, + text: question.text, + answer: { + ...question.answers[biasType], + biasType, + }, + })); }; /** @@ -302,7 +329,7 @@ export const getQuestionsByBias = (topicId, biasType) => { * @returns {Object} Topic object with definition and questions */ export const getTopicById = (topicId) => { - return biasQuestionsData.find((t) => t.id === topicId); + return biasQuestionsData.find((t) => t.id === topicId); }; /** @@ -311,10 +338,10 @@ export const getTopicById = (topicId) => { * @returns {string} The bias type for that ranking position */ export const getBiasForRankingPosition = (rankPosition) => { - const biasMap = { - 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable - 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable - 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable - }; - return biasMap[rankPosition] || BIAS_TYPES.HALO_EFFECT; + const biasMap = { + 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable + 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable + 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable + }; + return biasMap[rankPosition] || BIAS_TYPES.HALO_EFFECT; }; From 3cf36e48ac9ba2a83c137a2a821c567c6d118a6a Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 6 Feb 2026 09:51:19 -0500 Subject: [PATCH 071/180] Update IDE-introduction text content --- .../exercise/lab13/pages/IDEIntroduction.js | 47 ++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/IDEIntroduction.js b/client/src/components/exercise/lab13/pages/IDEIntroduction.js index e266fd2f4..16750cace 100644 --- a/client/src/components/exercise/lab13/pages/IDEIntroduction.js +++ b/client/src/components/exercise/lab13/pages/IDEIntroduction.js @@ -1,19 +1,54 @@ -import { React } from "react"; -import { navigate } from "@reach/router"; -import LabButton from "src/components/all-components/LabButton"; +import { React } from 'react'; +import { navigate } from '@reach/router'; +import LabButton from 'src/components/all-components/LabButton'; const IDEIntroduction = () => { const handleContinue = () => { - navigate("/Lab13/Exercise/IDEExercise"); + navigate('/Lab13/Exercise/IDEExercise'); }; return (

    AI Cognitive Bias Repair

    - Let's tweak our AI chatbot to reduce the chances of a human - experiencing cognitive biases. + You just saw how confident wording, polished formatting, and technical + language can influence how trustworthy an AI response feels, even before + verifying it.

    +

    + In the real world, AI systems are designed with features that help + reduce overreliance and encourage critical thinking. Some of these + include: +

    + +
    +

    + + Confidence Scores: + {' '} + Show how certain the AI is about its response instead of presenting it + as absolute truth. +

    + +

    + + Citations: + {' '} + Provide traceable sources so users can verify claims. +

    + +

    + + Disclaimer Messages: + {' '} + Remind users that AI outputs may be incorrect or incomplete. +

    + +

    + AI doesn't have to feel authoritative to be useful. Now, + it's your turn to implement these safeguards! +

    +

    Click "Continue to Repair" to proceed! From b792a02051b1d30df73506f3899e43b1e9f981b5 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 6 Feb 2026 09:56:59 -0500 Subject: [PATCH 072/180] Update ALL-ie's introduction message for exercise phase 1 --- client/src/components/exercise/lab13/pages/AIPanel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 4cd97cb08..05500be3b 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -269,7 +269,7 @@ Although many cases are inherited, they can also develop later in life due to ey { id: 'greeting', sender: 'bot', - text: `Hi! I'm ALL-IE the AI, please choose your prompt on ${currentTopic.title}.`, + text: `Hi! I'm ALL-IE the AI. Thanks for ranking your familiarity with the topics. I'll start with the one you feel moderately confident about. Select a prompt below on ${currentTopic.title}.`, timestamp: new Date(), }, ]); From fbf7038de21067c635b2bca781440a8da4eb3ad4 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 6 Feb 2026 10:03:34 -0500 Subject: [PATCH 073/180] Fix hover effect over messages --- client/src/components/exercise/lab13/components/AIChatBot.js | 2 +- client/src/components/exercise/lab13/components/Avatar.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 6585bdf70..1d224ebb1 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -318,7 +318,7 @@ const AIChatBot = ({ disabled={!canSelectQuestion} className={`tw-w-full tw-text-left tw-px-4 tw-py-3 tw-text-black tw-text-sm tw-transition-all tw-duration-200 tw-rounded tw-border-none ${ canSelectQuestion - ? 'tw-bg-transparent hover:!tw-bg-blue-100 tw-cursor-pointer' + ? 'tw-bg-transparent hover:!tw-bg-bgwhite tw-cursor-pointer' : 'tw-cursor-not-allowed tw-opacity-50 tw-bg-transparent' }`} style={{ fontFamily: 'Calibri, sans-serif' }} diff --git a/client/src/components/exercise/lab13/components/Avatar.js b/client/src/components/exercise/lab13/components/Avatar.js index 3ff39ceb1..80ef4f001 100644 --- a/client/src/components/exercise/lab13/components/Avatar.js +++ b/client/src/components/exercise/lab13/components/Avatar.js @@ -19,6 +19,7 @@ const Avatar = ({ type, size = 40 }) => { fontWeight: 'bold', color: isAI ? 'white' : 'black', fontSize: size * 0.5, + border: '0.5px solid #9ABDDC', }} > {isAI ? ( @@ -38,9 +39,10 @@ const Avatar = ({ type, size = 40 }) => { fontWeight: 'bold', color: 'black', fontSize: size * 0.5, + }} > - 👤 + )}

    From 2daf02e4b2be54ea8336394ac1a5fda88461766f Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 6 Feb 2026 10:26:29 -0500 Subject: [PATCH 074/180] Update Conclusion page --- .../exercise/lab13/pages/Conclusion.js | 56 ++++++++++++++++--- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/Conclusion.js b/client/src/components/exercise/lab13/pages/Conclusion.js index 419179569..3fbd1e0f3 100644 --- a/client/src/components/exercise/lab13/pages/Conclusion.js +++ b/client/src/components/exercise/lab13/pages/Conclusion.js @@ -1,8 +1,9 @@ -import { React, useEffect } from "react"; -import useMainStateContext from "src/reducers/MainContext"; -import UserLabService from "../../../../services/UserLabService"; -import { EXERCISE_IDLE } from "src/constants/index"; -import { LAB_ID } from "../../../../constants/lab13"; +import { React, useEffect } from 'react'; +import useMainStateContext from 'src/reducers/MainContext'; +import UserLabService from '../../../../services/UserLabService'; +import { EXERCISE_IDLE } from 'src/constants/index'; +import { LAB_ID } from '../../../../constants/lab13'; +import LabButton from 'src/components/all-components/LabButton'; const Conclusion = () => { const { actions, state } = useMainStateContext(); @@ -13,7 +14,7 @@ const Conclusion = () => { if (state.main.user?.firstname !== null && state.main.user !== null) { await UserLabService.user_complete_exercise( state.main.user.userid, - LAB_ID, + LAB_ID ); } }; @@ -21,9 +22,46 @@ const Conclusion = () => { handleFinish(); }, []); return ( -
    - Conclusion Page - +
    +

    Conclusion

    +

    + Throughout this lab, you experienced how tone, formatting, confidence, + and technical language can shape how trustworthy AI feels, even before + verifying the information. +

    + +

    You saw how:

    +
      +
    • + Familiar phrasing can make incorrect claims feel true. +
    • +
    • + Professional wording can create an illusion of expertise. +
    • +
    • + Technical language can discourage questioning. +
    • +
    + +

    + These reactions reflect natural cognitive patterns that shape how we + interpret information and assess credibility. +

    + +

    + AI can generate fluent and confident responses, but it + does not understand, reason, or take responsibility. That + responsibility lies with the user. The most important safeguard is{' '} + AI literacy, the ability to recognize bias, question + outputs, and engage with AI thoughtfully! +

    +
    + +
    ); }; From 9d25be24a837feaad5a36211aac0b2212651d993 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 6 Feb 2026 10:46:16 -0500 Subject: [PATCH 075/180] Update bias explanation modal pop-up to show previous AI repsonse it's providing feedback on --- .../exercise/lab13/components/AIChatBot.js | 1 + .../exercise/lab13/components/Tab/Tabs.css | 2 +- .../exercise/lab13/pages/AIPanel.js | 39 +++++++++++++------ .../exercise/lab13/pages/Conclusion.js | 10 ++--- 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 1d224ebb1..0c0786aa6 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -144,6 +144,7 @@ const AIChatBot = ({ biasType: botObj?.biasType, biasDefinition: botObj?.biasDefinition, explanation: botObj?.explanation, + aiResponseText: botObj?.text, }; setIsThinking(true); diff --git a/client/src/components/exercise/lab13/components/Tab/Tabs.css b/client/src/components/exercise/lab13/components/Tab/Tabs.css index f7f534c0a..49ca2663e 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tabs.css +++ b/client/src/components/exercise/lab13/components/Tab/Tabs.css @@ -143,7 +143,7 @@ margin-top: -1px; box-shadow: 0 5px 6px rgba(0, 0, 0, 0.3); padding: 25px 30px 25px 25px; - height: calc(59vh); + height: calc(58vh); overflow-y: scroll; border-top: 10px solid white; border: solid white; diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 05500be3b..d18c757b1 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -417,8 +417,13 @@ Although many cases are inherited, they can also develop later in life due to ey ]); const handleAnswerSelected = useCallback( - (biasType, biasDefinition, explanation) => { - setSelectedBiasData({ biasType, biasDefinition, explanation }); + (biasType, biasDefinition, explanation, aiResponseText) => { + setSelectedBiasData({ + biasType, + biasDefinition, + explanation, + aiResponseText, + }); setShowRatingModal(true); }, [] @@ -535,7 +540,8 @@ Although many cases are inherited, they can also develop later in life due to ey handleAnswerSelected( currentAnswerData.biasType, currentAnswerData.biasDefinition, - currentAnswerData.explanation + currentAnswerData.explanation, + currentAnswerData.aiResponseText ) } className="tw-w-fit tw-bg-primary-blue hover:tw-bg-labBlue tw-text-white tw-font-bold tw-py-2 tw-px-6 tw-rounded-lg tw-transition-colors tw-duration-200" @@ -669,23 +675,34 @@ Although many cases are inherited, they can also develop later in life due to ey setShowTextModal={setShowBiasExplanation} textModalHeader={ biasDefinition ? ( -
    +
    {biasDefinition.name}
    ) : null } textModalBody={ selectedBiasData && biasDefinition ? ( -
    -
    -

    +

    + {selectedBiasData.aiResponseText && ( +
    + +

    + Given AI Response: + + "{selectedBiasData.aiResponseText}" + +

    +
    + )} +
    +

    {selectedBiasData.explanation}

    -
    -

    - Understanding {biasDefinition.name}: -

    +
    +
    + What is {biasDefinition.name}? +

    {biasDefinition.definition}

    diff --git a/client/src/components/exercise/lab13/pages/Conclusion.js b/client/src/components/exercise/lab13/pages/Conclusion.js index 3fbd1e0f3..1229b3e6c 100644 --- a/client/src/components/exercise/lab13/pages/Conclusion.js +++ b/client/src/components/exercise/lab13/pages/Conclusion.js @@ -3,7 +3,6 @@ import useMainStateContext from 'src/reducers/MainContext'; import UserLabService from '../../../../services/UserLabService'; import { EXERCISE_IDLE } from 'src/constants/index'; import { LAB_ID } from '../../../../constants/lab13'; -import LabButton from 'src/components/all-components/LabButton'; const Conclusion = () => { const { actions, state } = useMainStateContext(); @@ -56,11 +55,12 @@ const Conclusion = () => { outputs, and engage with AI thoughtfully!

    - + > + Complete +
    ); From a300ead934b50389ed3bf6046cd943537f0c5725 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Fri, 6 Feb 2026 10:58:35 -0500 Subject: [PATCH 076/180] Nav Bar font size/padding changes --- .../components/all-components/Lab/LabWindow.js | 6 +++--- .../all-components/Lab/NavigationPane.jsx | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/client/src/components/all-components/Lab/LabWindow.js b/client/src/components/all-components/Lab/LabWindow.js index 4230af858..77fbf21d5 100644 --- a/client/src/components/all-components/Lab/LabWindow.js +++ b/client/src/components/all-components/Lab/LabWindow.js @@ -46,12 +46,12 @@ const LabWindow = (props) => { {/* Nav Pane and Lab Window */}
    @@ -68,7 +68,7 @@ const LabWindow = (props) => {
    {children} diff --git a/client/src/components/all-components/Lab/NavigationPane.jsx b/client/src/components/all-components/Lab/NavigationPane.jsx index 58f890843..a60676cf9 100644 --- a/client/src/components/all-components/Lab/NavigationPane.jsx +++ b/client/src/components/all-components/Lab/NavigationPane.jsx @@ -76,17 +76,17 @@ const NavigationPane = (props) => { return (
    -
    +
    {/* Title Block */}
    -

    {props.title}

    +

    {props.title}

    {/* Table of Contents Block */}
    { "tw-flex tw-flex-col tw-justify-between tw-py-3 tw-border-solid tw-border-primary-yellow tw-bg-white tw-border-8 tw-border-l-0 tw-border-b-0 tw-rounded-tr-lg tw-z-10 tw-rounded-bl-lg tw-h-full tw-shadow-md" } > -
    +

    Table of Contents @@ -115,7 +115,7 @@ const NavigationPane = (props) => { >

    {

    {subTitle} From 012ceef3f77af5a693adab829951064b95deda85 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Mon, 9 Feb 2026 13:44:12 -0500 Subject: [PATCH 077/180] Adjusted Likert to be in all-components and updated the modal to use it. also ALL-Modal was adjusted to have default and a varying width --- .../src/components/all-components/ALLModal.js | 420 +++++++++--------- .../src/components/all-components/Likert.js | 41 ++ .../imagine-components/Likert.js | 39 -- .../imagine-components/Survey.js | 2 +- .../exercise/lab13/components/RatingModal.js | 307 +++++-------- 5 files changed, 371 insertions(+), 438 deletions(-) create mode 100644 client/src/components/all-components/Likert.js delete mode 100644 client/src/components/all-components/imagine-components/Likert.js diff --git a/client/src/components/all-components/ALLModal.js b/client/src/components/all-components/ALLModal.js index 3d1d2eb9c..2a84e83cf 100644 --- a/client/src/components/all-components/ALLModal.js +++ b/client/src/components/all-components/ALLModal.js @@ -26,229 +26,231 @@ import PropTypes from "prop-types"; * @returns {JSX.Element} - The modal component. */ const ALLModal = (props) => { - const { - show, - setShow, - status, - showStatusIcon, - failedStatusTitle, - customHeader, - customBody, - header, - statusTitle, - description, - customFooter, - showFooter, - primaryAction, - secondaryAction, - showHeader, - canClose, - canDismiss, - timeOutTime: startTime, - timeOutMessage, - } = props; + const { + show, + setShow, + status, + showStatusIcon, + failedStatusTitle, + customHeader, + customBody, + header, + statusTitle, + description, + customFooter, + showFooter, + primaryAction, + secondaryAction, + showHeader, + canClose, + canDismiss, + timeOutTime: startTime, + timeOutMessage, + width, + } = props; - const [seconds, updateSeconds] = useState(startTime); + const [seconds, updateSeconds] = useState(startTime); - const timer = useRef(null); + const timer = useRef(null); - useEffect(() => { - setTimeout(() => { - timer.current = setInterval(() => { - updateSeconds((prevSeconds) => prevSeconds - 1); - }, 1000); - }, 2000); - return () => { - clearInterval(timer.current); - timer.current = null; - }; - }, []); + useEffect(() => { + setTimeout(() => { + timer.current = setInterval(() => { + updateSeconds((prevSeconds) => prevSeconds - 1); + }, 1000); + }, 2000); + return () => { + clearInterval(timer.current); + timer.current = null; + }; + }, []); - useEffect(() => { - if (seconds === 0) { - clearInterval(timer.current); - timer.current = null; - setShow(false); - } - }, [seconds]); + useEffect(() => { + if (seconds === 0) { + clearInterval(timer.current); + timer.current = null; + setShow(false); + } + }, [seconds]); - { - /*Modal hook*/ - } - useEffect(() => { - show - ? (document.body.style.overflow = "hidden") - : (document.body.style.overflow = "unset"); - }, [show]); + { + /*Modal hook*/ + } + useEffect(() => { + show + ? (document.body.style.overflow = "hidden") + : (document.body.style.overflow = "unset"); + }, [show]); - return show ? ( -

    -
    { - canDismiss ? setShow(false) : () => {}; - }} - >
    -
    -
    - {/*Header*/} - {showHeader && ( - <> -
    - {customHeader ? ( - customHeader - ) : ( -
    -
    - {header} + return show ? ( +
    +
    { + canDismiss ? setShow(false) : () => { }; + }} + >
    +
    +
    + {/*Header*/} + {showHeader && ( + <> +
    + {customHeader ? ( + customHeader + ) : ( +
    +
    + {header} +
    + {canClose && ( + + )} +
    + )} +
    + {/*Border*/} +
    + + )} + {/*Body*/} +
    + {showStatusIcon && ( + <> + {status ? ( +
    + + + +
    + ) : ( +
    + + + +
    + )} + + )} +
    + {customBody ? ( + customBody + ) : ( +
    +

    + {status ? statusTitle : failedStatusTitle} +

    +

    + {description} +

    +
    + )} +
    - {canClose && ( - + {/*Timeout Timer*/} + {startTime && ( +
    +

    + {timeOutMessage ? timeOutMessage : "Closes in:"} +

    +

    + {seconds} seconds +

    +
    + )} + {/*Footer*/} + {showFooter && ( + <> + {/*Border*/} +
    +
    + {customFooter ? ( + customFooter + ) : ( +
    + + {secondaryAction && ( + + )} +
    + )} +
    + )} -
    - )} -
    - {/*Border*/} -
    - - )} - {/*Body*/} -
    - {showStatusIcon && ( - <> - {status ? ( -
    - - - -
    - ) : ( -
    - - - -
    - )} - - )} -
    - {customBody ? ( - customBody - ) : ( -
    -

    - {status ? statusTitle : failedStatusTitle} -

    -

    - {description} -

    - )} -
    -
    - {/*Timeout Timer*/} - {startTime && ( -
    -

    - {timeOutMessage ? timeOutMessage : "Closes in:"} -

    -

    - {seconds} seconds -

    - )} - {/*Footer*/} - {showFooter && ( - <> - {/*Border*/} -
    -
    - {customFooter ? ( - customFooter - ) : ( -
    - - {secondaryAction && ( - - )} -
    - )} -
    - - )}
    -
    -
    - ) : ( - "" - ); + ) : ( + "" + ); }; ALLModal.propTypes = { - show: PropTypes.bool.isRequired, - setShow: PropTypes.func.isRequired, - status: PropTypes.bool, - showStatusIcon: PropTypes.bool, - failedStatusTitle: PropTypes.string, - header: PropTypes.string, - statusTitle: PropTypes.string, - description: PropTypes.string, - customFooter: PropTypes.element, - customHeader: PropTypes.element, - customBody: PropTypes.element, - showFooter: PropTypes.bool, - showHeader: PropTypes.bool, - canClose: PropTypes.bool, - canDismiss: PropTypes.bool, - primaryAction: PropTypes.func, - secondaryAction: PropTypes.func, - timeOutTime: PropTypes.number, - timeOutMessage: PropTypes.string, + show: PropTypes.bool.isRequired, + setShow: PropTypes.func.isRequired, + status: PropTypes.bool, + showStatusIcon: PropTypes.bool, + failedStatusTitle: PropTypes.string, + header: PropTypes.string, + statusTitle: PropTypes.string, + description: PropTypes.string, + customFooter: PropTypes.element, + customHeader: PropTypes.element, + customBody: PropTypes.element, + showFooter: PropTypes.bool, + showHeader: PropTypes.bool, + canClose: PropTypes.bool, + canDismiss: PropTypes.bool, + primaryAction: PropTypes.func, + secondaryAction: PropTypes.func, + timeOutTime: PropTypes.number, + timeOutMessage: PropTypes.string, + width: PropTypes.string, }; export default ALLModal; diff --git a/client/src/components/all-components/Likert.js b/client/src/components/all-components/Likert.js new file mode 100644 index 000000000..6114fcddd --- /dev/null +++ b/client/src/components/all-components/Likert.js @@ -0,0 +1,41 @@ +import React from "react"; +import PropTypes from "prop-types"; + +const defaultOptions = [ + "Strongly Disagree", + "Disagree", + "Neutral", + "Agree", + "Strongly Agree", +]; + +const Likert = ({ options = defaultOptions, onAnswerSelected, name = "likert" }) => { + return ( +
    +
    + {options.map((value) => ( +
    +

    {value}

    + +
    + ))} +
    +
    + ); +}; + +Likert.propTypes = { + options: PropTypes.arrayOf(PropTypes.string), + onAnswerSelected: PropTypes.func.isRequired, + name: PropTypes.string, +}; + +export default Likert; diff --git a/client/src/components/all-components/imagine-components/Likert.js b/client/src/components/all-components/imagine-components/Likert.js deleted file mode 100644 index a1fe6ee95..000000000 --- a/client/src/components/all-components/imagine-components/Likert.js +++ /dev/null @@ -1,39 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -const Likert = (props) => { - const options = [ - "Strongly Disagree", - "Disagree", - "Neutral", - "Agree", - "Strongly Agree", - ]; - - return ( -
    -
    - {options.map((value) => ( -
    -

    {value}

    - -
    - ))} -
    -
    - ); -}; - -Likert.propTypes = { - onAnswerSelected: PropTypes.func.isRequired, -}; - -export default Likert; diff --git a/client/src/components/all-components/imagine-components/Survey.js b/client/src/components/all-components/imagine-components/Survey.js index 1130a35c4..6ae3e8857 100644 --- a/client/src/components/all-components/imagine-components/Survey.js +++ b/client/src/components/all-components/imagine-components/Survey.js @@ -2,7 +2,7 @@ import React, { useEffect, useState } from "react"; import PropTypes from "prop-types"; import QuestionCount from "../../quiz/components/QuestionCount"; import AnswerOption from "./AnswerOption"; -import Likert from "./Likert"; +import Likert from "../Likert"; import Avatar from "avataaars"; import ImagineService from "src/services/ImagineService"; import RankingQuestion from "./Ranking"; diff --git a/client/src/components/exercise/lab13/components/RatingModal.js b/client/src/components/exercise/lab13/components/RatingModal.js index e90b69295..f6f8398a8 100644 --- a/client/src/components/exercise/lab13/components/RatingModal.js +++ b/client/src/components/exercise/lab13/components/RatingModal.js @@ -1,207 +1,136 @@ import React, { useRef, useEffect } from 'react'; import PropTypes from 'prop-types'; import ALLModal from 'src/components/all-components/ALLModal'; +import Likert from 'src/components/all-components/Likert'; const optionsList = ['Very Low', 'Low', 'Medium', 'High', 'Very High']; const RatingModal = ({ - show, - setShow, - toneRating, - setToneRating, - confidenceRating, - setConfidenceRating, - onSubmit, - showTextModal, - setShowTextModal, - textModalHeader, - textModalBody, - onCloseTextModal, + show, + setShow, + toneRating, + setToneRating, + confidenceRating, + setConfidenceRating, + onSubmit, + showTextModal, + setShowTextModal, + textModalHeader, + textModalBody, + onCloseTextModal, }) => { - const firstModalRef = useRef(null); - // Control overlay when modals are shown - useEffect(() => { - if (show || showTextModal) { - document.body.style.overflow = 'hidden'; - } else { - document.body.style.overflow = 'unset'; - } - return () => { - document.body.style.overflow = 'unset'; - }; - }, [show, showTextModal]); - - const handleSubmit = () => { - if (!toneRating || !confidenceRating) { - alert('Please rate both factors before submitting.'); - return; - } - onSubmit(); - }; + const firstModalRef = useRef(null); + // Control overlay when modals are shown + useEffect(() => { + if (show || showTextModal) { + document.body.style.overflow = 'hidden'; + } else { + document.body.style.overflow = 'unset'; + } + return () => { + document.body.style.overflow = 'unset'; + }; + }, [show, showTextModal]); - return ( - <> -
    -
    - -
    - Rate each factor by its influence on your trust. -
    - -
    - } - showFooter={false} - customBody={ -
    -
    -
    Tone:
    -
    - - Low influence - - {optionsList.map((option) => { - const value = option.toLowerCase().replace(/ /g, '-'); - const selected = toneRating === value; - return ( - - ); - })} - - High influence - -
    - {toneRating && ( -
    - Tone selected:{' '} - - {optionsList.find( - (o) => - o.toLowerCase().replace(/ /g, '-') === toneRating - )} - -
    - )} -
    + const handleSubmit = () => { + if (!toneRating || !confidenceRating) { + alert('Please rate both factors before submitting.'); + return; + } + onSubmit(); + }; - {/* Confidence rating */} -
    -
    Confidence:
    + return ( + <> +
    +
    + +
    + Rate each factor by its influence on your trust. +
    + +
    + } + showFooter={false} + customBody={ +
    +
    +
    Tone:
    + setToneRating(e.target.value.toLowerCase().replace(/ /g, '-'))} /> +
    -
    - - Low influence - - {optionsList.map((option) => { - const value = option.toLowerCase().replace(/ /g, '-'); - const selected = confidenceRating === value; - return ( - - ); - })} - - High influence - -
    - {confidenceRating && ( -
    - Confidence selected:{' '} - - {optionsList.find( - (o) => - o.toLowerCase().replace(/ /g, '-') === - confidenceRating - )} - -
    - )} -
    -
    - +
    +
    Confidence:
    + setConfidenceRating(e.target.value.toLowerCase().replace(/ /g, '-'))} /> +
    +
    + +
    +
    + } + /> + + {textModalHeader} + +
    + } + showFooter={false} + customBody={textModalBody} + />
    -
    - } - /> - - {textModalHeader} - -
    - } - showFooter={false} - customBody={textModalBody} - /> -
    -
    - - ); +
    + + ); }; RatingModal.propTypes = { - show: PropTypes.bool.isRequired, - setShow: PropTypes.func.isRequired, - toneRating: PropTypes.string.isRequired, - setToneRating: PropTypes.func.isRequired, - confidenceRating: PropTypes.string.isRequired, - setConfidenceRating: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - showTextModal: PropTypes.bool.isRequired, - setShowTextModal: PropTypes.func.isRequired, - textModalHeader: PropTypes.node, - textModalBody: PropTypes.node, - onCloseTextModal: PropTypes.func.isRequired, + show: PropTypes.bool.isRequired, + setShow: PropTypes.func.isRequired, + toneRating: PropTypes.string.isRequired, + setToneRating: PropTypes.func.isRequired, + confidenceRating: PropTypes.string.isRequired, + setConfidenceRating: PropTypes.func.isRequired, + onSubmit: PropTypes.func.isRequired, + showTextModal: PropTypes.bool.isRequired, + setShowTextModal: PropTypes.func.isRequired, + textModalHeader: PropTypes.node, + textModalBody: PropTypes.node, + onCloseTextModal: PropTypes.func.isRequired, }; export default RatingModal; From e685a83f341d99b025dca63ba1059e64cd1f8220 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Mon, 9 Feb 2026 14:26:25 -0500 Subject: [PATCH 078/180] changing to a progressbar --- .../src/components/all-components/ProgressBar.js | 2 +- .../src/components/exercise/lab13/pages/AIPanel.js | 14 ++++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/client/src/components/all-components/ProgressBar.js b/client/src/components/all-components/ProgressBar.js index 409b120e3..035886b00 100644 --- a/client/src/components/all-components/ProgressBar.js +++ b/client/src/components/all-components/ProgressBar.js @@ -63,7 +63,7 @@ const ProgressBar = ({ return complete ? ( <> ) : ( -
    +
    {!disableTitle && (

    Time Remaining: {elapsed}

    )} diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index d18c757b1..5e7b1bafe 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -19,6 +19,7 @@ import { BIAS_DEFINITIONS, getTopicById, } from 'src/constants/lab13/BiasQuestionsConfig'; +import ProgressBar from 'src/components/all-components/ProgressBar'; const AIPanel = () => { const { @@ -576,11 +577,6 @@ Although many cases are inherited, they can also develop later in life due to ey
    {requireWikipedia && (
    - - {currentDisplayTime >= 15 - ? 'Duration completed' - : 'Time on page:'} - {currentDisplayTime >= 15 ? (
    @@ -591,9 +587,7 @@ Although many cases are inherited, they can also develop later in life due to ey
    ) : ( - - {currentDisplayTime}s - + )}
    )} @@ -685,11 +679,11 @@ Although many cases are inherited, they can also develop later in life due to ey
    {selectedBiasData.aiResponseText && (
    - +

    Given AI Response: - "{selectedBiasData.aiResponseText}" + "{selectedBiasData.aiResponseText}"

    From 375af561f13ae8b2f544d52163acfac7a55e6201 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Tue, 10 Feb 2026 13:00:03 -0500 Subject: [PATCH 079/180] Adjusted NavPane padding and text sizing; Removed subtitles on small screens; Removed internal scroll bar --- .../all-components/Lab/NavigationPane.jsx | 28 +++++++++++-------- client/src/components/footer/LabFooter.js | 6 ++-- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/client/src/components/all-components/Lab/NavigationPane.jsx b/client/src/components/all-components/Lab/NavigationPane.jsx index a60676cf9..f2ba3790b 100644 --- a/client/src/components/all-components/Lab/NavigationPane.jsx +++ b/client/src/components/all-components/Lab/NavigationPane.jsx @@ -76,33 +76,39 @@ const NavigationPane = (props) => { return (
    -
    +
    {/* Title Block */}
    -

    {props.title}

    +

    + {props.title} +

    {/* Table of Contents Block */}
    -
    +

    Table of Contents

    -
    +
    {sections.map(({ title, subTitle, section }) => { return ( { href={"#"} onClick={() => handleOnClick(section)} className={ - "tw-flex tw-flex-col tw-items-start tw-leading-snug tw-no-underline tw-body-text hover:tw-underline hover:tw-decoration-primary-blue hover:tw-decoration-2" + "tw-flex tw-flex-col tw-items-start tw-p-0 tw-leading-snug tw-no-underline tw-body-text hover:tw-underline hover:tw-decoration-primary-blue hover:tw-decoration-2" } >

    {

    {subTitle} diff --git a/client/src/components/footer/LabFooter.js b/client/src/components/footer/LabFooter.js index 58883fed3..41891cdaa 100644 --- a/client/src/components/footer/LabFooter.js +++ b/client/src/components/footer/LabFooter.js @@ -62,7 +62,7 @@ const LabFooter = (props) => { > {body > 0 && ( ) : (

    - {/* Show blob for most recent AI messages */} + {/* Show blob for most recent AI messages while its typing */} {msg.sender === 'bot' && index === messages.length - 1 && - !isTyping && ( + isTyping && (
    From 703873c7c53a07e24abfcd480a87be5c7eb014a4 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Wed, 11 Feb 2026 12:02:56 -0500 Subject: [PATCH 082/180] fixed bug --- client/src/components/exercise/lab13/pages/AIPanel.js | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 315f527b0..aed20f066 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -681,7 +681,6 @@ Although many cases are inherited, they can also develop later in life due to ey

    -

    Given AI Response: "{selectedBiasData.aiResponseText}" From 211bfb21f8576a159824d9c522f0c53fdac4a782 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 11 Feb 2026 12:55:29 -0500 Subject: [PATCH 083/180] Make the submit button and the done reading buttons lab buttons --- .../exercise/lab13/components/RatingModal.js | 234 +++++++++--------- 1 file changed, 116 insertions(+), 118 deletions(-) diff --git a/client/src/components/exercise/lab13/components/RatingModal.js b/client/src/components/exercise/lab13/components/RatingModal.js index f6f8398a8..7632b240d 100644 --- a/client/src/components/exercise/lab13/components/RatingModal.js +++ b/client/src/components/exercise/lab13/components/RatingModal.js @@ -2,135 +2,133 @@ import React, { useRef, useEffect } from 'react'; import PropTypes from 'prop-types'; import ALLModal from 'src/components/all-components/ALLModal'; import Likert from 'src/components/all-components/Likert'; +import LabButton from 'src/components/all-components/LabButton'; const optionsList = ['Very Low', 'Low', 'Medium', 'High', 'Very High']; const RatingModal = ({ - show, - setShow, - toneRating, - setToneRating, - confidenceRating, - setConfidenceRating, - onSubmit, - showTextModal, - setShowTextModal, - textModalHeader, - textModalBody, - onCloseTextModal, + show, + setShow, + toneRating, + setToneRating, + confidenceRating, + setConfidenceRating, + onSubmit, + showTextModal, + setShowTextModal, + textModalHeader, + textModalBody, + onCloseTextModal, }) => { - const firstModalRef = useRef(null); - // Control overlay when modals are shown - useEffect(() => { - if (show || showTextModal) { - document.body.style.overflow = 'hidden'; - } else { - document.body.style.overflow = 'unset'; - } - return () => { - document.body.style.overflow = 'unset'; - }; - }, [show, showTextModal]); + const firstModalRef = useRef(null); + // Control overlay when modals are shown + useEffect(() => { + if (show || showTextModal) { + document.body.style.overflow = 'hidden'; + } else { + document.body.style.overflow = 'unset'; + } + return () => { + document.body.style.overflow = 'unset'; + }; + }, [show, showTextModal]); - const handleSubmit = () => { - if (!toneRating || !confidenceRating) { - alert('Please rate both factors before submitting.'); - return; - } - onSubmit(); - }; + const handleSubmit = () => { + if (!toneRating || !confidenceRating) { + alert('Please rate both factors before submitting.'); + return; + } + onSubmit(); + }; - return ( - <> -

    -
    - -
    - Rate each factor by its influence on your trust. -
    - -
    - } - showFooter={false} - customBody={ -
    -
    -
    Tone:
    - setToneRating(e.target.value.toLowerCase().replace(/ /g, '-'))} /> -
    + return ( + <> +
    +
    + +
    + Rate each factor by its influence on your trust. +
    + +
    + } + showFooter={false} + customBody={ +
    +
    +
    Tone:
    + setToneRating(e.target.value.toLowerCase().replace(/ /g, '-'))} /> +
    -
    -
    Confidence:
    - setConfidenceRating(e.target.value.toLowerCase().replace(/ /g, '-'))} /> -
    -
    - -
    -
    - } - /> - - {textModalHeader} - -
    - } - showFooter={false} - customBody={textModalBody} - /> -
    -
    - - ); +
    +
    Confidence:
    + setConfidenceRating(e.target.value.toLowerCase().replace(/ /g, '-'))} /> +
    +
    + +
    +
    + } + /> + + {textModalHeader} +
    + } + showFooter={false} + customBody={ +
    + {textModalBody} + +
    + } + /> +
    +
    + + ); }; RatingModal.propTypes = { - show: PropTypes.bool.isRequired, - setShow: PropTypes.func.isRequired, - toneRating: PropTypes.string.isRequired, - setToneRating: PropTypes.func.isRequired, - confidenceRating: PropTypes.string.isRequired, - setConfidenceRating: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - showTextModal: PropTypes.bool.isRequired, - setShowTextModal: PropTypes.func.isRequired, - textModalHeader: PropTypes.node, - textModalBody: PropTypes.node, - onCloseTextModal: PropTypes.func.isRequired, + show: PropTypes.bool.isRequired, + setShow: PropTypes.func.isRequired, + toneRating: PropTypes.string.isRequired, + setToneRating: PropTypes.func.isRequired, + confidenceRating: PropTypes.string.isRequired, + setConfidenceRating: PropTypes.func.isRequired, + onSubmit: PropTypes.func.isRequired, + showTextModal: PropTypes.bool.isRequired, + setShowTextModal: PropTypes.func.isRequired, + textModalHeader: PropTypes.node, + textModalBody: PropTypes.node, + onCloseTextModal: PropTypes.func.isRequired, }; export default RatingModal; From 02725a96a7d136956db5eaa7cfc07f33b7d4b0a9 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 12 Feb 2026 11:19:37 -0500 Subject: [PATCH 084/180] Prevented width from shrinking on search; Used Form element to allow pressing enter to search --- client/src/pages/labspage/LabsPage.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 016fb99e3..a62358b02 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -288,7 +288,7 @@ const LabsPage = (props) => {

    Labs

    -
    + { }} /> -
    +
    From cd68d6b4f7abb5e28767d3fd734e56d4579b9e15 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Fri, 13 Feb 2026 14:58:44 -0500 Subject: [PATCH 089/180] made modular profile picture component --- .../src/components/all-components/UserPfp.js | 31 +++++++++++++++++++ .../body/profilepage/ProfileHeader.js | 7 ++--- .../exercise/lab13/components/Avatar.js | 5 +-- client/src/components/header/header.js | 14 ++------- client/src/constants/lab13/AvatarType.js | 4 +++ 5 files changed, 42 insertions(+), 19 deletions(-) create mode 100644 client/src/components/all-components/UserPfp.js create mode 100644 client/src/constants/lab13/AvatarType.js diff --git a/client/src/components/all-components/UserPfp.js b/client/src/components/all-components/UserPfp.js new file mode 100644 index 000000000..ff5dcc0cf --- /dev/null +++ b/client/src/components/all-components/UserPfp.js @@ -0,0 +1,31 @@ +import useMainStateContext from "src/reducers/MainContext"; +import PropTypes from "prop-types"; + +// User profile picture circle +const UserPfp = ({ onClick }) => { + const { state } = useMainStateContext(); + const user = state.main.user; + if (!user) { + return null; // or a default avatar + } + + return ( +
    + ); +}; + +UserPfp.propTypes = { + onClick: PropTypes.func +}; + +export default UserPfp; diff --git a/client/src/components/body/profilepage/ProfileHeader.js b/client/src/components/body/profilepage/ProfileHeader.js index c158a474f..7adab69c2 100644 --- a/client/src/components/body/profilepage/ProfileHeader.js +++ b/client/src/components/body/profilepage/ProfileHeader.js @@ -1,5 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; +import UserPfp from "src/components/all-components/UserPfp"; const ProfileHeader = (props) => { const { user } = props; @@ -27,11 +28,7 @@ const ProfileHeader = (props) => { tw-border-primary-yellow tw-z-[1rem] tw-flex tw-flex-row tw-overflow-hidden" > {user?.userpfp ? ( - {`${user.firstname}'s + ) : (
    {children} From bba26ac228d4d255b7437f29bf873061526dfd32 Mon Sep 17 00:00:00 2001 From: Owen Luts Date: Tue, 17 Feb 2026 12:40:57 -0500 Subject: [PATCH 093/180] lined up about, reading and reinforcement --- client/src/components/body/About.js | 9 +++------ client/src/components/body/Reading/Reading.js | 14 +++++--------- client/src/components/body/Reinforcement.js | 12 +++++------- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/client/src/components/body/About.js b/client/src/components/body/About.js index 22c06abb5..cd8023850 100644 --- a/client/src/components/body/About.js +++ b/client/src/components/body/About.js @@ -31,12 +31,9 @@ const About = (props) => { return (
    -
    -
    -

    - {" "} - About This Lab -

    +
    +
    +

    About This Lab

    {aboutText?.about}

    diff --git a/client/src/components/body/Reading/Reading.js b/client/src/components/body/Reading/Reading.js index 20bc8d656..518f44719 100644 --- a/client/src/components/body/Reading/Reading.js +++ b/client/src/components/body/Reading/Reading.js @@ -118,17 +118,13 @@ const Reading = (props) => { return (
    -

    - Reading -

    +

    Reading

    -
    +
    {readingData?.description !== "" ? ( <>

    {readingData?.description.header}

    diff --git a/client/src/components/body/Reinforcement.js b/client/src/components/body/Reinforcement.js index 5d21ae13f..6845c65c3 100644 --- a/client/src/components/body/Reinforcement.js +++ b/client/src/components/body/Reinforcement.js @@ -28,13 +28,11 @@ const Reinforcement = (props) => { } return ( -
    -

    Reinforcement

    -
    -

    - Here is some supplemental material to reinforce the topic. -

    -
    +
    +

    Reinforcement

    +

    + Here is some supplemental material to reinforce the topic. +

    {reinforcement.map((data, index) => { return ( From 92b8b23f3c62ce7b3e64b50dc33793d7def7626c Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Tue, 17 Feb 2026 18:03:51 -0500 Subject: [PATCH 094/180] regex matching function for which parts to highlight. mapping created for which text to highlight --- .../exercise/lab13/pages/AIPanel.js | 1456 +++++++++-------- 1 file changed, 775 insertions(+), 681 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index aed20f066..3a011eb53 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -1,11 +1,11 @@ import { - React, - useContext, - useMemo, - useState, - useCallback, - useEffect, - useRef, + React, + useContext, + useMemo, + useState, + useCallback, + useEffect, + useRef, } from 'react'; import { startExercise } from 'src/reducers/lab2/actions'; import { navigate } from '@reach/router'; @@ -15,707 +15,801 @@ import { Tab } from '../components/Tab/Tab'; import RatingModal from '../components/RatingModal'; import ExerciseStateContext from '../Lab13Context'; import { - BIAS_TYPES, - BIAS_DEFINITIONS, - getTopicById, + BIAS_TYPES, + BIAS_DEFINITIONS, + getTopicById, } from 'src/constants/lab13/BiasQuestionsConfig'; import ProgressBar from 'src/components/all-components/ProgressBar'; const AIPanel = () => { - const { - rankingColumns, - chatMessages, - setChatMessages, - hasVisitedWikipedia, - setHasVisitedWikipedia, - currentPhase, - setCurrentPhase, - showConfidenceScore, - showCitations, - disclaimerMessage, - askedQuestions, - setAskedQuestions, - topicIndex, - setTopicIndex, - wikipediaAccumulatedTime, - setWikipediaAccumulatedTime, - wikipediaSessionStart, - setWikipediaSessionStart, - } = useContext(ExerciseStateContext); - - const [showRatingModal, setShowRatingModal] = useState(false); - const [showBiasExplanation, setShowBiasExplanation] = useState(false); - const [selectedBiasData, setSelectedBiasData] = useState(null); - const [currentAnswerData, setCurrentAnswerData] = useState(null); - const [isBotTyping, setIsBotTyping] = useState(false); - const [isBotThinking, setIsBotThinking] = useState(false); - const [toneRating, setToneRating] = useState(''); - const [confidenceRating, setConfidenceRating] = useState(''); - const [questionAnswered, setQuestionAnswered] = useState(false); - const [activeTab, setActiveTab] = useState('AIChatBot'); - const [currentDisplayTime, setCurrentDisplayTime] = useState(0); - const phase4IntroAddedRef = useRef(false); - - const BIAS_POSITION_MAP = { - 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable - 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable - 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable - }; - - // Get all three topics in order: medium, most, least - const getOrderedTopics = useMemo(() => { - if (!rankingColumns?.length) return []; - - const topics = []; - // Medium knowledgeable (index 1) - Halo Effect - if (rankingColumns[1]?.cards?.length > 0) { - topics.push({ - id: rankingColumns[1].cards[0].id, - biasPosition: 1, - title: rankingColumns[1].cards[0].title, - }); - } - // Most knowledgeable (index 0) - Truth Bias - if (rankingColumns[0]?.cards?.length > 0) { - topics.push({ - id: rankingColumns[0].cards[0].id, - biasPosition: 0, - title: rankingColumns[0].cards[0].title, - }); - } - // Least knowledgeable (index 2) - Dunning-Kruger - if (rankingColumns[2]?.cards?.length > 0) { - topics.push({ - id: rankingColumns[2].cards[0].id, - biasPosition: 2, - title: rankingColumns[2].cards[0].title, - }); - } - - return topics; - }, [rankingColumns]); - - const currentTopic = getOrderedTopics[topicIndex] || null; - const activeTopic = currentTopic?.id || null; - const activeBias = - BIAS_POSITION_MAP[currentTopic?.biasPosition] || BIAS_TYPES.HALO_EFFECT; - const topicData = getTopicById(activeTopic); - - // Display Wikipedia based on current phase - const showWikipediaTab = topicIndex >= 1; - const requireWikipedia = topicIndex === 2; - - // Wikipedia time tracking with interval - useEffect(() => { - let intervalId; - - if (activeTab === 'ALLpedia' && showWikipediaTab) { - // Mark as visited - setHasVisitedWikipedia(true); - - // Start new session if not already started - if (!wikipediaSessionStart) { - setWikipediaSessionStart(Date.now()); - } - - intervalId = setInterval(() => { - if (wikipediaSessionStart) { - const sessionElapsed = Math.floor( - (Date.now() - wikipediaSessionStart) / 1000 - ); - const total = wikipediaAccumulatedTime + sessionElapsed; - setCurrentDisplayTime(total); - - // Stop at 15 seconds - if (total >= 15) { - clearInterval(intervalId); - } + const { + rankingColumns, + chatMessages, + setChatMessages, + hasVisitedWikipedia, + setHasVisitedWikipedia, + currentPhase, + setCurrentPhase, + showConfidenceScore, + showCitations, + disclaimerMessage, + askedQuestions, + setAskedQuestions, + topicIndex, + setTopicIndex, + wikipediaAccumulatedTime, + setWikipediaAccumulatedTime, + wikipediaSessionStart, + setWikipediaSessionStart, + } = useContext(ExerciseStateContext); + + const [showRatingModal, setShowRatingModal] = useState(false); + const [showBiasExplanation, setShowBiasExplanation] = useState(false); + const [selectedBiasData, setSelectedBiasData] = useState(null); + const [currentAnswerData, setCurrentAnswerData] = useState(null); + const [isBotTyping, setIsBotTyping] = useState(false); + const [isBotThinking, setIsBotThinking] = useState(false); + const [toneRating, setToneRating] = useState(''); + const [confidenceRating, setConfidenceRating] = useState(''); + const [questionAnswered, setQuestionAnswered] = useState(false); + const [activeTab, setActiveTab] = useState('AIChatBot'); + const [currentDisplayTime, setCurrentDisplayTime] = useState(0); + const [currentQuestion, setCurrentQuestion] = useState(null); + const phase4IntroAddedRef = useRef(false); + + const BIAS_POSITION_MAP = { + 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable + 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable + 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable + }; + + // Get all three topics in order: medium, most, least + const getOrderedTopics = useMemo(() => { + if (!rankingColumns?.length) return []; + + const topics = []; + // Medium knowledgeable (index 1) - Halo Effect + if (rankingColumns[1]?.cards?.length > 0) { + topics.push({ + id: rankingColumns[1].cards[0].id, + biasPosition: 1, + title: rankingColumns[1].cards[0].title, + }); + } + // Most knowledgeable (index 0) - Truth Bias + if (rankingColumns[0]?.cards?.length > 0) { + topics.push({ + id: rankingColumns[0].cards[0].id, + biasPosition: 0, + title: rankingColumns[0].cards[0].title, + }); } - }, 100); - } else { - // Leaving Wikipedia tab ensure you save the time - if (wikipediaSessionStart) { - const sessionElapsed = Math.floor( - (Date.now() - wikipediaSessionStart) / 1000 + // Least knowledgeable (index 2) - Dunning-Kruger + if (rankingColumns[2]?.cards?.length > 0) { + topics.push({ + id: rankingColumns[2].cards[0].id, + biasPosition: 2, + title: rankingColumns[2].cards[0].title, + }); + } + + return topics; + }, [rankingColumns]); + + const currentTopic = getOrderedTopics[topicIndex] || null; + const activeTopic = currentTopic?.id || null; + const activeBias = + BIAS_POSITION_MAP[currentTopic?.biasPosition] || BIAS_TYPES.HALO_EFFECT; + const topicData = getTopicById(activeTopic); + + // Display Wikipedia based on current phase + const showWikipediaTab = topicIndex >= 1; + const requireWikipedia = topicIndex === 2; + + // Wikipedia time tracking with interval + useEffect(() => { + let intervalId; + + if (activeTab === 'ALLpedia' && showWikipediaTab) { + // Mark as visited + setHasVisitedWikipedia(true); + + // Start new session if not already started + if (!wikipediaSessionStart) { + setWikipediaSessionStart(Date.now()); + } + + intervalId = setInterval(() => { + if (wikipediaSessionStart) { + const sessionElapsed = Math.floor( + (Date.now() - wikipediaSessionStart) / 1000 + ); + const total = wikipediaAccumulatedTime + sessionElapsed; + setCurrentDisplayTime(total); + + // Stop at 15 seconds + if (total >= 15) { + clearInterval(intervalId); + } + } + }, 100); + } else { + // Leaving Wikipedia tab ensure you save the time + if (wikipediaSessionStart) { + const sessionElapsed = Math.floor( + (Date.now() - wikipediaSessionStart) / 1000 + ); + setWikipediaAccumulatedTime((prev) => prev + sessionElapsed); + setWikipediaSessionStart(null); + } + // Keep displaying the accumulated time + setCurrentDisplayTime(wikipediaAccumulatedTime); + } + + return () => { + if (intervalId) clearInterval(intervalId); + }; + }, [ + activeTab, + showWikipediaTab, + wikipediaSessionStart, + wikipediaAccumulatedTime, + setHasVisitedWikipedia, + setWikipediaAccumulatedTime, + setWikipediaSessionStart, + ]); + + const getWikipediaTimeSpent = useCallback(() => { + return currentDisplayTime; + }, [currentDisplayTime]); + + // Filter questions for round 4 to only show unasked questions + const getAvailableQuestions = useMemo(() => { + if (!topicData?.questions) return []; + + if (currentPhase === 4) { + // Phase 4, show only unasked questions from current topic + console.log('Phase 4 - Topic:', activeTopic); + console.log('Phase 4 - All questions:', topicData.questions.length); + console.log('Asked questions:', askedQuestions); + + const available = topicData.questions + .map((q, index) => ({ ...q, originalIndex: index })) + .filter((q) => { + const questionKey = `${activeTopic}-${q.originalIndex}`; + return !askedQuestions.includes(questionKey); + }) + .slice(0, 2); // Only first 2 unasked + + console.log('Available questions:', available.length); + return available; + } + + // All other phases, show all questions with originalIndex + return topicData.questions.map((q, index) => ({ + ...q, + originalIndex: index, + })); + }, [currentPhase, topicData, askedQuestions, activeTopic]); + + // Switch to Wikipedia tab on citation click + const handleCitationClick = useCallback(() => { + setActiveTab('ALLpedia'); + }, []); + + // Track when a question is asked + const handleQuestionAsked = useCallback( + (questionIndex) => { + const questionKey = `${activeTopic}-${questionIndex}`; + setCurrentQuestion(questionIndex); + + setAskedQuestions((prev) => { + if (!prev.includes(questionKey)) { + console.log( + 'Tracking question:', + questionKey, + 'Phase:', + currentPhase + ); + return [...prev, questionKey]; + } + return prev; + }); + }, + [currentPhase, setAskedQuestions, activeTopic] + ); + + // Helper function to parse text and highlight specific patterns + const renderTextWithHighlight = (text, highlightPatterns = []) => { + if (!text || !highlightPatterns.length) return text; + + // Combine all patterns into one regex on a single pass + const sortedPatterns = [...highlightPatterns].sort((a, b) => b.length - a.length); + const escapedPatterns = sortedPatterns.map(p => + p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') ); - setWikipediaAccumulatedTime((prev) => prev + sessionElapsed); - setWikipediaSessionStart(null); - } - // Keep displaying the accumulated time - setCurrentDisplayTime(wikipediaAccumulatedTime); - } - - return () => { - if (intervalId) clearInterval(intervalId); + const combinedPattern = escapedPatterns.map(p => `(${p})`).join('|'); + const regex = new RegExp(combinedPattern, 'gi'); + + // Split once - capturing groups make matches return at odd indices + const segments = text.split(regex); + let keyCounter = 0; + + return segments.map((segment, i) => { + // Odd indices are matches (from capturing groups) + if (i % 2 === 1 && segment) { + return {segment}; + } + return segment; + }); }; - }, [ - activeTab, - showWikipediaTab, - wikipediaSessionStart, - wikipediaAccumulatedTime, - setHasVisitedWikipedia, - setWikipediaAccumulatedTime, - setWikipediaSessionStart, - ]); - - const getWikipediaTimeSpent = useCallback(() => { - return currentDisplayTime; - }, [currentDisplayTime]); - - // Filter questions for round 4 to only show unasked questions - const getAvailableQuestions = useMemo(() => { - if (!topicData?.questions) return []; - - if (currentPhase === 4) { - // Phase 4, show only unasked questions from current topic - console.log('Phase 4 - Topic:', activeTopic); - console.log('Phase 4 - All questions:', topicData.questions.length); - console.log('Asked questions:', askedQuestions); - - const available = topicData.questions - .map((q, index) => ({ ...q, originalIndex: index })) - .filter((q) => { - const questionKey = `${activeTopic}-${q.originalIndex}`; - return !askedQuestions.includes(questionKey); - }) - .slice(0, 2); // Only first 2 unasked - - console.log('Available questions:', available.length); - return available; - } - - // All other phases, show all questions with originalIndex - return topicData.questions.map((q, index) => ({ - ...q, - originalIndex: index, - })); - }, [currentPhase, topicData, askedQuestions, activeTopic]); - - // Switch to Wikipedia tab on citation click - const handleCitationClick = useCallback(() => { - setActiveTab('ALLpedia'); - }, []); - - // Track when a question is asked - const handleQuestionAsked = useCallback( - (questionIndex) => { - const questionKey = `${activeTopic}-${questionIndex}`; - - setAskedQuestions((prev) => { - if (!prev.includes(questionKey)) { - console.log( - 'Tracking question:', - questionKey, - 'Phase:', - currentPhase - ); - return [...prev, questionKey]; - } - return prev; - }); - }, - [currentPhase, setAskedQuestions, activeTopic] - ); - - // Get Wikipedia content based on topic - const getWikipediaContent = (topicId) => { - const content = { - localization: { - title: 'Localization', - text: `Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references. + + // Get highlights based on current answer data, topic, and question + const getAnswerDataHighlights = () => { + if (!currentAnswerData || currentQuestion === null) return []; + + const highlightMap = { + localization: { + 0: { + TRUTH_BIAS: ['Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references'], + HALO_EFFECT: ['adapting information or communication to align with the cultural, linguistic, and social expectations'], + DUNNING_KRUGER: ['context', 'examples', 'cultural references'], + }, + 1: { + TRUTH_BIAS: ['does not involve physical changes, such as changing clothing materials for climate'], + HALO_EFFECT: ['using local currency', 'changing date formats'], + DUNNING_KRUGER: ['However, modifying language or tone to fit different social settings can be considered a form of cultural localization'], + }, + 2: { + TRUTH_BIAS: ['modifying language or tone to fit different social settings can be considered a form of cultural localization'], + HALO_EFFECT: ['adapting information or communication', 'cultural, linguistic, and social expectations'], + DUNNING_KRUGER: ['context', 'examples', 'cultural references'], + }, + }, + colorblindness: { + 0: { + TRUTH_BIAS: ['inherited through the X chromosome'], + HALO_EFFECT: ['The most common type, red-green color blindness'], + DUNNING_KRUGER: ['inherited through the X chromosome'], + }, + 1: { + TRUTH_BIAS: ['People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades'], + HALO_EFFECT: ['may have difficulty distinguishing between certain shades'], + DUNNING_KRUGER: ['difficulty distinguishing between certain shades'], + }, + 2: { + TRUTH_BIAS: ['develop later in life due to eye disease, injury, aging, or certain medications'], + HALO_EFFECT: ['Although many cases are inherited, they can also develop later in life'], + DUNNING_KRUGER: ['eye disease, injury, aging, or certain medications'], + }, + }, + dyslexia: { + 0: { + TRUTH_BIAS: ['It is not a vision problem'], + HALO_EFFECT: ['does not affect intelligence'], + DUNNING_KRUGER: ['neurological learning disability'], + }, + 1: { + TRUTH_BIAS: ['not how letters visually appear', 'connecting written letters to spoken sounds'], + HALO_EFFECT: ['may have difficulty connecting written letters to spoken sounds'], + DUNNING_KRUGER: ['People with dyslexia may have difficulty'], + }, + 2: { + TRUTH_BIAS: ['cannot be cured', 'early intervention, structured reading instruction, and classroom accommodations'], + HALO_EFFECT: ['effectively supported through early intervention'], + DUNNING_KRUGER: ['Dyslexia cannot be cured'], + }, + }, + }; + + const topicKey = activeTopic?.toLowerCase(); + const biasType = currentAnswerData.biasType; + + return highlightMap[topicKey]?.[currentQuestion]?.[biasType] || []; + }; + + // Get Wikipedia content based on topic + const getWikipediaContent = (topicId) => { + const content = { + localization: { + title: 'Localization', + text: `Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references. This may include using local currency or changing date formats, but it does not involve physical changes, such as changing clothing materials for climate. However, modifying language or tone to fit different social settings can be considered a form of cultural localization.`, - sources: [ - 'https://resources.gala-global.org/accessibility-localization/', - 'https://www.vistatec.com/localization-for-all-advancing-accessibility-and-inclusion-in-a-globalized-world/', - ], - imageUrl: - 'https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?w=400', // Placeholder - }, - colorblindness: { - title: 'Color Blindness', - text: `Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. + sources: [ + 'https://resources.gala-global.org/accessibility-localization/', + 'https://www.vistatec.com/localization-for-all-advancing-accessibility-and-inclusion-in-a-globalized-world/', + ], + imageUrl: + 'https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?w=400', // Placeholder + }, + colorblindness: { + title: 'Color Blindness', + text: `Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. Although many cases are inherited, they can also develop later in life due to eye disease, injury, aging, or certain medications. Complete color blindness is rare and should not be assumed.`, - sources: [ - 'https://www.colourblindawareness.org/colour-blindness/', - 'https://www.nei.nih.gov/eye-health-information/eye-conditions-and-diseases/color-blindness', - ], - imageUrl: - 'https://images.unsplash.com/photo-1584036561566-baf8f5f1b144?w=400', // Placeholder - }, - dyslexia: { - title: 'Dyslexia', - text: `Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. + sources: [ + 'https://www.colourblindawareness.org/colour-blindness/', + 'https://www.nei.nih.gov/eye-health-information/eye-conditions-and-diseases/color-blindness', + ], + imageUrl: + 'https://images.unsplash.com/photo-1584036561566-baf8f5f1b144?w=400', // Placeholder + }, + dyslexia: { + title: 'Dyslexia', + text: `Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. Dyslexia cannot be cured, but it can be effectively supported through early intervention, structured reading instruction, and classroom accommodations.`, - sources: [ - 'https://dyslexiaida.org/definition-of-dyslexia/', - 'https://www.losdschools.org/student-services/dyslexia-handbook/definition-of-dyslexia', - ], - imageUrl: - 'https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=400', // Placeholder - }, + sources: [ + 'https://dyslexiaida.org/definition-of-dyslexia/', + 'https://www.losdschools.org/student-services/dyslexia-handbook/definition-of-dyslexia', + ], + imageUrl: + 'https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=400', // Placeholder + }, + }; + + return content[topicId?.toLowerCase()] || content.localization; }; - return content[topicId?.toLowerCase()] || content.localization; - }; + const wikipediaContent = getWikipediaContent(activeTopic); - const wikipediaContent = getWikipediaContent(activeTopic); - - // Initialize first exercise chat with the ALLie greeting - useEffect(() => { - if (chatMessages.length === 0 && currentTopic) { - setChatMessages([ - { - id: 'greeting', - sender: 'bot', - text: `Hi! I'm ALL-IE the AI. Thanks for ranking your familiarity with the topics. I'll start with the one you feel moderately confident about. Select a prompt below on ${currentTopic.title}.`, - timestamp: new Date(), - }, - ]); - setCurrentPhase(1); - } - }, [currentTopic, chatMessages.length, setChatMessages, setCurrentPhase]); - - // Initialize phase 4 after IDE fixes - useEffect(() => { - if (currentPhase === 4 && currentTopic) { - console.log('Phase 4 Init - Topic Index:', topicIndex); - console.log('Phase 4 Init - Current Topic:', currentTopic); - console.log('Phase 4 Init - Topic Position:', currentTopic.biasPosition); - - // Reset Wikipedia tracking for Phase 4 - if (!phase4IntroAddedRef.current) { - setHasVisitedWikipedia(false); - setWikipediaAccumulatedTime(0); - setWikipediaSessionStart(null); - setCurrentDisplayTime(0); - } - - // Enusure we're on the least knowledgeable topic - if (currentTopic.biasPosition !== 2) { - console.warn('Phase 4 should be on least topic! Forcing to index 2'); - setTopicIndex(2); - return; - } - - // Add intro message once - if (!phase4IntroAddedRef.current && chatMessages.length > 0) { - const lastMessage = chatMessages[chatMessages.length - 1]; - const phase4IntroText = `Great! Now that you've implemented your IDE fixes, let's see the difference in your interaction. You must review the ALLpedia page for at least 15 seconds before proceeding. Select a prompt for ${currentTopic.title}.`; - - if ( - lastMessage.text !== phase4IntroText && - !lastMessage.text.includes('implemented your IDE fixes') - ) { - setQuestionAnswered(false); - phase4IntroAddedRef.current = true; - - setTimeout(() => { - setChatMessages((prev) => [ - ...prev, - { - id: 'phase4-intro', - sender: 'bot', - text: phase4IntroText, - timestamp: new Date(), - }, - ]); - }, 500); - } - } - } - }, [ - currentPhase, - currentTopic, - topicIndex, - chatMessages.length, - setChatMessages, - setHasVisitedWikipedia, - setWikipediaAccumulatedTime, - setWikipediaSessionStart, - setTopicIndex, - ]); - - // Add transitions with instructional messages from ALL-ie - const handleBiasExplanationClose = useCallback(() => { - setShowBiasExplanation(false); - setShowRatingModal(false); - - setTimeout(() => { - setSelectedBiasData(null); - setCurrentAnswerData(null); - setToneRating(''); - setConfidenceRating(''); - setQuestionAnswered(false); - setActiveTab('AIChatBot'); - - setTimeout(() => { - setTopicIndex((prevIndex) => { - const nextIndex = prevIndex + 1; - - if (nextIndex >= getOrderedTopics.length && currentPhase < 4) { - setTimeout(() => { - startExercise(); - navigate('/Lab13/Exercise/IDEIntroduction'); - }, 300); - return prevIndex; - } - - if (currentPhase === 4) { - phase4IntroAddedRef.current = false; - setTimeout(() => { - startExercise(); - navigate('/Lab13/Exercise/Conclusion'); - }, 300); - return prevIndex; - } - - // Reset Wikipedia tracking for new phase - setHasVisitedWikipedia(false); - setWikipediaAccumulatedTime(0); - setWikipediaSessionStart(null); - setCurrentDisplayTime(0); - setCurrentPhase(nextIndex + 1); - - const nextTopic = getOrderedTopics[nextIndex]; - if (nextTopic) { - setTimeout(() => { - let transitionText = ''; - if (nextIndex === 1) { - transitionText = `Onto part ${nextIndex + 1}. This time you have access to the ALLpedia page to fact-check the AI on ${nextTopic.title}. Select a prompt for ${nextTopic.title}.`; - } else if (nextIndex === 2) { - transitionText = `Onto part ${nextIndex + 1}. You must review the ALLpedia page for at least 15 seconds before proceeding. Select a prompt for ${nextTopic.title}.`; - } else { - transitionText = `Onto part ${nextIndex + 1}. Select a prompt for ${nextTopic.title}.`; - } - - setChatMessages((prev) => [ - ...prev, + // Initialize first exercise chat with the ALLie greeting + useEffect(() => { + if (chatMessages.length === 0 && currentTopic) { + setChatMessages([ { - id: `transition-${nextIndex}`, - sender: 'bot', - text: transitionText, - timestamp: new Date(), + id: 'greeting', + sender: 'bot', + text: `Hi! I'm ALL-IE the AI. Thanks for ranking your familiarity with the topics. I'll start with the one you feel moderately confident about. Select a prompt below on ${currentTopic.title}.`, + timestamp: new Date(), }, - ]); - }, 800); - } + ]); + setCurrentPhase(1); + } + }, [currentTopic, chatMessages.length, setChatMessages, setCurrentPhase]); + + // Initialize phase 4 after IDE fixes + useEffect(() => { + if (currentPhase === 4 && currentTopic) { + console.log('Phase 4 Init - Topic Index:', topicIndex); + console.log('Phase 4 Init - Current Topic:', currentTopic); + console.log('Phase 4 Init - Topic Position:', currentTopic.biasPosition); + + // Reset Wikipedia tracking for Phase 4 + if (!phase4IntroAddedRef.current) { + setHasVisitedWikipedia(false); + setWikipediaAccumulatedTime(0); + setWikipediaSessionStart(null); + setCurrentDisplayTime(0); + } - return nextIndex; - }); - }, 200); - }, 100); - }, [ - getOrderedTopics, - setChatMessages, - setHasVisitedWikipedia, - setWikipediaAccumulatedTime, - setWikipediaSessionStart, - setCurrentPhase, - currentPhase, - ]); - - const handleAnswerSelected = useCallback( - (biasType, biasDefinition, explanation, aiResponseText) => { - setSelectedBiasData({ - biasType, - biasDefinition, - explanation, - aiResponseText, - }); - setShowRatingModal(true); - }, - [] - ); - - const handleRatingSubmit = useCallback(() => { - setShowRatingModal(false); - setShowBiasExplanation(true); - }, []); - - // Check if ai review button should be enabled - const canReviewResponse = useMemo(() => { - if (!currentAnswerData || isBotTyping || isBotThinking || showRatingModal) { - return false; - } - - // Phase 3 and 4 require Wikipedia visit for 15 or more seconds - if (requireWikipedia) { - return hasVisitedWikipedia && getWikipediaTimeSpent() >= 15; - } - - return true; - }, [ - currentAnswerData, - isBotTyping, - isBotThinking, - showRatingModal, - requireWikipedia, - hasVisitedWikipedia, - getWikipediaTimeSpent, - ]); - - const biasDefinition = selectedBiasData - ? BIAS_DEFINITIONS[selectedBiasData.biasType] - : null; - - const handleAnswerDataChange = useCallback((data) => { - setCurrentAnswerData(data); - setQuestionAnswered(true); - }, []); - - return ( -
    - {/* Full-screen overlay when modal is shown */} - {(showRatingModal || showBiasExplanation) && ( -
    - )} - - {activeTopic && topicData && ( - <> -
    - - -
    -
    - ({ - id: index + 1, - text: q.text, - originalIndex: - q.originalIndex !== undefined - ? q.originalIndex - : index, - }))} - fixedAIResponse={getAvailableQuestions.map((q, index) => { - return { - id: index + 1, - text: q.answers[activeBias].text, - isCorrect: q.answers[activeBias].isCorrect, - explanation: q.answers[activeBias].explanation, - biasType: activeBias, - biasDefinition: BIAS_DEFINITIONS[activeBias], - confidence: q.answers[activeBias].confidence || 93, - }; - })} - onAnswerDataChange={handleAnswerDataChange} - onTypingChange={setIsBotTyping} - onThinkingChange={setIsBotThinking} - messages={chatMessages} - setMessages={setChatMessages} - canSelectQuestion={!questionAnswered} - showConfidenceScore={ - currentPhase === 4 && showConfidenceScore - } - showCitations={currentPhase === 4 && showCitations} - disclaimerMessage={ - currentPhase === 4 ? disclaimerMessage : '' - } - onCitationClick={handleCitationClick} - onQuestionAsked={handleQuestionAsked} - /> -
    -
    - {/* Wikipedia requirement warning for phase 3 */} - {requireWikipedia && - !canReviewResponse && - currentAnswerData && ( -
    - {!hasVisitedWikipedia - ? 'Visit the ALLpedia tab before reviewing' - : `Please spend ${15 - getWikipediaTimeSpent()} more seconds on ALLpedia`} -
    - )} - - {canReviewResponse && ( - - )} -
    -
    -
    - - {/* ALLpedia Tab, from phase 2 onwards */} - {showWikipediaTab && ( - -
    - {/* Header with Title and Timer */} -
    -
    - {/* Left: Empty spacer for balance */} -
    - {/* Empty div for grid balance */} -
    - - {/* Title */} -
    -

    - {wikipediaContent.title} -

    -
    - - {/* Timer */} -
    - {requireWikipedia && ( -
    - {currentDisplayTime >= 15 ? ( -
    - - ✓ - - - Complete - + > + + +
    +
    + ({ + id: index + 1, + text: q.text, + originalIndex: + q.originalIndex !== undefined + ? q.originalIndex + : index, + }))} + fixedAIResponse={getAvailableQuestions.map((q, index) => { + return { + id: index + 1, + text: q.answers[activeBias].text, + isCorrect: q.answers[activeBias].isCorrect, + explanation: q.answers[activeBias].explanation, + biasType: activeBias, + biasDefinition: BIAS_DEFINITIONS[activeBias], + confidence: q.answers[activeBias].confidence || 93, + }; + })} + onAnswerDataChange={handleAnswerDataChange} + onTypingChange={setIsBotTyping} + onThinkingChange={setIsBotThinking} + messages={chatMessages} + setMessages={setChatMessages} + canSelectQuestion={!questionAnswered} + showConfidenceScore={ + currentPhase === 4 && showConfidenceScore + } + showCitations={currentPhase === 4 && showCitations} + disclaimerMessage={ + currentPhase === 4 ? disclaimerMessage : '' + } + onCitationClick={handleCitationClick} + onQuestionAsked={handleQuestionAsked} + /> +
    +
    + {/* Wikipedia requirement warning for phase 3 */} + {requireWikipedia && + !canReviewResponse && + currentAnswerData && ( +
    + {!hasVisitedWikipedia + ? 'Visit the ALLpedia tab before reviewing' + : `Please spend ${15 - getWikipediaTimeSpent()} more seconds on ALLpedia`} +
    + )} + + {canReviewResponse && ( + + )} +
    - ) : ( - - )} -
    - )} -
    -
    - - {/* Subtitle */} -

    - Use this resource to fact-check ALL-IE's responses -

    + + + {/* ALLpedia Tab, from phase 2 onwards */} + {showWikipediaTab && ( + +
    + {/* Header with Title and Timer */} +
    +
    + {/* Left: Empty spacer for balance */} +
    + {/* Empty div for grid balance */} +
    + + {/* Title */} +
    +

    + {wikipediaContent.title} +

    +
    + + {/* Timer */} +
    + {requireWikipedia && ( +
    + {currentDisplayTime >= 15 ? ( +
    + + ✓ + + + Complete + +
    + ) : ( + + )} +
    + )} +
    +
    + + {/* Subtitle */} +

    + Use this resource to fact-check ALL-IE's responses +

    +
    + + {/* Text on left and image on right */} +
    +
    + {/* Left: Text Content */} +
    +
    + {wikipediaContent.text + .split('\n\n') + .map((paragraph, index) => ( +

    + {renderTextWithHighlight( + paragraph, + getAnswerDataHighlights() + )} +

    + ))} +
    +
    + + {/* Image */} +
    + {wikipediaContent.title} +
    +
    + + {/* Sources at bottom */} +
    +

    + Sources: +

    +
      + {wikipediaContent.sources.map((source, index) => ( +
    • + + {source} + +
    • + ))} +
    +
    +
    +
    +
    + )} +
    - {/* Text on left and image on right */} -
    -
    - {/* Left: Text Content */} -
    -
    - {wikipediaContent.text - .split('\n\n') - .map((paragraph, index) => ( -

    - {paragraph} -

    - ))} -
    -
    - - {/* Image */} -
    - {wikipediaContent.title} -
    -
    - - {/* Sources at bottom */} -
    -

    - Sources: -

    -
      - {wikipediaContent.sources.map((source, index) => ( -
    • - - {source} - -
    • - ))} -
    -
    -
    -
    - - )} - -
    - - - {biasDefinition.name} -
    - ) : null - } - textModalBody={ - selectedBiasData && biasDefinition ? ( -
    - {selectedBiasData.aiResponseText && ( -
    - -

    - Given AI Response: - - "{selectedBiasData.aiResponseText}" - -

    -
    - )} -
    -

    - {selectedBiasData.explanation} + + {biasDefinition.name} +

    + ) : null + } + textModalBody={ + selectedBiasData && biasDefinition ? ( +
    + {selectedBiasData.aiResponseText && ( +
    + +

    + Given AI Response: + + "{selectedBiasData.aiResponseText}" + +

    +
    + )} +
    +

    + {selectedBiasData.explanation} +

    +
    +
    +
    + What is {biasDefinition.name}? +
    +

    {biasDefinition.definition}

    +
    +
    + ) : null + } + onCloseTextModal={handleBiasExplanationClose} + /> + + )} + + {!activeTopic && ( +
    +

    + Please complete the ranking to see questions.

    -
    -
    -
    - What is {biasDefinition.name}? -
    -

    {biasDefinition.definition}

    -
    - ) : null - } - onCloseTextModal={handleBiasExplanationClose} - /> - - )} - - {!activeTopic && ( -
    -

    - Please complete the ranking to see questions. -

    + )}
    - )} -
    - ); + ); }; export default AIPanel; From 9a926d83aa542c78d8bc1c977b2e278c08ae28e4 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 18 Feb 2026 12:02:26 -0500 Subject: [PATCH 095/180] removed console.logs --- .../src/components/exercise/lab13/pages/AIPanel.js | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 3a011eb53..baddf99d6 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -169,9 +169,6 @@ const AIPanel = () => { if (currentPhase === 4) { // Phase 4, show only unasked questions from current topic - console.log('Phase 4 - Topic:', activeTopic); - console.log('Phase 4 - All questions:', topicData.questions.length); - console.log('Asked questions:', askedQuestions); const available = topicData.questions .map((q, index) => ({ ...q, originalIndex: index })) @@ -181,7 +178,6 @@ const AIPanel = () => { }) .slice(0, 2); // Only first 2 unasked - console.log('Available questions:', available.length); return available; } @@ -205,12 +201,6 @@ const AIPanel = () => { setAskedQuestions((prev) => { if (!prev.includes(questionKey)) { - console.log( - 'Tracking question:', - questionKey, - 'Phase:', - currentPhase - ); return [...prev, questionKey]; } return prev; @@ -372,9 +362,6 @@ Although many cases are inherited, they can also develop later in life due to ey // Initialize phase 4 after IDE fixes useEffect(() => { if (currentPhase === 4 && currentTopic) { - console.log('Phase 4 Init - Topic Index:', topicIndex); - console.log('Phase 4 Init - Current Topic:', currentTopic); - console.log('Phase 4 Init - Topic Position:', currentTopic.biasPosition); // Reset Wikipedia tracking for Phase 4 if (!phase4IntroAddedRef.current) { @@ -386,7 +373,6 @@ Although many cases are inherited, they can also develop later in life due to ey // Enusure we're on the least knowledgeable topic if (currentTopic.biasPosition !== 2) { - console.warn('Phase 4 should be on least topic! Forcing to index 2'); setTopicIndex(2); return; } From 8b8b4ea610e2607b30f216c1a60d71bb06b20c78 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 18 Feb 2026 12:26:54 -0500 Subject: [PATCH 096/180] moving the highlight mappings to constants --- .../exercise/lab13/pages/AIPanel.js | 57 +------------------ .../src/constants/lab13/HighlightsMapping.js | 53 +++++++++++++++++ 2 files changed, 55 insertions(+), 55 deletions(-) create mode 100644 client/src/constants/lab13/HighlightsMapping.js diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index baddf99d6..4a8130254 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -19,6 +19,7 @@ import { BIAS_DEFINITIONS, getTopicById, } from 'src/constants/lab13/BiasQuestionsConfig'; +import { HIGHLIGHTS_MAPPING } from 'src/constants/lab13/HighlightsMapping'; import ProgressBar from 'src/components/all-components/ProgressBar'; const AIPanel = () => { @@ -238,64 +239,10 @@ const AIPanel = () => { const getAnswerDataHighlights = () => { if (!currentAnswerData || currentQuestion === null) return []; - const highlightMap = { - localization: { - 0: { - TRUTH_BIAS: ['Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references'], - HALO_EFFECT: ['adapting information or communication to align with the cultural, linguistic, and social expectations'], - DUNNING_KRUGER: ['context', 'examples', 'cultural references'], - }, - 1: { - TRUTH_BIAS: ['does not involve physical changes, such as changing clothing materials for climate'], - HALO_EFFECT: ['using local currency', 'changing date formats'], - DUNNING_KRUGER: ['However, modifying language or tone to fit different social settings can be considered a form of cultural localization'], - }, - 2: { - TRUTH_BIAS: ['modifying language or tone to fit different social settings can be considered a form of cultural localization'], - HALO_EFFECT: ['adapting information or communication', 'cultural, linguistic, and social expectations'], - DUNNING_KRUGER: ['context', 'examples', 'cultural references'], - }, - }, - colorblindness: { - 0: { - TRUTH_BIAS: ['inherited through the X chromosome'], - HALO_EFFECT: ['The most common type, red-green color blindness'], - DUNNING_KRUGER: ['inherited through the X chromosome'], - }, - 1: { - TRUTH_BIAS: ['People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades'], - HALO_EFFECT: ['may have difficulty distinguishing between certain shades'], - DUNNING_KRUGER: ['difficulty distinguishing between certain shades'], - }, - 2: { - TRUTH_BIAS: ['develop later in life due to eye disease, injury, aging, or certain medications'], - HALO_EFFECT: ['Although many cases are inherited, they can also develop later in life'], - DUNNING_KRUGER: ['eye disease, injury, aging, or certain medications'], - }, - }, - dyslexia: { - 0: { - TRUTH_BIAS: ['It is not a vision problem'], - HALO_EFFECT: ['does not affect intelligence'], - DUNNING_KRUGER: ['neurological learning disability'], - }, - 1: { - TRUTH_BIAS: ['not how letters visually appear', 'connecting written letters to spoken sounds'], - HALO_EFFECT: ['may have difficulty connecting written letters to spoken sounds'], - DUNNING_KRUGER: ['People with dyslexia may have difficulty'], - }, - 2: { - TRUTH_BIAS: ['cannot be cured', 'early intervention, structured reading instruction, and classroom accommodations'], - HALO_EFFECT: ['effectively supported through early intervention'], - DUNNING_KRUGER: ['Dyslexia cannot be cured'], - }, - }, - }; - const topicKey = activeTopic?.toLowerCase(); const biasType = currentAnswerData.biasType; - return highlightMap[topicKey]?.[currentQuestion]?.[biasType] || []; + return HIGHLIGHTS_MAPPING[topicKey]?.[currentQuestion]?.[biasType] || []; }; // Get Wikipedia content based on topic diff --git a/client/src/constants/lab13/HighlightsMapping.js b/client/src/constants/lab13/HighlightsMapping.js new file mode 100644 index 000000000..5956baad4 --- /dev/null +++ b/client/src/constants/lab13/HighlightsMapping.js @@ -0,0 +1,53 @@ +export const HIGHLIGHTS_MAPPING = { + localization: { + 0: { + TRUTH_BIAS: ['Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references'], + HALO_EFFECT: ['adapting information or communication to align with the cultural, linguistic, and social expectations'], + DUNNING_KRUGER: ['context', 'examples', 'cultural references'], + }, + 1: { + TRUTH_BIAS: ['does not involve physical changes, such as changing clothing materials for climate'], + HALO_EFFECT: ['using local currency', 'changing date formats'], + DUNNING_KRUGER: ['However, modifying language or tone to fit different social settings can be considered a form of cultural localization'], + }, + 2: { + TRUTH_BIAS: ['modifying language or tone to fit different social settings can be considered a form of cultural localization'], + HALO_EFFECT: ['adapting information or communication', 'cultural, linguistic, and social expectations'], + DUNNING_KRUGER: ['context', 'examples', 'cultural references'], + }, + }, + colorblindness: { + 0: { + TRUTH_BIAS: ['inherited through the X chromosome'], + HALO_EFFECT: ['The most common type, red-green color blindness'], + DUNNING_KRUGER: ['inherited through the X chromosome'], + }, + 1: { + TRUTH_BIAS: ['People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades'], + HALO_EFFECT: ['may have difficulty distinguishing between certain shades'], + DUNNING_KRUGER: ['difficulty distinguishing between certain shades'], + }, + 2: { + TRUTH_BIAS: ['develop later in life due to eye disease, injury, aging, or certain medications'], + HALO_EFFECT: ['Although many cases are inherited, they can also develop later in life'], + DUNNING_KRUGER: ['eye disease, injury, aging, or certain medications'], + }, + }, + dyslexia: { + 0: { + TRUTH_BIAS: ['It is not a vision problem'], + HALO_EFFECT: ['does not affect intelligence'], + DUNNING_KRUGER: ['neurological learning disability'], + }, + 1: { + TRUTH_BIAS: ['not how letters visually appear', 'connecting written letters to spoken sounds'], + HALO_EFFECT: ['may have difficulty connecting written letters to spoken sounds'], + DUNNING_KRUGER: ['People with dyslexia may have difficulty'], + }, + 2: { + TRUTH_BIAS: ['cannot be cured', 'early intervention, structured reading instruction, and classroom accommodations'], + HALO_EFFECT: ['effectively supported through early intervention'], + DUNNING_KRUGER: ['Dyslexia cannot be cured'], + }, + }, +}; From b02344149900492a5f51ecd181194eb9847af686 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Wed, 18 Feb 2026 12:33:46 -0500 Subject: [PATCH 097/180] not sure --- .github/workflows/biweekly-pr.yaml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/biweekly-pr.yaml diff --git a/.github/workflows/biweekly-pr.yaml b/.github/workflows/biweekly-pr.yaml new file mode 100644 index 000000000..a92ef4f2a --- /dev/null +++ b/.github/workflows/biweekly-pr.yaml @@ -0,0 +1,28 @@ +name: "Scheduled PR: dev to prod" + +on: + schedule: + # Runs at 00:00 UTC on Monday and Thursday + - cron: '0 0 * * 1,4' + workflow_dispatch: + +jobs: + create-pull-request: + runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: read + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Create Pull Request + run: | + gh pr create \ + --base prod \ + --head dev \ + --title "Scheduled Merge: dev to prod" \ + --body "Automated PR created by GitHub Actions on a semi-weekly schedule." \ + || echo "PR already exists or no changes to merge" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 5393f32ffc1f68b191cc41fdb7328044dafd3d6b Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 19 Feb 2026 13:20:33 -0500 Subject: [PATCH 098/180] Added filter button to toggle filtering; Added topic and difficulty radio buttons; Refactored search logic to allow combined searches --- client/src/pages/labspage/LabsPage.js | 342 +++++++++++++------------- 1 file changed, 174 insertions(+), 168 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 5da45ffc3..0be2bb3ca 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -15,16 +15,6 @@ import Student from "../../assets/images/stockImages/LookingAtComputer.png"; import Girl from "../../assets/images/stockImages/Girl1.png"; import LandingSection from "../../components/all-components/LandingSection"; import UserService from "../../services/UserService"; -import { - ACCESSIBILITY, - AI_MACHINE_LEARNING, - ALL_LABS, - QUANTUM, - DIFFICULTY_1, - DIFFICULTY_2, - DIFFICULTY_3, - TUTORIALS, -} from "../../constants/labs"; import { EXPLORE_LABS_BODY, EXPLORE_LABS_TITLE, @@ -133,9 +123,30 @@ const LabsPage = (props) => { }; const [displayedLabs, setDisplayedLabs] = useState(new Map()); - const [selectedSearch, setSelectedSearch] = useState("ALL_LABS"); const [textSearch, setTextSearch] = useState(""); + const [showFilter, setShowFilter] = useState(false); + const [selectedTopic, setSelectedTopic] = useState(null); + const [selectedDifficulty, setSelectedDifficulty] = useState(null); + + const applyFilters = ( + topic = selectedTopic, + difficulty = selectedDifficulty, + text = textSearch, + ) => { + let filtered = new Map(labInformation); + if (topic && labInformation.has(topic)) { + filtered = new Map([[topic, labInformation.get(topic)]]); + } + if (difficulty !== null) { + filtered = labsByDifficulty(filtered, difficulty); + } + if (text.trim() !== "") { + filtered = labsBySearchPhrase(filtered, text); + } + setDisplayedLabs(filtered); + }; + const getMyLabs = async () => { if (loggedIn) { const allLabs = await LabService.getAllLabs(); @@ -157,65 +168,13 @@ const LabsPage = (props) => { }; useEffect(() => { - const tempMap = new Map(); - - switch (selectedSearch) { - case ALL_LABS: - setDisplayedLabs(new Map(labInformation)); - break; - case AI_MACHINE_LEARNING: - if (labInformation.has("AI")) { - tempMap.set("AI", labInformation.get("AI")); - setDisplayedLabs(tempMap); - } - break; - case ACCESSIBILITY: - if (labInformation.has("Accessibility")) { - tempMap.set("Accessibility", labInformation.get("Accessibility")); - setDisplayedLabs(tempMap); - } - break; - case QUANTUM: - if (labInformation.has("Quantum Computing")) { - tempMap.set( - "Quantum Computing", - labInformation.get("Quantum Computing"), - ); - setDisplayedLabs(tempMap); - } - break; - case DIFFICULTY_1: - setDisplayedLabs(labsByDifficulty(labInformation, 1)); - break; - case DIFFICULTY_2: - setDisplayedLabs(labsByDifficulty(labInformation, 2)); - break; - case DIFFICULTY_3: - setDisplayedLabs(labsByDifficulty(labInformation, 3)); - break; - case TUTORIALS: - if (labInformation.has("Tutorials")) { - tempMap.set("Tutorials", labInformation.get("Tutorials")); - setDisplayedLabs(tempMap); - } - break; - default: - setDisplayedLabs(labInformation); - } + setDisplayedLabs(new Map(labInformation)); getMyLabs(); - }, [labInformation, selectedSearch]); - - const handleSearchChange = (search) => { - setSelectedSearch(search); - }; + }, [labInformation]); const handleSearchTextChange = (search) => { setTextSearch(search); - setDisplayedLabs(labsBySearchPhrase(labInformation, search)); - }; - - const handleSearch = () => { - setDisplayedLabs(labsBySearchPhrase(labInformation, textSearch)); + applyFilters(selectedTopic, selectedDifficulty, search); }; const loggedIn = @@ -289,117 +248,164 @@ const LabsPage = (props) => {

    Labs

    -
    - { - handleSearchTextChange(e.target.value); - }} - /> +
    +
    + { + handleSearchTextChange(e.target.value); + }} + /> +
    - -
    - - - - - - - -
    + {showFilter && ( +
    { + e.preventDefault(); + applyFilters(); }} + className="tw-p-6 tw-mt-5 tw-space-y-4 tw-w-[90%] tw-max-w-[800px] tw-text-left tw-rounded-md tw-shadow-md" > - Tutorials - -
    +
    +

    Filter

    + +
    +
    +

    Topic

    +
    +
    + {[ + { + id: "accessibility", + label: "Accessibility", + value: "Accessibility", + }, + { + id: "ai_ml", + label: "AI / Machine Learning", + value: "AI", + }, + { + id: "quantum", + label: "Quantum", + value: "Quantum Computing", + }, + { + id: "tutorial", + label: "Tutorial", + value: "Tutorials", + }, + ].map((option) => ( + + ))} +
    +
    +
    +

    Difficulty

    +
    +
    + {[1, 2, 3].map((level) => ( + + ))} +
    +
    +
    + + +
    + + )}
    {Array.from(displayedLabs.entries()) From 554733b653418e57ba33f25958e8e0a0955d114b Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 19 Feb 2026 13:33:00 -0500 Subject: [PATCH 099/180] Small styling changes --- client/src/pages/labspage/LabsPage.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 0be2bb3ca..88ccfd19c 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -376,6 +376,7 @@ const LabsPage = (props) => { tw-border tw-border-solid tw-border-primary-yellow tw-font-bold tw-transition + hover:tw-bg-primary-yellow peer-checked:tw-bg-primary-yellow peer-checked:tw-text-black " @@ -399,7 +400,7 @@ const LabsPage = (props) => { From 7412d02b07eaa52d719662bd5d6c7c25b0437d4d Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 19 Feb 2026 13:59:52 -0500 Subject: [PATCH 100/180] Small styling change with x button --- client/src/pages/labspage/LabsPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 88ccfd19c..98493d44c 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -298,7 +298,7 @@ const LabsPage = (props) => { tw-text-black tw-bg-transparent tw-rounded-4xl tw-border-0 tw-flex tw-w-10 tw-h-10 - tw-items-center tw-justify-center" + tw-items-center tw-justify-end" aria-label="Escape Button" > ×{" "} From fc80e6cbe7f7b735812737f5ee61851d891f6ca9 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Mon, 23 Feb 2026 11:50:43 -0500 Subject: [PATCH 101/180] Reapplied 1232 changes --- .../exercise/lab13/pages/AIPanel.js | 1533 +++++++++-------- 1 file changed, 831 insertions(+), 702 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 4a8130254..b08a94149 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -1,11 +1,11 @@ import { - React, - useContext, - useMemo, - useState, - useCallback, - useEffect, - useRef, + React, + useContext, + useMemo, + useState, + useCallback, + useEffect, + useRef, } from 'react'; import { startExercise } from 'src/reducers/lab2/actions'; import { navigate } from '@reach/router'; @@ -15,734 +15,863 @@ import { Tab } from '../components/Tab/Tab'; import RatingModal from '../components/RatingModal'; import ExerciseStateContext from '../Lab13Context'; import { - BIAS_TYPES, - BIAS_DEFINITIONS, - getTopicById, + BIAS_TYPES, + BIAS_DEFINITIONS, + getTopicById, } from 'src/constants/lab13/BiasQuestionsConfig'; import { HIGHLIGHTS_MAPPING } from 'src/constants/lab13/HighlightsMapping'; import ProgressBar from 'src/components/all-components/ProgressBar'; const AIPanel = () => { - const { - rankingColumns, - chatMessages, - setChatMessages, - hasVisitedWikipedia, - setHasVisitedWikipedia, - currentPhase, - setCurrentPhase, - showConfidenceScore, - showCitations, - disclaimerMessage, - askedQuestions, - setAskedQuestions, - topicIndex, - setTopicIndex, - wikipediaAccumulatedTime, - setWikipediaAccumulatedTime, - wikipediaSessionStart, - setWikipediaSessionStart, - } = useContext(ExerciseStateContext); - - const [showRatingModal, setShowRatingModal] = useState(false); - const [showBiasExplanation, setShowBiasExplanation] = useState(false); - const [selectedBiasData, setSelectedBiasData] = useState(null); - const [currentAnswerData, setCurrentAnswerData] = useState(null); - const [isBotTyping, setIsBotTyping] = useState(false); - const [isBotThinking, setIsBotThinking] = useState(false); - const [toneRating, setToneRating] = useState(''); - const [confidenceRating, setConfidenceRating] = useState(''); - const [questionAnswered, setQuestionAnswered] = useState(false); - const [activeTab, setActiveTab] = useState('AIChatBot'); - const [currentDisplayTime, setCurrentDisplayTime] = useState(0); - const [currentQuestion, setCurrentQuestion] = useState(null); - const phase4IntroAddedRef = useRef(false); - - const BIAS_POSITION_MAP = { - 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable - 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable - 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable - }; - - // Get all three topics in order: medium, most, least - const getOrderedTopics = useMemo(() => { - if (!rankingColumns?.length) return []; - - const topics = []; - // Medium knowledgeable (index 1) - Halo Effect - if (rankingColumns[1]?.cards?.length > 0) { - topics.push({ - id: rankingColumns[1].cards[0].id, - biasPosition: 1, - title: rankingColumns[1].cards[0].title, - }); - } - // Most knowledgeable (index 0) - Truth Bias - if (rankingColumns[0]?.cards?.length > 0) { - topics.push({ - id: rankingColumns[0].cards[0].id, - biasPosition: 0, - title: rankingColumns[0].cards[0].title, - }); - } - // Least knowledgeable (index 2) - Dunning-Kruger - if (rankingColumns[2]?.cards?.length > 0) { - topics.push({ - id: rankingColumns[2].cards[0].id, - biasPosition: 2, - title: rankingColumns[2].cards[0].title, - }); - } - - return topics; - }, [rankingColumns]); - - const currentTopic = getOrderedTopics[topicIndex] || null; - const activeTopic = currentTopic?.id || null; - const activeBias = - BIAS_POSITION_MAP[currentTopic?.biasPosition] || BIAS_TYPES.HALO_EFFECT; - const topicData = getTopicById(activeTopic); - - // Display Wikipedia based on current phase - const showWikipediaTab = topicIndex >= 1; - const requireWikipedia = topicIndex === 2; - - // Wikipedia time tracking with interval - useEffect(() => { - let intervalId; - - if (activeTab === 'ALLpedia' && showWikipediaTab) { - // Mark as visited - setHasVisitedWikipedia(true); - - // Start new session if not already started - if (!wikipediaSessionStart) { - setWikipediaSessionStart(Date.now()); - } + const { + rankingColumns, + chatMessages, + setChatMessages, + hasVisitedWikipedia, + setHasVisitedWikipedia, + currentPhase, + setCurrentPhase, + showConfidenceScore, + showCitations, + disclaimerMessage, + askedQuestions, + setAskedQuestions, + topicIndex, + setTopicIndex, + wikipediaAccumulatedTime, + setWikipediaAccumulatedTime, + wikipediaSessionStart, + setWikipediaSessionStart, + } = useContext(ExerciseStateContext); + + const [showRatingModal, setShowRatingModal] = useState(false); + const [showBiasExplanation, setShowBiasExplanation] = useState(false); + const [selectedBiasData, setSelectedBiasData] = useState(null); + const [currentAnswerData, setCurrentAnswerData] = useState(null); + const [isBotTyping, setIsBotTyping] = useState(false); + const [isBotThinking, setIsBotThinking] = useState(false); + const [toneRating, setToneRating] = useState(''); + const [confidenceRating, setConfidenceRating] = useState(''); + const [questionAnswered, setQuestionAnswered] = useState(false); + const [activeTab, setActiveTab] = useState('AIChatBot'); + const [currentDisplayTime, setCurrentDisplayTime] = useState(0); + const [currentQuestion, setCurrentQuestion] = useState(null); + const phase4IntroAddedRef = useRef(false); + const [clickedReviewButtonThisPhase, setClickedReviewButtonThisPhase] = + useState(false); + + // State to track when to show the wikipedia page + const [hasShownWikipediaInPhase, setHasShownWikipediaInPhase] = + useState(false); + + const BIAS_POSITION_MAP = { + 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable + 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable + 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable + }; + + // Get all three topics in order: medium, most, least + const getOrderedTopics = useMemo(() => { + if (!rankingColumns?.length) return []; + + const topics = []; + // Medium knowledgeable (index 1) - Halo Effect + if (rankingColumns[1]?.cards?.length > 0) { + topics.push({ + id: rankingColumns[1].cards[0].id, + biasPosition: 1, + title: rankingColumns[1].cards[0].title, + }); + } + // Most knowledgeable (index 0) - Truth Bias + if (rankingColumns[0]?.cards?.length > 0) { + topics.push({ + id: rankingColumns[0].cards[0].id, + biasPosition: 0, + title: rankingColumns[0].cards[0].title, + }); + } + // Least knowledgeable (index 2) - Dunning-Kruger + if (rankingColumns[2]?.cards?.length > 0) { + topics.push({ + id: rankingColumns[2].cards[0].id, + biasPosition: 2, + title: rankingColumns[2].cards[0].title, + }); + } + + return topics; + }, [rankingColumns]); + + const currentTopic = getOrderedTopics[topicIndex] || null; + const activeTopic = currentTopic?.id || null; + const activeBias = + BIAS_POSITION_MAP[currentTopic?.biasPosition] || BIAS_TYPES.HALO_EFFECT; + const topicData = getTopicById(activeTopic); + + // Display Wikipedia based on current phase and whether or not the AI has finished typing + const showWikipediaTab = useMemo(() => { + // Phase 1 does not show wiki + if (topicIndex === 0) { + return false; + } + + // Phase 2, 3, 4 shows wiki after the first AI response is completed + if (topicIndex >= 1) { + // keep displaying if the wikishown was already set to true + if (hasShownWikipediaInPhase) { + return true; + } - intervalId = setInterval(() => { - if (wikipediaSessionStart) { - const sessionElapsed = Math.floor( - (Date.now() - wikipediaSessionStart) / 1000 - ); - const total = wikipediaAccumulatedTime + sessionElapsed; - setCurrentDisplayTime(total); - - // Stop at 15 seconds - if (total >= 15) { - clearInterval(intervalId); - } - } - }, 100); - } else { - // Leaving Wikipedia tab ensure you save the time - if (wikipediaSessionStart) { - const sessionElapsed = Math.floor( - (Date.now() - wikipediaSessionStart) / 1000 - ); - setWikipediaAccumulatedTime((prev) => prev + sessionElapsed); - setWikipediaSessionStart(null); - } - // Keep displaying the accumulated time - setCurrentDisplayTime(wikipediaAccumulatedTime); + if (currentAnswerData && !isBotTyping && !isBotThinking) { + return true; + } + } + + return false; + }, [ + topicIndex, + hasShownWikipediaInPhase, + currentAnswerData, + isBotThinking, + isBotTyping, + ]); + + const requireWikipedia = topicIndex === 2; + + // Wikipedia time tracking with interval + useEffect(() => { + let intervalId; + + if (activeTab === 'ALLpedia' && showWikipediaTab) { + // Mark as visited + + setHasVisitedWikipedia(true); + console.log('Set wikipedia to true'); + + // Start new session if not already started + if (!wikipediaSessionStart) { + setWikipediaSessionStart(Date.now()); + } + + intervalId = setInterval(() => { + if (wikipediaSessionStart) { + const sessionElapsed = Math.floor( + (Date.now() - wikipediaSessionStart) / 1000 + ); + const total = wikipediaAccumulatedTime + sessionElapsed; + setCurrentDisplayTime(total); + + // Stop at 15 seconds + if (total >= 15) { + clearInterval(intervalId); + } } - - return () => { - if (intervalId) clearInterval(intervalId); - }; - }, [ - activeTab, - showWikipediaTab, - wikipediaSessionStart, - wikipediaAccumulatedTime, - setHasVisitedWikipedia, - setWikipediaAccumulatedTime, - setWikipediaSessionStart, - ]); - - const getWikipediaTimeSpent = useCallback(() => { - return currentDisplayTime; - }, [currentDisplayTime]); - - // Filter questions for round 4 to only show unasked questions - const getAvailableQuestions = useMemo(() => { - if (!topicData?.questions) return []; - - if (currentPhase === 4) { - // Phase 4, show only unasked questions from current topic - - const available = topicData.questions - .map((q, index) => ({ ...q, originalIndex: index })) - .filter((q) => { - const questionKey = `${activeTopic}-${q.originalIndex}`; - return !askedQuestions.includes(questionKey); - }) - .slice(0, 2); // Only first 2 unasked - - return available; + }, 100); + } else { + // Leaving Wikipedia tab ensure you save the time + if (wikipediaSessionStart) { + const sessionElapsed = Math.floor( + (Date.now() - wikipediaSessionStart) / 1000 + ); + setWikipediaAccumulatedTime((prev) => prev + sessionElapsed); + setWikipediaSessionStart(null); + } + // Keep displaying the accumulated time + setCurrentDisplayTime(wikipediaAccumulatedTime); + } + + return () => { + if (intervalId) clearInterval(intervalId); + }; + }, [ + activeTab, + showWikipediaTab, + wikipediaSessionStart, + wikipediaAccumulatedTime, + setHasVisitedWikipedia, + setWikipediaAccumulatedTime, + setWikipediaSessionStart, + ]); + + // Track and respond when Wikipedia becomes visible + useEffect(() => { + if (showWikipediaTab && !hasShownWikipediaInPhase) { + setHasShownWikipediaInPhase(true); + } + }, [showWikipediaTab, hasShownWikipediaInPhase]); + + const getWikipediaTimeSpent = useCallback(() => { + return currentDisplayTime; + }, [currentDisplayTime]); + + // Filter questions for round 4 to only show unasked questions + const getAvailableQuestions = useMemo(() => { + if (!topicData?.questions) return []; + + if (currentPhase === 4) { + // Phase 4, show only unasked questions from current topic + console.log('Phase 4 - Topic:', activeTopic); + console.log('Phase 4 - All questions:', topicData.questions.length); + console.log('Asked questions:', askedQuestions); + + const available = topicData.questions + .map((q, index) => ({ ...q, originalIndex: index })) + .filter((q) => { + const questionKey = `${activeTopic}-${q.originalIndex}`; + return !askedQuestions.includes(questionKey); + }) + .slice(0, 2); // Only first 2 unasked + + console.log('Available questions:', available.length); + return available; + } + + // All other phases, show all questions with originalIndex + return topicData.questions.map((q, index) => ({ + ...q, + originalIndex: index, + })); + }, [currentPhase, topicData, askedQuestions, activeTopic]); + + // Switch to Wikipedia tab on citation click + const handleCitationClick = useCallback(() => { + setActiveTab('ALLpedia'); + }, []); + + // Track when a question is asked + const handleQuestionAsked = useCallback( + (questionIndex) => { + const questionKey = `${activeTopic}-${questionIndex}`; + setCurrentQuestion(questionIndex); + + setAskedQuestions((prev) => { + if (!prev.includes(questionKey)) { + console.log( + 'Tracking question:', + questionKey, + 'Phase:', + currentPhase + ); + return [...prev, questionKey]; } - - // All other phases, show all questions with originalIndex - return topicData.questions.map((q, index) => ({ - ...q, - originalIndex: index, - })); - }, [currentPhase, topicData, askedQuestions, activeTopic]); - - // Switch to Wikipedia tab on citation click - const handleCitationClick = useCallback(() => { - setActiveTab('ALLpedia'); - }, []); - - // Track when a question is asked - const handleQuestionAsked = useCallback( - (questionIndex) => { - const questionKey = `${activeTopic}-${questionIndex}`; - setCurrentQuestion(questionIndex); - - setAskedQuestions((prev) => { - if (!prev.includes(questionKey)) { - return [...prev, questionKey]; - } - return prev; - }); - }, - [currentPhase, setAskedQuestions, activeTopic] + return prev; + }); + }, + [currentPhase, setAskedQuestions, activeTopic] + ); + + // Helper function to parse text and highlight specific patterns + const renderTextWithHighlight = (text, highlightPatterns = []) => { + if (!text || !highlightPatterns.length) return text; + + // Combine all patterns into one regex on a single pass + const sortedPatterns = [...highlightPatterns].sort( + (a, b) => b.length - a.length ); - - // Helper function to parse text and highlight specific patterns - const renderTextWithHighlight = (text, highlightPatterns = []) => { - if (!text || !highlightPatterns.length) return text; - - // Combine all patterns into one regex on a single pass - const sortedPatterns = [...highlightPatterns].sort((a, b) => b.length - a.length); - const escapedPatterns = sortedPatterns.map(p => - p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + const escapedPatterns = sortedPatterns.map((p) => + p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ); + const combinedPattern = escapedPatterns.map((p) => `(${p})`).join('|'); + const regex = new RegExp(combinedPattern, 'gi'); + + // Split once - capturing groups make matches return at odd indices + const segments = text.split(regex); + let keyCounter = 0; + + return segments.map((segment, i) => { + // Odd indices are matches (from capturing groups) + if (i % 2 === 1 && segment) { + return ( + + {segment} + ); - const combinedPattern = escapedPatterns.map(p => `(${p})`).join('|'); - const regex = new RegExp(combinedPattern, 'gi'); - - // Split once - capturing groups make matches return at odd indices - const segments = text.split(regex); - let keyCounter = 0; - - return segments.map((segment, i) => { - // Odd indices are matches (from capturing groups) - if (i % 2 === 1 && segment) { - return {segment}; - } - return segment; - }); - }; + } + return segment; + }); + }; - // Get highlights based on current answer data, topic, and question - const getAnswerDataHighlights = () => { - if (!currentAnswerData || currentQuestion === null) return []; + // Get highlights based on current answer data, topic, and question + const getAnswerDataHighlights = () => { + if (!currentAnswerData || currentQuestion === null) return []; - const topicKey = activeTopic?.toLowerCase(); - const biasType = currentAnswerData.biasType; + const topicKey = activeTopic?.toLowerCase(); + const biasType = currentAnswerData.biasType; - return HIGHLIGHTS_MAPPING[topicKey]?.[currentQuestion]?.[biasType] || []; - }; + return HIGHLIGHTS_MAPPING[topicKey]?.[currentQuestion]?.[biasType] || []; + }; - // Get Wikipedia content based on topic - const getWikipediaContent = (topicId) => { - const content = { - localization: { - title: 'Localization', - text: `Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references. + // Get Wikipedia content based on topic + const getWikipediaContent = (topicId) => { + const content = { + localization: { + title: 'Localization', + text: `Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references. This may include using local currency or changing date formats, but it does not involve physical changes, such as changing clothing materials for climate. However, modifying language or tone to fit different social settings can be considered a form of cultural localization.`, - sources: [ - 'https://resources.gala-global.org/accessibility-localization/', - 'https://www.vistatec.com/localization-for-all-advancing-accessibility-and-inclusion-in-a-globalized-world/', - ], - imageUrl: - 'https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?w=400', // Placeholder - }, - colorblindness: { - title: 'Color Blindness', - text: `Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. + sources: [ + 'https://resources.gala-global.org/accessibility-localization/', + 'https://www.vistatec.com/localization-for-all-advancing-accessibility-and-inclusion-in-a-globalized-world/', + ], + imageUrl: + 'https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?w=400', // Placeholder + }, + colorblindness: { + title: 'Color Blindness', + text: `Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. Although many cases are inherited, they can also develop later in life due to eye disease, injury, aging, or certain medications. Complete color blindness is rare and should not be assumed.`, - sources: [ - 'https://www.colourblindawareness.org/colour-blindness/', - 'https://www.nei.nih.gov/eye-health-information/eye-conditions-and-diseases/color-blindness', - ], - imageUrl: - 'https://images.unsplash.com/photo-1584036561566-baf8f5f1b144?w=400', // Placeholder - }, - dyslexia: { - title: 'Dyslexia', - text: `Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. + sources: [ + 'https://www.colourblindawareness.org/colour-blindness/', + 'https://www.nei.nih.gov/eye-health-information/eye-conditions-and-diseases/color-blindness', + ], + imageUrl: + 'https://images.unsplash.com/photo-1584036561566-baf8f5f1b144?w=400', // Placeholder + }, + dyslexia: { + title: 'Dyslexia', + text: `Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. Dyslexia cannot be cured, but it can be effectively supported through early intervention, structured reading instruction, and classroom accommodations.`, - sources: [ - 'https://dyslexiaida.org/definition-of-dyslexia/', - 'https://www.losdschools.org/student-services/dyslexia-handbook/definition-of-dyslexia', - ], - imageUrl: - 'https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=400', // Placeholder - }, - }; - - return content[topicId?.toLowerCase()] || content.localization; + sources: [ + 'https://dyslexiaida.org/definition-of-dyslexia/', + 'https://www.losdschools.org/student-services/dyslexia-handbook/definition-of-dyslexia', + ], + imageUrl: + 'https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=400', // Placeholder + }, }; - const wikipediaContent = getWikipediaContent(activeTopic); - - // Initialize first exercise chat with the ALLie greeting - useEffect(() => { - if (chatMessages.length === 0 && currentTopic) { - setChatMessages([ - { - id: 'greeting', - sender: 'bot', - text: `Hi! I'm ALL-IE the AI. Thanks for ranking your familiarity with the topics. I'll start with the one you feel moderately confident about. Select a prompt below on ${currentTopic.title}.`, - timestamp: new Date(), - }, - ]); - setCurrentPhase(1); + return content[topicId?.toLowerCase()] || content.localization; + }; + + const wikipediaContent = getWikipediaContent(activeTopic); + + // Check if ai review button should be enabled + const canReviewResponse = useMemo(() => { + if (!currentAnswerData || isBotTyping || isBotThinking || showRatingModal) { + return false; + } + + // Phase 3 and 4 require Wikipedia visit for 15 or more seconds + if (requireWikipedia) { + return hasVisitedWikipedia && getWikipediaTimeSpent() >= 15; + } + + return true; + }, [ + currentAnswerData, + isBotTyping, + isBotThinking, + showRatingModal, + requireWikipedia, + hasVisitedWikipedia, + getWikipediaTimeSpent, + ]); + + const getCurrentInstruction = useCallback(() => { + if (!currentTopic) return null; + + // hide instructions when modals are open or when review button was clicked + if ( + showRatingModal || + showBiasExplanation || + clickedReviewButtonThisPhase + ) { + return null; + } + + if (topicIndex === 0) { + if (!canReviewResponse) { + return `You're now on your moderately knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; + } + return null; + } + + if (topicIndex === 1) { + if (questionAnswered && showWikipediaTab && !hasVisitedWikipedia) { + return `ALLpedia is now available if you'd like to fact-check ALL-IE's response on ${currentTopic.title} before reviewing.`; + } + if (!questionAnswered) { + return `You're now on your most knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; + } + return null; + } + + if (topicIndex === 2 && currentPhase < 4) { + if (!questionAnswered) { + return `You're now on your least knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; + } + if (questionAnswered && !canReviewResponse) { + const timeLeft = 15 - getWikipediaTimeSpent(); + if (!hasVisitedWikipedia) { + return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; } - }, [currentTopic, chatMessages.length, setChatMessages, setCurrentPhase]); - - // Initialize phase 4 after IDE fixes - useEffect(() => { - if (currentPhase === 4 && currentTopic) { - - // Reset Wikipedia tracking for Phase 4 - if (!phase4IntroAddedRef.current) { - setHasVisitedWikipedia(false); - setWikipediaAccumulatedTime(0); - setWikipediaSessionStart(null); - setCurrentDisplayTime(0); - } - - // Enusure we're on the least knowledgeable topic - if (currentTopic.biasPosition !== 2) { - setTopicIndex(2); - return; - } - - // Add intro message once - if (!phase4IntroAddedRef.current && chatMessages.length > 0) { - const lastMessage = chatMessages[chatMessages.length - 1]; - const phase4IntroText = `Great! Now that you've implemented your IDE fixes, let's see the difference in your interaction. You must review the ALLpedia page for at least 15 seconds before proceeding. Select a prompt for ${currentTopic.title}.`; - - if ( - lastMessage.text !== phase4IntroText && - !lastMessage.text.includes('implemented your IDE fixes') - ) { - setQuestionAnswered(false); - phase4IntroAddedRef.current = true; - - setTimeout(() => { - setChatMessages((prev) => [ - ...prev, - { - id: 'phase4-intro', - sender: 'bot', - text: phase4IntroText, - timestamp: new Date(), - }, - ]); - }, 500); - } - } + return `Please spend ${timeLeft} more second${timeLeft !== 1 ? 's' : ''} on ALLpedia`; + } + return null; + } + + if (currentPhase === 4) { + if (!questionAnswered) { + return `Great! Now that you've implemented your IDE fixes, interact with ALL-IE again on your least knowledgeable topic, ${currentTopic.title}.`; + } + if (questionAnswered && !canReviewResponse) { + const timeLeft = 15 - getWikipediaTimeSpent(); + if (!hasVisitedWikipedia) { + return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; } - }, [ - currentPhase, - currentTopic, - topicIndex, - chatMessages.length, - setChatMessages, - setHasVisitedWikipedia, - setWikipediaAccumulatedTime, - setWikipediaSessionStart, - setTopicIndex, - ]); - - // Add transitions with instructional messages from ALL-ie - const handleBiasExplanationClose = useCallback(() => { - setShowBiasExplanation(false); - setShowRatingModal(false); - - setTimeout(() => { - setSelectedBiasData(null); - setCurrentAnswerData(null); - setToneRating(''); - setConfidenceRating(''); - setQuestionAnswered(false); - setActiveTab('AIChatBot'); - - setTimeout(() => { - setTopicIndex((prevIndex) => { - const nextIndex = prevIndex + 1; - - if (nextIndex >= getOrderedTopics.length && currentPhase < 4) { - setTimeout(() => { - startExercise(); - navigate('/Lab13/Exercise/IDEIntroduction'); - }, 300); - return prevIndex; - } - - if (currentPhase === 4) { - phase4IntroAddedRef.current = false; - setTimeout(() => { - startExercise(); - navigate('/Lab13/Exercise/Conclusion'); - }, 300); - return prevIndex; - } - - // Reset Wikipedia tracking for new phase - setHasVisitedWikipedia(false); - setWikipediaAccumulatedTime(0); - setWikipediaSessionStart(null); - setCurrentDisplayTime(0); - setCurrentPhase(nextIndex + 1); - - const nextTopic = getOrderedTopics[nextIndex]; - if (nextTopic) { - setTimeout(() => { - let transitionText = ''; - if (nextIndex === 1) { - transitionText = `Onto part ${nextIndex + 1}. This time you have access to the ALLpedia page to fact-check the AI on ${nextTopic.title}. Select a prompt for ${nextTopic.title}.`; - } else if (nextIndex === 2) { - transitionText = `Onto part ${nextIndex + 1}. You must review the ALLpedia page for at least 15 seconds before proceeding. Select a prompt for ${nextTopic.title}.`; - } else { - transitionText = `Onto part ${nextIndex + 1}. Select a prompt for ${nextTopic.title}.`; - } - - setChatMessages((prev) => [ - ...prev, - { - id: `transition-${nextIndex}`, - sender: 'bot', - text: transitionText, - timestamp: new Date(), - }, - ]); - }, 800); - } - - return nextIndex; - }); - }, 200); - }, 100); - }, [ - getOrderedTopics, - setChatMessages, - setHasVisitedWikipedia, - setWikipediaAccumulatedTime, - setWikipediaSessionStart, - setCurrentPhase, - currentPhase, - ]); - - const handleAnswerSelected = useCallback( - (biasType, biasDefinition, explanation, aiResponseText) => { - setSelectedBiasData({ - biasType, - biasDefinition, - explanation, - aiResponseText, - }); - setShowRatingModal(true); + return `Please spend ${timeLeft} more second${timeLeft !== 1 ? 's' : ''} on ALLpedia`; + } + return null; + } + + return null; + }, [ + currentTopic, + topicIndex, + currentPhase, + questionAnswered, + hasVisitedWikipedia, + canReviewResponse, + showRatingModal, + showBiasExplanation, + clickedReviewButtonThisPhase, + showWikipediaTab, + getWikipediaTimeSpent, + ]); + + // Initialize first exercise chat with the ALLie greeting + useEffect(() => { + if (chatMessages.length === 0 && currentTopic) { + setChatMessages([ + { + id: 'greeting', + sender: 'bot', + text: `Hi! I'm ALL-IE the AI. What can I help you with?`, + timestamp: new Date(), }, - [] - ); - - const handleRatingSubmit = useCallback(() => { - setShowRatingModal(false); - setShowBiasExplanation(true); - }, []); - - // Check if ai review button should be enabled - const canReviewResponse = useMemo(() => { - if (!currentAnswerData || isBotTyping || isBotThinking || showRatingModal) { - return false; - } - - // Phase 3 and 4 require Wikipedia visit for 15 or more seconds - if (requireWikipedia) { - return hasVisitedWikipedia && getWikipediaTimeSpent() >= 15; + ]); + setCurrentPhase(1); + } + }, [currentTopic, chatMessages.length, setChatMessages, setCurrentPhase]); + + // Initialize phase 4 after IDE fixes + useEffect(() => { + if (currentPhase === 4 && currentTopic) { + console.log('Phase 4 Init - Topic Index:', topicIndex); + console.log('Phase 4 Init - Current Topic:', currentTopic); + console.log('Phase 4 Init - Topic Position:', currentTopic.biasPosition); + + // Reset Wikipedia tracking for Phase 4 + if (!phase4IntroAddedRef.current) { + setHasVisitedWikipedia(false); + setWikipediaAccumulatedTime(0); + setWikipediaSessionStart(null); + setCurrentDisplayTime(0); + setHasShownWikipediaInPhase(false); + } + + // Enusure we're on the least knowledgeable topic + if (currentTopic.biasPosition !== 2) { + console.warn('Phase 4 should be on least topic! Forcing to index 2'); + setTopicIndex(2); + return; + } + + // Add intro message once + if (!phase4IntroAddedRef.current && chatMessages.length > 0) { + const lastMessage = chatMessages[chatMessages.length - 1]; + const phase4IntroText = `Let's continue. Select another prompt.`; + + if ( + lastMessage.text !== phase4IntroText && + !lastMessage.text.includes('implemented your IDE fixes') + ) { + setQuestionAnswered(false); + phase4IntroAddedRef.current = true; + + setTimeout(() => { + setChatMessages((prev) => [ + ...prev, + { + id: 'phase4-intro', + sender: 'bot', + text: phase4IntroText, + timestamp: new Date(), + }, + ]); + }, 500); } + } + } + }, [ + currentPhase, + currentTopic, + topicIndex, + chatMessages.length, + setChatMessages, + setHasVisitedWikipedia, + setWikipediaAccumulatedTime, + setWikipediaSessionStart, + setTopicIndex, + ]); + + // Add transitions with instructional messages from ALL-ie + const handleBiasExplanationClose = useCallback(() => { + setShowBiasExplanation(false); + setShowRatingModal(false); + + setClickedReviewButtonThisPhase(true); + setCurrentAnswerData(null); + setQuestionAnswered(false); + setIsBotThinking(false); + setIsBotTyping(false); + setHasShownWikipediaInPhase(false); + + setTimeout(() => { + setSelectedBiasData(null); + setToneRating(''); + setConfidenceRating(''); + setActiveTab('AIChatBot'); + + setTimeout(() => { + setTopicIndex((prevIndex) => { + const nextIndex = prevIndex + 1; + + // Navigate to IDE introduction after Phase 3 + if (nextIndex >= getOrderedTopics.length && currentPhase < 4) { + setTimeout(() => { + startExercise(); + navigate('/Lab13/Exercise/IDEIntroduction'); + }, 300); + return prevIndex; + } + + if (currentPhase === 4) { + phase4IntroAddedRef.current = false; + setTimeout(() => { + startExercise(); + navigate('/Lab13/Exercise/Conclusion'); + }, 300); + return prevIndex; + } + + // Reset Wikipedia tracking for new phase + setHasVisitedWikipedia(false); + setWikipediaAccumulatedTime(0); + setWikipediaSessionStart(null); + setCurrentDisplayTime(0); + setClickedReviewButtonThisPhase(false); + + setCurrentPhase(nextIndex + 1); + + const nextTopic = getOrderedTopics[nextIndex]; + if (nextTopic) { + setTimeout(() => { + setChatMessages((prev) => [ + ...prev, + { + id: `transition-${nextIndex}`, + sender: 'bot', + text: `Let's continue. Select another prompt.`, + timestamp: new Date(), + }, + ]); + }, 800); + } - return true; - }, [ - currentAnswerData, - isBotTyping, - isBotThinking, - showRatingModal, - requireWikipedia, - hasVisitedWikipedia, - getWikipediaTimeSpent, - ]); - - const biasDefinition = selectedBiasData - ? BIAS_DEFINITIONS[selectedBiasData.biasType] - : null; - - const handleAnswerDataChange = useCallback((data) => { - setCurrentAnswerData(data); - setQuestionAnswered(true); - }, []); - - return ( -
    - {/* Full-screen overlay when modal is shown */} - {(showRatingModal || showBiasExplanation) && ( -
    - )} - - {activeTopic && topicData && ( - <> -
    - - -
    -
    - ({ - id: index + 1, - text: q.text, - originalIndex: - q.originalIndex !== undefined - ? q.originalIndex - : index, - }))} - fixedAIResponse={getAvailableQuestions.map((q, index) => { - return { - id: index + 1, - text: q.answers[activeBias].text, - isCorrect: q.answers[activeBias].isCorrect, - explanation: q.answers[activeBias].explanation, - biasType: activeBias, - biasDefinition: BIAS_DEFINITIONS[activeBias], - confidence: q.answers[activeBias].confidence || 93, - }; - })} - onAnswerDataChange={handleAnswerDataChange} - onTypingChange={setIsBotTyping} - onThinkingChange={setIsBotThinking} - messages={chatMessages} - setMessages={setChatMessages} - canSelectQuestion={!questionAnswered} - showConfidenceScore={ - currentPhase === 4 && showConfidenceScore - } - showCitations={currentPhase === 4 && showCitations} - disclaimerMessage={ - currentPhase === 4 ? disclaimerMessage : '' - } - onCitationClick={handleCitationClick} - onQuestionAsked={handleQuestionAsked} - /> -
    -
    - {/* Wikipedia requirement warning for phase 3 */} - {requireWikipedia && - !canReviewResponse && - currentAnswerData && ( -
    - {!hasVisitedWikipedia - ? 'Visit the ALLpedia tab before reviewing' - : `Please spend ${15 - getWikipediaTimeSpent()} more seconds on ALLpedia`} -
    - )} - - {canReviewResponse && ( - - )} -
    + return nextIndex; + }); + }, 200); + }, 100); + }, [ + getOrderedTopics, + setChatMessages, + setHasVisitedWikipedia, + setWikipediaAccumulatedTime, + setWikipediaSessionStart, + setCurrentPhase, + currentPhase, + ]); + + const handleAnswerSelected = useCallback( + (biasType, biasDefinition, explanation, aiResponseText) => { + setSelectedBiasData({ + biasType, + biasDefinition, + explanation, + aiResponseText, + }); + setShowRatingModal(true); + }, + [] + ); + + const handleRatingSubmit = useCallback(() => { + setShowRatingModal(false); + setShowBiasExplanation(true); + }, []); + + const biasDefinition = selectedBiasData + ? BIAS_DEFINITIONS[selectedBiasData.biasType] + : null; + + const handleAnswerDataChange = useCallback((data) => { + setCurrentAnswerData(data); + setQuestionAnswered(true); + }, []); + + return ( +
    + {/* Full-screen overlay when modal is shown */} + {(showRatingModal || showBiasExplanation) && ( +
    + )} + + {activeTopic && topicData && ( + <> +
    + + +
    +
    + ({ + id: index + 1, + text: q.text, + originalIndex: + q.originalIndex !== undefined + ? q.originalIndex + : index, + }))} + fixedAIResponse={getAvailableQuestions.map((q, index) => { + return { + id: index + 1, + text: q.answers[activeBias].text, + isCorrect: q.answers[activeBias].isCorrect, + explanation: q.answers[activeBias].explanation, + biasType: activeBias, + biasDefinition: BIAS_DEFINITIONS[activeBias], + confidence: q.answers[activeBias].confidence || 93, + }; + })} + onAnswerDataChange={handleAnswerDataChange} + onTypingChange={setIsBotTyping} + onThinkingChange={setIsBotThinking} + messages={chatMessages} + setMessages={setChatMessages} + canSelectQuestion={!questionAnswered} + showConfidenceScore={ + currentPhase === 4 && showConfidenceScore + } + showCitations={currentPhase === 4 && showCitations} + disclaimerMessage={ + currentPhase === 4 ? disclaimerMessage : '' + } + onCitationClick={handleCitationClick} + onQuestionAsked={handleQuestionAsked} + /> +
    +
    + {getCurrentInstruction() && ( +
    + {getCurrentInstruction()} +
    + )} + + {canReviewResponse && ( + + )} +
    +
    +
    + + {/* ALLpedia Tab, from phase 2 onwards */} + {showWikipediaTab && ( + +
    + {/* Header with Title and Timer */} +
    +
    + {/* Left: Empty spacer for balance */} +
    + {/* Empty div for grid balance */} +
    + + {/* Title */} +
    +

    + {wikipediaContent.title} +

    +
    + + {/* Timer */} +
    + {requireWikipedia && ( +
    + {currentDisplayTime >= 15 ? ( +
    + + ✓ + + + Complete +
    - - - {/* ALLpedia Tab, from phase 2 onwards */} - {showWikipediaTab && ( - -
    - {/* Header with Title and Timer */} -
    -
    - {/* Left: Empty spacer for balance */} -
    - {/* Empty div for grid balance */} -
    - - {/* Title */} -
    -

    - {wikipediaContent.title} -

    -
    - - {/* Timer */} -
    - {requireWikipedia && ( -
    - {currentDisplayTime >= 15 ? ( -
    - - ✓ - - - Complete - -
    - ) : ( - - )} -
    - )} -
    -
    - - {/* Subtitle */} -

    - Use this resource to fact-check ALL-IE's responses -

    -
    - - {/* Text on left and image on right */} -
    -
    - {/* Left: Text Content */} -
    -
    - {wikipediaContent.text - .split('\n\n') - .map((paragraph, index) => ( -

    - {renderTextWithHighlight( - paragraph, - getAnswerDataHighlights() - )} -

    - ))} -
    -
    - - {/* Image */} -
    - {wikipediaContent.title} -
    -
    - - {/* Sources at bottom */} -
    -

    - Sources: -

    -
      - {wikipediaContent.sources.map((source, index) => ( -
    • - - {source} - -
    • - ))} -
    -
    -
    -
    -
    - )} - + ) : ( + + )} +
    + )} +
    +
    - - {biasDefinition.name} -
    - ) : null - } - textModalBody={ - selectedBiasData && biasDefinition ? ( -
    - {selectedBiasData.aiResponseText && ( -
    - -

    - Given AI Response: - - "{selectedBiasData.aiResponseText}" - -

    -
    - )} -
    -

    - {selectedBiasData.explanation} -

    -
    -
    -
    - What is {biasDefinition.name}? -
    -

    {biasDefinition.definition}

    -
    -
    - ) : null - } - onCloseTextModal={handleBiasExplanationClose} - /> - - )} - - {!activeTopic && ( -
    + + )} + +
    + + + {biasDefinition.name} +
    + ) : null + } + textModalBody={ + selectedBiasData && biasDefinition ? ( +
    + {selectedBiasData.aiResponseText && ( +
    +

    + Given AI Response: + "{selectedBiasData.aiResponseText}" +

    +
    + )} +
    +

    + {selectedBiasData.explanation}

    +
    +
    +
    + What is {biasDefinition.name}? +
    +

    {biasDefinition.definition}

    +
    - )} + ) : null + } + onCloseTextModal={handleBiasExplanationClose} + /> + + )} + + {!activeTopic && ( +
    +

    + Please complete the ranking to see questions. +

    - ); + )} +
    + ); }; export default AIPanel; From edf6233c231ee9dd8d89a7832402f4ab7f78dcab Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Mon, 23 Feb 2026 12:22:45 -0500 Subject: [PATCH 102/180] fixing the console.logs while i am here --- client/src/components/all-components/UserPfp.js | 1 + .../src/components/exercise/lab13/pages/AIPanel.js | 14 -------------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/client/src/components/all-components/UserPfp.js b/client/src/components/all-components/UserPfp.js index c1e0c4eb4..2c691859e 100644 --- a/client/src/components/all-components/UserPfp.js +++ b/client/src/components/all-components/UserPfp.js @@ -7,6 +7,7 @@ const UserPfp = ({ onClick }) => { const { state } = useMainStateContext(); const user = state.main.user; const className = `tw-w-full tw-h-full tw-object-cover tw-rounded-full ${onClick ? "tw-cursor-pointer" : ""}`; + console.log() return (user && user.userpfp ?
    { // Mark as visited setHasVisitedWikipedia(true); - console.log('Set wikipedia to true'); // Start new session if not already started if (!wikipediaSessionStart) { @@ -211,9 +210,6 @@ const AIPanel = () => { if (currentPhase === 4) { // Phase 4, show only unasked questions from current topic - console.log('Phase 4 - Topic:', activeTopic); - console.log('Phase 4 - All questions:', topicData.questions.length); - console.log('Asked questions:', askedQuestions); const available = topicData.questions .map((q, index) => ({ ...q, originalIndex: index })) @@ -223,7 +219,6 @@ const AIPanel = () => { }) .slice(0, 2); // Only first 2 unasked - console.log('Available questions:', available.length); return available; } @@ -247,12 +242,6 @@ const AIPanel = () => { setAskedQuestions((prev) => { if (!prev.includes(questionKey)) { - console.log( - 'Tracking question:', - questionKey, - 'Phase:', - currentPhase - ); return [...prev, questionKey]; } return prev; @@ -463,9 +452,6 @@ Although many cases are inherited, they can also develop later in life due to ey // Initialize phase 4 after IDE fixes useEffect(() => { if (currentPhase === 4 && currentTopic) { - console.log('Phase 4 Init - Topic Index:', topicIndex); - console.log('Phase 4 Init - Current Topic:', currentTopic); - console.log('Phase 4 Init - Topic Position:', currentTopic.biasPosition); // Reset Wikipedia tracking for Phase 4 if (!phase4IntroAddedRef.current) { From 12ff2db753b9b119ef10ea0cea8c9a8c21a9a12d Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Mon, 23 Feb 2026 12:24:17 -0500 Subject: [PATCH 103/180] fixing the console.logs while i am here --- client/src/components/all-components/UserPfp.js | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/components/all-components/UserPfp.js b/client/src/components/all-components/UserPfp.js index 2c691859e..c1e0c4eb4 100644 --- a/client/src/components/all-components/UserPfp.js +++ b/client/src/components/all-components/UserPfp.js @@ -7,7 +7,6 @@ const UserPfp = ({ onClick }) => { const { state } = useMainStateContext(); const user = state.main.user; const className = `tw-w-full tw-h-full tw-object-cover tw-rounded-full ${onClick ? "tw-cursor-pointer" : ""}`; - console.log() return (user && user.userpfp ?
    Date: Mon, 23 Feb 2026 13:02:42 -0500 Subject: [PATCH 104/180] fixed pff --- .../src/components/all-components/UserPfp.js | 21 +++++++------------ .../body/profilepage/ProfileHeader.js | 9 +------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/client/src/components/all-components/UserPfp.js b/client/src/components/all-components/UserPfp.js index c1e0c4eb4..68b289857 100644 --- a/client/src/components/all-components/UserPfp.js +++ b/client/src/components/all-components/UserPfp.js @@ -8,20 +8,13 @@ const UserPfp = ({ onClick }) => { const user = state.main.user; const className = `tw-w-full tw-h-full tw-object-cover tw-rounded-full ${onClick ? "tw-cursor-pointer" : ""}`; - return (user && user.userpfp ? -
    - : - Default User + return ( + user?.userpfp ? + User Profile Picture + : user.firstname && user.lastinitial ? +
    {user?.firstname[0] + user?.lastinitial}
    + : + Default User ); }; diff --git a/client/src/components/body/profilepage/ProfileHeader.js b/client/src/components/body/profilepage/ProfileHeader.js index 7adab69c2..2a211893e 100644 --- a/client/src/components/body/profilepage/ProfileHeader.js +++ b/client/src/components/body/profilepage/ProfileHeader.js @@ -27,14 +27,7 @@ const ProfileHeader = (props) => { tw-rounded-full tw-border-solid xs:tw-mx-[2rem] md:tw-mx-[4rem] tw-border-primary-yellow tw-z-[1rem] tw-flex tw-flex-row tw-overflow-hidden" > - {user?.userpfp ? ( - - ) : ( -
    - {/* get user's first and last initials */} - {user?.firstname[0] + user?.lastinitial} -
    - )} +
    From 16cd94dfd3abd80023726fada6983fe2d23e4cf2 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Mon, 23 Feb 2026 13:22:45 -0500 Subject: [PATCH 105/180] changing the text styling --- .../exercise/lab13/components/AIChatBot.js | 181 +++++++++--------- .../exercise/lab13/components/RatingModal.js | 4 +- 2 files changed, 90 insertions(+), 95 deletions(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index d30100b3f..6ef319a39 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -2,6 +2,7 @@ import React, { useState, useRef, useEffect } from 'react'; import PropTypes from 'prop-types'; import BlobLoader from './BlobLoader'; import Avatar from './Avatar'; +import { AvatarType } from 'src/constants/lab13/AvatarType'; /** * Typewriter animation component effect for bot responses @@ -128,7 +129,7 @@ const AIChatBot = ({ // Add user message after small delay setTimeout(() => { const userMsg = { - sender: 'user', + sender: AvatarType.User, text: question.text, id: `user-${question.id}-${Date.now()}`, timestamp: new Date(), @@ -198,99 +199,95 @@ const AIChatBot = ({ {/* Container for indvidual messages */} {messages && messages.length > 0 ? messages.map((msg, index) => ( -
    + {/* Avatar circle */} + + {/* Message box adjacent to user message */} +
    - {/* Avatar circle */} - - {/* Message box adjacent to user message */}
    -
    - {/* User messages - just display text */} - {msg.sender === 'user' ? ( - msg.text - ) : ( - // Bot messages - use renderAIMessage for additional features - <> - {index === messages.length - 1 && isTyping ? ( - // Typing animation for latest message - { - setIsTyping(false); - }} - /> - ) : ( - // Display message text - msg.text + > + {/* User messages - just display text */} + {msg.sender === AvatarType.User ? ( + msg.text + ) : ( + // Bot messages - use renderAIMessage for additional features + <> + {index === messages.length - 1 && isTyping ? ( + // Typing animation for latest message + { + setIsTyping(false); + }} + /> + ) : ( + // Display message text + msg.text + )} + + {/* Show confidence, disclaimer, citations AFTER typing completes */} + {(!isTyping || index !== messages.length - 1) && + msg.confidence && + msg.isPhase4 && ( + <> + {showConfidenceScore && ( +
    + Confidence Score:{' '} + {msg.confidence} +
    + )} + + {disclaimerMessage && ( +
    + Disclaimer:{' '} + {disclaimerMessage} +
    + )} + + {showCitations && ( + + )} + )} - - {/* Show confidence, disclaimer, citations AFTER typing completes */} - {(!isTyping || index !== messages.length - 1) && - msg.confidence && - msg.isPhase4 && ( - <> - {showConfidenceScore && ( -
    - Confidence Score:{' '} - {msg.confidence} -
    - )} - - {disclaimerMessage && ( -
    - Disclaimer:{' '} - {disclaimerMessage} -
    - )} - - {showCitations && ( - - )} - - )} - - )} -
    - {/* Show blob for most recent AI messages while its typing */} - {msg.sender === 'bot' && - index === messages.length - 1 && - isTyping && ( -
    - -
    - )} + + )}
    + {/* Show blob for most recent AI messages while its typing */} + {msg.sender === 'bot' && + index === messages.length - 1 && + isTyping && ( +
    + +
    + )}
    - )) +
    + )) : null} {/* Question options after greeting */} @@ -317,12 +314,10 @@ const AIChatBot = ({ diff --git a/client/src/components/exercise/lab13/components/RatingModal.js b/client/src/components/exercise/lab13/components/RatingModal.js index 7632b240d..0cfa56a98 100644 --- a/client/src/components/exercise/lab13/components/RatingModal.js +++ b/client/src/components/exercise/lab13/components/RatingModal.js @@ -71,12 +71,12 @@ const RatingModal = ({ customBody={
    -
    Tone:
    +
    Tone:
    setToneRating(e.target.value.toLowerCase().replace(/ /g, '-'))} />
    -
    Confidence:
    +
    Confidence:
    setConfidenceRating(e.target.value.toLowerCase().replace(/ /g, '-'))} />
    From 74b2a46685fa3e969b6e0da8ef075eba734f9fdf Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Mon, 23 Feb 2026 13:59:51 -0500 Subject: [PATCH 106/180] adding wrapper div for piecharts in body --- client/src/components/body/Reading/Reading.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/client/src/components/body/Reading/Reading.js b/client/src/components/body/Reading/Reading.js index 95c0c48d8..7d0fe590e 100644 --- a/client/src/components/body/Reading/Reading.js +++ b/client/src/components/body/Reading/Reading.js @@ -413,12 +413,14 @@ const Reading = (props) => { {data.type === "links" && } {data.type === "piechart" && data.content && ( <> -
    - +
    +
    + +
    {data.content.caption && (
    From 7167069a59d67da0e2df638785436d880f882e4c Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Mon, 23 Feb 2026 14:38:25 -0500 Subject: [PATCH 107/180] changed to look like a hyper link --- client/src/assets/images/lab13/HyperLink.png | Bin 0 -> 1752 bytes .../exercise/lab13/components/AIChatBot.js | 30 ++++++++++-------- 2 files changed, 16 insertions(+), 14 deletions(-) create mode 100644 client/src/assets/images/lab13/HyperLink.png diff --git a/client/src/assets/images/lab13/HyperLink.png b/client/src/assets/images/lab13/HyperLink.png new file mode 100644 index 0000000000000000000000000000000000000000..354c1bbe11886e453a49a76bb4b355ba11f37d86 GIT binary patch literal 1752 zcmd6oeK^x=7{`CVei^ZumtoVe@>U^BXcMuTv#p{mio9GRMoG<>j&#~`PHHquqZCt2 zFDfm)s3<>*DYCYbVoqa8auP{&<Qeckb)CpZmJ6&-ea5|J~2A&A~L3p|v3Z z04N5X%GA}iximoN?rY&S5?z_kS<47D&_%Yv&ZD}1!9IEf2LO!B=Mn_Ylwtt@k;R}= zLid+`>gy}8;oy1Wth&gs^^q?(1nN!pw5~Rt1*lA`sIN6vGbl6m;4h0$I8{(x7MoF| zrl#YwmdloB*(XQSlNyYw-IZn$+~}E<=K|!zo6#2Y5vZGnH0FH_RrRxtb33 zI@jmxHGnK$Z4o5&&&wL9RYS<+gE*HJCT=e`-P6aa3O%;Q5w>4)PD2x=EeTh5R_7O8 zvKn=^alCIt%JZe&aLU~ueWWfj<1J7yoTS3F)Z8h06$IzI*~MvcD}*XB8T^`T(O zk)N*ba`2DVXWW-42Ttp)=_FncJ-eG>_YGxuKB=T^vcR=VYaQ#Kqn$RnTd%pdX;=C7 z>ZUMwjisgBBR0NiqWqQL-O$@EbXNazPva%V?{50&pQ`4PWvBWFcmo07UV7>1B&0|W2WZ2|v2#cion5KzI=SU*EYTKylo+`K?-&RL!>z+1MRYz~kI%VfP=M)g86W1F| zOUAW2C*y4^bWTS6&rAM+1+{a}fMafhEno}3Lrm7e2}W*Adp;z9N?P&?FFAHX4=ZL! z1Y@cAbJd10AFJuYT?0IlDCAY9*!$4lOtVH)GV4gRq#V*Z3)uKLnSbf+}uW!q@_Rb^QPXTTsPThd3>Mee^ zzUwv`esgnCP>&_u-2L8L&w7ssqa|>?^aXu!MhobtKD^``S?2Xh^oupLk3tCf?kG;BM0SmMs*2^P)FXUB!!r%qfg=Y~DWNwlq@)^aS(Nzz z0EHYchW3Kn(BU;p*}VGj>L+QMAeCN~eUJcBAHIZe2Ctt?4K#UTA>Z4?Y3%k6T$jR{ zz3Kh4gB+S$Hb0x{#~KuV#HcJb3d@EG$?e@P2xfVL^xE2!+S43o+S|r4f^5+UwFFD| z3wG#hzKUXZM1bmfYGi5Yuf-`yX_m9-p+b3q^c4+Ve#KPX3u{#}5zMkGDH=Rp*@Bc> z%TKNuA_|LFioUolI@q}bZxc%x+&-^Cz)nBH7Y~s%7WtK1kW#!HbdSfE#S^rV$cEq9 z>4p4!mf?O=?FUx~*N18G_t$|XioIK;%uJ6EEjN|Gfp zMA5rNXKeJPZt`r-o=(!1Aza(c=Z>Jf_>iWkn=l7AWPRq4@9lO7_JfL(o81g5e!Qvs z7&C=X*-n8|#^Dzhu+s(nTaTa z^hSPVoNg{t6iip6|AOv_QZ3{0KFtbB&kn(Wf+A6nx}U2L(?RIOJj7x>B-Idm6hkyw z8cSfp0a70S{{@Ie2Y7`WfrT9Od3&FU*50B3C;m_x`uynd#$l!flA3Y$nIBB-v25#C zLrE#Qy49I~NAFAGDCl`-RT}zvf;sH1O6;Niu#KGk*?8-XlTJ`^8_v4V!PJag;77v} ibq@VsoBwj}EW&=a +
    {showConfidenceScore && ( -
    - Confidence Score:{' '} +
    + Confidence Score: {msg.confidence}
    )} {disclaimerMessage && ( -
    - Disclaimer:{' '} - {disclaimerMessage} +
    + Disclaimer: + {disclaimerMessage}
    )} {showCitations && ( - + Source: +
    +

    ALLpedia

    + Hyper Link Image +
    +
    )} - +
    )} )} From 812e3639950db292ace63df5d5f93931df061ac1 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Mon, 23 Feb 2026 14:55:05 -0500 Subject: [PATCH 108/180] changed to white --- client/src/assets/images/DefaultUser.png | Bin 9495 -> 9582 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/client/src/assets/images/DefaultUser.png b/client/src/assets/images/DefaultUser.png index 31e0a0bc4204e2b1c2b37683cece4e48fd78e14f..c6df7ff2f0f3b697d9055c4bb59123e2d1f1b0af 100644 GIT binary patch literal 9582 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 literal 9495 zcmd^ldo+~$|L-$1?w4VbQ9?{oZMQfQ7*Y{ zl1fZF(q&u{v0XA-MNP#>MG?REw7=(^-#Y)Cwa$NM9cx+hJfG|P^S-{`@6U5?r^{Al z1x*D6L6qr^G*<+{!y_J%lYyTv?5-d1BXwj8-CYj;;^g*W@Gj4C^f`hcN)?iS+*^gS z#n8Ao%HBK5?GPg>X7}L`Bqk=tgc%WbWbbZPh{>VDq1j_Lnh2tc&}p09**TvEV+SIl zea0u+n{RGEsq}~367`*nbBbujr?p%t*E1GTT>e=_8Wj{%mCxJ#UG>kq_orp0l^+QH z=55chwI&u9$?f6LxaW#fF{PgGdk32s)qg*nycr!7RyH*H^VncT=zL4eV^Gp?9A3MtFNjRhE{<(_3*fT?Qh1yhg{BL>0o)XM*t_2Tsj8MYLugsmf5i zGs0IqRpDH-u!oTU`uY~}b3y&}b(}6qzZ9uTS?nm367CQF&_{baN3dFAwZXi-g1GF~ zW4x~NN(%9Y--Z1()swnJnnb}kt7@0Oav7+sd z!s#Qz_1xI#XjP_?5puwlrbVciKlCZARhnPL{oXCobzOTK>AH;dQYmxjn7z5l+^6+Y z(}LkWJBpbuNY@3dH#6eRc-aa3bR)moY%&Q>sz658>QUl#tdx5TsmTs+pGEoMgNlh1 z<7_`9>lW5)MwwG(YnaU4Ej)$p*xED!Q$mj53;y=4|8vR|ZE+8Mt`Fx33eeu-OIAb~ z%!zLeQ^NZ{`)n!*dE;ScyYbMtg7OW&QBKP@*FHVUK>S8fUrWU-^r2%pg^0A_UM}4F zyymB}Sdkm+0Vi8YMp_+cvr=MQ@NJP%)|qzX(qlmah*|l;J;XwhG{F-3`_FdgKSU=f zdz>SQOjR=C97xkrtk>vmpe8dy6NIx^U1+pw@u3LZ{!Ys9ZvG5fR$9IP<=kSnEhErV zn?)gv^G97ra$--PDN(zb4q3ao?Ca!l<6Ez+eT zXghryci;i75pR{N)b3-{Y_SzgT(b*JV+Q8yzS>d;CAD*(+QY(siMJbUI{@ZQD z!k1K~E?(z9yEa~>p#M6@;32+X&GF@f=RC4b1|?%#J(E(`UGYOS3!Be<*-$rL!TfH* zI#eOsvCtc_ppvRo1{>zfVNvyIeX)6JYcOu?+ArnM?PqRGXwnfNJzptSUqK$w%1fixOyFpgw_^K zp=F7k<89Ds2R%w2KF2fHPW1PsL_71zKSa8nca4zWG)VUl4ctAi&@>tGRYBZ-;70%m zQOV^&bI|11RE!-bX>mc^f1||Xrx#}IYVB`CV%i0Uu$Sd$Ua1+WN_y~2!kl&2z#wTl zSESn6XERaKS%D;ZB&BA&@k#azDBQ(Tv|Uctm^+~@(fAtL(pG`2S5hip9u?Uv(MY&8 zieXlNP)|$2F1nPXQgiZ(Xy2RgL`~@xNC|6!$=rb+JIe44IEV{U<4%fPayOJWzDvu# zWHx>ka>luuDzY4}# z{y2lx9hbD=3kor;4At-$O?B9(C|usH*JYxJX1ui$nt)EF#crW}^wQoE4!Y&zQbN>C z>G0%(VO(7oODd4jAk7doykMdzKkbennH?B(u6s8E9UM#%Uy`GnLPodY`Ji%L=_KAfrxca@-p|4IGZShRn>1Tv!Zl@iT zo!t{nWKsrxd*SMXSn%>?kCqeloST3d7lBTqB6{}CbWmTEAJXELw9~p?Zs#cs+kifM zuMxeC~7a zb60Pq>mF98Sa}Gx{lf_HRe&vo^4opySZ{3_EV0`^2cu6O|GiVhR${VXnFsP{4OPcZ zGe_F?{(0;;0;a9!oTG*)x8VyKzPH-@-rulnxImEy!hDd%+-?S^ebJamsTl1!WV3eea`7JRYYa>;&z%+hF$pIfZ5zC_b|!0 z=0m@^&VNhB!r?f1Mu@~OiH0)x0j2-GKFb4Ma6k8U>O$YMi~sEQB@&&iQpe`J^ejPY0*`W^i7))vV;7)DZ$$hwvk`M-d z-Y3^CtJtuV@Gsr}XL8=k{&(_+T>o$BG^rr!wqE`Z(I#L8tsQImg&>X{k~4!i#yNs7 zA+{2_?>`odBSU3vdaW0legAh6y&ndp6R`gyuS15ejW*XU7D+_>WSc0n<+4Ox`8GcE zpWj^=$99+fdNsk-htNeyXM9ini4<9KW0l1zBCXEtakr@G2)Mw@r0i@_&= zN58Csn}_YPe!nz>*EI&+I`vpkipF@3rW%ZV5g`YXVD{&I2H|&?;tqiuISNyFjfA;E z>S+toc$;9UJJ_+r_8G5``dic_3zCbV#yySOz1U(eDRMPyGib=0Iptn!N%;BWs1>fG zz--cqKU#XkaaqjuCS@X9d$Wy_(vfL4nJQ8}a0$%Q z#C%@a>ISUu8b9MDzXI_+kFghJAj|+S+{}+Jn>@fB6+RX;;x-24+G%nv>!wT3gJW~1 z*(k7MfCT+`shd6r)96m4Qnt^&1jZSlQPoD! z-q)_Hqn>vE*vgId0iOs&7W&pN61;qO&yz8`_vNy^jGux@%|QlSoC|^aZ3tNIYn5RwjRf8_NJ-SqQ=BK%RX4HR|cC zDI1Lh=Ug?!*@bpcF;11uid=Z>y$AO@2PAp`!W*4br6yh@3UhvPdLn9QcK#X_>w>t%&@*qu*{Dt*goPe4qmIwTPxcrA zJxjRX!-bAQyKWzg*ovou8?g`aM+Eo+pC(TlUBNE<0KWiz(xh#jy=_*%o8#xhmMi@UHp|Qtn34Y!b!kE3 zk%L)XESIZW-f`XOox@x{sIx!>7a=UiKik+r6ji_&v)b#~EY<>6}nx%dy65p9qGWpYCavYi{O-u)Q1617jE z>52JK6PXcDAmC?Ub(Uh8yPt5*J@5I78skZ+H99T`@0L-+s*MPn%Ce8t3U4sQZQVDL z9xz*|T#Yz>c-&ST)sIhbnL4>BrQd_Em^iaW+9u~JbQVR`ZcVUc0^$&EE!=+9n7(NU^bVmn4& zCI>jhBo39DO>#u5J1_enJoWQfKF<)}g6z@?9V?e{k&fSFZdyuQCdpiVC1%8yXBkz7 zMCRPNvw*!poD|q?`t=#aGJVRJ%&Y>-rqU}ir+9`kSTvu){eB-7)q+Ly?3*(9c8M!+ zmt-Q`viF-cDA%i74X&7?KZH{f&SSY~%kwLV`H#Y+Uq&m7b%d>a$Q=VBb&3~5+DoVG z*(8*@YsTssw(4%Xv1B6uEf!R=8<(m;Yf9v&@pmQX-|IHe9Oy|@G2J-I7->`=P0I?! zrJlE^AxSJZJu7_g9g8kefK1M_J!BpjWqP&{}>>=Aaulj8G1) z$3$x5=G(%VR2}9U7$s%2?Lk9SNbq30cBbk-$An9w6o01VCnqMGO$KF(hcdg&6;X>w zQWb%PRLWMqcGzf*v+gi{=M^zLY9{=^js4U)=gN@*TJ(!IHz@Dq@ML@tefoh^Y1{u- zA3Hp|ar(-Jlv=4;pSaq95ABxm<%Ib9y!N%+*l>FW{b91;W}7Zkjn-tsf5ndoI}y>? z*1lxEUU6_wqj72emqBm2a;b8pp?ccCO42cFEc`5}kH0b>KqveO#Uc{P8Xt!KjCecR zw)TnV8(*QB&{eo3xxFy#=WNfHH_NWTASW`(8kc0WG07zU)v2-US9vI;JnbGQd)tGQX5l0^HiY>b^Q;l#dWkZu1KQJ0 zs`*+Lzp@9HkK3q}qnMM)^@5_)^>(~&*%sP>x)mql!KMXucHxkG6XMQiD?Atq9k~>? zjQ(OTWG8mCkFCzhKX>sr-a02Wt2!+epf|l*ynfs^bzK`?H{6!?@j+|jKjT5!j@iN) zeoI}ks=x5enNDLcid(cMBHyl#xpcmuk0yE$gI8tJ*@N3zO&JcpYd_BxUTlu6iQ6ReN+pLF$5)i^)>K5Z7LbnP zcOWjvn48wt*OAgJGV2&)?gY4p#o%=BW4*-b*t>^jR32sqGas5<@29Yx7=gYy_L>)@ zZL4e83PU?y82`9LI9lS&liwzM9pxvLz~v5^wk`Ym6g>GkjPUN!%nsi1#EV@?OL61Z zvz2nvxjkTZo&ZsvK#uUf;r%A%x`arr)}h;pjmTV+pTgP@sC_^oLS6;!Nd4b&F`X#?_XJ#mz<7G^n5?7Dl7KjbN!7Lfu7;TF4lEE!!v=wH~9<~jTV z>TFZfTPP`#E;W)Y&J-6f-}|Q(oIw$FL#ri;=;{R!AStBCO~MfVwZxSdmnr`f#xF(9 z%_jRqs}E#L+rEW-`aO9r3GhY6n{0jlYXznD9F~a>g3>^EzwC4=#!jFO6jCqr4NKWNsgpJ-&YBAO0I(j<%CVP= zMNrhFUKnZrm15sVd+;q#e{mRFAbcaRxk1H7S^=N_Myb7kjUqwKke@D$A#7YkI&=xU zU;1!=10aXhq)03AG2tr!JLm2yOlu3H8%}zks78unNRh|y9?wl!JU*KFLmVRH31+>c zRa=w%5Rr3~3wS@5rsg2gv(5ai%Z9&Tz1M&W$W)J!NK@CBOf7|CQr4YuTqCajL5o7z zT1a!RV7>Cw0m6N85sfw5^9%dQ(+S<1Er1tg-ZUFkE48{KP-59-*|EV|n6Pi;Yxiyo zV=@w6i^&Ol5;F;Y>MdzfOQrKtx$~~tv=_T^9gK6>Ao?OPzqF0=o-wD*-ou!4j#hO( z6@%NKZv3imD%O9ta7|zC7;Z}iCRfq&++jVg!@<~L&QvB|#q>-1b>UuqWQ6>FJ0qm8 z0PEGZBCy%fWP0}7p+vQ~8)yVnFYkJgBBcf&102iB8%%7xh`9|c==cHofHAF!%y&v0 zdX&~^A-nWO|AM-DD)tBvUbc@7E9bQBHopYjT(Jep6Ok|FP zS_%oIiKm$OyEdSRdCl+h24X*Ng+g-N$p|N5e(9;Ai_!&=$zD@=%32<|_MNULlE&UA zCO{PrxTu_roj{NLf~@YtzQSVe_m?7F-;FKzQ_f?j5+@@kGJR{;vK(kOjZ`e79p6#V z>^HknW}ujw%sY&$Uq=ZH(55|mOSauh8D1nbl0aPjl(y_dHS@{4B3;cqHS{d4=>-}y zJZ#GRnWt25NQr=bA?{jGD1rETQvSyk%!e0cHbTkYQ}%h~0RHzo&DpbaE5tb>BaXpa zL;k}Pp8Pl;gkeOfz25)A8jvoJe)mGTlt1v{XEh>lr+q|b)i=KM>J-Iku=g?I|D<9+ z-mXQ=C6@@Jl5M{pExczSBz13w;sRelYtp@6ncqp55{+0 z$YhKdLMh^{5u&C+in+dIW;`I*-t~x!Kw#;a)bZ3CF*rEEE8l@k6}3@{={Ynba#| zXS6vMGPenB=dcr{r}n?_K@1Eif%a2RUFe$W)}2?-!4hbNP4y{xiuFa*B>lnjgv6<> zP2ajV*F*+NS&>K+QbOY>mElz08f#fA1M`Y9;vasaQo(ph5jdMQk!hil0VHBSg$=E3 z-lfmHm6ydmR6@L(U5#AWN&85fVl*BHcf!;0m$jjq4+Uw{EUP3v^#u08Xd+$oTm_v8 z8Cedpn$Sek&S9bdfB@r<;@d7_;h@KRaf{Nhx}{>-?)Cai-6`B$CG|8l0(XH%`=}I0 ztaAcNG<%`I|4pP?b_Bm#=MXp)*Cj3~*gemr{khV?Qk3C+LXDCmj-4F#2ELp(a^Cpc z&lA2Gyq5zS?I#NBWePg>49!=g*H+WZj`=g@LZUJ9dR$TTZ-B=8jvk<~f4bomZPPHe zfjAjRDDG{8tn8qhHg7E%#gqPdm8n126n0gCt<2{b=S|M9*ZS$yc{hHI`Oq%yKh#~2 zjP?@=bl*nHV;lINy^)NS6c@aXSFRn$;XtU+s6y78sL1EgPPg+jcq!IOL+Acn7)Yp; zO1=?rf@D=dP1bjAY7ZHaEwvMH)zG)o(f+f`nMY=sw1ZySd)kZ;f}elK=T4Cp$6`&4 zbf7=94d54f)9O{M?t%h1cU(eGnNNP`-aPVHo{v(7pF=&hb6dFVEIk^#a~Qum6{|C5 z=~Y6eLC>mdVT@SAJ}GMGKeGmK_O7HJ;|BNQtz;BOYZ^?{fV`K-?M)hUx^nCdnU7G0 z$I)vNu3ng3ROiKjWb(1U74Dr6O)Dw6QU7cB65$S5?VK8_WBlsNlt-|{k}TX>LPq*a z>;#EwX#7tT*u;X@ydH$hu>VZ*98a|^#DJb z52f3aB3-u;se+|D9ySMYGC~Z6Uz1IPeDzi!rC|Jc4Z>|ODtb!nHb%o8YLokVocDb% z&?mZjpc?6RDRGSl8TG)hd(Ttmm(!o!mKE2FRNX>w-nkkCKPdn6&Te?tkN0|nuiQe4 z3>88ytzR5@4}n{VHTGom%5gog2RZtJ_Nnm1>~?%5o>aAh1$AHg0^}Y6Di3QwC9cHk zu(Cy}9Nzrrzp&ox)TYbc$T~OLM|_SuNIl9t2A}7vy=R*dl0E)6>XoytbGm*drM85) zMxBhds*BTj6TcCaCj5Qa>&ef1JEEO+WlU zs=qhXsV`~;xIVg@_)ihyCX@;WK>U)woWBvgGd=swF7EeNBGtVkQo%2BP>_)GIX5(g zg|8$@?i%$f6M(~=jM)8*_#$eP_j+7!U5kWmZeNyk;~oj*`7$&b5`++ofw{hEvLPd} z-FlBesm}hil&Iv>`1@48w-2)J<0`=F^wQ6mB$PKT@#J10WYl1K3Bi$bEV5B@H-%MIAvd>5E=VPAtk^QX*e^*s_@@g37Z32- zGLym2o=kZ3<4%x1eezFB*1l+L4a`_ZA`9#M~n+@wIwICWY z83pvaj{h18a2%N`g7|mf#%^5QovrwL?n$Zo%8yo!pOhAk%qHp4C%;vbB5y!{FwPsp z`U#hyR!-OKBJ(HU)OVULmd&sb0x4MfeXuNP7Bor87 zf~Ct2{Fpt20}BJTY#Ufc8QZD-$F>*J!4nbhmVwoAo?6T-uY8Y324w33KqXzdjN3S0 zQ>1m>Ci;R7F%@nx^lyDMAyplU#uQq~Xfr`qN1}i3d%Q%bU`#<{QFd`x?2f8D!?S)0vzAkG}o<{QT7BV@5ihB;zi2H^}hgg-EB_z zCCBHLh{azMjrz=RmB4!K+QnsLbR;WJpLyyVLM$OxZEsaavEIBfvMrtS@?}@%!x05! z@L|HgJj}gbn*^6A&TDPxod(u>CNg>rEG9Jqpdibs*?6zx{_F8WJhu00jr725y8TZw=t;g5GM0aUCA>)(&>824yO@ zm8i3G+ow{3Qt=slrJrPiKEQ>DmyNdc&fueEFqN!;szLKM!4JiKiqgUV_Au_p*X%@~ zSi|xB3%@!NcJ15-fZ{*%A~Z8Ob6({H!oSMUC{F3=+YG5M}iowrKu*IdP3dkp%TP_HW{c5Ttoe*s+ZGT53}&BM3pvCd2qn5|?T4Pc`4L#7@cB zteX1J6{5ko^hKzd(>2Qs(flWZ3U}GXzG`X+`Z23*4gW}_wJj&gX&g^HuzMoutN{|1 zjQvb}fy#P@rs-dqQ4#w5N;#f&?ZY7$W{l1tNo8NxFX}BZ%hYGGG70(D@3oGb^KY0< g&fH4N7@sGsd`>S2UccHKK4L=X_Aa#YEx{-M3nI9U{Qv*} From 182dd2c51c93f1e1db39c2791a58dae858fb5213 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Tue, 24 Feb 2026 13:23:39 -0500 Subject: [PATCH 109/180] Convert filter selection to checkbox, change state of selected topic and difficulty to arrays --- client/src/pages/labspage/LabsPage.js | 47 ++++++++++++++++++--------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 98493d44c..2b34136e0 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -95,7 +95,9 @@ const LabsPage = (props) => { const labsByDifficulty = (labMap, difficulty) => { const filteredMap = new Map(); for (const [key, value] of labMap.entries()) { - const filteredArr = value.filter((x) => x.difficulty === difficulty); + const filteredArr = value.filter((x) => + difficulty.includes(x.difficulty), + ); if (filteredArr.length > 0) { filteredMap.set(key, filteredArr); } @@ -126,19 +128,35 @@ const LabsPage = (props) => { const [textSearch, setTextSearch] = useState(""); const [showFilter, setShowFilter] = useState(false); - const [selectedTopic, setSelectedTopic] = useState(null); - const [selectedDifficulty, setSelectedDifficulty] = useState(null); + const [selectedTopic, setSelectedTopic] = useState([]); + const [selectedDifficulty, setSelectedDifficulty] = useState([]); + const changeTopic = (value) => { + setSelectedTopic((prev) => + prev.includes(value) + ? prev.filter((topic) => topic !== value) + : [...prev, value], + ); + }; + const changeDifficulty = (value) => { + setSelectedDifficulty((prev) => + prev.includes(value) + ? prev.filter((level) => level !== value) + : [...prev, value], + ); + }; const applyFilters = ( topic = selectedTopic, difficulty = selectedDifficulty, text = textSearch, ) => { let filtered = new Map(labInformation); - if (topic && labInformation.has(topic)) { - filtered = new Map([[topic, labInformation.get(topic)]]); + if (topic.length > 0) { + filtered = new Map( + Array.from(filtered.entries()).filter(([key]) => topic.includes(key)), + ); } - if (difficulty !== null) { + if (difficulty.length > 0) { filtered = labsByDifficulty(filtered, difficulty); } if (text.trim() !== "") { @@ -336,12 +354,12 @@ const LabsPage = (props) => { className="tw-flex tw-items-center tw-gap-3 tw-cursor-pointer" > setSelectedTopic(option.value)} + checked={selectedTopic.includes(option.value)} + onChange={() => changeTopic(option.value)} className="tw-accent-primary-yellow" /> {option.label} @@ -360,12 +378,12 @@ const LabsPage = (props) => { className="tw-cursor-pointer tw-flex-1" > setSelectedDifficulty(level)} + checked={selectedDifficulty.includes(level)} + onChange={() => changeDifficulty(level)} className="tw-peer tw-hidden" />
    { tw-border tw-border-solid tw-border-primary-yellow tw-font-bold tw-transition - hover:tw-bg-primary-yellow peer-checked:tw-bg-primary-yellow peer-checked:tw-text-black " @@ -391,8 +408,8 @@ const LabsPage = (props) => {
    From 5cd47abf559d8f91ce9aa00073ceadba72c1ae80 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 26 Feb 2026 12:34:54 -0500 Subject: [PATCH 111/180] Use styling from Educator Resources for difficulty filter buttons; Made accessible for using Tab --- client/src/pages/labspage/LabsPage.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 2b34136e0..29d40d637 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -384,18 +384,17 @@ const LabsPage = (props) => { value={level} checked={selectedDifficulty.includes(level)} onChange={() => changeDifficulty(level)} - className="tw-peer tw-hidden" + className="tw-peer tw-w-0 tw-h-0" />
    {level} From 4b81243451dd44276ae3dd8351487b244b849bb7 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 26 Feb 2026 12:50:37 -0500 Subject: [PATCH 112/180] Removed Filter title and X button --- client/src/pages/labspage/LabsPage.js | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 29d40d637..7d33ed8f1 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -307,21 +307,6 @@ const LabsPage = (props) => { }} className="tw-p-6 tw-mt-5 tw-space-y-4 tw-w-[90%] tw-max-w-[800px] tw-text-left tw-rounded-md tw-shadow-md" > -
    -

    Filter

    - -

    Topic

    From 377b32f6013062693424f8a84876d75d95aa176a Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 27 Feb 2026 10:00:24 -0500 Subject: [PATCH 113/180] standardize chat bubble max width to be consistent per sender type --- .../exercise/lab13/components/AIChatBot.js | 188 ++++++++++-------- 1 file changed, 100 insertions(+), 88 deletions(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index cbcdc8c1f..4b4060870 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -96,7 +96,6 @@ const AIChatBot = ({ } }, [messages, isTyping, isThinking, canSelectQuestion]); - // Scroll function to show the most recent message const scrollToBottom = () => { if (messagesContainerRef.current) { @@ -200,96 +199,108 @@ const AIChatBot = ({ {/* Container for indvidual messages */} {messages && messages.length > 0 ? messages.map((msg, index) => ( -
    - {/* Avatar circle */} - - {/* Message box adjacent to user message */}
    + {/* Avatar circle */} + + {/* Message box adjacent to user message */}
    - {/* User messages - just display text */} - {msg.sender === AvatarType.User ? ( - msg.text - ) : ( - // Bot messages - use renderAIMessage for additional features - <> - {index === messages.length - 1 && isTyping ? ( - // Typing animation for latest message - { - setIsTyping(false); - }} - /> - ) : ( - // Display message text - msg.text - )} - - {/* Show confidence, disclaimer, citations AFTER typing completes */} - {(!isTyping || index !== messages.length - 1) && - msg.confidence && - msg.isPhase4 && ( -
    - {showConfidenceScore && ( -
    - Confidence Score: - {msg.confidence} -
    - )} - - {disclaimerMessage && ( -
    - Disclaimer: - {disclaimerMessage} -
    - )} - - {showCitations && ( -
    - Source: -
    -

    ALLpedia

    - Hyper Link Image -
    -
    - )} -
    +
    + {/* User messages - just display text */} + {msg.sender === AvatarType.User ? ( + msg.text + ) : ( + // Bot messages - use renderAIMessage for additional features + <> + {index === messages.length - 1 && isTyping ? ( + // Typing animation for latest message + { + setIsTyping(false); + }} + /> + ) : ( + // Display message text + msg.text )} - - )} + + {/* Show confidence, disclaimer, citations AFTER typing completes */} + {(!isTyping || index !== messages.length - 1) && + msg.confidence && + msg.isPhase4 && ( +
    + {showConfidenceScore && ( +
    + Confidence Score: + {msg.confidence} +
    + )} + + {disclaimerMessage && ( +
    + Disclaimer: + {disclaimerMessage} +
    + )} + + {showCitations && ( +
    + Source: +
    +

    ALLpedia

    + Hyper Link Image +
    +
    + )} +
    + )} + + )} +
    + {/* Show blob for most recent AI messages while its typing */} + {msg.sender === 'bot' && + index === messages.length - 1 && + isTyping && ( +
    + +
    + )}
    - {/* Show blob for most recent AI messages while its typing */} - {msg.sender === 'bot' && - index === messages.length - 1 && - isTyping && ( -
    - -
    - )}
    -
    - )) + )) : null} {/* Question options after greeting */} @@ -316,10 +327,11 @@ const AIChatBot = ({ From 9b13d76d2958619dab0bdc8e22d753dc1c251935 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Tue, 3 Mar 2026 12:36:51 -0500 Subject: [PATCH 114/180] Make filtering automatic; Removed submit button; Moved clear button to corner --- client/src/pages/labspage/LabsPage.js | 47 ++++++++++----------------- 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 7d33ed8f1..273c12935 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -131,6 +131,10 @@ const LabsPage = (props) => { const [selectedTopic, setSelectedTopic] = useState([]); const [selectedDifficulty, setSelectedDifficulty] = useState([]); + useEffect(() => { + applyFilters(selectedTopic, selectedDifficulty, textSearch); + }, [selectedTopic, selectedDifficulty, textSearch]); + const changeTopic = (value) => { setSelectedTopic((prev) => prev.includes(value) @@ -192,7 +196,6 @@ const LabsPage = (props) => { const handleSearchTextChange = (search) => { setTextSearch(search); - applyFilters(selectedTopic, selectedDifficulty, search); }; const loggedIn = @@ -287,7 +290,7 @@ const LabsPage = (props) => { tw-rounded-md tw-bg-primary-yellow tw-flex tw-justify-center tw-gap-2 - tw-font-bold tw-border-solid tw-border-primary-yellow" + tw-font-bold tw-border-solid tw-border-primary-yellow tw-font-poppins" > {
    {showFilter && ( -
    { - e.preventDefault(); - applyFilters(); - }} - className="tw-p-6 tw-mt-5 tw-space-y-4 tw-w-[90%] tw-max-w-[800px] tw-text-left tw-rounded-md tw-shadow-md" - > -
    +
    +
    +

    Topic

    @@ -388,25 +395,7 @@ const LabsPage = (props) => { ))}
    -
    - - -
    - +
    )}
    From ecaec284cac04dcccdfb5ecdba53a2fc6c770119 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Tue, 3 Mar 2026 12:43:38 -0500 Subject: [PATCH 115/180] Small styling change for clear button --- client/src/pages/labspage/LabsPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 273c12935..10c9be7a7 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -304,7 +304,7 @@ const LabsPage = (props) => {
    {showFilter && (
    -
    +
    diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index c7ca0c89f..79778e740 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -63,23 +63,21 @@ const AIChatBot = ({ disclaimerMessage = '', onCitationClick = null, onQuestionAsked = null, - typedMessageIds, - setTypedMessageIds, }) => { const [isTyping, setIsTyping] = useState(false); const [isThinking, setIsThinking] = useState(false); const [showQuestionOptions, setShowQuestionOptions] = useState(false); const messagesContainerRef = useRef(null); - // Auto-trigger typing animation for any new bot message (including greeting/intro messages) + // Auto-trigger typing animation for any new bot message flagged as isNew useEffect(() => { if (messages.length > 0) { const lastMessage = messages[messages.length - 1]; - if (lastMessage.sender === 'bot' && !typedMessageIds.has(lastMessage.id)) { + if (lastMessage.sender === 'bot' && lastMessage.isNew) { setIsTyping(true); } } - }, [messages, typedMessageIds]); + }, [messages]); useEffect(() => { if (onTypingChange) { @@ -177,6 +175,7 @@ const AIChatBot = ({ timestamp: new Date(), confidence: botObj?.confidence, isPhase4: showConfidenceScore || showCitations || disclaimerMessage, + isNew: true, }; // Add bot response to message history @@ -218,8 +217,8 @@ const AIChatBot = ({
    {/* User messages - just display text */} @@ -256,7 +255,11 @@ const AIChatBot = ({ text={msg.text} onUpdate={scrollToBottom} onComplete={() => { - setTypedMessageIds((prev) => new Set([...prev, msg.id])); + setMessages((prev) => + prev.map((m) => + m.id === msg.id ? { ...m, isNew: false } : m + ) + ); setIsTyping(false); }} /> @@ -343,8 +346,8 @@ const AIChatBot = ({ onClick={() => handleQuestionClick(question)} disabled={!canSelectQuestion} className={`tw-w-full tw-text-left tw-p-3 tw-text-black tw-transition-all tw-duration-200 tw-rounded tw-border-none tw-body-text ${canSelectQuestion - ? 'tw-bg-transparent hover:!tw-bg-bgwhite tw-cursor-pointer' - : 'tw-cursor-not-allowed tw-opacity-50 tw-bg-transparent' + ? 'tw-bg-transparent hover:!tw-bg-bgwhite tw-cursor-pointer' + : 'tw-cursor-not-allowed tw-opacity-50 tw-bg-transparent' }`} > {question.text} @@ -433,8 +436,6 @@ AIChatBot.propTypes = { disclaimerMessage: PropTypes.string, onCitationClick: PropTypes.func, onQuestionAsked: PropTypes.func, - typedMessageIds: PropTypes.instanceOf(Set).isRequired, - setTypedMessageIds: PropTypes.func.isRequired, }; export default AIChatBot; diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 60e9cb697..f068f05df 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -56,7 +56,6 @@ const AIPanel = () => { const [activeTab, setActiveTab] = useState('AIChatBot'); const [currentDisplayTime, setCurrentDisplayTime] = useState(0); const [currentQuestion, setCurrentQuestion] = useState(null); - const [typedMessageIds, setTypedMessageIds] = useState(new Set()); const phase4IntroAddedRef = useRef(false); const [clickedReviewButtonThisPhase, setClickedReviewButtonThisPhase] = useState(false); @@ -444,6 +443,7 @@ Although many cases are inherited, they can also develop later in life due to ey sender: 'bot', text: `Hi! I'm ALL-IE the AI. What can I help you with?`, timestamp: new Date(), + isNew: true, }, ]); setCurrentPhase(1); @@ -490,6 +490,7 @@ Although many cases are inherited, they can also develop later in life due to ey sender: 'bot', text: phase4IntroText, timestamp: new Date(), + isNew: true, }, ]); }, 500); @@ -572,6 +573,7 @@ Although many cases are inherited, they can also develop later in life due to ey sender: 'bot', text: `Let's continue. Select another prompt.`, timestamp: new Date(), + isNew: true, }, ]); }, 800); @@ -674,8 +676,6 @@ Although many cases are inherited, they can also develop later in life due to ey } onCitationClick={handleCitationClick} onQuestionAsked={handleQuestionAsked} - typedMessageIds={typedMessageIds} - setTypedMessageIds={setTypedMessageIds} />
    diff --git a/client/src/components/exercise/lab13/pages/AIandSearchPanel.js b/client/src/components/exercise/lab13/pages/AIandSearchPanel.js deleted file mode 100644 index ba1b8de80..000000000 --- a/client/src/components/exercise/lab13/pages/AIandSearchPanel.js +++ /dev/null @@ -1,19 +0,0 @@ -import { React } from "react"; -import { startExercise } from "src/reducers/lab2/actions"; -import { navigate } from "@reach/router"; - -const AIandSearchPanel = () => { - const handleContinue = () => { - startExercise(); - navigate("/Lab13/Exercise/IDEIntroduction"); - }; - - return ( -
    - AI and Search Panel Page - -
    - ); -}; - -export default AIandSearchPanel; From 333d9b17f4f417a8aeaf8af0d6a83c53e33ee0de Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Tue, 3 Mar 2026 15:00:05 -0500 Subject: [PATCH 117/180] removing line --- client/src/components/exercise/lab13/components/AIChatBot.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 79778e740..57aca557e 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -162,8 +162,6 @@ const AIChatBot = ({ aiResponseText: botObj?.text, }; - setIsThinking(true); - // Calculate delay based on response length const delay = Math.ceil((botObj?.text.length || 100) / 100) * 500 + 500; From 4773d62b606a1aa0165071b9d5cc5a819b38f532 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Tue, 3 Mar 2026 15:34:02 -0500 Subject: [PATCH 118/180] Changed topic buttons to be similar to difficulty; Put them in grid format --- client/src/pages/labspage/LabsPage.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 10c9be7a7..5f22347db 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -317,7 +317,7 @@ const LabsPage = (props) => {

    Topic

    -
    +
    {[ { id: "accessibility", @@ -343,7 +343,19 @@ const LabsPage = (props) => { From eadbfe4204aabc424848086e659e4844e153665a Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Tue, 3 Mar 2026 16:23:58 -0500 Subject: [PATCH 119/180] Made search bar and filter same width; Allowed search bar to shrink --- client/src/pages/labspage/LabsPage.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 5f22347db..f0abf5d32 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -269,11 +269,11 @@ const LabsPage = (props) => {

    Labs

    -
    -
    +
    +
    {
    {showFilter && ( -
    +
    ); }; - -TypingMessage.propTypes = { - text: PropTypes.string.isRequired, - onUpdate: PropTypes.func, - onComplete: PropTypes.func, -}; - AIChatBot.propTypes = { userQuestions: PropTypes.arrayOf( PropTypes.shape({ diff --git a/client/src/components/exercise/lab13/components/BlobLoader.css b/client/src/components/exercise/lab13/components/BlobLoader.css new file mode 100644 index 000000000..5e67983ea --- /dev/null +++ b/client/src/components/exercise/lab13/components/BlobLoader.css @@ -0,0 +1,104 @@ +.blob-1 { + border-radius: 32% 58% 69% 43% / 48% 32% 59% 55%; +} + +.blob-2 { + border-radius: 38% 62% 63% 37% / 41% 44% 56% 59%; +} + +.blob-3 { + border-radius: 31% 45% 74% 35% / 38% 56% 51% 87%; +} + +/* Spinning Animation */ +@keyframes blob-1-spin { + + 0%, + 100% { + border-radius: 32% 58% 69% 43% / 48% 32% 59% 55%; + transform: rotate(0deg) scale(1); + } + + 50% { + transform: rotate(180deg) scale(0.92); + } + + 100% { + transform: rotate(360deg) scale(1); + } +} + +@keyframes blob-2-spin { + + 0%, + 100% { + border-radius: 38% 62% 63% 37% / 41% 44% 56% 59%; + transform: rotate(0deg) scale(1); + } + + 50% { + transform: rotate(180deg) scale(1.08); + } + + 100% { + transform: rotate(360deg) scale(1); + } +} + +@keyframes blob-3-spin { + + 0%, + 100% { + border-radius: 31% 45% 74% 35% / 38% 56% 51% 87%; + transform: rotate(0deg) scale(1); + } + + 50% { + transform: rotate(-180deg) scale(0.95); + } + + 100% { + transform: rotate(-360deg) scale(1); + } +} + +/* Pulsing animations (no rotation, just scale) */ +@keyframes blob-1-pulse { + + 0%, + 100% { + border-radius: 32% 58% 69% 43% / 48% 32% 59% 55%; + transform: scale(0.95); + } + + 50% { + transform: scale(1.05); + } +} + +/* Pulsing Animation */ +@keyframes blob-2-pulse { + + 0%, + 100% { + border-radius: 38% 62% 63% 37% / 41% 44% 56% 59%; + transform: scale(0.95); + } + + 50% { + transform: scale(1.05); + } +} + +@keyframes blob-3-pulse { + + 0%, + 100% { + border-radius: 31% 45% 74% 35% / 38% 56% 51% 87%; + transform: scale(0.95); + } + + 50% { + transform: scale(1.05); + } +} \ No newline at end of file diff --git a/client/src/components/exercise/lab13/components/BlobLoader.jsx b/client/src/components/exercise/lab13/components/BlobLoader.jsx index 6ea206ced..a5835c0cc 100644 --- a/client/src/components/exercise/lab13/components/BlobLoader.jsx +++ b/client/src/components/exercise/lab13/components/BlobLoader.jsx @@ -1,5 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; +import "./BlobLoader.css"; /** * Animated blob loader that creates three blob @@ -59,91 +60,6 @@ export default function BlobLoader({ animationMode = "static" }) { animationMode === "pulsing" ? "1px solid black" : "1px solid black", }} >
    - -
    ); } diff --git a/client/src/components/exercise/lab13/components/TypingMessage.js b/client/src/components/exercise/lab13/components/TypingMessage.js new file mode 100644 index 000000000..01ff3b262 --- /dev/null +++ b/client/src/components/exercise/lab13/components/TypingMessage.js @@ -0,0 +1,46 @@ +import PropTypes from 'prop-types'; +import React, { useEffect, useState } from 'react'; +/** + * Typewriter animation component effect for bot responses + * that displays text character by character + * @param {*} text : Text string to display with the typing effect + * @param {*} onUpdate : Functon to flag after each character is written + * @returns + */ +const TypingMessage = ({ text, onUpdate, onComplete }) => { + const [displayedText, setDisplayedText] = useState(''); + const [currentIndex, setCurrentIndex] = useState(0); + + /** + * Adds character from currentIndex to displayedText + * one at a time everytime the currentIndex, text, or onUpdate changes + */ + useEffect(() => { + if (currentIndex < text.length) { + const timeout = setTimeout(() => { + setDisplayedText((prev) => prev + text[currentIndex]); + setCurrentIndex((prev) => prev + 1); + + // Scroll to bottom when onUpdate is called by component + if (onUpdate) onUpdate(); + // Typing speed, one character every 15ms + }, 15); + + return () => clearTimeout(timeout); + // onComplete becomes true when finished typing + } else if (currentIndex === text.length && onComplete) { + onComplete(); + } + }, [currentIndex, text, onUpdate, onComplete]); + + return <>{displayedText}; +}; + +TypingMessage.propTypes = { + text: PropTypes.string.isRequired, + onUpdate: PropTypes.func, + onComplete: PropTypes.func, +}; + + +export default TypingMessage; \ No newline at end of file From 4795406edb5597488ca0a25975b46b94ac6c1da4 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Wed, 4 Mar 2026 12:08:43 -0500 Subject: [PATCH 121/180] fixed the bug darlyn found --- client/src/components/exercise/lab13/pages/AIPanel.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index f068f05df..8ac039636 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -390,14 +390,14 @@ Although many cases are inherited, they can also develop later in life due to ey } return null; } - if (topicIndex === 2 && currentPhase < 4) { - if (!questionAnswered) { + if (!questionAnswered || !currentAnswerData) { return `You're now on your least knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; } if (questionAnswered && !canReviewResponse) { const timeLeft = 15 - getWikipediaTimeSpent(); if (!hasVisitedWikipedia) { + console.log("HERERERERER") return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; } return `Please spend ${timeLeft} more second${timeLeft !== 1 ? 's' : ''} on ALLpedia`; From 1cebabadb0eaead26635907d048b59f3c12b71b7 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Wed, 4 Mar 2026 13:22:59 -0500 Subject: [PATCH 122/180] huge refactor of AIPanel (lowkey prop drilling kinda hard but at this point im lazy and dont wanna make a context for the lab --- .../lab13/components/AIPanel/AIChatBotTab.js | 283 +++++++++ .../components/AIPanel/AIPanelRatingModal.js | 86 +++ .../lab13/components/AIPanel/AllPediaImage.js | 21 + .../lab13/components/AIPanel/AllPediaTab.js | 123 ++++ .../functions/RenderTextWithHighlight.js | 33 ++ .../functions/getAnswerDataHighlights.js | 11 + .../exercise/lab13/pages/AIPanel.js | 554 ++---------------- .../constants/lab13/BiasQuestionsConfig.js | 6 + .../src/constants/lab13/WikipediaContent.js | 38 ++ 9 files changed, 653 insertions(+), 502 deletions(-) create mode 100644 client/src/components/exercise/lab13/components/AIPanel/AIChatBotTab.js create mode 100644 client/src/components/exercise/lab13/components/AIPanel/AIPanelRatingModal.js create mode 100644 client/src/components/exercise/lab13/components/AIPanel/AllPediaImage.js create mode 100644 client/src/components/exercise/lab13/components/AIPanel/AllPediaTab.js create mode 100644 client/src/components/exercise/lab13/functions/RenderTextWithHighlight.js create mode 100644 client/src/components/exercise/lab13/functions/getAnswerDataHighlights.js create mode 100644 client/src/constants/lab13/WikipediaContent.js diff --git a/client/src/components/exercise/lab13/components/AIPanel/AIChatBotTab.js b/client/src/components/exercise/lab13/components/AIPanel/AIChatBotTab.js new file mode 100644 index 000000000..928034107 --- /dev/null +++ b/client/src/components/exercise/lab13/components/AIPanel/AIChatBotTab.js @@ -0,0 +1,283 @@ +import { BIAS_DEFINITIONS, BIAS_POSITION_MAP, BIAS_TYPES } from 'src/constants/lab13/BiasQuestionsConfig'; +import AIChatBot from '../AIChatBot'; +import { Tab } from '../Tab/Tab'; +import { useContext, useMemo } from 'react'; +import ExerciseStateContext from '../../Lab13Context'; +import PropTypes from 'prop-types'; + +const AIChatBotTab = ({ + currentTopic, + topicData, + setSelectedBiasData, + setShowRatingModal, + setCurrentAnswerData, + setQuestionAnswered, + showRatingModal, + showBiasExplanation, + clickedReviewButtonThisPhase, + showWikipediaTab, + currentDisplayTime, + currentAnswerData, + questionAnswered, + isBotThinking, + isBotTyping, + requireWikipedia, + activeTopic, + setClickedReviewButtonThisPhase, + setIsBotThinking, + setIsBotTyping, + setCurrentQuestion, + setActiveTab +}) => { + const { + chatMessages, + setChatMessages, + hasVisitedWikipedia, + currentPhase, + showConfidenceScore, + showCitations, + disclaimerMessage, + askedQuestions, + setAskedQuestions, + topicIndex + } = useContext(ExerciseStateContext); + + const activeBias = + BIAS_POSITION_MAP[currentTopic?.biasPosition] || BIAS_TYPES.HALO_EFFECT; + const handleAnswerSelected = (biasType, biasDefinition, explanation, aiResponseText) => { + setSelectedBiasData({ + biasType, + biasDefinition, + explanation, + aiResponseText, + }); + setShowRatingModal(true); + }; + + const handleAnswerDataChange = (data) => { + setCurrentAnswerData(data); + setQuestionAnswered(true); + } + + const getCurrentInstruction = () => { + if (!currentTopic) return null; + + // hide instructions when modals are open or when review button was clicked + if ( + showRatingModal || + showBiasExplanation || + clickedReviewButtonThisPhase + ) { + return null; + } + + if (topicIndex === 0) { + if (!canReviewResponse) { + return `You're now on your moderately knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; + } + return null; + } + + if (topicIndex === 1) { + if (questionAnswered && showWikipediaTab && !hasVisitedWikipedia) { + return `ALLpedia is now available if you'd like to fact-check ALL-IE's response on ${currentTopic.title} before reviewing.`; + } + if (!questionAnswered) { + return `You're now on your most knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; + } + return null; + } + if (topicIndex === 2 && currentPhase < 4) { + if (!questionAnswered || !currentAnswerData) { + return `You're now on your least knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; + } + if (questionAnswered && !canReviewResponse) { + const timeLeft = 15 - currentDisplayTime; + if (!hasVisitedWikipedia) { + console.log("HERERERERER") + return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; + } + return `Please spend ${timeLeft} more second${timeLeft !== 1 ? 's' : ''} on ALLpedia`; + } + return null; + } + + if (currentPhase === 4) { + if (!questionAnswered) { + return `Great! Now that you've implemented your IDE fixes, interact with ALL-IE again on your least knowledgeable topic, ${currentTopic.title}.`; + } + if (questionAnswered && !canReviewResponse) { + const timeLeft = 15 - currentDisplayTime; + if (!hasVisitedWikipedia) { + return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; + } + return `Please spend ${timeLeft} more second${timeLeft !== 1 ? 's' : ''} on ALLpedia`; + } + return null; + } + + return null; + }; + + // Check if ai review button should be enabled + const canReviewResponse = useMemo(() => { + if (!currentAnswerData || isBotTyping || isBotThinking || showRatingModal) { + return false; + } + + // Phase 3 and 4 require Wikipedia visit for 15 or more seconds + if (requireWikipedia) { + return hasVisitedWikipedia && currentDisplayTime >= 15; + } + + return true; + }, [ + currentAnswerData, + isBotTyping, + isBotThinking, + showRatingModal, + requireWikipedia, + hasVisitedWikipedia, + currentDisplayTime, + ]); + + // Filter questions for round 4 to only show unasked questions + const getAvailableQuestions = useMemo(() => { + if (!topicData?.questions) return []; + + if (currentPhase === 4) { + // Phase 4, show only unasked questions from current topic + + const available = topicData.questions + .map((q, index) => ({ ...q, originalIndex: index })) + .filter((q) => { + const questionKey = `${activeTopic}-${q.originalIndex}`; + return !askedQuestions.includes(questionKey); + }) + .slice(0, 2); // Only first 2 unasked + + return available; + } + + // All other phases, show all questions with originalIndex + return topicData.questions.map((q, index) => ({ + ...q, + originalIndex: index, + })); + }, [currentPhase, topicData, askedQuestions, activeTopic]); + + // Switch to Wikipedia tab on citation click + const handleCitationClick = () => { + setActiveTab('ALLpedia'); + }; + + // Track when a question is asked + const handleQuestionAsked = (questionIndex) => { + const questionKey = `${activeTopic}-${questionIndex}`; + setCurrentQuestion(questionIndex); + + setAskedQuestions((prev) => { + if (!prev.includes(questionKey)) { + return [...prev, questionKey]; + } + return prev; + }); + } + return ( + +
    +
    + ({ + id: index + 1, + text: q.text, + originalIndex: + q.originalIndex !== undefined + ? q.originalIndex + : index, + }))} + fixedAIResponse={getAvailableQuestions.map((q, index) => { + return { + id: index + 1, + text: q.answers[activeBias].text, + isCorrect: q.answers[activeBias].isCorrect, + explanation: q.answers[activeBias].explanation, + biasType: activeBias, + biasDefinition: BIAS_DEFINITIONS[activeBias], + confidence: q.answers[activeBias].confidence || 93, + }; + })} + onAnswerDataChange={handleAnswerDataChange} + onTypingChange={setIsBotTyping} + onThinkingChange={setIsBotThinking} + messages={chatMessages} + setMessages={setChatMessages} + canSelectQuestion={!questionAnswered} + showConfidenceScore={ + currentPhase === 4 && showConfidenceScore + } + showCitations={currentPhase === 4 && showCitations} + disclaimerMessage={ + currentPhase === 4 ? disclaimerMessage : '' + } + onCitationClick={handleCitationClick} + onQuestionAsked={handleQuestionAsked} + /> +
    +
    + {getCurrentInstruction() && ( +
    + {getCurrentInstruction()} +
    + )} + + {canReviewResponse && ( + + )} +
    +
    +
    + ); + +}; + +AIChatBotTab.propTypes = { + currentTopic: PropTypes.object, + topicData: PropTypes.object, + setSelectedBiasData: PropTypes.func.isRequired, + setShowRatingModal: PropTypes.func.isRequired, + setCurrentAnswerData: PropTypes.func.isRequired, + setQuestionAnswered: PropTypes.func.isRequired, + showRatingModal: PropTypes.bool.isRequired, + showBiasExplanation: PropTypes.bool.isRequired, + clickedReviewButtonThisPhase: PropTypes.bool.isRequired, + showWikipediaTab: PropTypes.bool.isRequired, + currentDisplayTime: PropTypes.number.isRequired, + currentAnswerData: PropTypes.object, + questionAnswered: PropTypes.bool.isRequired, + isBotThinking: PropTypes.bool.isRequired, + isBotTyping: PropTypes.bool.isRequired, + requireWikipedia: PropTypes.bool.isRequired, + activeTopic: PropTypes.string.isRequired, + setClickedReviewButtonThisPhase: PropTypes.func.isRequired, + setIsBotThinking: PropTypes.func.isRequired, + setIsBotTyping: PropTypes.func.isRequired, + setCurrentQuestion: PropTypes.func.isRequired, + setActiveTab: PropTypes.func.isRequired, +}; + +export default AIChatBotTab; \ No newline at end of file diff --git a/client/src/components/exercise/lab13/components/AIPanel/AIPanelRatingModal.js b/client/src/components/exercise/lab13/components/AIPanel/AIPanelRatingModal.js new file mode 100644 index 000000000..39a1f16be --- /dev/null +++ b/client/src/components/exercise/lab13/components/AIPanel/AIPanelRatingModal.js @@ -0,0 +1,86 @@ +import { BIAS_DEFINITIONS } from "src/constants/lab13/BiasQuestionsConfig"; +import RatingModal from "../RatingModal"; +import PropTypes from 'prop-types'; +const AIPanelRatingModal = ({ + showRatingModal, + setShowRatingModal, + showBiasExplanation, + setShowBiasExplanation, + selectedBiasData, + handleBiasExplanationClose, + setToneRating, + setConfidenceRating, + toneRating, + confidenceRating +}) => { + const biasDefinition = selectedBiasData + ? BIAS_DEFINITIONS[selectedBiasData.biasType] + : null; + + const handleRatingSubmit = () => { + setShowRatingModal(false); + setShowBiasExplanation(true); + }; + + return ( + + {biasDefinition.name} +
    + ) : null + } + textModalBody={ + selectedBiasData && biasDefinition ? ( +
    + {selectedBiasData.aiResponseText && ( +
    +

    + Given AI Response: + "{selectedBiasData.aiResponseText}" +

    +
    + )} +
    +

    + {selectedBiasData.explanation} +

    +
    +
    +
    + What is {biasDefinition.name}? +
    +

    {biasDefinition.definition}

    +
    +
    + ) : null + } + onCloseTextModal={handleBiasExplanationClose} + /> + ); +}; + +AIPanelRatingModal.propTypes = { + showRatingModal: PropTypes.bool.isRequired, + setShowRatingModal: PropTypes.func.isRequired, + showBiasExplanation: PropTypes.bool.isRequired, + setShowBiasExplanation: PropTypes.func.isRequired, + selectedBiasData: PropTypes.object, + handleBiasExplanationClose: PropTypes.func.isRequired, + setToneRating: PropTypes.func.isRequired, + setConfidenceRating: PropTypes.func.isRequired, + toneRating: PropTypes.number.isRequired, + confidenceRating: PropTypes.number.isRequired, +}; + +export default AIPanelRatingModal; \ No newline at end of file diff --git a/client/src/components/exercise/lab13/components/AIPanel/AllPediaImage.js b/client/src/components/exercise/lab13/components/AIPanel/AllPediaImage.js new file mode 100644 index 000000000..49864eb63 --- /dev/null +++ b/client/src/components/exercise/lab13/components/AIPanel/AllPediaImage.js @@ -0,0 +1,21 @@ +import PropTypes from 'prop-types'; + +const AllPediaImage = ({ wikipediaContent }) => { + return ( +
    + {wikipediaContent.title} +
    + ); +}; +AllPediaImage.propTypes = { + wikipediaContent: PropTypes.shape({ + imageUrl: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + }).isRequired, +}; +export default AllPediaImage; \ No newline at end of file diff --git a/client/src/components/exercise/lab13/components/AIPanel/AllPediaTab.js b/client/src/components/exercise/lab13/components/AIPanel/AllPediaTab.js new file mode 100644 index 000000000..6a63d1448 --- /dev/null +++ b/client/src/components/exercise/lab13/components/AIPanel/AllPediaTab.js @@ -0,0 +1,123 @@ +import { Tab } from '../Tab/Tab'; +import ProgressBar from 'src/components/all-components/ProgressBar'; +import AllPediaImage from '../AIPanel/AllPediaImage'; +import PropTypes from 'prop-types'; +import { renderTextWithHighlight } from '../../functions/RenderTextWithHighlight'; +import { getAnswerDataHighlights } from '../../functions/getAnswerDataHighlights'; + +const AllPediaTab = ({ + wikipediaContent, + requireWikipedia, + currentDisplayTime, + currentAnswerData, + currentQuestion, + activeTopic, +}) => { + return ( + +
    + {/* Header with Title and Timer */} +
    +
    + {/* Left: Empty spacer for balance */} +
    + {/* Empty div for grid balance */} +
    + + {/* Title */} +
    +

    + {wikipediaContent.title} +

    +
    + + {/* Timer */} +
    + {requireWikipedia && ( +
    + {currentDisplayTime >= 15 ? ( +
    + + ✓ + + + Complete + +
    + ) : ( + + )} +
    + )} +
    +
    +
    + + {/* Text on left and image on right */} +
    +
    + {/* Left: Text Content */} +
    +
    + {wikipediaContent.text + .split('\n\n') + .map((paragraph, index) => ( +

    + {renderTextWithHighlight( + paragraph, + getAnswerDataHighlights(currentAnswerData, currentQuestion, activeTopic) + )} +

    + ))} +
    +
    + +
    + + {/* Sources at bottom */} +
    +

    + Sources: +

    +
      + {wikipediaContent.sources.map((source, index) => ( +
    • + + {source} + +
    • + ))} +
    +
    +
    +
    +
    + ); +}; + +AllPediaTab.propTypes = { + wikipediaContent: PropTypes.shape({ + title: PropTypes.string.isRequired, + text: PropTypes.string.isRequired, + sources: PropTypes.arrayOf(PropTypes.string).isRequired, + }).isRequired, + requireWikipedia: PropTypes.bool.isRequired, + currentDisplayTime: PropTypes.number.isRequired, + currentAnswerData: PropTypes.object.isRequired, + currentQuestion: PropTypes.object.isRequired, + activeTopic: PropTypes.object.isRequired, +}; + +export default AllPediaTab; \ No newline at end of file diff --git a/client/src/components/exercise/lab13/functions/RenderTextWithHighlight.js b/client/src/components/exercise/lab13/functions/RenderTextWithHighlight.js new file mode 100644 index 000000000..0548e9f9b --- /dev/null +++ b/client/src/components/exercise/lab13/functions/RenderTextWithHighlight.js @@ -0,0 +1,33 @@ +// Helper function to parse text and highlight specific patterns +export const renderTextWithHighlight = (text, highlightPatterns = []) => { + if (!text || !highlightPatterns.length) return text; + + // Combine all patterns into one regex on a single pass + const sortedPatterns = [...highlightPatterns].sort( + (a, b) => b.length - a.length + ); + const escapedPatterns = sortedPatterns.map((p) => + p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ); + const combinedPattern = escapedPatterns.map((p) => `(${p})`).join('|'); + const regex = new RegExp(combinedPattern, 'gi'); + + // Split once - capturing groups make matches return at odd indices + const segments = text.split(regex); + let keyCounter = 0; + + return segments.map((segment, i) => { + // Odd indices are matches (from capturing groups) + if (i % 2 === 1 && segment) { + return ( + + {segment} + + ); + } + return segment; + }); +}; \ No newline at end of file diff --git a/client/src/components/exercise/lab13/functions/getAnswerDataHighlights.js b/client/src/components/exercise/lab13/functions/getAnswerDataHighlights.js new file mode 100644 index 000000000..120ec7914 --- /dev/null +++ b/client/src/components/exercise/lab13/functions/getAnswerDataHighlights.js @@ -0,0 +1,11 @@ +import { HIGHLIGHTS_MAPPING } from "src/constants/lab13/HighlightsMapping"; + +// Get highlights based on current answer data, topic, and question +export const getAnswerDataHighlights = (currentAnswerData, currentQuestion, activeTopic) => { + if (!currentAnswerData || currentQuestion === null) return []; + + const topicKey = activeTopic?.toLowerCase(); + const biasType = currentAnswerData.biasType; + + return HIGHLIGHTS_MAPPING[topicKey]?.[currentQuestion]?.[biasType] || []; +}; \ No newline at end of file diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 8ac039636..65e86a417 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -3,39 +3,29 @@ import { useContext, useMemo, useState, - useCallback, useEffect, useRef, } from 'react'; import { startExercise } from 'src/reducers/lab2/actions'; import { navigate } from '@reach/router'; -import AIChatBot from '../components/AIChatBot'; import { Tabs } from '../components/Tab/Tabs'; -import { Tab } from '../components/Tab/Tab'; -import RatingModal from '../components/RatingModal'; import ExerciseStateContext from '../Lab13Context'; import { - BIAS_TYPES, - BIAS_DEFINITIONS, getTopicById, } from 'src/constants/lab13/BiasQuestionsConfig'; -import { HIGHLIGHTS_MAPPING } from 'src/constants/lab13/HighlightsMapping'; -import ProgressBar from 'src/components/all-components/ProgressBar'; +import { content } from 'src/constants/lab13/WikipediaContent'; +import AIPanelRatingModal from '../components/AIPanel/AIPanelRatingModal'; +import AIChatBotTab from '../components/AIPanel/AIChatBotTab'; +import AllPediaTab from '../components/AIPanel/AllPediaTab'; const AIPanel = () => { const { rankingColumns, chatMessages, setChatMessages, - hasVisitedWikipedia, setHasVisitedWikipedia, currentPhase, setCurrentPhase, - showConfidenceScore, - showCitations, - disclaimerMessage, - askedQuestions, - setAskedQuestions, topicIndex, setTopicIndex, wikipediaAccumulatedTime, @@ -50,13 +40,13 @@ const AIPanel = () => { const [currentAnswerData, setCurrentAnswerData] = useState(null); const [isBotTyping, setIsBotTyping] = useState(false); const [isBotThinking, setIsBotThinking] = useState(false); - const [toneRating, setToneRating] = useState(''); - const [confidenceRating, setConfidenceRating] = useState(''); const [questionAnswered, setQuestionAnswered] = useState(false); const [activeTab, setActiveTab] = useState('AIChatBot'); const [currentDisplayTime, setCurrentDisplayTime] = useState(0); const [currentQuestion, setCurrentQuestion] = useState(null); const phase4IntroAddedRef = useRef(false); + const [toneRating, setToneRating] = useState(''); + const [confidenceRating, setConfidenceRating] = useState(''); const [clickedReviewButtonThisPhase, setClickedReviewButtonThisPhase] = useState(false); @@ -64,12 +54,6 @@ const AIPanel = () => { const [hasShownWikipediaInPhase, setHasShownWikipediaInPhase] = useState(false); - const BIAS_POSITION_MAP = { - 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable - 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable - 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable - }; - // Get all three topics in order: medium, most, least const getOrderedTopics = useMemo(() => { if (!rankingColumns?.length) return []; @@ -105,8 +89,6 @@ const AIPanel = () => { const currentTopic = getOrderedTopics[topicIndex] || null; const activeTopic = currentTopic?.id || null; - const activeBias = - BIAS_POSITION_MAP[currentTopic?.biasPosition] || BIAS_TYPES.HALO_EFFECT; const topicData = getTopicById(activeTopic); // Display Wikipedia based on current phase and whether or not the AI has finished typing @@ -200,239 +182,8 @@ const AIPanel = () => { } }, [showWikipediaTab, hasShownWikipediaInPhase]); - const getWikipediaTimeSpent = useCallback(() => { - return currentDisplayTime; - }, [currentDisplayTime]); - // Filter questions for round 4 to only show unasked questions - const getAvailableQuestions = useMemo(() => { - if (!topicData?.questions) return []; - - if (currentPhase === 4) { - // Phase 4, show only unasked questions from current topic - - const available = topicData.questions - .map((q, index) => ({ ...q, originalIndex: index })) - .filter((q) => { - const questionKey = `${activeTopic}-${q.originalIndex}`; - return !askedQuestions.includes(questionKey); - }) - .slice(0, 2); // Only first 2 unasked - - return available; - } - - // All other phases, show all questions with originalIndex - return topicData.questions.map((q, index) => ({ - ...q, - originalIndex: index, - })); - }, [currentPhase, topicData, askedQuestions, activeTopic]); - - // Switch to Wikipedia tab on citation click - const handleCitationClick = useCallback(() => { - setActiveTab('ALLpedia'); - }, []); - - // Track when a question is asked - const handleQuestionAsked = useCallback( - (questionIndex) => { - const questionKey = `${activeTopic}-${questionIndex}`; - setCurrentQuestion(questionIndex); - - setAskedQuestions((prev) => { - if (!prev.includes(questionKey)) { - return [...prev, questionKey]; - } - return prev; - }); - }, - [currentPhase, setAskedQuestions, activeTopic] - ); - - // Helper function to parse text and highlight specific patterns - const renderTextWithHighlight = (text, highlightPatterns = []) => { - if (!text || !highlightPatterns.length) return text; - - // Combine all patterns into one regex on a single pass - const sortedPatterns = [...highlightPatterns].sort( - (a, b) => b.length - a.length - ); - const escapedPatterns = sortedPatterns.map((p) => - p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - ); - const combinedPattern = escapedPatterns.map((p) => `(${p})`).join('|'); - const regex = new RegExp(combinedPattern, 'gi'); - - // Split once - capturing groups make matches return at odd indices - const segments = text.split(regex); - let keyCounter = 0; - - return segments.map((segment, i) => { - // Odd indices are matches (from capturing groups) - if (i % 2 === 1 && segment) { - return ( - - {segment} - - ); - } - return segment; - }); - }; - - // Get highlights based on current answer data, topic, and question - const getAnswerDataHighlights = () => { - if (!currentAnswerData || currentQuestion === null) return []; - - const topicKey = activeTopic?.toLowerCase(); - const biasType = currentAnswerData.biasType; - - return HIGHLIGHTS_MAPPING[topicKey]?.[currentQuestion]?.[biasType] || []; - }; - - // Get Wikipedia content based on topic - const getWikipediaContent = (topicId) => { - const content = { - localization: { - title: 'Localization', - text: `Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references. - -This may include using local currency or changing date formats, but it does not involve physical changes, such as changing clothing materials for climate. However, modifying language or tone to fit different social settings can be considered a form of cultural localization.`, - sources: [ - 'https://resources.gala-global.org/accessibility-localization/', - 'https://www.vistatec.com/localization-for-all-advancing-accessibility-and-inclusion-in-a-globalized-world/', - ], - imageUrl: - 'https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?w=400', // Placeholder - }, - colorblindness: { - title: 'Color Blindness', - text: `Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. - -Although many cases are inherited, they can also develop later in life due to eye disease, injury, aging, or certain medications. Complete color blindness is rare and should not be assumed.`, - sources: [ - 'https://www.colourblindawareness.org/colour-blindness/', - 'https://www.nei.nih.gov/eye-health-information/eye-conditions-and-diseases/color-blindness', - ], - imageUrl: - 'https://images.unsplash.com/photo-1584036561566-baf8f5f1b144?w=400', // Placeholder - }, - dyslexia: { - title: 'Dyslexia', - text: `Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. - - Dyslexia cannot be cured, but it can be effectively supported through early intervention, structured reading instruction, and classroom accommodations.`, - sources: [ - 'https://dyslexiaida.org/definition-of-dyslexia/', - 'https://www.losdschools.org/student-services/dyslexia-handbook/definition-of-dyslexia', - ], - imageUrl: - 'https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=400', // Placeholder - }, - }; - - return content[topicId?.toLowerCase()] || content.localization; - }; - - const wikipediaContent = getWikipediaContent(activeTopic); - - // Check if ai review button should be enabled - const canReviewResponse = useMemo(() => { - if (!currentAnswerData || isBotTyping || isBotThinking || showRatingModal) { - return false; - } - - // Phase 3 and 4 require Wikipedia visit for 15 or more seconds - if (requireWikipedia) { - return hasVisitedWikipedia && getWikipediaTimeSpent() >= 15; - } - - return true; - }, [ - currentAnswerData, - isBotTyping, - isBotThinking, - showRatingModal, - requireWikipedia, - hasVisitedWikipedia, - getWikipediaTimeSpent, - ]); - - const getCurrentInstruction = useCallback(() => { - if (!currentTopic) return null; - - // hide instructions when modals are open or when review button was clicked - if ( - showRatingModal || - showBiasExplanation || - clickedReviewButtonThisPhase - ) { - return null; - } - - if (topicIndex === 0) { - if (!canReviewResponse) { - return `You're now on your moderately knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; - } - return null; - } - - if (topicIndex === 1) { - if (questionAnswered && showWikipediaTab && !hasVisitedWikipedia) { - return `ALLpedia is now available if you'd like to fact-check ALL-IE's response on ${currentTopic.title} before reviewing.`; - } - if (!questionAnswered) { - return `You're now on your most knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; - } - return null; - } - if (topicIndex === 2 && currentPhase < 4) { - if (!questionAnswered || !currentAnswerData) { - return `You're now on your least knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; - } - if (questionAnswered && !canReviewResponse) { - const timeLeft = 15 - getWikipediaTimeSpent(); - if (!hasVisitedWikipedia) { - console.log("HERERERERER") - return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; - } - return `Please spend ${timeLeft} more second${timeLeft !== 1 ? 's' : ''} on ALLpedia`; - } - return null; - } - - if (currentPhase === 4) { - if (!questionAnswered) { - return `Great! Now that you've implemented your IDE fixes, interact with ALL-IE again on your least knowledgeable topic, ${currentTopic.title}.`; - } - if (questionAnswered && !canReviewResponse) { - const timeLeft = 15 - getWikipediaTimeSpent(); - if (!hasVisitedWikipedia) { - return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; - } - return `Please spend ${timeLeft} more second${timeLeft !== 1 ? 's' : ''} on ALLpedia`; - } - return null; - } - - return null; - }, [ - currentTopic, - topicIndex, - currentPhase, - questionAnswered, - hasVisitedWikipedia, - canReviewResponse, - showRatingModal, - showBiasExplanation, - clickedReviewButtonThisPhase, - showWikipediaTab, - getWikipediaTimeSpent, - ]); + const wikipediaContent = content[activeTopic?.toLowerCase()] || content.localization; // Initialize first exercise chat with the ALLie greeting useEffect(() => { @@ -510,7 +261,7 @@ Although many cases are inherited, they can also develop later in life due to ey ]); // Add transitions with instructional messages from ALL-ie - const handleBiasExplanationClose = useCallback(() => { + const handleBiasExplanationClose = () => { setShowBiasExplanation(false); setShowRatingModal(false); @@ -583,43 +334,7 @@ Although many cases are inherited, they can also develop later in life due to ey }); }, 200); }, 100); - }, [ - getOrderedTopics, - setChatMessages, - setHasVisitedWikipedia, - setWikipediaAccumulatedTime, - setWikipediaSessionStart, - setCurrentPhase, - currentPhase, - setQuestionAnswered, - ]); - - const handleAnswerSelected = useCallback( - (biasType, biasDefinition, explanation, aiResponseText) => { - setSelectedBiasData({ - biasType, - biasDefinition, - explanation, - aiResponseText, - }); - setShowRatingModal(true); - }, - [] - ); - - const handleRatingSubmit = useCallback(() => { - setShowRatingModal(false); - setShowBiasExplanation(true); - }, []); - - const biasDefinition = selectedBiasData - ? BIAS_DEFINITIONS[selectedBiasData.biasType] - : null; - - const handleAnswerDataChange = useCallback((data) => { - setCurrentAnswerData(data); - setQuestionAnswered(true); - }, []); + }; return (
    @@ -638,222 +353,57 @@ Although many cases are inherited, they can also develop later in life due to ey } > - -
    -
    - ({ - id: index + 1, - text: q.text, - originalIndex: - q.originalIndex !== undefined - ? q.originalIndex - : index, - }))} - fixedAIResponse={getAvailableQuestions.map((q, index) => { - return { - id: index + 1, - text: q.answers[activeBias].text, - isCorrect: q.answers[activeBias].isCorrect, - explanation: q.answers[activeBias].explanation, - biasType: activeBias, - biasDefinition: BIAS_DEFINITIONS[activeBias], - confidence: q.answers[activeBias].confidence || 93, - }; - })} - onAnswerDataChange={handleAnswerDataChange} - onTypingChange={setIsBotTyping} - onThinkingChange={setIsBotThinking} - messages={chatMessages} - setMessages={setChatMessages} - canSelectQuestion={!questionAnswered} - showConfidenceScore={ - currentPhase === 4 && showConfidenceScore - } - showCitations={currentPhase === 4 && showCitations} - disclaimerMessage={ - currentPhase === 4 ? disclaimerMessage : '' - } - onCitationClick={handleCitationClick} - onQuestionAsked={handleQuestionAsked} - /> -
    -
    - {getCurrentInstruction() && ( -
    - {getCurrentInstruction()} -
    - )} - - {canReviewResponse && ( - - )} -
    -
    -
    - + {/* ALLpedia Tab, from phase 2 onwards */} {showWikipediaTab && ( - -
    - + )}
    - - {biasDefinition.name} -
    - ) : null - } - textModalBody={ - selectedBiasData && biasDefinition ? ( -
    - {selectedBiasData.aiResponseText && ( -
    -

    - Given AI Response: - "{selectedBiasData.aiResponseText}" -

    -
    - )} -
    -

    - {selectedBiasData.explanation} -

    -
    -
    -
    - What is {biasDefinition.name}? -
    -

    {biasDefinition.definition}

    -
    -
    - ) : null - } - onCloseTextModal={handleBiasExplanationClose} + toneRating={toneRating} + confidenceRating={confidenceRating} /> )} diff --git a/client/src/constants/lab13/BiasQuestionsConfig.js b/client/src/constants/lab13/BiasQuestionsConfig.js index db81d2473..3acab127f 100644 --- a/client/src/constants/lab13/BiasQuestionsConfig.js +++ b/client/src/constants/lab13/BiasQuestionsConfig.js @@ -15,6 +15,12 @@ export const BIAS_TYPES = { DUNNING_KRUGER: 'DUNNING_KRUGER', }; +export const BIAS_POSITION_MAP = { + 0: BIAS_TYPES.TRUTH_BIAS, // Most knowledgeable + 1: BIAS_TYPES.HALO_EFFECT, // Medium knowledgeable + 2: BIAS_TYPES.DUNNING_KRUGER, // Least knowledgeable +}; + export const BIAS_DEFINITIONS = { TRUTH_BIAS: { name: 'Truth Bias', diff --git a/client/src/constants/lab13/WikipediaContent.js b/client/src/constants/lab13/WikipediaContent.js new file mode 100644 index 000000000..d8fc6f795 --- /dev/null +++ b/client/src/constants/lab13/WikipediaContent.js @@ -0,0 +1,38 @@ +export const content = { + localization: { + title: 'Localization', + text: `Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references. + +This may include using local currency or changing date formats, but it does not involve physical changes, such as changing clothing materials for climate. However, modifying language or tone to fit different social settings can be considered a form of cultural localization.`, + sources: [ + 'https://resources.gala-global.org/accessibility-localization/', + 'https://www.vistatec.com/localization-for-all-advancing-accessibility-and-inclusion-in-a-globalized-world/', + ], + imageUrl: + 'https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?w=400', // Placeholder + }, + colorblindness: { + title: 'Color Blindness', + text: `Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. + +Although many cases are inherited, they can also develop later in life due to eye disease, injury, aging, or certain medications. Complete color blindness is rare and should not be assumed.`, + sources: [ + 'https://www.colourblindawareness.org/colour-blindness/', + 'https://www.nei.nih.gov/eye-health-information/eye-conditions-and-diseases/color-blindness', + ], + imageUrl: + 'https://images.unsplash.com/photo-1584036561566-baf8f5f1b144?w=400', // Placeholder + }, + dyslexia: { + title: 'Dyslexia', + text: `Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. + + Dyslexia cannot be cured, but it can be effectively supported through early intervention, structured reading instruction, and classroom accommodations.`, + sources: [ + 'https://dyslexiaida.org/definition-of-dyslexia/', + 'https://www.losdschools.org/student-services/dyslexia-handbook/definition-of-dyslexia', + ], + imageUrl: + 'https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=400', // Placeholder + }, +}; \ No newline at end of file From a4b45d90738208eea4b4f0a2b61dca541fee4dac Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Wed, 4 Mar 2026 14:35:29 -0500 Subject: [PATCH 123/180] changed what we track lfg --- client/src/assets/images/robot.png | Bin 70467 -> 0 bytes .../components/exercise/lab13/Lab13Context.js | 8 +-- .../lab13/pages/ExerciseIntroduction.js | 13 +++- client/src/services/lab13/ExerciseService.js | 2 - .../controllers/lab13/ExerciseController.js | 12 ++-- server/database/models/lab13/Exercise.js | 54 +++++++-------- server/database/models/lab13/Repair.js | 65 +++++++++--------- server/database/schema.sql | 22 ++++++ 8 files changed, 97 insertions(+), 79 deletions(-) delete mode 100644 client/src/assets/images/robot.png diff --git a/client/src/assets/images/robot.png b/client/src/assets/images/robot.png deleted file mode 100644 index 93026756fa4f172a6af5c17e6e37bb2551bb44e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70467 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
      I(IcK|5e8 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 { setChatMessages([]); }; - // --- REPAIR SECTION STATE --- const [exercisePromptsState, setExercisePromptsState] = useState([ { id: 'disclaimer', @@ -120,6 +119,7 @@ export const ExerciseStateProvider = ({ children }) => { value: false, }, ]); + const [validInputs, setValidInputs] = useState({ disclaimer: null, confidence: null, @@ -141,9 +141,9 @@ export const ExerciseStateProvider = ({ children }) => { .toLowerCase(); // The disclaimer should be at least 20 characters, and include the words "verify" and "output" const disclaimerValid = - disclaimerValue.length >= 20 && - /\bverify\b/.test(disclaimerValue) && - /\boutput\b/.test(disclaimerValue); + disclaimerValue.length >= 20 && + /\bverify\b/.test(disclaimerValue) && + /\boutput\b/.test(disclaimerValue); const confidenceValid = !!exercisePromptsState.find( (i) => i.id === 'confidence' ).value; diff --git a/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js b/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js index 14e80fa84..503c62a99 100644 --- a/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js +++ b/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js @@ -1,16 +1,25 @@ import { React, useEffect } from "react"; import { EXERCISE_PLAYING } from "src/constants/index"; -import { startExercise } from "src/reducers/lab2/actions"; import useMainStateContext from "src/reducers/MainContext"; import { navigate } from "@reach/router"; +import { ExerciseService } from "src/services/lab13/ExerciseService"; const ExerciseIntroduction = () => { - const { actions } = useMainStateContext(); + const { state, actions } = useMainStateContext(); useEffect(() => { actions.updateUserState(EXERCISE_PLAYING); }, []); + const startExercise = async () => { + const body = { + userid: state.main.user.userid, + isExerciseComplete: false, + hasViewed: true, + }; + await ExerciseService.submitExercise(body); + }; + const handleContinue = () => { startExercise(); navigate("/Lab13/Exercise/ConfidenceRanking"); diff --git a/client/src/services/lab13/ExerciseService.js b/client/src/services/lab13/ExerciseService.js index 2550c2a54..e06712cbb 100644 --- a/client/src/services/lab13/ExerciseService.js +++ b/client/src/services/lab13/ExerciseService.js @@ -29,8 +29,6 @@ const ExerciseService = { try { const body = { userID: data.userid, - isFormRepairComplete: data.isFormRepairComplete, - isDatabaseRepairComplete: data.isDatabaseRepairComplete, isExerciseComplete: data.isExerciseComplete, hasViewed: data.hasViewed, }; diff --git a/server/controllers/lab13/ExerciseController.js b/server/controllers/lab13/ExerciseController.js index 3e26737f8..2eb785b88 100644 --- a/server/controllers/lab13/ExerciseController.js +++ b/server/controllers/lab13/ExerciseController.js @@ -1,5 +1,4 @@ -const ExerciseService = require('../../services/lab13/ExerciseService'); -// eslint-disable-next-line valid-jsdoc +const ExerciseService = require('../../services/lab14/ExerciseService'); /** * getExercise(): is a function responsible for retrieving the * user id from the query params from the route to the endpoint. @@ -9,7 +8,7 @@ const ExerciseService = require('../../services/lab13/ExerciseService'); */ async function getExercise(req) { try { - const {userID} = req.params; + const { userID } = req.params; return await ExerciseService.getExercise(userID); } catch (error) { console.error('Error: Could Not Find Exercise', error); @@ -26,14 +25,11 @@ async function getExercise(req) { */ async function postExercise(req) { try { - const {userID, isDatabaseRepairComplete, isFormRepairComplete, - isExerciseComplete, hasViewed} = req.body; + const { userID, hasViewed, isExerciseComplete } = req.body; const response = await ExerciseService.postExercise({ userId: userID, - isFormRepairComplete: isFormRepairComplete, - isDatabaseRepairComplete: isDatabaseRepairComplete, - isExerciseComplete: isExerciseComplete, hasViewed: hasViewed, + isExerciseComplete: isExerciseComplete, }); return response; } catch (error) { diff --git a/server/database/models/lab13/Exercise.js b/server/database/models/lab13/Exercise.js index ae5ddc418..e4f471ad6 100644 --- a/server/database/models/lab13/Exercise.js +++ b/server/database/models/lab13/Exercise.js @@ -1,37 +1,31 @@ module.exports = (sequelize, DataTypes) => { const Exercise = sequelize.define('ExerciseLab13', - { - repairId: { - type: DataTypes.INTEGER, - unique: true, - primaryKey: true, - autoIncrement: true, - }, - userid: { - type: DataTypes.BIGINT, - }, - isFormRepairComplete: { - type: DataTypes.BOOLEAN, - }, - isDatabaseRepairComplete: { - type: DataTypes.BOOLEAN, - }, - attemptTime: { - type: DataTypes.DATE, - }, - isExerciseComplete: { - type: DataTypes.BOOLEAN, - }, - hasViewed: { - type: DataTypes.BOOLEAN, - }, - attemptCount: { - type: DataTypes.INTEGER, - }, + { + repairId: { + type: DataTypes.INTEGER, + unique: true, + primaryKey: true, + autoIncrement: true, }, - { - tableName: 'lab13_exercise', + userid: { + type: DataTypes.BIGINT, }, + attemptTime: { + type: DataTypes.DATE, + }, + isExerciseComplete: { + type: DataTypes.BOOLEAN, + }, + hasViewed: { + type: DataTypes.BOOLEAN, + }, + attemptCount: { + type: DataTypes.INTEGER, + }, + }, + { + tableName: 'lab13_exercise', + }, ); Exercise.sync(); diff --git a/server/database/models/lab13/Repair.js b/server/database/models/lab13/Repair.js index 9b4191d05..768eb1c5d 100644 --- a/server/database/models/lab13/Repair.js +++ b/server/database/models/lab13/Repair.js @@ -1,42 +1,41 @@ -/* eslint-disable new-cap */ const FORM_REPAIR = 'FormRepair'; const DATABASE_REPAIR = 'DatabaseRepair'; module.exports = (sequelize, DataTypes) => { const IdentityRepair = sequelize.define('RepairLab13', - { - repairId: { - type: DataTypes.INTEGER, - unique: true, - primaryKey: true, - autoIncrement: true, - }, - userid: { - type: DataTypes.BIGINT, - }, - section: { - type: - DataTypes.ENUM( - FORM_REPAIR, - DATABASE_REPAIR, - ), - }, - repair: { - type: DataTypes.JSON, - }, - isComplete: { - type: DataTypes.BOOLEAN, - }, - attemptTime: { - type: DataTypes.DATE, - }, - repairCount: { - type: DataTypes.BIGINT, - }, + { + repairId: { + type: DataTypes.INTEGER, + unique: true, + primaryKey: true, + autoIncrement: true, }, - { - tableName: 'lab13_repair', + userid: { + type: DataTypes.BIGINT, }, + section: { + type: + DataTypes.ENUM( + FORM_REPAIR, + DATABASE_REPAIR, + ), + }, + repair: { + type: DataTypes.JSON, + }, + isComplete: { + type: DataTypes.BOOLEAN, + }, + attemptTime: { + type: DataTypes.DATE, + }, + repairCount: { + type: DataTypes.BIGINT, + }, + }, + { + tableName: 'lab13_repair', + }, ); IdentityRepair.sync(); return IdentityRepair; -}; +}; \ No newline at end of file diff --git a/server/database/schema.sql b/server/database/schema.sql index 56419079b..1426d4f1b 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -488,6 +488,28 @@ create table lab12_exercise primary key ("repairId") ); +create table lab13_repair ( + "repairId" serial, + userid bigint, + section enum_lab12_repair_section, + repair json, + "isComplete" boolean, + "attemptTime" timestamp with time zone, + "repairCount" bigint, + primary key ("repairId") +); + +create table lab13_exercise +( + "repairId" serial, + userid bigint, + "attemptTime" timestamp with time zone, + "isExerciseComplete" boolean, + "hasViewed" boolean, + "attemptCount" integer, + primary key ("repairId") +); + INSERT INTO public.labs (id, "labName", "labShortName", category, "thumbnailImageURL", "shortDescription", "fullDescription", "learningObjectives", authors, "labURL", "copyrightAttributes", about, reading, reinforcement, quiz, difficulty, "slideshow", "walkthroughVideo", "isActive") VALUES (0, 'How to Build an Accessible Learning Lab', 'How to Build an Accessible Learning Lab', 'Tutorials', '/wrench.jpg', 'Learn how to build a lab with Accessible Learning Labs with this interactive tutorial.', From 44d233214ceba916a6e123dbbe00556e92b1a419 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Wed, 4 Mar 2026 14:39:27 -0500 Subject: [PATCH 124/180] this should be everything i think --- client/.eslintrc.json | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/client/.eslintrc.json b/client/.eslintrc.json index c04623882..eb8897a5f 100644 --- a/client/.eslintrc.json +++ b/client/.eslintrc.json @@ -8,11 +8,16 @@ "eslint:recommended", "plugin:react/recommended", "plugin:react/jsx-runtime", - "plugin:jest/recommended" + "plugin:jest/recommended", + "plugin:prettier/recommended" ], "overrides": [ { - "files": ["**/*.spec.js", "**/*.spec.jsx", "**/*.test.js"], + "files": [ + "**/*.spec.js", + "**/*.spec.jsx", + "**/*.test.js" + ], "env": { "jest": true } @@ -22,7 +27,10 @@ "ecmaVersion": "latest", "sourceType": "module" }, - "plugins": ["react", "jest"], + "plugins": [ + "react", + "jest" + ], "settings": { "react": { "createClass": "createReactClass", From 65d2b234df4d5a83c13c16ab7fe9417bbfeda706 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Thu, 5 Mar 2026 11:40:18 -0500 Subject: [PATCH 125/180] Implemented v1 of new 404 page --- client/.eslintrc.json | 2 +- client/src/App.js | 2 +- .../src/assets/stylesheets/components/App.css | 32 ---------------- .../assets/stylesheets/components/App.scss | 38 ------------------- client/src/assets/stylesheets/main.css | 32 ---------------- client/src/pages/landingpage/error.js | 27 +++++-------- 6 files changed, 12 insertions(+), 121 deletions(-) diff --git a/client/.eslintrc.json b/client/.eslintrc.json index cf83c43f3..bdd629ed9 100644 --- a/client/.eslintrc.json +++ b/client/.eslintrc.json @@ -49,7 +49,7 @@ // } // ], "prettier/prettier": [ - "error", + "warn", { "endOfLine": "auto" } diff --git a/client/src/App.js b/client/src/App.js index 2db10d0e2..abf0e840c 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -178,7 +178,7 @@ const App = () => { - + { + useScroll(); -const Error = (props) => { - const { actions } = props; return ( -
      -
      -

      Invalid Page

      -
      -

      Please click the button to navigate home

      -
      - -
      +
      +

      Invalid Page

      +

      Please click the button to navigate home.

      + navigate("/")} />
      ); }; From 8e60bc3e31518a429274dd9224d6c436f4a5e02d Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 5 Mar 2026 14:06:11 -0500 Subject: [PATCH 126/180] Restyled Clear button in filter --- client/src/pages/labspage/LabsPage.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index f0abf5d32..8bf63dea1 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -303,19 +303,19 @@ const LabsPage = (props) => {
      {showFilter && ( -
      -
      +
      +
      -

      Topic

      +

      Topic

      {[ @@ -407,6 +407,16 @@ const LabsPage = (props) => { ))}
      +
      +
      )} From 637dffd3c79bfacf375f641a7443fdce7ba31c78 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 5 Mar 2026 14:49:47 -0500 Subject: [PATCH 127/180] Clear button is restyled with shadow around filter --- client/src/pages/labspage/LabsPage.js | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 8bf63dea1..7f9992be9 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -303,8 +303,8 @@ const LabsPage = (props) => {
      {showFilter && ( -
      -
      +
      +
      -

      Topic

      +

      Topic

      {[ @@ -407,16 +407,6 @@ const LabsPage = (props) => { ))}
      -
      -
      )} From f9219db31858b866fde03fbb6efa00e034d61391 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 5 Mar 2026 15:12:33 -0500 Subject: [PATCH 128/180] Added blue and yellow border to filter; Removed extra padding; Removed yellow divider lines --- client/src/pages/labspage/LabsPage.js | 56 ++++++++++++++++----------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 7f9992be9..54db23aba 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -303,20 +303,19 @@ const LabsPage = (props) => {
      {showFilter && ( -
      -
      +
      +
      -

      Topic

      -
      +

      Topic

      {[ { @@ -371,15 +370,28 @@ const LabsPage = (props) => { ))}
      -
      -

      Difficulty

      -
      +
      +

      + Difficulty +

      {[1, 2, 3].map((level) => ( ))}
      +
      +
      )} From 08d3adfd80e154e780fddc59385f4a5531f01f94 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 5 Mar 2026 15:19:55 -0500 Subject: [PATCH 129/180] Make filter options font sizing slightly bigger --- client/src/pages/labspage/LabsPage.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 54db23aba..76012fc74 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -346,7 +346,7 @@ const LabsPage = (props) => { tw-flex tw-items-center tw-justify-center focus-within:tw-border-black btn tw-border-solid tw-shadow-md tw-border-1 - xs:tw-text-xs md:tw-text-[1rem] + tw-text-sm md:tw-text-[1rem] hover:tw-bg-primary-yellow tw-z-10 ${ @@ -383,7 +383,7 @@ const LabsPage = (props) => { tw-flex-1 tw-items-center tw-justify-center focus-within:tw-border-black btn tw-border-solid tw-shadow-md tw-border-1 - xs:tw-text-xs md:tw-text-[1rem] + tw-text-sm md:tw-text-[1rem] hover:tw-bg-primary-yellow tw-z-10 ${ From ac5ea0b5144bb609dbdfb8b5e71f95fe72058318 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Thu, 5 Mar 2026 15:25:10 -0500 Subject: [PATCH 130/180] done --- .../components/exercise/lab13/pages/ExerciseIntroduction.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js b/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js index 503c62a99..61070ef92 100644 --- a/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js +++ b/client/src/components/exercise/lab13/pages/ExerciseIntroduction.js @@ -33,9 +33,9 @@ const ExerciseIntroduction = () => { You are a student at ALL university who is doing their psychology homework. You are given 3 questions to answer and are allowed to use ALL's new Generative AI tool, AL, to help you answer them. You - want to tackle each question from your most least knowledgeable to - most knowledgable. Let's start with ranking your knowledge about - each topic before you use AL to help you answer. + want to tackle each question from your least to most knowledgeable. + Let's start with ranking your knowledge about each topic before + you use AL to help you answer.

      Click the Start button to begin the exercise! From d22f48ed5a96b1f226ba8baf9f29176aad99a139 Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Thu, 5 Mar 2026 15:26:56 -0500 Subject: [PATCH 131/180] backmerged with dev and linting --- client/src/App.js | 9 +- .../src/components/all-components/ALLModal.js | 425 +++++++-------- .../src/components/all-components/Likert.js | 62 ++- .../src/components/all-components/UserPfp.js | 34 +- client/src/components/body/Reading/Reading.js | 8 +- .../components/exercise/lab13/Lab13Context.js | 103 ++-- client/src/components/exercise/lab13/Main.js | 18 +- .../exercise/lab13/components/AIChatBot.js | 246 ++++----- .../lab13/components/AIPanel/AIChatBotTab.js | 506 +++++++++--------- .../components/AIPanel/AIPanelRatingModal.js | 150 +++--- .../lab13/components/AIPanel/AllPediaImage.js | 32 +- .../lab13/components/AIPanel/AllPediaTab.js | 216 ++++---- .../exercise/lab13/components/Avatar.js | 34 +- .../exercise/lab13/components/RatingModal.js | 256 ++++----- .../exercise/lab13/components/Tab/Tab.js | 6 +- .../exercise/lab13/components/Tab/Tabs.js | 16 +- .../lab13/components/TypingMessage.js | 57 +- .../functions/RenderTextWithHighlight.js | 56 +- .../functions/getAnswerDataHighlights.js | 16 +- .../exercise/lab13/pages/AIPanel.js | 78 ++- .../exercise/lab13/pages/Conclusion.js | 16 +- .../exercise/lab13/pages/ConfidenceRanking.js | 28 +- .../exercise/lab13/pages/IDEExercise.js | 10 +- .../exercise/lab13/pages/IDEIntroduction.js | 14 +- client/src/constants/lab13/AvatarType.js | 6 +- .../constants/lab13/BiasQuestionsConfig.js | 170 +++--- .../src/constants/lab13/HighlightsMapping.js | 129 +++-- client/src/constants/lab13/RankingConfig.js | 54 +- .../src/constants/lab13/WikipediaContent.js | 62 +-- 29 files changed, 1437 insertions(+), 1380 deletions(-) diff --git a/client/src/App.js b/client/src/App.js index b1b30e1cf..66f128701 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -204,10 +204,11 @@ const App = () => { <> {isLoaded ? (
      }>
      diff --git a/client/src/components/all-components/ALLModal.js b/client/src/components/all-components/ALLModal.js index 2a84e83cf..f1334d904 100644 --- a/client/src/components/all-components/ALLModal.js +++ b/client/src/components/all-components/ALLModal.js @@ -26,231 +26,234 @@ import PropTypes from "prop-types"; * @returns {JSX.Element} - The modal component. */ const ALLModal = (props) => { - const { - show, - setShow, - status, - showStatusIcon, - failedStatusTitle, - customHeader, - customBody, - header, - statusTitle, - description, - customFooter, - showFooter, - primaryAction, - secondaryAction, - showHeader, - canClose, - canDismiss, - timeOutTime: startTime, - timeOutMessage, - width, - } = props; + const { + show, + setShow, + status, + showStatusIcon, + failedStatusTitle, + customHeader, + customBody, + header, + statusTitle, + description, + customFooter, + showFooter, + primaryAction, + secondaryAction, + showHeader, + canClose, + canDismiss, + timeOutTime: startTime, + timeOutMessage, + width, + } = props; - const [seconds, updateSeconds] = useState(startTime); + const [seconds, updateSeconds] = useState(startTime); - const timer = useRef(null); + const timer = useRef(null); - useEffect(() => { - setTimeout(() => { - timer.current = setInterval(() => { - updateSeconds((prevSeconds) => prevSeconds - 1); - }, 1000); - }, 2000); - return () => { - clearInterval(timer.current); - timer.current = null; - }; - }, []); + useEffect(() => { + setTimeout(() => { + timer.current = setInterval(() => { + updateSeconds((prevSeconds) => prevSeconds - 1); + }, 1000); + }, 2000); + return () => { + clearInterval(timer.current); + timer.current = null; + }; + }, []); - useEffect(() => { - if (seconds === 0) { - clearInterval(timer.current); - timer.current = null; - setShow(false); - } - }, [seconds]); - - { - /*Modal hook*/ + useEffect(() => { + if (seconds === 0) { + clearInterval(timer.current); + timer.current = null; + setShow(false); } - useEffect(() => { - show - ? (document.body.style.overflow = "hidden") - : (document.body.style.overflow = "unset"); - }, [show]); + }, [seconds]); - return show ? ( -
      -
      { - canDismiss ? setShow(false) : () => { }; - }} - >
      -
      -
      - {/*Header*/} - {showHeader && ( - <> -
      - {customHeader ? ( - customHeader - ) : ( -
      -
      - {header} -
      - {canClose && ( - - )} -
      - )} -
      - {/*Border*/} -
      - - )} - {/*Body*/} -
      - {showStatusIcon && ( - <> - {status ? ( -
      - - - -
      - ) : ( -
      - - - -
      - )} - - )} -
      - {customBody ? ( - customBody - ) : ( -
      -

      - {status ? statusTitle : failedStatusTitle} -

      -

      - {description} -

      -
      - )} -
      + { + /*Modal hook*/ + } + useEffect(() => { + show + ? (document.body.style.overflow = "hidden") + : (document.body.style.overflow = "unset"); + }, [show]); + + return show ? ( +
      +
      { + canDismiss ? setShow(false) : () => {}; + }} + >
      +
      +
      + {/*Header*/} + {showHeader && ( + <> +
      + {customHeader ? ( + customHeader + ) : ( +
      +
      + {header}
      - {/*Timeout Timer*/} - {startTime && ( -
      -

      - {timeOutMessage ? timeOutMessage : "Closes in:"} -

      -

      - {seconds} seconds -

      -
      - )} - {/*Footer*/} - {showFooter && ( - <> - {/*Border*/} -
      -
      - {customFooter ? ( - customFooter - ) : ( -
      - - {secondaryAction && ( - - )} -
      - )} -
      - + {canClose && ( + )} +
      + )} +
      + {/*Border*/} +
      + + )} + {/*Body*/} +
      + {showStatusIcon && ( + <> + {status ? ( +
      + + + +
      + ) : ( +
      + + + +
      + )} + + )} +
      + {customBody ? ( + customBody + ) : ( +
      +

      + {status ? statusTitle : failedStatusTitle} +

      +

      + {description} +

      + )} +
      +
      + {/*Timeout Timer*/} + {startTime && ( +
      +

      + {timeOutMessage ? timeOutMessage : "Closes in:"} +

      +

      + {seconds} seconds +

      + )} + {/*Footer*/} + {showFooter && ( + <> + {/*Border*/} +
      +
      + {customFooter ? ( + customFooter + ) : ( +
      + + {secondaryAction && ( + + )} +
      + )} +
      + + )}
      - ) : ( - "" - ); +
      +
      + ) : ( + "" + ); }; ALLModal.propTypes = { - show: PropTypes.bool.isRequired, - setShow: PropTypes.func.isRequired, - status: PropTypes.bool, - showStatusIcon: PropTypes.bool, - failedStatusTitle: PropTypes.string, - header: PropTypes.string, - statusTitle: PropTypes.string, - description: PropTypes.string, - customFooter: PropTypes.element, - customHeader: PropTypes.element, - customBody: PropTypes.element, - showFooter: PropTypes.bool, - showHeader: PropTypes.bool, - canClose: PropTypes.bool, - canDismiss: PropTypes.bool, - primaryAction: PropTypes.func, - secondaryAction: PropTypes.func, - timeOutTime: PropTypes.number, - timeOutMessage: PropTypes.string, - width: PropTypes.string, + show: PropTypes.bool.isRequired, + setShow: PropTypes.func.isRequired, + status: PropTypes.bool, + showStatusIcon: PropTypes.bool, + failedStatusTitle: PropTypes.string, + header: PropTypes.string, + statusTitle: PropTypes.string, + description: PropTypes.string, + customFooter: PropTypes.element, + customHeader: PropTypes.element, + customBody: PropTypes.element, + showFooter: PropTypes.bool, + showHeader: PropTypes.bool, + canClose: PropTypes.bool, + canDismiss: PropTypes.bool, + primaryAction: PropTypes.func, + secondaryAction: PropTypes.func, + timeOutTime: PropTypes.number, + timeOutMessage: PropTypes.string, + width: PropTypes.string, }; export default ALLModal; diff --git a/client/src/components/all-components/Likert.js b/client/src/components/all-components/Likert.js index 6114fcddd..562e7ce3d 100644 --- a/client/src/components/all-components/Likert.js +++ b/client/src/components/all-components/Likert.js @@ -2,40 +2,44 @@ import React from "react"; import PropTypes from "prop-types"; const defaultOptions = [ - "Strongly Disagree", - "Disagree", - "Neutral", - "Agree", - "Strongly Agree", + "Strongly Disagree", + "Disagree", + "Neutral", + "Agree", + "Strongly Agree", ]; -const Likert = ({ options = defaultOptions, onAnswerSelected, name = "likert" }) => { - return ( -
      -
      - {options.map((value) => ( -
      -

      {value}

      - -
      - ))} -
      -
      - ); +const Likert = ({ + options = defaultOptions, + onAnswerSelected, + name = "likert", +}) => { + return ( +
      +
      + {options.map((value) => ( +
      +

      {value}

      + +
      + ))} +
      +
      + ); }; Likert.propTypes = { - options: PropTypes.arrayOf(PropTypes.string), - onAnswerSelected: PropTypes.func.isRequired, - name: PropTypes.string, + options: PropTypes.arrayOf(PropTypes.string), + onAnswerSelected: PropTypes.func.isRequired, + name: PropTypes.string, }; export default Likert; diff --git a/client/src/components/all-components/UserPfp.js b/client/src/components/all-components/UserPfp.js index 68b289857..ae429abba 100644 --- a/client/src/components/all-components/UserPfp.js +++ b/client/src/components/all-components/UserPfp.js @@ -1,25 +1,33 @@ import useMainStateContext from "src/reducers/MainContext"; import PropTypes from "prop-types"; -import DefaultUser from '../../assets/images/DefaultUser.png'; +import DefaultUser from "../../assets/images/DefaultUser.png"; // User profile picture circle const UserPfp = ({ onClick }) => { - const { state } = useMainStateContext(); - const user = state.main.user; - const className = `tw-w-full tw-h-full tw-object-cover tw-rounded-full ${onClick ? "tw-cursor-pointer" : ""}`; + const { state } = useMainStateContext(); + const user = state.main.user; + const className = `tw-w-full tw-h-full tw-object-cover tw-rounded-full ${onClick ? "tw-cursor-pointer" : ""}`; - return ( - user?.userpfp ? - User Profile Picture - : user.firstname && user.lastinitial ? -
      {user?.firstname[0] + user?.lastinitial}
      - : - Default User - ); + return user?.userpfp ? ( + User Profile Picture + ) : user.firstname && user.lastinitial ? ( +
      {user?.firstname[0] + user?.lastinitial}
      + ) : ( + Default User + ); }; UserPfp.propTypes = { - onClick: PropTypes.func + onClick: PropTypes.func, }; export default UserPfp; diff --git a/client/src/components/body/Reading/Reading.js b/client/src/components/body/Reading/Reading.js index 7d0fe590e..d069e026c 100644 --- a/client/src/components/body/Reading/Reading.js +++ b/client/src/components/body/Reading/Reading.js @@ -415,11 +415,13 @@ const Reading = (props) => { <>
      - + options={ + isImagine && { maintainAspectRatio: false } + } + />
      {data.content.caption && ( diff --git a/client/src/components/exercise/lab13/Lab13Context.js b/client/src/components/exercise/lab13/Lab13Context.js index 9ff6851c9..a64252241 100644 --- a/client/src/components/exercise/lab13/Lab13Context.js +++ b/client/src/components/exercise/lab13/Lab13Context.js @@ -1,69 +1,69 @@ -import React, { createContext, useState, useContext } from 'react'; -import PropTypes from 'prop-types'; +import React, { createContext, useState, useContext } from "react"; +import PropTypes from "prop-types"; const ExerciseStateContext = createContext({ // Existing user info state - exerciseState: '', - setExerciseState: () => { }, - firstName: '', - setFirstName: () => { }, - lastName: '', - setLastName: () => { }, - preferredName: '', - setPreferredName: () => { }, - pronouns: '', - setPronouns: () => { }, - college: '', - setCollege: () => { }, - major: '', - setMajor: () => { }, - gradTerm: '', - setGradTerm: () => { }, + exerciseState: "", + setExerciseState: () => {}, + firstName: "", + setFirstName: () => {}, + lastName: "", + setLastName: () => {}, + preferredName: "", + setPreferredName: () => {}, + pronouns: "", + setPronouns: () => {}, + college: "", + setCollege: () => {}, + major: "", + setMajor: () => {}, + gradTerm: "", + setGradTerm: () => {}, // Ranking state rankingSuccess: false, - setRankingSuccess: () => { }, + setRankingSuccess: () => {}, rankingColumns: [], - setRankingColumns: () => { }, + setRankingColumns: () => {}, rankingBank: [], - setRankingBank: () => { }, + setRankingBank: () => {}, rankingComplete: false, - setRankingComplete: () => { }, - resetRanking: () => { }, + setRankingComplete: () => {}, + resetRanking: () => {}, // Save chat history chatMessages: [], - setChatMessages: () => { }, - resetChatMessages: () => { }, + setChatMessages: () => {}, + resetChatMessages: () => {}, // Wikpedia page states currentPhase: 1, - setCurrentPhase: () => { }, + setCurrentPhase: () => {}, hasVisitedWikipedia: false, - setHasVisitedWikipedia: () => { }, + setHasVisitedWikipedia: () => {}, wikipediaTimeSpent: 0, - setWikipediaTimeSpent: () => { }, + setWikipediaTimeSpent: () => {}, // IDE fix states showConfidenceScore: false, - setShowConfidenceScore: () => { }, + setShowConfidenceScore: () => {}, showCitations: false, - setShowCitations: () => { }, - disclaimerMessage: '', - setDisclaimerMessage: () => { }, + setShowCitations: () => {}, + disclaimerMessage: "", + setDisclaimerMessage: () => {}, // Question tracking states askedQuestions: [], - setAskedQuestions: () => { }, + setAskedQuestions: () => {}, }); export const ExerciseStateProvider = ({ children }) => { - const [exerciseState, setExerciseState] = useState('submitting'); - const [firstName, setFirstName] = useState(''); - const [lastName, setLastName] = useState(''); - const [preferredName, setPreferredName] = useState(''); - const [pronouns, setPronouns] = useState(''); - const [college, setCollege] = useState(''); - const [major, setMajor] = useState(''); - const [gradTerm, setGradTerm] = useState(''); + const [exerciseState, setExerciseState] = useState("submitting"); + const [firstName, setFirstName] = useState(""); + const [lastName, setLastName] = useState(""); + const [preferredName, setPreferredName] = useState(""); + const [pronouns, setPronouns] = useState(""); + const [college, setCollege] = useState(""); + const [major, setMajor] = useState(""); + const [gradTerm, setGradTerm] = useState(""); // Ranking state const [rankingSuccess, setRankingSuccess] = useState(false); @@ -84,7 +84,7 @@ export const ExerciseStateProvider = ({ children }) => { // Post IDE fix tracking states const [showConfidenceScore, setShowConfidenceScore] = useState(false); const [showCitations, setShowCitations] = useState(false); - const [disclaimerMessage, setDisclaimerMessage] = useState(''); + const [disclaimerMessage, setDisclaimerMessage] = useState(""); // Question tracking states const [askedQuestions, setAskedQuestions] = useState([]); @@ -104,17 +104,17 @@ export const ExerciseStateProvider = ({ children }) => { const [exercisePromptsState, setExercisePromptsState] = useState([ { - id: 'disclaimer', + id: "disclaimer", fileId: 0, - value: '', + value: "", }, { - id: 'confidence', + id: "confidence", fileId: 0, value: false, }, { - id: 'citations', + id: "citations", fileId: 0, value: false, }, @@ -129,7 +129,7 @@ export const ExerciseStateProvider = ({ children }) => { const handleUserInputChange = (id, value) => { setExercisePromptsState((prev) => - prev.map((item) => (item.id === id ? { ...item, value } : item)) + prev.map((item) => (item.id === id ? { ...item, value } : item)), ); setIsFirst(false); }; @@ -145,10 +145,10 @@ export const ExerciseStateProvider = ({ children }) => { /\bverify\b/.test(disclaimerValue) && /\boutput\b/.test(disclaimerValue); const confidenceValid = !!exercisePromptsState.find( - (i) => i.id === 'confidence' + (i) => i.id === "confidence", ).value; const citationsValid = !!exercisePromptsState.find( - (i) => i.id === 'citations' + (i) => i.id === "citations", ).value; setValidInputs({ disclaimer: disclaimerValid, @@ -159,8 +159,8 @@ export const ExerciseStateProvider = ({ children }) => { }; // No-ops for fetchRepair/postRepair for this exercise - const fetchRepair = () => { }; - const postRepair = () => { }; + const fetchRepair = () => {}; + const postRepair = () => {}; return ( { setAskedQuestions, topicIndex, setTopicIndex, - }} > {children} diff --git a/client/src/components/exercise/lab13/Main.js b/client/src/components/exercise/lab13/Main.js index 9e4a50e7d..cb3353971 100644 --- a/client/src/components/exercise/lab13/Main.js +++ b/client/src/components/exercise/lab13/Main.js @@ -1,13 +1,13 @@ -import React from 'react'; -import { Router } from '@reach/router'; -import { ExerciseStateProvider } from './Lab13Context'; +import React from "react"; +import { Router } from "@reach/router"; +import { ExerciseStateProvider } from "./Lab13Context"; -import ExerciseIntroduction from './pages/ExerciseIntroduction'; -import ConfidenceRanking from './pages/ConfidenceRanking'; -import AIPanel from './pages/AIPanel.js'; -import Conclusion from './pages/Conclusion.js'; -import IDEExercise from './pages/IDEExercise'; -import IDEIntroduction from './pages/IDEIntroduction'; +import ExerciseIntroduction from "./pages/ExerciseIntroduction"; +import ConfidenceRanking from "./pages/ConfidenceRanking"; +import AIPanel from "./pages/AIPanel.js"; +import Conclusion from "./pages/Conclusion.js"; +import IDEExercise from "./pages/IDEExercise"; +import IDEIntroduction from "./pages/IDEIntroduction"; /** * Main(): is the routing component for managing the lab exercise progression, diff --git a/client/src/components/exercise/lab13/components/AIChatBot.js b/client/src/components/exercise/lab13/components/AIChatBot.js index 6bbbf860d..93683a38b 100644 --- a/client/src/components/exercise/lab13/components/AIChatBot.js +++ b/client/src/components/exercise/lab13/components/AIChatBot.js @@ -1,11 +1,10 @@ -import React, { useState, useRef, useEffect } from 'react'; -import PropTypes from 'prop-types'; -import BlobLoader from './BlobLoader'; -import Avatar from './Avatar'; -import { AvatarType } from 'src/constants/lab13/AvatarType'; -import HyperLinkImage from 'src/assets/images/lab13/HyperLink.png'; -import TypingMessage from './TypingMessage'; - +import React, { useState, useRef, useEffect } from "react"; +import PropTypes from "prop-types"; +import BlobLoader from "./BlobLoader"; +import Avatar from "./Avatar"; +import { AvatarType } from "src/constants/lab13/AvatarType"; +import HyperLinkImage from "src/assets/images/lab13/HyperLink.png"; +import TypingMessage from "./TypingMessage"; /** * Chatbot component that displays user-ai messages @@ -26,7 +25,7 @@ const AIChatBot = ({ canSelectQuestion = true, showConfidenceScore = false, showCitations = false, - disclaimerMessage = '', + disclaimerMessage = "", onCitationClick = null, onQuestionAsked = null, }) => { @@ -39,7 +38,7 @@ const AIChatBot = ({ useEffect(() => { if (messages.length > 0) { const lastMessage = messages[messages.length - 1]; - if (lastMessage.sender === 'bot' && lastMessage.isNew) { + if (lastMessage.sender === "bot" && lastMessage.isNew) { setIsTyping(true); } } @@ -61,7 +60,7 @@ const AIChatBot = ({ useEffect(() => { if (messages.length > 0 && canSelectQuestion) { const lastMessage = messages[messages.length - 1]; - if (lastMessage.sender === 'bot' && !isTyping && !isThinking) { + if (lastMessage.sender === "bot" && !isTyping && !isThinking) { // Small delay to show questions after bot finishes typing const timer = setTimeout(() => { setShowQuestionOptions(true); @@ -133,8 +132,8 @@ const AIChatBot = ({ setTimeout(() => { const botMsg = { - sender: 'bot', - text: botObj ? botObj.text : 'No response found.', + sender: "bot", + text: botObj ? botObj.text : "No response found.", id: `bot-${question.id}-${Date.now()}`, timestamp: new Date(), confidence: botObj?.confidence, @@ -160,15 +159,15 @@ const AIChatBot = ({ * @returns {string} "pulsing" | "spinning" | "static" */ const getBlobMode = () => { - if (isThinking) return 'pulsing'; - if (isTyping) return 'spinning'; - return 'static'; + if (isThinking) return "pulsing"; + if (isTyping) return "spinning"; + return "static"; }; return (
      {/* Scrollable container that displays the chat messages */}
      0 ? messages.map((msg, index) => ( -
      - {/* Avatar circle */} - - {/* Message box adjacent to user message */}
      + {/* Avatar circle */} + + {/* Message box adjacent to user message */}
      - {/* User messages - just display text */} - {msg.sender === AvatarType.User ? ( - msg.text - ) : ( - // Bot messages - use renderAIMessage for additional features - <> - {index === messages.length - 1 && isTyping ? ( - // Typing animation for latest message - { - setMessages((prev) => - prev.map((m) => - m.id === msg.id ? { ...m, isNew: false } : m - ) - ); - setIsTyping(false); - }} - /> - ) : ( - // Display message text - msg.text - )} +
      + {/* User messages - just display text */} + {msg.sender === AvatarType.User ? ( + msg.text + ) : ( + // Bot messages - use renderAIMessage for additional features + <> + {index === messages.length - 1 && isTyping ? ( + // Typing animation for latest message + { + setMessages((prev) => + prev.map((m) => + m.id === msg.id ? { ...m, isNew: false } : m, + ), + ); + setIsTyping(false); + }} + /> + ) : ( + // Display message text + msg.text + )} - {/* Show confidence, disclaimer, citations AFTER typing completes */} - {(!isTyping || index !== messages.length - 1) && - msg.confidence && - msg.isPhase4 && ( -
      - {showConfidenceScore && ( -
      - Confidence Score: - {msg.confidence} -
      - )} + {/* Show confidence, disclaimer, citations AFTER typing completes */} + {(!isTyping || index !== messages.length - 1) && + msg.confidence && + msg.isPhase4 && ( +
      + {showConfidenceScore && ( +
      + Confidence Score: + {msg.confidence} +
      + )} - {disclaimerMessage && ( -
      - Disclaimer: - {disclaimerMessage} -
      - )} + {disclaimerMessage && ( +
      + Disclaimer: + {disclaimerMessage} +
      + )} - {showCitations && ( -
      - Source: -
      -

      ALLpedia

      - Hyper Link Image + {showCitations && ( +
      + Source: +
      +

      ALLpedia

      + Hyper Link Image +
      -
      - )} -
      - )} - - )} + )} +
      + )} + + )} +
      + {/* Show blob for most recent AI messages while its typing */} + {msg.sender === "bot" && + index === messages.length - 1 && + isTyping && ( +
      + +
      + )}
      - {/* Show blob for most recent AI messages while its typing */} - {msg.sender === 'bot' && - index === messages.length - 1 && - isTyping && ( -
      - -
      - )}
      -
      - )) + )) : null} {/* Question options after greeting */} @@ -290,7 +291,7 @@ const AIChatBot = ({
      @@ -299,8 +300,8 @@ const AIChatBot = ({ className="tw-max-w-[70%] tw-bg-white tw-rounded-lg tw-shadow-lg tw-border-2 tw-border-gray-200 tw-overflow-hidden" style={{ animation: showQuestionOptions - ? 'fadeIn 0.5s ease-in' - : 'fadeOut 0.3s ease-out', + ? "fadeIn 0.5s ease-in" + : "fadeOut 0.3s ease-out", }} >
      @@ -309,10 +310,11 @@ const AIChatBot = ({ @@ -330,7 +332,7 @@ const AIChatBot = ({ {isThinking && (
      @@ -371,7 +373,7 @@ AIChatBot.propTypes = { PropTypes.shape({ id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, text: PropTypes.string.isRequired, - }) + }), ), fixedAIResponse: PropTypes.arrayOf( PropTypes.shape({ @@ -380,7 +382,7 @@ AIChatBot.propTypes = { biasType: PropTypes.string, biasDefinition: PropTypes.object, explanation: PropTypes.string, - }) + }), ), onAnswerDataChange: PropTypes.func, onTypingChange: PropTypes.func, diff --git a/client/src/components/exercise/lab13/components/AIPanel/AIChatBotTab.js b/client/src/components/exercise/lab13/components/AIPanel/AIChatBotTab.js index 928034107..368497459 100644 --- a/client/src/components/exercise/lab13/components/AIPanel/AIChatBotTab.js +++ b/client/src/components/exercise/lab13/components/AIPanel/AIChatBotTab.js @@ -1,283 +1,285 @@ -import { BIAS_DEFINITIONS, BIAS_POSITION_MAP, BIAS_TYPES } from 'src/constants/lab13/BiasQuestionsConfig'; -import AIChatBot from '../AIChatBot'; -import { Tab } from '../Tab/Tab'; -import { useContext, useMemo } from 'react'; -import ExerciseStateContext from '../../Lab13Context'; -import PropTypes from 'prop-types'; +import { + BIAS_DEFINITIONS, + BIAS_POSITION_MAP, + BIAS_TYPES, +} from "src/constants/lab13/BiasQuestionsConfig"; +import AIChatBot from "../AIChatBot"; +import { Tab } from "../Tab/Tab"; +import { useContext, useMemo } from "react"; +import ExerciseStateContext from "../../Lab13Context"; +import PropTypes from "prop-types"; const AIChatBotTab = ({ - currentTopic, - topicData, - setSelectedBiasData, - setShowRatingModal, - setCurrentAnswerData, - setQuestionAnswered, - showRatingModal, - showBiasExplanation, - clickedReviewButtonThisPhase, - showWikipediaTab, - currentDisplayTime, - currentAnswerData, - questionAnswered, - isBotThinking, - isBotTyping, - requireWikipedia, - activeTopic, - setClickedReviewButtonThisPhase, - setIsBotThinking, - setIsBotTyping, - setCurrentQuestion, - setActiveTab + currentTopic, + topicData, + setSelectedBiasData, + setShowRatingModal, + setCurrentAnswerData, + setQuestionAnswered, + showRatingModal, + showBiasExplanation, + clickedReviewButtonThisPhase, + showWikipediaTab, + currentDisplayTime, + currentAnswerData, + questionAnswered, + isBotThinking, + isBotTyping, + requireWikipedia, + activeTopic, + setClickedReviewButtonThisPhase, + setIsBotThinking, + setIsBotTyping, + setCurrentQuestion, + setActiveTab, }) => { - const { - chatMessages, - setChatMessages, - hasVisitedWikipedia, - currentPhase, - showConfidenceScore, - showCitations, - disclaimerMessage, - askedQuestions, - setAskedQuestions, - topicIndex - } = useContext(ExerciseStateContext); + const { + chatMessages, + setChatMessages, + hasVisitedWikipedia, + currentPhase, + showConfidenceScore, + showCitations, + disclaimerMessage, + askedQuestions, + setAskedQuestions, + topicIndex, + } = useContext(ExerciseStateContext); - const activeBias = - BIAS_POSITION_MAP[currentTopic?.biasPosition] || BIAS_TYPES.HALO_EFFECT; - const handleAnswerSelected = (biasType, biasDefinition, explanation, aiResponseText) => { - setSelectedBiasData({ - biasType, - biasDefinition, - explanation, - aiResponseText, - }); - setShowRatingModal(true); - }; - - const handleAnswerDataChange = (data) => { - setCurrentAnswerData(data); - setQuestionAnswered(true); - } + const activeBias = + BIAS_POSITION_MAP[currentTopic?.biasPosition] || BIAS_TYPES.HALO_EFFECT; + const handleAnswerSelected = ( + biasType, + biasDefinition, + explanation, + aiResponseText, + ) => { + setSelectedBiasData({ + biasType, + biasDefinition, + explanation, + aiResponseText, + }); + setShowRatingModal(true); + }; - const getCurrentInstruction = () => { - if (!currentTopic) return null; + const handleAnswerDataChange = (data) => { + setCurrentAnswerData(data); + setQuestionAnswered(true); + }; - // hide instructions when modals are open or when review button was clicked - if ( - showRatingModal || - showBiasExplanation || - clickedReviewButtonThisPhase - ) { - return null; - } + const getCurrentInstruction = () => { + if (!currentTopic) return null; - if (topicIndex === 0) { - if (!canReviewResponse) { - return `You're now on your moderately knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; - } - return null; - } + // hide instructions when modals are open or when review button was clicked + if ( + showRatingModal || + showBiasExplanation || + clickedReviewButtonThisPhase + ) { + return null; + } - if (topicIndex === 1) { - if (questionAnswered && showWikipediaTab && !hasVisitedWikipedia) { - return `ALLpedia is now available if you'd like to fact-check ALL-IE's response on ${currentTopic.title} before reviewing.`; - } - if (!questionAnswered) { - return `You're now on your most knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; - } - return null; - } - if (topicIndex === 2 && currentPhase < 4) { - if (!questionAnswered || !currentAnswerData) { - return `You're now on your least knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; - } - if (questionAnswered && !canReviewResponse) { - const timeLeft = 15 - currentDisplayTime; - if (!hasVisitedWikipedia) { - console.log("HERERERERER") - return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; - } - return `Please spend ${timeLeft} more second${timeLeft !== 1 ? 's' : ''} on ALLpedia`; - } - return null; - } + if (topicIndex === 0) { + if (!canReviewResponse) { + return `You're now on your moderately knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; + } + return null; + } - if (currentPhase === 4) { - if (!questionAnswered) { - return `Great! Now that you've implemented your IDE fixes, interact with ALL-IE again on your least knowledgeable topic, ${currentTopic.title}.`; - } - if (questionAnswered && !canReviewResponse) { - const timeLeft = 15 - currentDisplayTime; - if (!hasVisitedWikipedia) { - return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; - } - return `Please spend ${timeLeft} more second${timeLeft !== 1 ? 's' : ''} on ALLpedia`; - } - return null; + if (topicIndex === 1) { + if (questionAnswered && showWikipediaTab && !hasVisitedWikipedia) { + return `ALLpedia is now available if you'd like to fact-check ALL-IE's response on ${currentTopic.title} before reviewing.`; + } + if (!questionAnswered) { + return `You're now on your most knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; + } + return null; + } + if (topicIndex === 2 && currentPhase < 4) { + if (!questionAnswered || !currentAnswerData) { + return `You're now on your least knowledgeable topic, ${currentTopic.title}. Select a prompt to interact with ALL-IE.`; + } + if (questionAnswered && !canReviewResponse) { + const timeLeft = 15 - currentDisplayTime; + if (!hasVisitedWikipedia) { + console.log("HERERERERER"); + return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; } + return `Please spend ${timeLeft} more second${timeLeft !== 1 ? "s" : ""} on ALLpedia`; + } + return null; + } - return null; - }; - - // Check if ai review button should be enabled - const canReviewResponse = useMemo(() => { - if (!currentAnswerData || isBotTyping || isBotThinking || showRatingModal) { - return false; + if (currentPhase === 4) { + if (!questionAnswered) { + return `Great! Now that you've implemented your IDE fixes, interact with ALL-IE again on your least knowledgeable topic, ${currentTopic.title}.`; + } + if (questionAnswered && !canReviewResponse) { + const timeLeft = 15 - currentDisplayTime; + if (!hasVisitedWikipedia) { + return `Review the ALLpedia page for at least 15 seconds before reviewing ALL-IE's response on ${currentTopic.title}.`; } + return `Please spend ${timeLeft} more second${timeLeft !== 1 ? "s" : ""} on ALLpedia`; + } + return null; + } - // Phase 3 and 4 require Wikipedia visit for 15 or more seconds - if (requireWikipedia) { - return hasVisitedWikipedia && currentDisplayTime >= 15; - } + return null; + }; - return true; - }, [ - currentAnswerData, - isBotTyping, - isBotThinking, - showRatingModal, - requireWikipedia, - hasVisitedWikipedia, - currentDisplayTime, - ]); + // Check if ai review button should be enabled + const canReviewResponse = useMemo(() => { + if (!currentAnswerData || isBotTyping || isBotThinking || showRatingModal) { + return false; + } - // Filter questions for round 4 to only show unasked questions - const getAvailableQuestions = useMemo(() => { - if (!topicData?.questions) return []; + // Phase 3 and 4 require Wikipedia visit for 15 or more seconds + if (requireWikipedia) { + return hasVisitedWikipedia && currentDisplayTime >= 15; + } - if (currentPhase === 4) { - // Phase 4, show only unasked questions from current topic + return true; + }, [ + currentAnswerData, + isBotTyping, + isBotThinking, + showRatingModal, + requireWikipedia, + hasVisitedWikipedia, + currentDisplayTime, + ]); - const available = topicData.questions - .map((q, index) => ({ ...q, originalIndex: index })) - .filter((q) => { - const questionKey = `${activeTopic}-${q.originalIndex}`; - return !askedQuestions.includes(questionKey); - }) - .slice(0, 2); // Only first 2 unasked + // Filter questions for round 4 to only show unasked questions + const getAvailableQuestions = useMemo(() => { + if (!topicData?.questions) return []; - return available; - } + if (currentPhase === 4) { + // Phase 4, show only unasked questions from current topic - // All other phases, show all questions with originalIndex - return topicData.questions.map((q, index) => ({ - ...q, - originalIndex: index, - })); - }, [currentPhase, topicData, askedQuestions, activeTopic]); + const available = topicData.questions + .map((q, index) => ({ ...q, originalIndex: index })) + .filter((q) => { + const questionKey = `${activeTopic}-${q.originalIndex}`; + return !askedQuestions.includes(questionKey); + }) + .slice(0, 2); // Only first 2 unasked - // Switch to Wikipedia tab on citation click - const handleCitationClick = () => { - setActiveTab('ALLpedia'); - }; + return available; + } - // Track when a question is asked - const handleQuestionAsked = (questionIndex) => { - const questionKey = `${activeTopic}-${questionIndex}`; - setCurrentQuestion(questionIndex); + // All other phases, show all questions with originalIndex + return topicData.questions.map((q, index) => ({ + ...q, + originalIndex: index, + })); + }, [currentPhase, topicData, askedQuestions, activeTopic]); - setAskedQuestions((prev) => { - if (!prev.includes(questionKey)) { - return [...prev, questionKey]; - } - return prev; - }); - } - return ( - -
      -
      - ({ - id: index + 1, - text: q.text, - originalIndex: - q.originalIndex !== undefined - ? q.originalIndex - : index, - }))} - fixedAIResponse={getAvailableQuestions.map((q, index) => { - return { - id: index + 1, - text: q.answers[activeBias].text, - isCorrect: q.answers[activeBias].isCorrect, - explanation: q.answers[activeBias].explanation, - biasType: activeBias, - biasDefinition: BIAS_DEFINITIONS[activeBias], - confidence: q.answers[activeBias].confidence || 93, - }; - })} - onAnswerDataChange={handleAnswerDataChange} - onTypingChange={setIsBotTyping} - onThinkingChange={setIsBotThinking} - messages={chatMessages} - setMessages={setChatMessages} - canSelectQuestion={!questionAnswered} - showConfidenceScore={ - currentPhase === 4 && showConfidenceScore - } - showCitations={currentPhase === 4 && showCitations} - disclaimerMessage={ - currentPhase === 4 ? disclaimerMessage : '' - } - onCitationClick={handleCitationClick} - onQuestionAsked={handleQuestionAsked} - /> -
      -
      - {getCurrentInstruction() && ( -
      - {getCurrentInstruction()} -
      - )} + // Switch to Wikipedia tab on citation click + const handleCitationClick = () => { + setActiveTab("ALLpedia"); + }; - {canReviewResponse && ( - - )} -
      + setAskedQuestions((prev) => { + if (!prev.includes(questionKey)) { + return [...prev, questionKey]; + } + return prev; + }); + }; + return ( + +
      +
      + ({ + id: index + 1, + text: q.text, + originalIndex: + q.originalIndex !== undefined ? q.originalIndex : index, + }))} + fixedAIResponse={getAvailableQuestions.map((q, index) => { + return { + id: index + 1, + text: q.answers[activeBias].text, + isCorrect: q.answers[activeBias].isCorrect, + explanation: q.answers[activeBias].explanation, + biasType: activeBias, + biasDefinition: BIAS_DEFINITIONS[activeBias], + confidence: q.answers[activeBias].confidence || 93, + }; + })} + onAnswerDataChange={handleAnswerDataChange} + onTypingChange={setIsBotTyping} + onThinkingChange={setIsBotThinking} + messages={chatMessages} + setMessages={setChatMessages} + canSelectQuestion={!questionAnswered} + showConfidenceScore={currentPhase === 4 && showConfidenceScore} + showCitations={currentPhase === 4 && showCitations} + disclaimerMessage={currentPhase === 4 ? disclaimerMessage : ""} + onCitationClick={handleCitationClick} + onQuestionAsked={handleQuestionAsked} + /> +
      +
      + {getCurrentInstruction() && ( +
      + {getCurrentInstruction()}
      - - ); + )} + + {canReviewResponse && ( + + )} +
      +
      +
      + ); }; AIChatBotTab.propTypes = { - currentTopic: PropTypes.object, - topicData: PropTypes.object, - setSelectedBiasData: PropTypes.func.isRequired, - setShowRatingModal: PropTypes.func.isRequired, - setCurrentAnswerData: PropTypes.func.isRequired, - setQuestionAnswered: PropTypes.func.isRequired, - showRatingModal: PropTypes.bool.isRequired, - showBiasExplanation: PropTypes.bool.isRequired, - clickedReviewButtonThisPhase: PropTypes.bool.isRequired, - showWikipediaTab: PropTypes.bool.isRequired, - currentDisplayTime: PropTypes.number.isRequired, - currentAnswerData: PropTypes.object, - questionAnswered: PropTypes.bool.isRequired, - isBotThinking: PropTypes.bool.isRequired, - isBotTyping: PropTypes.bool.isRequired, - requireWikipedia: PropTypes.bool.isRequired, - activeTopic: PropTypes.string.isRequired, - setClickedReviewButtonThisPhase: PropTypes.func.isRequired, - setIsBotThinking: PropTypes.func.isRequired, - setIsBotTyping: PropTypes.func.isRequired, - setCurrentQuestion: PropTypes.func.isRequired, - setActiveTab: PropTypes.func.isRequired, + currentTopic: PropTypes.object, + topicData: PropTypes.object, + setSelectedBiasData: PropTypes.func.isRequired, + setShowRatingModal: PropTypes.func.isRequired, + setCurrentAnswerData: PropTypes.func.isRequired, + setQuestionAnswered: PropTypes.func.isRequired, + showRatingModal: PropTypes.bool.isRequired, + showBiasExplanation: PropTypes.bool.isRequired, + clickedReviewButtonThisPhase: PropTypes.bool.isRequired, + showWikipediaTab: PropTypes.bool.isRequired, + currentDisplayTime: PropTypes.number.isRequired, + currentAnswerData: PropTypes.object, + questionAnswered: PropTypes.bool.isRequired, + isBotThinking: PropTypes.bool.isRequired, + isBotTyping: PropTypes.bool.isRequired, + requireWikipedia: PropTypes.bool.isRequired, + activeTopic: PropTypes.string.isRequired, + setClickedReviewButtonThisPhase: PropTypes.func.isRequired, + setIsBotThinking: PropTypes.func.isRequired, + setIsBotTyping: PropTypes.func.isRequired, + setCurrentQuestion: PropTypes.func.isRequired, + setActiveTab: PropTypes.func.isRequired, }; -export default AIChatBotTab; \ No newline at end of file +export default AIChatBotTab; diff --git a/client/src/components/exercise/lab13/components/AIPanel/AIPanelRatingModal.js b/client/src/components/exercise/lab13/components/AIPanel/AIPanelRatingModal.js index 39a1f16be..e656018de 100644 --- a/client/src/components/exercise/lab13/components/AIPanel/AIPanelRatingModal.js +++ b/client/src/components/exercise/lab13/components/AIPanel/AIPanelRatingModal.js @@ -1,86 +1,86 @@ import { BIAS_DEFINITIONS } from "src/constants/lab13/BiasQuestionsConfig"; import RatingModal from "../RatingModal"; -import PropTypes from 'prop-types'; +import PropTypes from "prop-types"; const AIPanelRatingModal = ({ - showRatingModal, - setShowRatingModal, - showBiasExplanation, - setShowBiasExplanation, - selectedBiasData, - handleBiasExplanationClose, - setToneRating, - setConfidenceRating, - toneRating, - confidenceRating + showRatingModal, + setShowRatingModal, + showBiasExplanation, + setShowBiasExplanation, + selectedBiasData, + handleBiasExplanationClose, + setToneRating, + setConfidenceRating, + toneRating, + confidenceRating, }) => { - const biasDefinition = selectedBiasData - ? BIAS_DEFINITIONS[selectedBiasData.biasType] - : null; + const biasDefinition = selectedBiasData + ? BIAS_DEFINITIONS[selectedBiasData.biasType] + : null; - const handleRatingSubmit = () => { - setShowRatingModal(false); - setShowBiasExplanation(true); - }; + const handleRatingSubmit = () => { + setShowRatingModal(false); + setShowBiasExplanation(true); + }; - return ( - - {biasDefinition.name} -
      - ) : null - } - textModalBody={ - selectedBiasData && biasDefinition ? ( -
      - {selectedBiasData.aiResponseText && ( -
      -

      - Given AI Response: - "{selectedBiasData.aiResponseText}" -

      -
      - )} -
      -

      - {selectedBiasData.explanation} -

      -
      -
      -
      - What is {biasDefinition.name}? -
      -

      {biasDefinition.definition}

      -
      -
      - ) : null - } - onCloseTextModal={handleBiasExplanationClose} - /> - ); + return ( + + {biasDefinition.name} +
      + ) : null + } + textModalBody={ + selectedBiasData && biasDefinition ? ( +
      + {selectedBiasData.aiResponseText && ( +
      +

      + Given AI Response: + "{selectedBiasData.aiResponseText}" +

      +
      + )} +
      +

      + {selectedBiasData.explanation} +

      +
      +
      +
      + What is {biasDefinition.name}? +
      +

      {biasDefinition.definition}

      +
      +
      + ) : null + } + onCloseTextModal={handleBiasExplanationClose} + /> + ); }; AIPanelRatingModal.propTypes = { - showRatingModal: PropTypes.bool.isRequired, - setShowRatingModal: PropTypes.func.isRequired, - showBiasExplanation: PropTypes.bool.isRequired, - setShowBiasExplanation: PropTypes.func.isRequired, - selectedBiasData: PropTypes.object, - handleBiasExplanationClose: PropTypes.func.isRequired, - setToneRating: PropTypes.func.isRequired, - setConfidenceRating: PropTypes.func.isRequired, - toneRating: PropTypes.number.isRequired, - confidenceRating: PropTypes.number.isRequired, + showRatingModal: PropTypes.bool.isRequired, + setShowRatingModal: PropTypes.func.isRequired, + showBiasExplanation: PropTypes.bool.isRequired, + setShowBiasExplanation: PropTypes.func.isRequired, + selectedBiasData: PropTypes.object, + handleBiasExplanationClose: PropTypes.func.isRequired, + setToneRating: PropTypes.func.isRequired, + setConfidenceRating: PropTypes.func.isRequired, + toneRating: PropTypes.number.isRequired, + confidenceRating: PropTypes.number.isRequired, }; -export default AIPanelRatingModal; \ No newline at end of file +export default AIPanelRatingModal; diff --git a/client/src/components/exercise/lab13/components/AIPanel/AllPediaImage.js b/client/src/components/exercise/lab13/components/AIPanel/AllPediaImage.js index 49864eb63..f2a3ec5ca 100644 --- a/client/src/components/exercise/lab13/components/AIPanel/AllPediaImage.js +++ b/client/src/components/exercise/lab13/components/AIPanel/AllPediaImage.js @@ -1,21 +1,21 @@ -import PropTypes from 'prop-types'; +import PropTypes from "prop-types"; const AllPediaImage = ({ wikipediaContent }) => { - return ( -
      - {wikipediaContent.title} -
      - ); + return ( +
      + {wikipediaContent.title} +
      + ); }; AllPediaImage.propTypes = { - wikipediaContent: PropTypes.shape({ - imageUrl: PropTypes.string.isRequired, - title: PropTypes.string.isRequired, - }).isRequired, + wikipediaContent: PropTypes.shape({ + imageUrl: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + }).isRequired, }; -export default AllPediaImage; \ No newline at end of file +export default AllPediaImage; diff --git a/client/src/components/exercise/lab13/components/AIPanel/AllPediaTab.js b/client/src/components/exercise/lab13/components/AIPanel/AllPediaTab.js index 6a63d1448..868ec7e71 100644 --- a/client/src/components/exercise/lab13/components/AIPanel/AllPediaTab.js +++ b/client/src/components/exercise/lab13/components/AIPanel/AllPediaTab.js @@ -1,123 +1,121 @@ -import { Tab } from '../Tab/Tab'; -import ProgressBar from 'src/components/all-components/ProgressBar'; -import AllPediaImage from '../AIPanel/AllPediaImage'; -import PropTypes from 'prop-types'; -import { renderTextWithHighlight } from '../../functions/RenderTextWithHighlight'; -import { getAnswerDataHighlights } from '../../functions/getAnswerDataHighlights'; +import { Tab } from "../Tab/Tab"; +import ProgressBar from "src/components/all-components/ProgressBar"; +import AllPediaImage from "../AIPanel/AllPediaImage"; +import PropTypes from "prop-types"; +import { renderTextWithHighlight } from "../../functions/RenderTextWithHighlight"; +import { getAnswerDataHighlights } from "../../functions/getAnswerDataHighlights"; const AllPediaTab = ({ - wikipediaContent, - requireWikipedia, - currentDisplayTime, - currentAnswerData, - currentQuestion, - activeTopic, + wikipediaContent, + requireWikipedia, + currentDisplayTime, + currentAnswerData, + currentQuestion, + activeTopic, }) => { - return ( - -
      - {/* Header with Title and Timer */} -
      -
      - {/* Left: Empty spacer for balance */} -
      - {/* Empty div for grid balance */} -
      + return ( + +
      + {/* Header with Title and Timer */} +
      +
      + {/* Left: Empty spacer for balance */} +
      {/* Empty div for grid balance */}
      - {/* Title */} -
      -

      - {wikipediaContent.title} -

      -
      + {/* Title */} +
      +

      + {wikipediaContent.title} +

      +
      - {/* Timer */} -
      - {requireWikipedia && ( -
      - {currentDisplayTime >= 15 ? ( -
      - - ✓ - - - Complete - -
      - ) : ( - - )} -
      - )} -
      + {/* Timer */} +
      + {requireWikipedia && ( +
      + {currentDisplayTime >= 15 ? ( +
      + + + Complete +
      + ) : ( + + )}
      + )} +
      +
      +
      - {/* Text on left and image on right */} -
      -
      - {/* Left: Text Content */} -
      -
      - {wikipediaContent.text - .split('\n\n') - .map((paragraph, index) => ( -

      - {renderTextWithHighlight( - paragraph, - getAnswerDataHighlights(currentAnswerData, currentQuestion, activeTopic) - )} -

      - ))} -
      -
      - -
      - - {/* Sources at bottom */} -
      -

      - Sources: -

      -
        - {wikipediaContent.sources.map((source, index) => ( -
      • - - {source} - -
      • - ))} -
      -
      -
      + {/* Text on left and image on right */} +
      +
      + {/* Left: Text Content */} +
      +
      + {wikipediaContent.text.split("\n\n").map((paragraph, index) => ( +

      + {renderTextWithHighlight( + paragraph, + getAnswerDataHighlights( + currentAnswerData, + currentQuestion, + activeTopic, + ), + )} +

      + ))} +
      - - ); + +
      + + {/* Sources at bottom */} +
      +

      + Sources: +

      +
        + {wikipediaContent.sources.map((source, index) => ( +
      • + + {source} + +
      • + ))} +
      +
      +
      +
      +
      + ); }; AllPediaTab.propTypes = { - wikipediaContent: PropTypes.shape({ - title: PropTypes.string.isRequired, - text: PropTypes.string.isRequired, - sources: PropTypes.arrayOf(PropTypes.string).isRequired, - }).isRequired, - requireWikipedia: PropTypes.bool.isRequired, - currentDisplayTime: PropTypes.number.isRequired, - currentAnswerData: PropTypes.object.isRequired, - currentQuestion: PropTypes.object.isRequired, - activeTopic: PropTypes.object.isRequired, + wikipediaContent: PropTypes.shape({ + title: PropTypes.string.isRequired, + text: PropTypes.string.isRequired, + sources: PropTypes.arrayOf(PropTypes.string).isRequired, + }).isRequired, + requireWikipedia: PropTypes.bool.isRequired, + currentDisplayTime: PropTypes.number.isRequired, + currentAnswerData: PropTypes.object.isRequired, + currentQuestion: PropTypes.object.isRequired, + activeTopic: PropTypes.object.isRequired, }; -export default AllPediaTab; \ No newline at end of file +export default AllPediaTab; diff --git a/client/src/components/exercise/lab13/components/Avatar.js b/client/src/components/exercise/lab13/components/Avatar.js index 78667614e..8abaf492c 100644 --- a/client/src/components/exercise/lab13/components/Avatar.js +++ b/client/src/components/exercise/lab13/components/Avatar.js @@ -1,8 +1,8 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import RobotImage from '../../../../assets/images/lab13/robot.png'; -import { AvatarType } from '../../../../constants/lab13/AvatarType'; -import UserPfp from 'src/components/all-components/UserPfp'; +import React from "react"; +import PropTypes from "prop-types"; +import RobotImage from "../../../../assets/images/lab13/robot.png"; +import { AvatarType } from "../../../../constants/lab13/AvatarType"; +import UserPfp from "src/components/all-components/UserPfp"; const Avatar = ({ type, size = 40 }) => { const isAI = type === AvatarType.AI; @@ -13,15 +13,15 @@ const Avatar = ({ type, size = 40 }) => { style={{ width: size, height: size, - borderRadius: '50%', - backgroundColor: isAI ? '#FACE35' : '#0144D5', - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - fontWeight: 'bold', - color: isAI ? 'white' : 'black', + borderRadius: "50%", + backgroundColor: isAI ? "#FACE35" : "#0144D5", + display: "flex", + alignItems: "center", + justifyContent: "center", + fontWeight: "bold", + color: isAI ? "white" : "black", fontSize: size * 0.5, - border: '0.5px solid #9ABDDC', + border: "0.5px solid #9ABDDC", }} > {isAI ? ( @@ -29,10 +29,10 @@ const Avatar = ({ type, size = 40 }) => { src={RobotImage} alt="AI Avatar" style={{ - width: '100%', - height: '100%', - objectFit: 'cover', - borderRadius: '50%', + width: "100%", + height: "100%", + objectFit: "cover", + borderRadius: "50%", }} /> ) : ( diff --git a/client/src/components/exercise/lab13/components/RatingModal.js b/client/src/components/exercise/lab13/components/RatingModal.js index 0cfa56a98..817157a05 100644 --- a/client/src/components/exercise/lab13/components/RatingModal.js +++ b/client/src/components/exercise/lab13/components/RatingModal.js @@ -1,134 +1,148 @@ -import React, { useRef, useEffect } from 'react'; -import PropTypes from 'prop-types'; -import ALLModal from 'src/components/all-components/ALLModal'; -import Likert from 'src/components/all-components/Likert'; -import LabButton from 'src/components/all-components/LabButton'; +import React, { useRef, useEffect } from "react"; +import PropTypes from "prop-types"; +import ALLModal from "src/components/all-components/ALLModal"; +import Likert from "src/components/all-components/Likert"; +import LabButton from "src/components/all-components/LabButton"; -const optionsList = ['Very Low', 'Low', 'Medium', 'High', 'Very High']; +const optionsList = ["Very Low", "Low", "Medium", "High", "Very High"]; const RatingModal = ({ - show, - setShow, - toneRating, - setToneRating, - confidenceRating, - setConfidenceRating, - onSubmit, - showTextModal, - setShowTextModal, - textModalHeader, - textModalBody, - onCloseTextModal, + show, + setShow, + toneRating, + setToneRating, + confidenceRating, + setConfidenceRating, + onSubmit, + showTextModal, + setShowTextModal, + textModalHeader, + textModalBody, + onCloseTextModal, }) => { - const firstModalRef = useRef(null); - // Control overlay when modals are shown - useEffect(() => { - if (show || showTextModal) { - document.body.style.overflow = 'hidden'; - } else { - document.body.style.overflow = 'unset'; - } - return () => { - document.body.style.overflow = 'unset'; - }; - }, [show, showTextModal]); + const firstModalRef = useRef(null); + // Control overlay when modals are shown + useEffect(() => { + if (show || showTextModal) { + document.body.style.overflow = "hidden"; + } else { + document.body.style.overflow = "unset"; + } + return () => { + document.body.style.overflow = "unset"; + }; + }, [show, showTextModal]); - const handleSubmit = () => { - if (!toneRating || !confidenceRating) { - alert('Please rate both factors before submitting.'); - return; - } - onSubmit(); - }; + const handleSubmit = () => { + if (!toneRating || !confidenceRating) { + alert("Please rate both factors before submitting."); + return; + } + onSubmit(); + }; - return ( - <> -
      -
      - -
      - Rate each factor by its influence on your trust. -
      - -
      - } - showFooter={false} - customBody={ -
      -
      -
      Tone:
      - setToneRating(e.target.value.toLowerCase().replace(/ /g, '-'))} /> -
      + return ( + <> +
      +
      + +
      + Rate each factor by its influence on your trust. +
      + +
      + } + showFooter={false} + customBody={ +
      +
      +
      + Tone: +
      + + setToneRating( + e.target.value.toLowerCase().replace(/ /g, "-"), + ) + } + /> +
      -
      -
      Confidence:
      - setConfidenceRating(e.target.value.toLowerCase().replace(/ /g, '-'))} /> -
      -
      - -
      -
      - } - /> - - {textModalHeader} -
      - } - showFooter={false} - customBody={ -
      - {textModalBody} - -
      - } - /> -
      -
      - - ); +
      +
      + Confidence: +
      + + setConfidenceRating( + e.target.value.toLowerCase().replace(/ /g, "-"), + ) + } + /> +
      +
      + +
      +
      + } + /> + + {textModalHeader} +
      + } + showFooter={false} + customBody={ +
      + {textModalBody} + +
      + } + /> +
      +
      + + ); }; RatingModal.propTypes = { - show: PropTypes.bool.isRequired, - setShow: PropTypes.func.isRequired, - toneRating: PropTypes.string.isRequired, - setToneRating: PropTypes.func.isRequired, - confidenceRating: PropTypes.string.isRequired, - setConfidenceRating: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - showTextModal: PropTypes.bool.isRequired, - setShowTextModal: PropTypes.func.isRequired, - textModalHeader: PropTypes.node, - textModalBody: PropTypes.node, - onCloseTextModal: PropTypes.func.isRequired, + show: PropTypes.bool.isRequired, + setShow: PropTypes.func.isRequired, + toneRating: PropTypes.string.isRequired, + setToneRating: PropTypes.func.isRequired, + confidenceRating: PropTypes.string.isRequired, + setConfidenceRating: PropTypes.func.isRequired, + onSubmit: PropTypes.func.isRequired, + showTextModal: PropTypes.bool.isRequired, + setShowTextModal: PropTypes.func.isRequired, + textModalHeader: PropTypes.node, + textModalBody: PropTypes.node, + onCloseTextModal: PropTypes.func.isRequired, }; export default RatingModal; diff --git a/client/src/components/exercise/lab13/components/Tab/Tab.js b/client/src/components/exercise/lab13/components/Tab/Tab.js index e3b176668..675a67c8d 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tab.js +++ b/client/src/components/exercise/lab13/components/Tab/Tab.js @@ -1,6 +1,6 @@ -import { useContext, useEffect, useRef } from 'react'; -import { TabsContext } from './TabsContext'; -import PropTypes from 'prop-types'; +import { useContext, useEffect, useRef } from "react"; +import { TabsContext } from "./TabsContext"; +import PropTypes from "prop-types"; export const Tab = ({ label, children }) => { const { logTab } = useContext(TabsContext); diff --git a/client/src/components/exercise/lab13/components/Tab/Tabs.js b/client/src/components/exercise/lab13/components/Tab/Tabs.js index 5d9ed9eca..5dd6c58e1 100644 --- a/client/src/components/exercise/lab13/components/Tab/Tabs.js +++ b/client/src/components/exercise/lab13/components/Tab/Tabs.js @@ -1,7 +1,7 @@ -import React, { useState, useCallback } from 'react'; -import { TabsContext } from './TabsContext'; -import PropTypes from 'prop-types'; -import './Tabs.css'; +import React, { useState, useCallback } from "react"; +import { TabsContext } from "./TabsContext"; +import PropTypes from "prop-types"; +import "./Tabs.css"; export const Tabs = ({ children, @@ -13,7 +13,7 @@ export const Tabs = ({ // Use external activeTab or fall back to first tab const activeTabIndex = tabs.findIndex( - (tab) => tab.label === externalActiveTab + (tab) => tab.label === externalActiveTab, ); const currentActiveIndex = activeTabIndex !== -1 ? activeTabIndex : 0; @@ -45,11 +45,11 @@ export const Tabs = ({
      {tabs.map((tab, index) => (
      diff --git a/client/src/components/exercise/lab13/components/TypingMessage.js b/client/src/components/exercise/lab13/components/TypingMessage.js index 01ff3b262..6f9d15fff 100644 --- a/client/src/components/exercise/lab13/components/TypingMessage.js +++ b/client/src/components/exercise/lab13/components/TypingMessage.js @@ -1,5 +1,5 @@ -import PropTypes from 'prop-types'; -import React, { useEffect, useState } from 'react'; +import PropTypes from "prop-types"; +import React, { useEffect, useState } from "react"; /** * Typewriter animation component effect for bot responses * that displays text character by character @@ -8,39 +8,38 @@ import React, { useEffect, useState } from 'react'; * @returns */ const TypingMessage = ({ text, onUpdate, onComplete }) => { - const [displayedText, setDisplayedText] = useState(''); - const [currentIndex, setCurrentIndex] = useState(0); + const [displayedText, setDisplayedText] = useState(""); + const [currentIndex, setCurrentIndex] = useState(0); - /** - * Adds character from currentIndex to displayedText - * one at a time everytime the currentIndex, text, or onUpdate changes - */ - useEffect(() => { - if (currentIndex < text.length) { - const timeout = setTimeout(() => { - setDisplayedText((prev) => prev + text[currentIndex]); - setCurrentIndex((prev) => prev + 1); + /** + * Adds character from currentIndex to displayedText + * one at a time everytime the currentIndex, text, or onUpdate changes + */ + useEffect(() => { + if (currentIndex < text.length) { + const timeout = setTimeout(() => { + setDisplayedText((prev) => prev + text[currentIndex]); + setCurrentIndex((prev) => prev + 1); - // Scroll to bottom when onUpdate is called by component - if (onUpdate) onUpdate(); - // Typing speed, one character every 15ms - }, 15); + // Scroll to bottom when onUpdate is called by component + if (onUpdate) onUpdate(); + // Typing speed, one character every 15ms + }, 15); - return () => clearTimeout(timeout); - // onComplete becomes true when finished typing - } else if (currentIndex === text.length && onComplete) { - onComplete(); - } - }, [currentIndex, text, onUpdate, onComplete]); + return () => clearTimeout(timeout); + // onComplete becomes true when finished typing + } else if (currentIndex === text.length && onComplete) { + onComplete(); + } + }, [currentIndex, text, onUpdate, onComplete]); - return <>{displayedText}; + return <>{displayedText}; }; TypingMessage.propTypes = { - text: PropTypes.string.isRequired, - onUpdate: PropTypes.func, - onComplete: PropTypes.func, + text: PropTypes.string.isRequired, + onUpdate: PropTypes.func, + onComplete: PropTypes.func, }; - -export default TypingMessage; \ No newline at end of file +export default TypingMessage; diff --git a/client/src/components/exercise/lab13/functions/RenderTextWithHighlight.js b/client/src/components/exercise/lab13/functions/RenderTextWithHighlight.js index 0548e9f9b..cd565ba27 100644 --- a/client/src/components/exercise/lab13/functions/RenderTextWithHighlight.js +++ b/client/src/components/exercise/lab13/functions/RenderTextWithHighlight.js @@ -1,33 +1,33 @@ // Helper function to parse text and highlight specific patterns export const renderTextWithHighlight = (text, highlightPatterns = []) => { - if (!text || !highlightPatterns.length) return text; + if (!text || !highlightPatterns.length) return text; - // Combine all patterns into one regex on a single pass - const sortedPatterns = [...highlightPatterns].sort( - (a, b) => b.length - a.length - ); - const escapedPatterns = sortedPatterns.map((p) => - p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - ); - const combinedPattern = escapedPatterns.map((p) => `(${p})`).join('|'); - const regex = new RegExp(combinedPattern, 'gi'); + // Combine all patterns into one regex on a single pass + const sortedPatterns = [...highlightPatterns].sort( + (a, b) => b.length - a.length, + ); + const escapedPatterns = sortedPatterns.map((p) => + p.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), + ); + const combinedPattern = escapedPatterns.map((p) => `(${p})`).join("|"); + const regex = new RegExp(combinedPattern, "gi"); - // Split once - capturing groups make matches return at odd indices - const segments = text.split(regex); - let keyCounter = 0; + // Split once - capturing groups make matches return at odd indices + const segments = text.split(regex); + let keyCounter = 0; - return segments.map((segment, i) => { - // Odd indices are matches (from capturing groups) - if (i % 2 === 1 && segment) { - return ( - - {segment} - - ); - } - return segment; - }); -}; \ No newline at end of file + return segments.map((segment, i) => { + // Odd indices are matches (from capturing groups) + if (i % 2 === 1 && segment) { + return ( + + {segment} + + ); + } + return segment; + }); +}; diff --git a/client/src/components/exercise/lab13/functions/getAnswerDataHighlights.js b/client/src/components/exercise/lab13/functions/getAnswerDataHighlights.js index 120ec7914..e3d92a39b 100644 --- a/client/src/components/exercise/lab13/functions/getAnswerDataHighlights.js +++ b/client/src/components/exercise/lab13/functions/getAnswerDataHighlights.js @@ -1,11 +1,15 @@ import { HIGHLIGHTS_MAPPING } from "src/constants/lab13/HighlightsMapping"; // Get highlights based on current answer data, topic, and question -export const getAnswerDataHighlights = (currentAnswerData, currentQuestion, activeTopic) => { - if (!currentAnswerData || currentQuestion === null) return []; +export const getAnswerDataHighlights = ( + currentAnswerData, + currentQuestion, + activeTopic, +) => { + if (!currentAnswerData || currentQuestion === null) return []; - const topicKey = activeTopic?.toLowerCase(); - const biasType = currentAnswerData.biasType; + const topicKey = activeTopic?.toLowerCase(); + const biasType = currentAnswerData.biasType; - return HIGHLIGHTS_MAPPING[topicKey]?.[currentQuestion]?.[biasType] || []; -}; \ No newline at end of file + return HIGHLIGHTS_MAPPING[topicKey]?.[currentQuestion]?.[biasType] || []; +}; diff --git a/client/src/components/exercise/lab13/pages/AIPanel.js b/client/src/components/exercise/lab13/pages/AIPanel.js index 65e86a417..abc3b1ead 100644 --- a/client/src/components/exercise/lab13/pages/AIPanel.js +++ b/client/src/components/exercise/lab13/pages/AIPanel.js @@ -1,22 +1,13 @@ -import { - React, - useContext, - useMemo, - useState, - useEffect, - useRef, -} from 'react'; -import { startExercise } from 'src/reducers/lab2/actions'; -import { navigate } from '@reach/router'; -import { Tabs } from '../components/Tab/Tabs'; -import ExerciseStateContext from '../Lab13Context'; -import { - getTopicById, -} from 'src/constants/lab13/BiasQuestionsConfig'; -import { content } from 'src/constants/lab13/WikipediaContent'; -import AIPanelRatingModal from '../components/AIPanel/AIPanelRatingModal'; -import AIChatBotTab from '../components/AIPanel/AIChatBotTab'; -import AllPediaTab from '../components/AIPanel/AllPediaTab'; +import { React, useContext, useMemo, useState, useEffect, useRef } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; +import { Tabs } from "../components/Tab/Tabs"; +import ExerciseStateContext from "../Lab13Context"; +import { getTopicById } from "src/constants/lab13/BiasQuestionsConfig"; +import { content } from "src/constants/lab13/WikipediaContent"; +import AIPanelRatingModal from "../components/AIPanel/AIPanelRatingModal"; +import AIChatBotTab from "../components/AIPanel/AIChatBotTab"; +import AllPediaTab from "../components/AIPanel/AllPediaTab"; const AIPanel = () => { const { @@ -41,12 +32,12 @@ const AIPanel = () => { const [isBotTyping, setIsBotTyping] = useState(false); const [isBotThinking, setIsBotThinking] = useState(false); const [questionAnswered, setQuestionAnswered] = useState(false); - const [activeTab, setActiveTab] = useState('AIChatBot'); + const [activeTab, setActiveTab] = useState("AIChatBot"); const [currentDisplayTime, setCurrentDisplayTime] = useState(0); const [currentQuestion, setCurrentQuestion] = useState(null); const phase4IntroAddedRef = useRef(false); - const [toneRating, setToneRating] = useState(''); - const [confidenceRating, setConfidenceRating] = useState(''); + const [toneRating, setToneRating] = useState(""); + const [confidenceRating, setConfidenceRating] = useState(""); const [clickedReviewButtonThisPhase, setClickedReviewButtonThisPhase] = useState(false); @@ -125,7 +116,7 @@ const AIPanel = () => { useEffect(() => { let intervalId; - if (activeTab === 'ALLpedia' && showWikipediaTab) { + if (activeTab === "ALLpedia" && showWikipediaTab) { // Mark as visited setHasVisitedWikipedia(true); @@ -138,7 +129,7 @@ const AIPanel = () => { intervalId = setInterval(() => { if (wikipediaSessionStart) { const sessionElapsed = Math.floor( - (Date.now() - wikipediaSessionStart) / 1000 + (Date.now() - wikipediaSessionStart) / 1000, ); const total = wikipediaAccumulatedTime + sessionElapsed; setCurrentDisplayTime(total); @@ -153,7 +144,7 @@ const AIPanel = () => { // Leaving Wikipedia tab ensure you save the time if (wikipediaSessionStart) { const sessionElapsed = Math.floor( - (Date.now() - wikipediaSessionStart) / 1000 + (Date.now() - wikipediaSessionStart) / 1000, ); setWikipediaAccumulatedTime((prev) => prev + sessionElapsed); setWikipediaSessionStart(null); @@ -182,16 +173,16 @@ const AIPanel = () => { } }, [showWikipediaTab, hasShownWikipediaInPhase]); - - const wikipediaContent = content[activeTopic?.toLowerCase()] || content.localization; + const wikipediaContent = + content[activeTopic?.toLowerCase()] || content.localization; // Initialize first exercise chat with the ALLie greeting useEffect(() => { if (chatMessages.length === 0 && currentTopic) { setChatMessages([ { - id: 'greeting', - sender: 'bot', + id: "greeting", + sender: "bot", text: `Hi! I'm ALL-IE the AI. What can I help you with?`, timestamp: new Date(), isNew: true, @@ -204,7 +195,6 @@ const AIPanel = () => { // Initialize phase 4 after IDE fixes useEffect(() => { if (currentPhase === 4 && currentTopic) { - // Reset Wikipedia tracking for Phase 4 if (!phase4IntroAddedRef.current) { setHasVisitedWikipedia(false); @@ -216,7 +206,7 @@ const AIPanel = () => { // Enusure we're on the least knowledgeable topic if (currentTopic.biasPosition !== 2) { - console.warn('Phase 4 should be on least topic! Forcing to index 2'); + console.warn("Phase 4 should be on least topic! Forcing to index 2"); setTopicIndex(2); return; } @@ -228,7 +218,7 @@ const AIPanel = () => { if ( lastMessage.text !== phase4IntroText && - !lastMessage.text.includes('implemented your IDE fixes') + !lastMessage.text.includes("implemented your IDE fixes") ) { phase4IntroAddedRef.current = true; @@ -237,8 +227,8 @@ const AIPanel = () => { setChatMessages((prev) => [ ...prev, { - id: 'phase4-intro', - sender: 'bot', + id: "phase4-intro", + sender: "bot", text: phase4IntroText, timestamp: new Date(), isNew: true, @@ -275,9 +265,9 @@ const AIPanel = () => { setTimeout(() => { setSelectedBiasData(null); - setToneRating(''); - setConfidenceRating(''); - setActiveTab('AIChatBot'); + setToneRating(""); + setConfidenceRating(""); + setActiveTab("AIChatBot"); setTimeout(() => { setTopicIndex((prevIndex) => { @@ -288,7 +278,7 @@ const AIPanel = () => { setTimeout(() => { setQuestionAnswered(false); startExercise(); - navigate('/Lab13/Exercise/IDEIntroduction'); + navigate("/Lab13/Exercise/IDEIntroduction"); }, 300); return prevIndex; } @@ -298,7 +288,7 @@ const AIPanel = () => { setTimeout(() => { setQuestionAnswered(false); startExercise(); - navigate('/Lab13/Exercise/Conclusion'); + navigate("/Lab13/Exercise/Conclusion"); }, 300); return prevIndex; } @@ -321,7 +311,7 @@ const AIPanel = () => { ...prev, { id: `transition-${nextIndex}`, - sender: 'bot', + sender: "bot", text: `Let's continue. Select another prompt.`, timestamp: new Date(), isNew: true, @@ -348,8 +338,8 @@ const AIPanel = () => {
      @@ -371,7 +361,9 @@ const AIPanel = () => { isBotTyping={isBotTyping} requireWikipedia={requireWikipedia} activeTopic={activeTopic} - setClickedReviewButtonThisPhase={setClickedReviewButtonThisPhase} + setClickedReviewButtonThisPhase={ + setClickedReviewButtonThisPhase + } setIsBotThinking={setIsBotThinking} setIsBotTyping={setIsBotTyping} setCurrentQuestion={setCurrentQuestion} diff --git a/client/src/components/exercise/lab13/pages/Conclusion.js b/client/src/components/exercise/lab13/pages/Conclusion.js index 19215f816..42ab1aa79 100644 --- a/client/src/components/exercise/lab13/pages/Conclusion.js +++ b/client/src/components/exercise/lab13/pages/Conclusion.js @@ -1,9 +1,9 @@ -import { React } from 'react'; -import useMainStateContext from 'src/reducers/MainContext'; -import UserLabService from '../../../../services/UserLabService'; -import { EXERCISE_IDLE } from 'src/constants/index'; -import { LAB_ID } from '../../../../constants/lab13'; -import { navigate } from '@reach/router'; +import { React } from "react"; +import useMainStateContext from "src/reducers/MainContext"; +import UserLabService from "../../../../services/UserLabService"; +import { EXERCISE_IDLE } from "src/constants/index"; +import { LAB_ID } from "../../../../constants/lab13"; +import { navigate } from "@reach/router"; const Conclusion = () => { const { actions, state } = useMainStateContext(); @@ -15,7 +15,7 @@ const Conclusion = () => { if (state.main.user?.firstname !== null && state.main.user !== null) { await UserLabService.user_complete_exercise( state.main.user.userid, - LAB_ID + LAB_ID, ); } }; @@ -49,7 +49,7 @@ const Conclusion = () => {

      AI can generate fluent and confident responses, but it does not understand, reason, or take responsibility. That - responsibility lies with the user. The most important safeguard is{' '} + responsibility lies with the user. The most important safeguard is{" "} AI literacy, the ability to recognize bias, question outputs, and engage with AI thoughtfully!

      diff --git a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js index f22a61876..4f5d5638a 100644 --- a/client/src/components/exercise/lab13/pages/ConfidenceRanking.js +++ b/client/src/components/exercise/lab13/pages/ConfidenceRanking.js @@ -1,10 +1,10 @@ -import React, { useState, useEffect, useContext } from 'react'; -import { startExercise } from 'src/reducers/lab2/actions'; -import { navigate } from '@reach/router'; -import DragDropGame from '../components/DragAndDropNoCorrectAnswer/DragDropGame'; -import ExerciseStateContext from '../Lab13Context'; -import { initialColumns, initialBank } from 'src/constants/lab13/RankingConfig'; -import DragIndicatorRoundedIcon from '@mui/icons-material/DragIndicatorRounded'; +import React, { useState, useEffect, useContext } from "react"; +import { startExercise } from "src/reducers/lab2/actions"; +import { navigate } from "@reach/router"; +import DragDropGame from "../components/DragAndDropNoCorrectAnswer/DragDropGame"; +import ExerciseStateContext from "../Lab13Context"; +import { initialColumns, initialBank } from "src/constants/lab13/RankingConfig"; +import DragIndicatorRoundedIcon from "@mui/icons-material/DragIndicatorRounded"; const ConfidenceRanking = () => { const { @@ -19,14 +19,14 @@ const ConfidenceRanking = () => { const [cols, setCols] = useState(() => rankingColumns.length > 0 ? structuredClone(rankingColumns) - : structuredClone(initialColumns) + : structuredClone(initialColumns), ); const [bank, setBank] = useState(() => { const placedIds = new Set( (rankingColumns.length > 0 ? rankingColumns : initialColumns).flatMap( - (col) => col.cards.map((card) => card.id) - ) + (col) => col.cards.map((card) => card.id), + ), ); const sourceBank = rankingBank.length > 0 ? rankingBank : initialBank; @@ -59,17 +59,17 @@ const ConfidenceRanking = () => { const handleContinue = () => { if (!success) { alert( - 'Please complete ranking your knowledge of all topics before continuing' + "Please complete ranking your knowledge of all topics before continuing", ); return; } startExercise(); - navigate('/Lab13/Exercise/AIPanel'); + navigate("/Lab13/Exercise/AIPanel"); }; return (
      -

      Confidence Ranking Page

      +

      Confidence Ranking Page

      Drag and Drop each of the three topics, Dyslexia, Color Blindness, and Localization from your most familiar to least familiar. @@ -82,7 +82,7 @@ const ConfidenceRanking = () => { colHeaderStyle="tw-m-1 tw-text-center tw-body-text tw-text-black" bankStyle="tw-flex tw-flex-col tw-gap-3 tw-w-full tw-p-3 tw-rounded-lg tw-bg-[#0144D5] tw-items-center tw-justify-center tw-h-full" bankCardStyle="tw-text-left tw-p-2 tw-w-[15rem] tw-h-[3.5rem] tw-rounded tw-shadow-sm tw-shadow-black tw-cursor-grab tw-text-black tw-text-sm tw-bg-white" - msgStyle={`${!success ? 'tw-bg-error' : 'tw-bg-success'} tw-p-4 tw-my-1 tw-text-white tw-rounded-md tw-mb-3`} + msgStyle={`${!success ? "tw-bg-error" : "tw-bg-success"} tw-p-4 tw-my-1 tw-text-white tw-rounded-md tw-mb-3`} cols={cols} setCols={setCols} initialBank={bank} diff --git a/client/src/components/exercise/lab13/pages/IDEExercise.js b/client/src/components/exercise/lab13/pages/IDEExercise.js index 7e9b96fd0..db564e225 100644 --- a/client/src/components/exercise/lab13/pages/IDEExercise.js +++ b/client/src/components/exercise/lab13/pages/IDEExercise.js @@ -24,19 +24,19 @@ const IDEExercise = () => { const handleContinue = () => { if (!checkInputValid()) { - alert('Please complete all fields correctly before continuing.'); + alert("Please complete all fields correctly before continuing."); return; } // Save IDE settings to context const disclaimerValue = exercisePromptsState.find( - (i) => i.id === 'disclaimer' + (i) => i.id === "disclaimer", ).value; const confidenceValue = exercisePromptsState.find( - (i) => i.id === 'confidence' + (i) => i.id === "confidence", ).value; const citationsValue = exercisePromptsState.find( - (i) => i.id === 'citations' + (i) => i.id === "citations", ).value; setDisclaimerMessage(disclaimerValue); @@ -47,7 +47,7 @@ const IDEExercise = () => { setTopicIndex(2); startExercise(); - navigate('/Lab13/Exercise/AIPanel'); + navigate("/Lab13/Exercise/AIPanel"); }; const data = { diff --git a/client/src/components/exercise/lab13/pages/IDEIntroduction.js b/client/src/components/exercise/lab13/pages/IDEIntroduction.js index 8658462c8..931ec6673 100644 --- a/client/src/components/exercise/lab13/pages/IDEIntroduction.js +++ b/client/src/components/exercise/lab13/pages/IDEIntroduction.js @@ -1,10 +1,10 @@ -import { React } from 'react'; -import { navigate } from '@reach/router'; -import LabButton from 'src/components/all-components/LabButton'; +import { React } from "react"; +import { navigate } from "@reach/router"; +import LabButton from "src/components/all-components/LabButton"; const IDEIntroduction = () => { const handleContinue = () => { - navigate('/Lab13/Exercise/IDEExercise'); + navigate("/Lab13/Exercise/IDEExercise"); }; return ( @@ -45,7 +45,7 @@ const IDEIntroduction = () => {

      Confidence Scores: - {' '} + {" "} Show how certain the AI is about its response instead of presenting it as absolute truth.

      @@ -53,14 +53,14 @@ const IDEIntroduction = () => {

      Citations: - {' '} + {" "} Provide traceable sources so users can verify claims.

      Disclaimer Messages: - {' '} + {" "} Remind users that AI outputs may be incorrect or incomplete.

      diff --git a/client/src/constants/lab13/AvatarType.js b/client/src/constants/lab13/AvatarType.js index d7d426b83..fcdf207f3 100644 --- a/client/src/constants/lab13/AvatarType.js +++ b/client/src/constants/lab13/AvatarType.js @@ -1,4 +1,4 @@ export const AvatarType = { - User: 'user', - AI: 'ai' -} \ No newline at end of file + User: "user", + AI: "ai", +}; diff --git a/client/src/constants/lab13/BiasQuestionsConfig.js b/client/src/constants/lab13/BiasQuestionsConfig.js index 3acab127f..3b0dcbcc5 100644 --- a/client/src/constants/lab13/BiasQuestionsConfig.js +++ b/client/src/constants/lab13/BiasQuestionsConfig.js @@ -10,9 +10,9 @@ */ export const BIAS_TYPES = { - TRUTH_BIAS: 'TRUTH_BIAS', - HALO_EFFECT: 'HALO_EFFECT', - DUNNING_KRUGER: 'DUNNING_KRUGER', + TRUTH_BIAS: "TRUTH_BIAS", + HALO_EFFECT: "HALO_EFFECT", + DUNNING_KRUGER: "DUNNING_KRUGER", }; export const BIAS_POSITION_MAP = { @@ -23,17 +23,17 @@ export const BIAS_POSITION_MAP = { export const BIAS_DEFINITIONS = { TRUTH_BIAS: { - name: 'Truth Bias', + name: "Truth Bias", definition: - 'Truth bias is the tendency to believe that statements are true, especially when they are presented in a confident and clear manner. People are more likely to accept information that sounds authoritative without questioning its accuracy.', + "Truth bias is the tendency to believe that statements are true, especially when they are presented in a confident and clear manner. People are more likely to accept information that sounds authoritative without questioning its accuracy.", }, HALO_EFFECT: { - name: 'Halo Effect', + name: "Halo Effect", definition: - 'The halo effect is when a single positive characteristic or polished presentation influences your overall perception of something. If information is presented professionally or sounds credible, people tend to trust it more, even if the content itself may not be accurate.', + "The halo effect is when a single positive characteristic or polished presentation influences your overall perception of something. If information is presented professionally or sounds credible, people tend to trust it more, even if the content itself may not be accurate.", }, DUNNING_KRUGER: { - name: 'Dunning-Kruger Effect', + name: "Dunning-Kruger Effect", definition: "The Dunning-Kruger effect occurs when complex or technical language makes people less likely to question information. When something sounds academic or expert-like, people assume it must be correct and don't scrutinize it as carefully.", }, @@ -41,88 +41,88 @@ export const BIAS_DEFINITIONS = { export const biasQuestionsData = [ { - id: 'localization', - topicName: 'Localization', + id: "localization", + topicName: "Localization", topicDefinition: - 'Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references.', + "Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references.", questions: [ { - id: 'loc_q1', - text: 'Is localization the same as translation?', + id: "loc_q1", + text: "Is localization the same as translation?", answers: { [BIAS_TYPES.TRUTH_BIAS]: { - text: 'Yes, localization and translation are essentially the same process. Both involve converting content from one language to another to make it understandable for different audiences. The terms are often used interchangeably in professional settings.', + text: "Yes, localization and translation are essentially the same process. Both involve converting content from one language to another to make it understandable for different audiences. The terms are often used interchangeably in professional settings.", isCorrect: false, explanation: - 'The definitive wording makes this claim sound trustworthy, which can encourage truth bias.', + "The definitive wording makes this claim sound trustworthy, which can encourage truth bias.", confidence: 95, }, [BIAS_TYPES.HALO_EFFECT]: { - text: 'Localization and translation are closely related practices within global communication workflows, often used interchangeably across professional contexts.', + text: "Localization and translation are closely related practices within global communication workflows, often used interchangeably across professional contexts.", isCorrect: false, explanation: - 'The polished phrasing and professional tone boosts perceived credibility, which can reinforce the halo effect.', + "The polished phrasing and professional tone boosts perceived credibility, which can reinforce the halo effect.", confidence: 93, }, [BIAS_TYPES.DUNNING_KRUGER]: { - text: 'In localization theory, translation is considered a subordinate linguistic function, meaning it is functionally equivalent to localization in applied contexts.', + text: "In localization theory, translation is considered a subordinate linguistic function, meaning it is functionally equivalent to localization in applied contexts.", isCorrect: false, explanation: - 'The technical language and theoretical framing can play into the Dunning-Kruger effect by reducing questioning.', + "The technical language and theoretical framing can play into the Dunning-Kruger effect by reducing questioning.", confidence: 98, }, }, }, { - id: 'loc_q2', + id: "loc_q2", text: 'Is the statement, "Changing clothing material to be more breathable for a local climate is not localization," true?', answers: { [BIAS_TYPES.TRUTH_BIAS]: { - text: 'No, changing clothing materials is a physical product decision, not localization, which focuses on cultural or linguistic adaptation.', + text: "No, changing clothing materials is a physical product decision, not localization, which focuses on cultural or linguistic adaptation.", isCorrect: true, explanation: - 'The clear, direct explanation feels dependable, which can reinforce truth bias in a justified way.', + "The clear, direct explanation feels dependable, which can reinforce truth bias in a justified way.", confidence: 86, }, [BIAS_TYPES.HALO_EFFECT]: { text: "It's technically correct, but it's confusing because people mix this up all the time. Changing clothing materials isn't localization, it's product adaptation. Localization focuses on cultural and linguistic elements, not physical manufacturing changes.", isCorrect: true, explanation: - 'The confident structure and clean distinctions enhance trust through presentation which can play into the halo effect.', + "The confident structure and clean distinctions enhance trust through presentation which can play into the halo effect.", confidence: 90, }, [BIAS_TYPES.DUNNING_KRUGER]: { - text: 'Localization frameworks distinguish between cultural adaptation and material optimization, placing climate-driven textile changes outside localization scope.', + text: "Localization frameworks distinguish between cultural adaptation and material optimization, placing climate-driven textile changes outside localization scope.", isCorrect: true, explanation: - 'Although the academic tone may seem authoritative, limiting scrutiny, it correctly aligns with the definition, reinforcing the careful trust provided by the Dunning-Kruger effect.', + "Although the academic tone may seem authoritative, limiting scrutiny, it correctly aligns with the definition, reinforcing the careful trust provided by the Dunning-Kruger effect.", confidence: 94, }, }, }, { - id: 'loc_q3', - text: 'If I change the way I speak to my teacher, is that localizing to the school culture?', + id: "loc_q3", + text: "If I change the way I speak to my teacher, is that localizing to the school culture?", answers: { [BIAS_TYPES.TRUTH_BIAS]: { - text: 'Yes, adjusting how you communicate based on social context can be considered a form of cultural localization.', + text: "Yes, adjusting how you communicate based on social context can be considered a form of cultural localization.", isCorrect: true, explanation: - 'The simple, confident phrasing makes the answer feel intuitively right, which can prompt truth bias.', + "The simple, confident phrasing makes the answer feel intuitively right, which can prompt truth bias.", confidence: 82, }, [BIAS_TYPES.HALO_EFFECT]: { - text: 'Adapting communication style to social norms reflects cultural awareness, which aligns with broader definitions of localization.', + text: "Adapting communication style to social norms reflects cultural awareness, which aligns with broader definitions of localization.", isCorrect: true, explanation: 'Formal language creates an "expert" impression, which can amplify the halo effect.', confidence: 88, }, [BIAS_TYPES.DUNNING_KRUGER]: { - text: 'Sociolinguistic code-switching is not based on localization theory, which is mostly from translation studies (Venuti, 1995), and applies only to cross-cultural content adaptation.', + text: "Sociolinguistic code-switching is not based on localization theory, which is mostly from translation studies (Venuti, 1995), and applies only to cross-cultural content adaptation.", isCorrect: false, explanation: - 'This response sounds academic and authoritative, making the claim hard to challenge which can elicit the Dunning-Kruger effect.', + "This response sounds academic and authoritative, making the claim hard to challenge which can elicit the Dunning-Kruger effect.", confidence: 92, }, }, @@ -130,88 +130,88 @@ export const biasQuestionsData = [ ], }, { - id: 'colorblindness', - topicName: 'Color Blindness', + id: "colorblindness", + topicName: "Color Blindness", topicDefinition: - 'Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. Although many cases are inherited, they can also develop later in life due to eye disease, injury, aging, or certain medications.', + "Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. Although many cases are inherited, they can also develop later in life due to eye disease, injury, aging, or certain medications.", questions: [ { - id: 'cb_q1', - text: 'Is the color blindness gene carried in the X or Y chromosome?', + id: "cb_q1", + text: "Is the color blindness gene carried in the X or Y chromosome?", answers: { [BIAS_TYPES.TRUTH_BIAS]: { - text: 'The gene responsible for most forms of color blindness is carried on the X chromosome, which is why the condition is more common in males than females.', + text: "The gene responsible for most forms of color blindness is carried on the X chromosome, which is why the condition is more common in males than females.", isCorrect: true, explanation: - 'This clear, factual delivery encourages truth bias, making the statement easy to accept without hesitation.', + "This clear, factual delivery encourages truth bias, making the statement easy to accept without hesitation.", confidence: 91, }, [BIAS_TYPES.HALO_EFFECT]: { - text: 'Color blindness is typically inherited through the Y chromosome, a well-established genetic pattern observed in vision science.', + text: "Color blindness is typically inherited through the Y chromosome, a well-established genetic pattern observed in vision science.", isCorrect: false, explanation: - 'The scientific-sounding language increases credibility through its style which can trigger the halo effect.', + "The scientific-sounding language increases credibility through its style which can trigger the halo effect.", confidence: 89, }, [BIAS_TYPES.DUNNING_KRUGER]: { - text: 'X-linked recessive inheritance patterns explain the higher prevalence of color blindness in males, as identified in genetic ophthalmology research.', + text: "X-linked recessive inheritance patterns explain the higher prevalence of color blindness in males, as identified in genetic ophthalmology research.", isCorrect: true, explanation: - 'The technical language signals expertise, which may induce the Dunning-Kruger effect by discouraging doubt.', + "The technical language signals expertise, which may induce the Dunning-Kruger effect by discouraging doubt.", confidence: 96, }, }, }, { - id: 'cb_q2', - text: 'Do people who have Red-Green color blindness only see red and green?', + id: "cb_q2", + text: "Do people who have Red-Green color blindness only see red and green?", answers: { [BIAS_TYPES.TRUTH_BIAS]: { - text: 'Yes, people with red-green color blindness mainly see only red and green, which limits their overall color perception.', + text: "Yes, people with red-green color blindness mainly see only red and green, which limits their overall color perception.", isCorrect: false, explanation: - 'Familiar wording makes the statement feel accurate, even though it reinforces a common myth, which can reinforce truth bias.', + "Familiar wording makes the statement feel accurate, even though it reinforces a common myth, which can reinforce truth bias.", confidence: 84, }, [BIAS_TYPES.HALO_EFFECT]: { - text: 'Individuals with red-green color blindness primarily experience a reduced visual palette around red and green hues.', + text: "Individuals with red-green color blindness primarily experience a reduced visual palette around red and green hues.", isCorrect: false, explanation: - 'The polished wording makes the misconception sound legitimate, which can feed into the halo effect.', + "The polished wording makes the misconception sound legitimate, which can feed into the halo effect.", confidence: 89, }, [BIAS_TYPES.DUNNING_KRUGER]: { - text: 'Red-green color blindness results in selective chromatic restriction, effectively narrowing visual perception to red-green channels.', + text: "Red-green color blindness results in selective chromatic restriction, effectively narrowing visual perception to red-green channels.", isCorrect: false, explanation: - 'The academic phrasing may trigger the Dunning-Kruger effect, discouraging readers from questioning the claim.', + "The academic phrasing may trigger the Dunning-Kruger effect, discouraging readers from questioning the claim.", confidence: 95, }, }, }, { - id: 'cb_q3', - text: 'Can people develop color blindness later in life? Or can only people born with color blindness have it?', + id: "cb_q3", + text: "Can people develop color blindness later in life? Or can only people born with color blindness have it?", answers: { [BIAS_TYPES.TRUTH_BIAS]: { - text: 'Yes, color blindness can develop later in life due to eye disease, injury, aging, or certain medications.', + text: "Yes, color blindness can develop later in life due to eye disease, injury, aging, or certain medications.", isCorrect: true, explanation: - 'The specific, concrete explanation feels reliable which can strengthen truth bias.', + "The specific, concrete explanation feels reliable which can strengthen truth bias.", confidence: 90, }, [BIAS_TYPES.HALO_EFFECT]: { - text: 'Although many cases are inherited, medical conditions or neurological damage can also lead to acquired color blindness.', + text: "Although many cases are inherited, medical conditions or neurological damage can also lead to acquired color blindness.", isCorrect: true, explanation: - 'The calm, professional tone increases trust, which can activate the halo effect.', + "The calm, professional tone increases trust, which can activate the halo effect.", confidence: 88, }, [BIAS_TYPES.DUNNING_KRUGER]: { - text: 'Color blindness is strictly a genetic condition, meaning individuals are born with it and cannot develop it later in life.', + text: "Color blindness is strictly a genetic condition, meaning individuals are born with it and cannot develop it later in life.", isCorrect: false, explanation: - 'The definitive tone discourages skepticism which may activate the Dunning-Kruger effect for readers unfamiliar with medical causes.', + "The definitive tone discourages skepticism which may activate the Dunning-Kruger effect for readers unfamiliar with medical causes.", confidence: 93, }, }, @@ -219,88 +219,88 @@ export const biasQuestionsData = [ ], }, { - id: 'dyslexia', - topicName: 'Dyslexia', + id: "dyslexia", + topicName: "Dyslexia", topicDefinition: - 'Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. Dyslexia cannot be cured, but it can be effectively supported through early intervention, structured reading instruction, and classroom accommodations.', + "Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. Dyslexia cannot be cured, but it can be effectively supported through early intervention, structured reading instruction, and classroom accommodations.", questions: [ { - id: 'dys_q1', - text: 'Is dyslexia a vision problem?', + id: "dys_q1", + text: "Is dyslexia a vision problem?", answers: { [BIAS_TYPES.TRUTH_BIAS]: { - text: 'Yes, dyslexia is mainly caused by vision problems that make letters difficult to see clearly while reading.', + text: "Yes, dyslexia is mainly caused by vision problems that make letters difficult to see clearly while reading.", isCorrect: false, explanation: "The confident delivery makes the claim feel reliable, which can encourage truth bias even when it's wrong.", confidence: 89, }, [BIAS_TYPES.HALO_EFFECT]: { - text: 'Dyslexia is often associated with visual processing challenges that interfere with reading accuracy.', + text: "Dyslexia is often associated with visual processing challenges that interfere with reading accuracy.", isCorrect: false, explanation: - 'The polished, professional tone boosts perceived credibility, which can trigger the halo effect.', + "The polished, professional tone boosts perceived credibility, which can trigger the halo effect.", confidence: 86, }, [BIAS_TYPES.DUNNING_KRUGER]: { - text: 'Dyslexia originates from impairments in visual-perceptual pathways involved in orthographic recognition.', + text: "Dyslexia originates from impairments in visual-perceptual pathways involved in orthographic recognition.", isCorrect: false, explanation: - 'Technical wording signals expertise, which may activate the Dunning-Kruger effect, by reducing questioning.', + "Technical wording signals expertise, which may activate the Dunning-Kruger effect, by reducing questioning.", confidence: 97, }, }, }, { - id: 'dys_q2', - text: 'Do people who have dyslexia see words and letters backward?', + id: "dys_q2", + text: "Do people who have dyslexia see words and letters backward?", answers: { [BIAS_TYPES.TRUTH_BIAS]: { - text: 'Yes, people with dyslexia often see letters and words backward, which explains their reading difficulties.', + text: "Yes, people with dyslexia often see letters and words backward, which explains their reading difficulties.", isCorrect: false, explanation: - 'A familiar explanation matches common assumptions, which can promote truth bias.', + "A familiar explanation matches common assumptions, which can promote truth bias.", confidence: 88, }, [BIAS_TYPES.HALO_EFFECT]: { - text: 'Letter reversals are a characteristic feature of dyslexia and contribute to challenges in reading fluency.', + text: "Letter reversals are a characteristic feature of dyslexia and contribute to challenges in reading fluency.", isCorrect: false, explanation: - 'The structured, authoritative phrasing makes the false response sound valid, which can amplify the halo effect.', + "The structured, authoritative phrasing makes the false response sound valid, which can amplify the halo effect.", confidence: 90, }, [BIAS_TYPES.DUNNING_KRUGER]: { - text: 'Dyslexia manifests through reversed orthographic encoding during early language acquisition.', + text: "Dyslexia manifests through reversed orthographic encoding during early language acquisition.", isCorrect: false, explanation: - 'Complex terminology that implies expertise may activate the Dunning-Kruger effect, causing readers to accept the claim without scrutiny.', + "Complex terminology that implies expertise may activate the Dunning-Kruger effect, causing readers to accept the claim without scrutiny.", confidence: 96, }, }, }, { - id: 'dys_q3', - text: 'Can dyslexia be cured?', + id: "dys_q3", + text: "Can dyslexia be cured?", answers: { [BIAS_TYPES.TRUTH_BIAS]: { - text: 'Dyslexia cannot be cured, but with consistent practice and proper educational support, individuals can significantly improve their reading and learning skills.', + text: "Dyslexia cannot be cured, but with consistent practice and proper educational support, individuals can significantly improve their reading and learning skills.", isCorrect: true, explanation: - 'Clear, confident phrasing makes the response easy to accept, which can reinforce truth bias.', + "Clear, confident phrasing makes the response easy to accept, which can reinforce truth bias.", confidence: 87, }, [BIAS_TYPES.HALO_EFFECT]: { - text: 'Advances in educational interventions have made it possible for many individuals with dyslexia to achieve strong reading and academic outcomes.', + text: "Advances in educational interventions have made it possible for many individuals with dyslexia to achieve strong reading and academic outcomes.", isCorrect: true, explanation: - 'An optimistic professional tone builds trust through presentation which can activate the halo effect.', + "An optimistic professional tone builds trust through presentation which can activate the halo effect.", confidence: 85, }, [BIAS_TYPES.DUNNING_KRUGER]: { - text: 'Dyslexia is a lifelong neurological learning difference that cannot be cured, but can be effectively supported through structured instruction and accommodations.', + text: "Dyslexia is a lifelong neurological learning difference that cannot be cured, but can be effectively supported through structured instruction and accommodations.", isCorrect: true, explanation: - 'Although accurate, the formal tone and phrasing may discourage questioning, activating the Dunning-Kruger effect through perceived expertise.', + "Although accurate, the formal tone and phrasing may discourage questioning, activating the Dunning-Kruger effect through perceived expertise.", confidence: 91, }, }, diff --git a/client/src/constants/lab13/HighlightsMapping.js b/client/src/constants/lab13/HighlightsMapping.js index 5956baad4..b0f2e190e 100644 --- a/client/src/constants/lab13/HighlightsMapping.js +++ b/client/src/constants/lab13/HighlightsMapping.js @@ -1,53 +1,82 @@ export const HIGHLIGHTS_MAPPING = { - localization: { - 0: { - TRUTH_BIAS: ['Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references'], - HALO_EFFECT: ['adapting information or communication to align with the cultural, linguistic, and social expectations'], - DUNNING_KRUGER: ['context', 'examples', 'cultural references'], - }, - 1: { - TRUTH_BIAS: ['does not involve physical changes, such as changing clothing materials for climate'], - HALO_EFFECT: ['using local currency', 'changing date formats'], - DUNNING_KRUGER: ['However, modifying language or tone to fit different social settings can be considered a form of cultural localization'], - }, - 2: { - TRUTH_BIAS: ['modifying language or tone to fit different social settings can be considered a form of cultural localization'], - HALO_EFFECT: ['adapting information or communication', 'cultural, linguistic, and social expectations'], - DUNNING_KRUGER: ['context', 'examples', 'cultural references'], - }, - }, - colorblindness: { - 0: { - TRUTH_BIAS: ['inherited through the X chromosome'], - HALO_EFFECT: ['The most common type, red-green color blindness'], - DUNNING_KRUGER: ['inherited through the X chromosome'], - }, - 1: { - TRUTH_BIAS: ['People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades'], - HALO_EFFECT: ['may have difficulty distinguishing between certain shades'], - DUNNING_KRUGER: ['difficulty distinguishing between certain shades'], - }, - 2: { - TRUTH_BIAS: ['develop later in life due to eye disease, injury, aging, or certain medications'], - HALO_EFFECT: ['Although many cases are inherited, they can also develop later in life'], - DUNNING_KRUGER: ['eye disease, injury, aging, or certain medications'], - }, - }, - dyslexia: { - 0: { - TRUTH_BIAS: ['It is not a vision problem'], - HALO_EFFECT: ['does not affect intelligence'], - DUNNING_KRUGER: ['neurological learning disability'], - }, - 1: { - TRUTH_BIAS: ['not how letters visually appear', 'connecting written letters to spoken sounds'], - HALO_EFFECT: ['may have difficulty connecting written letters to spoken sounds'], - DUNNING_KRUGER: ['People with dyslexia may have difficulty'], - }, - 2: { - TRUTH_BIAS: ['cannot be cured', 'early intervention, structured reading instruction, and classroom accommodations'], - HALO_EFFECT: ['effectively supported through early intervention'], - DUNNING_KRUGER: ['Dyslexia cannot be cured'], - }, + localization: { + 0: { + TRUTH_BIAS: [ + "Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references", + ], + HALO_EFFECT: [ + "adapting information or communication to align with the cultural, linguistic, and social expectations", + ], + DUNNING_KRUGER: ["context", "examples", "cultural references"], }, + 1: { + TRUTH_BIAS: [ + "does not involve physical changes, such as changing clothing materials for climate", + ], + HALO_EFFECT: ["using local currency", "changing date formats"], + DUNNING_KRUGER: [ + "However, modifying language or tone to fit different social settings can be considered a form of cultural localization", + ], + }, + 2: { + TRUTH_BIAS: [ + "modifying language or tone to fit different social settings can be considered a form of cultural localization", + ], + HALO_EFFECT: [ + "adapting information or communication", + "cultural, linguistic, and social expectations", + ], + DUNNING_KRUGER: ["context", "examples", "cultural references"], + }, + }, + colorblindness: { + 0: { + TRUTH_BIAS: ["inherited through the X chromosome"], + HALO_EFFECT: ["The most common type, red-green color blindness"], + DUNNING_KRUGER: ["inherited through the X chromosome"], + }, + 1: { + TRUTH_BIAS: [ + "People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades", + ], + HALO_EFFECT: [ + "may have difficulty distinguishing between certain shades", + ], + DUNNING_KRUGER: ["difficulty distinguishing between certain shades"], + }, + 2: { + TRUTH_BIAS: [ + "develop later in life due to eye disease, injury, aging, or certain medications", + ], + HALO_EFFECT: [ + "Although many cases are inherited, they can also develop later in life", + ], + DUNNING_KRUGER: ["eye disease, injury, aging, or certain medications"], + }, + }, + dyslexia: { + 0: { + TRUTH_BIAS: ["It is not a vision problem"], + HALO_EFFECT: ["does not affect intelligence"], + DUNNING_KRUGER: ["neurological learning disability"], + }, + 1: { + TRUTH_BIAS: [ + "not how letters visually appear", + "connecting written letters to spoken sounds", + ], + HALO_EFFECT: [ + "may have difficulty connecting written letters to spoken sounds", + ], + DUNNING_KRUGER: ["People with dyslexia may have difficulty"], + }, + 2: { + TRUTH_BIAS: [ + "cannot be cured", + "early intervention, structured reading instruction, and classroom accommodations", + ], + HALO_EFFECT: ["effectively supported through early intervention"], + DUNNING_KRUGER: ["Dyslexia cannot be cured"], + }, + }, }; diff --git a/client/src/constants/lab13/RankingConfig.js b/client/src/constants/lab13/RankingConfig.js index a7b1ddf7d..47ea73b51 100644 --- a/client/src/constants/lab13/RankingConfig.js +++ b/client/src/constants/lab13/RankingConfig.js @@ -1,39 +1,39 @@ const initialColumns = [ - { id: "column1", title: "Most Knowledgeable", cards: [] }, - { id: "column2", title: "Moderately Knowledgeable", cards: [] }, - { id: "column3", title: "Least Knowledgeable", cards: [] }, + { id: "column1", title: "Most Knowledgeable", cards: [] }, + { id: "column2", title: "Moderately Knowledgeable", cards: [] }, + { id: "column3", title: "Least Knowledgeable", cards: [] }, ]; const initialBank = [ - { - id: "dyslexia", - title: "Dyslexia", - body: "", - isCorrect: true, - }, - { - id: "colorblindness", - title: "Color Blindness", - body: "", - isCorrect: true, - }, - { - id: "localization", - title: "Localization", - body: "", - isCorrect: true, - }, + { + id: "dyslexia", + title: "Dyslexia", + body: "", + isCorrect: true, + }, + { + id: "colorblindness", + title: "Color Blindness", + body: "", + isCorrect: true, + }, + { + id: "localization", + title: "Localization", + body: "", + isCorrect: true, + }, ]; // Since ranking is subjective, we'll consider any complete ranking as correct const correctAssignments = [ - { id: "column1", cards: [] }, - { id: "column2", cards: [] }, - { id: "column3", cards: [] }, + { id: "column1", cards: [] }, + { id: "column2", cards: [] }, + { id: "column3", cards: [] }, ]; module.exports = { - initialColumns, - initialBank, - correctAssignments, + initialColumns, + initialBank, + correctAssignments, }; diff --git a/client/src/constants/lab13/WikipediaContent.js b/client/src/constants/lab13/WikipediaContent.js index d8fc6f795..ad70ace07 100644 --- a/client/src/constants/lab13/WikipediaContent.js +++ b/client/src/constants/lab13/WikipediaContent.js @@ -1,38 +1,38 @@ export const content = { - localization: { - title: 'Localization', - text: `Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references. + localization: { + title: "Localization", + text: `Localization is the process of adapting information or communication to align with the cultural, linguistic, and social expectations of a specific audience. Unlike translation, which focuses only on language, localization also adjusts context, examples, and cultural references. This may include using local currency or changing date formats, but it does not involve physical changes, such as changing clothing materials for climate. However, modifying language or tone to fit different social settings can be considered a form of cultural localization.`, - sources: [ - 'https://resources.gala-global.org/accessibility-localization/', - 'https://www.vistatec.com/localization-for-all-advancing-accessibility-and-inclusion-in-a-globalized-world/', - ], - imageUrl: - 'https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?w=400', // Placeholder - }, - colorblindness: { - title: 'Color Blindness', - text: `Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. + sources: [ + "https://resources.gala-global.org/accessibility-localization/", + "https://www.vistatec.com/localization-for-all-advancing-accessibility-and-inclusion-in-a-globalized-world/", + ], + imageUrl: + "https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?w=400", // Placeholder + }, + colorblindness: { + title: "Color Blindness", + text: `Color blindness is a visual condition that affects color perception, most commonly red and green. The most common type, red-green color blindness, is inherited through the X chromosome. People with red-green color blindness do not see only red and green, but may have difficulty distinguishing between certain shades. Although many cases are inherited, they can also develop later in life due to eye disease, injury, aging, or certain medications. Complete color blindness is rare and should not be assumed.`, - sources: [ - 'https://www.colourblindawareness.org/colour-blindness/', - 'https://www.nei.nih.gov/eye-health-information/eye-conditions-and-diseases/color-blindness', - ], - imageUrl: - 'https://images.unsplash.com/photo-1584036561566-baf8f5f1b144?w=400', // Placeholder - }, - dyslexia: { - title: 'Dyslexia', - text: `Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. + sources: [ + "https://www.colourblindawareness.org/colour-blindness/", + "https://www.nei.nih.gov/eye-health-information/eye-conditions-and-diseases/color-blindness", + ], + imageUrl: + "https://images.unsplash.com/photo-1584036561566-baf8f5f1b144?w=400", // Placeholder + }, + dyslexia: { + title: "Dyslexia", + text: `Dyslexia is a neurological learning disability that primarily affects reading and language processing. It is not a vision problem and does not affect intelligence. People with dyslexia may have difficulty connecting written letters to spoken sounds, not how letters visually appear. Dyslexia cannot be cured, but it can be effectively supported through early intervention, structured reading instruction, and classroom accommodations.`, - sources: [ - 'https://dyslexiaida.org/definition-of-dyslexia/', - 'https://www.losdschools.org/student-services/dyslexia-handbook/definition-of-dyslexia', - ], - imageUrl: - 'https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=400', // Placeholder - }, -}; \ No newline at end of file + sources: [ + "https://dyslexiaida.org/definition-of-dyslexia/", + "https://www.losdschools.org/student-services/dyslexia-handbook/definition-of-dyslexia", + ], + imageUrl: + "https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=400", // Placeholder + }, +}; From d1d4e8c5bcc31ffa08bf259e8cf03f0d96145048 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 5 Mar 2026 15:27:52 -0500 Subject: [PATCH 132/180] Clear button changes when focused for accessibility --- client/src/pages/labspage/LabsPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index 76012fc74..f1605c1eb 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -311,7 +311,7 @@ const LabsPage = (props) => { setSelectedTopic([]); setSelectedDifficulty([]); }} - className="tw-absolute tw-font-bold tw-z-10 tw-top-0 tw-right-0 btn tw-text-black tw-bg-primary-yellow tw-shadow-md hover:tw-bg-secondary-gray hover:tw-shadow-lg text-uppercase tw-max-h-[5rem] tw-min-w-[4rem] tw-max-w-[20rem] tw-text-nowrap tw-border-none" + className="tw-absolute tw-font-bold tw-z-10 tw-top-0 tw-right-0 btn tw-text-black tw-bg-primary-yellow tw-shadow-md focus:tw-bg-secondary-gray hover:tw-bg-secondary-gray hover:tw-shadow-lg text-uppercase tw-max-h-[5rem] tw-min-w-[4rem] tw-max-w-[20rem] tw-text-nowrap tw-border-none" > CLEAR From c0285f3c83d95a4a65bee84b4eb0e2f73458ff29 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Fri, 6 Mar 2026 11:20:32 -0500 Subject: [PATCH 133/180] Improve RatingModal question wording for clarity --- .../exercise/lab13/components/RatingModal.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/client/src/components/exercise/lab13/components/RatingModal.js b/client/src/components/exercise/lab13/components/RatingModal.js index 817157a05..74420278e 100644 --- a/client/src/components/exercise/lab13/components/RatingModal.js +++ b/client/src/components/exercise/lab13/components/RatingModal.js @@ -55,7 +55,8 @@ const RatingModal = ({ customHeader={
      - Rate each factor by its influence on your trust. + Rate how much each part of the AI response impacted your + trust.
      {showFilter && ( -
      +

      Topic

      - {[ - { - id: "accessibility", - label: "Accessibility", - value: "Accessibility", - }, - { - id: "ai_ml", - label: "AI / Machine Learning", - value: "AI", - }, - { - id: "quantum", - label: "Quantum", - value: "Quantum Computing", - }, - { - id: "tutorial", - label: "Tutorial", - value: "Tutorials", - }, - ].map((option) => ( + {Array.from(labInformation.keys()).map((key) => ( ))}
      From da76a22d34319cdc2c7173f006c4c99ceccfcbc1 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Fri, 20 Mar 2026 07:48:30 -0400 Subject: [PATCH 150/180] Updated variable names to avoid confusion --- client/src/pages/labspage/LabsPage.js | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/client/src/pages/labspage/LabsPage.js b/client/src/pages/labspage/LabsPage.js index ad10208e1..4f9642bc5 100644 --- a/client/src/pages/labspage/LabsPage.js +++ b/client/src/pages/labspage/LabsPage.js @@ -92,11 +92,11 @@ const LabsPage = (props) => { }); }, []); - const labsByDifficulty = (labMap, difficulty) => { + const labsByDifficulty = (labMap, difficulties) => { const filteredMap = new Map(); for (const [key, value] of labMap.entries()) { const filteredArr = value.filter((x) => - difficulty.includes(x.difficulty), + difficulties.includes(x.difficulty), ); if (filteredArr.length > 0) { filteredMap.set(key, filteredArr); @@ -128,40 +128,40 @@ const LabsPage = (props) => { const [textSearch, setTextSearch] = useState(""); const [showFilter, setShowFilter] = useState(false); - const [selectedTopic, setSelectedTopic] = useState([]); - const [selectedDifficulty, setSelectedDifficulty] = useState([]); + const [selectedTopics, setSelectedTopics] = useState([]); + const [selectedDifficulties, setSelectedDifficulties] = useState([]); useEffect(() => { - applyFilters(selectedTopic, selectedDifficulty, textSearch); - }, [selectedTopic, selectedDifficulty, textSearch]); + applyFilters(selectedTopics, selectedDifficulties, textSearch); + }, [selectedTopics, selectedDifficulties, textSearch]); const changeTopic = (value) => { - setSelectedTopic((prev) => + setSelectedTopics((prev) => prev.includes(value) ? prev.filter((topic) => topic !== value) : [...prev, value], ); }; const changeDifficulty = (value) => { - setSelectedDifficulty((prev) => + setSelectedDifficulties((prev) => prev.includes(value) ? prev.filter((level) => level !== value) : [...prev, value], ); }; const applyFilters = ( - topic = selectedTopic, - difficulty = selectedDifficulty, + topics = selectedTopics, + difficulties = selectedDifficulties, text = textSearch, ) => { let filtered = new Map(labInformation); - if (topic.length > 0) { + if (topics.length > 0) { filtered = new Map( - Array.from(filtered.entries()).filter(([key]) => topic.includes(key)), + Array.from(filtered.entries()).filter(([key]) => topics.includes(key)), ); } - if (difficulty.length > 0) { - filtered = labsByDifficulty(filtered, difficulty); + if (difficulties.length > 0) { + filtered = labsByDifficulty(filtered, difficulties); } if (text.trim() !== "") { filtered = labsBySearchPhrase(filtered, text); @@ -308,8 +308,8 @@ const LabsPage = (props) => {
      - +
      ); @@ -80,6 +80,7 @@ LoginBody.propTypes = { body: PropTypes.number, }), }), + closeModal: PropTypes.function, }; export default connect(mapStateToProps, mapDispatchToProps)(LoginBody); diff --git a/client/src/components/header/header.js b/client/src/components/header/header.js index d156f40b9..f7747a21e 100644 --- a/client/src/components/header/header.js +++ b/client/src/components/header/header.js @@ -205,7 +205,11 @@ const Header = ({ isImagine }) => { isOpen={showSignIn} toggle={toggleSignInShown} > - + { + setShowSignIn(false); + }} + />
      diff --git a/client/src/components/header/helpers/LoginButton.js b/client/src/components/header/helpers/LoginButton.js index e1690e2b7..976746ca6 100644 --- a/client/src/components/header/helpers/LoginButton.js +++ b/client/src/components/header/helpers/LoginButton.js @@ -5,6 +5,7 @@ import GoogleLogin from "../../../assets/images/google_buttons/Google_Sign_In.sv import Avatar from "avataaars"; import { AvatarData } from "../../body/login/AvatarData"; import useMainStateContext from "../../../reducers/MainContext"; +import PropTypes from "prop-types"; const LoginButton = (props) => { const { enabled } = props; @@ -14,6 +15,7 @@ const LoginButton = (props) => { const developmentLogin = (userId) => { actions.developmentLogin(userId); + props.closeModal(); }; const devLogin = () => { @@ -29,7 +31,7 @@ const LoginButton = (props) => { onClick={() => developmentLogin(data.id)} key={index} className={ - "tw-flex tw-flex-col tw-items-center tw-rounded-full hover:tw-cursor-pointer hover:tw-font-bold" + "tw-flex tw-flex-col tw-items-center tw-rounded-full hover:tw-cursor-pointer" } > { return
      ; }; +LoginButton.propTypes = { + closeModal: PropTypes.function, +}; + export default LoginButton; diff --git a/server/controllers/UserController.js b/server/controllers/UserController.js index 125ab2f64..62d7fa61c 100644 --- a/server/controllers/UserController.js +++ b/server/controllers/UserController.js @@ -77,7 +77,7 @@ const developmentLogin = async (req, res) => { req.session.save(); res.json(user); } catch (e) { - console.error('Development Login failed!'); + console.error('Development Login failed! ', e); } }; @@ -88,7 +88,7 @@ const storeURL = (req, res) => { // Logging out will clear sessions const logout = (req, res, next) => { - // eslint-disable-next-line max-len + const redirect = process.env.ENVIRONMENT === 'dev' ? process.env.CLIENT_URL + '/' : req.session.url; req.logout({keepSessionInfo: true}, (error) => { if (error) next(error); diff --git a/server/services/UserService.js b/server/services/UserService.js index 7a67949fd..064352efd 100644 --- a/server/services/UserService.js +++ b/server/services/UserService.js @@ -171,12 +171,12 @@ const getUser = (userid) => { userid: userid, }, }) - .then((user) => { - return user; - }) - .catch((err) => { - console.log(err); - }); + .then((user) => { + return user; + }) + .catch((err) => { + console.log(err); + }); }; module.exports = { From 039a6ebab0cb3bce247e15497561745666416101 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Mar 2026 16:04:53 +0000 Subject: [PATCH 159/180] Bump flatted from 3.4.1 to 3.4.2 in /client Bumps [flatted](https://github.com/WebReflection/flatted) from 3.4.1 to 3.4.2. - [Commits](https://github.com/WebReflection/flatted/compare/v3.4.1...v3.4.2) --- updated-dependencies: - dependency-name: flatted dependency-version: 3.4.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- client/package-lock.json | 430 +-------------------------------------- 1 file changed, 3 insertions(+), 427 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 8bb0c1592..9fb742c5a 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -2808,7 +2808,6 @@ }, "node_modules/@jest/console": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2824,7 +2823,6 @@ }, "node_modules/@jest/console/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2835,7 +2833,6 @@ }, "node_modules/@jest/console/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2851,12 +2848,10 @@ }, "node_modules/@jest/console/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2864,7 +2859,6 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2878,7 +2872,6 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2893,7 +2886,6 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2904,7 +2896,6 @@ }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2912,7 +2903,6 @@ }, "node_modules/@jest/console/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2928,7 +2918,6 @@ }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2936,7 +2925,6 @@ }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -2947,7 +2935,6 @@ }, "node_modules/@jest/core": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2993,7 +2980,6 @@ }, "node_modules/@jest/core/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3004,7 +2990,6 @@ }, "node_modules/@jest/core/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3029,7 +3014,6 @@ }, "node_modules/@jest/core/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3045,12 +3029,10 @@ }, "node_modules/@jest/core/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3058,7 +3040,6 @@ }, "node_modules/@jest/core/node_modules/ansi-escapes": { "version": "4.3.2", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -3072,7 +3053,6 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3086,7 +3066,6 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3101,7 +3080,6 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3112,7 +3090,6 @@ }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3120,7 +3097,6 @@ }, "node_modules/@jest/core/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3128,7 +3104,6 @@ }, "node_modules/@jest/core/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3152,7 +3127,6 @@ }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3160,7 +3134,6 @@ }, "node_modules/@jest/core/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -3179,7 +3152,6 @@ }, "node_modules/@jest/core/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3195,7 +3167,6 @@ }, "node_modules/@jest/core/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3211,7 +3182,6 @@ }, "node_modules/@jest/core/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3225,7 +3195,6 @@ }, "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3239,7 +3208,6 @@ }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3252,7 +3220,6 @@ }, "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3263,7 +3230,6 @@ }, "node_modules/@jest/core/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3271,12 +3237,10 @@ }, "node_modules/@jest/core/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3284,7 +3248,6 @@ }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3295,7 +3258,6 @@ }, "node_modules/@jest/core/node_modules/type-fest": { "version": "0.21.3", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -3306,7 +3268,6 @@ }, "node_modules/@jest/core/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3318,7 +3279,6 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -3332,7 +3292,6 @@ }, "node_modules/@jest/environment/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3343,7 +3302,6 @@ }, "node_modules/@jest/environment/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3359,12 +3317,10 @@ }, "node_modules/@jest/environment/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/environment/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3372,7 +3328,6 @@ }, "node_modules/@jest/environment/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3386,7 +3341,6 @@ }, "node_modules/@jest/environment/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3401,7 +3355,6 @@ }, "node_modules/@jest/environment/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3412,7 +3365,6 @@ }, "node_modules/@jest/environment/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3420,7 +3372,6 @@ }, "node_modules/@jest/environment/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3431,7 +3382,6 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -3443,7 +3393,6 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -3454,7 +3403,6 @@ }, "node_modules/@jest/expect-utils/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3462,7 +3410,6 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3478,7 +3425,6 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3489,7 +3435,6 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3505,12 +3450,10 @@ }, "node_modules/@jest/fake-timers/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3518,7 +3461,6 @@ }, "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3532,7 +3474,6 @@ }, "node_modules/@jest/fake-timers/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3547,7 +3488,6 @@ }, "node_modules/@jest/fake-timers/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3558,7 +3498,6 @@ }, "node_modules/@jest/fake-timers/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3566,7 +3505,6 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3582,7 +3520,6 @@ }, "node_modules/@jest/fake-timers/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3593,7 +3530,6 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -3607,7 +3543,6 @@ }, "node_modules/@jest/globals/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3618,7 +3553,6 @@ }, "node_modules/@jest/globals/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3634,12 +3568,10 @@ }, "node_modules/@jest/globals/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/globals/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3647,7 +3579,6 @@ }, "node_modules/@jest/globals/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3661,7 +3592,6 @@ }, "node_modules/@jest/globals/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3676,7 +3606,6 @@ }, "node_modules/@jest/globals/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3687,7 +3616,6 @@ }, "node_modules/@jest/globals/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3695,7 +3623,6 @@ }, "node_modules/@jest/globals/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3706,7 +3633,6 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -3748,7 +3674,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3759,7 +3684,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3784,7 +3708,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3800,12 +3723,10 @@ }, "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3813,7 +3734,6 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3827,7 +3747,6 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3842,7 +3761,6 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3853,7 +3771,6 @@ }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3861,7 +3778,6 @@ }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.2", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -3876,7 +3792,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3900,7 +3815,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3908,7 +3822,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3924,7 +3837,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3938,7 +3850,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3952,7 +3863,6 @@ }, "node_modules/@jest/reporters/node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -3963,7 +3873,6 @@ }, "node_modules/@jest/reporters/node_modules/semver": { "version": "7.6.0", - "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -3977,12 +3886,10 @@ }, "node_modules/@jest/reporters/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3990,7 +3897,6 @@ }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4001,7 +3907,6 @@ }, "node_modules/@jest/reporters/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -4013,7 +3918,6 @@ }, "node_modules/@jest/reporters/node_modules/yallist": { "version": "4.0.0", - "dev": true, "license": "ISC" }, "node_modules/@jest/schemas": { @@ -4028,7 +3932,6 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -4041,7 +3944,6 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -4055,7 +3957,6 @@ }, "node_modules/@jest/test-result/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4066,7 +3967,6 @@ }, "node_modules/@jest/test-result/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4082,12 +3982,10 @@ }, "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/test-result/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4095,7 +3993,6 @@ }, "node_modules/@jest/test-result/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4109,7 +4006,6 @@ }, "node_modules/@jest/test-result/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4124,7 +4020,6 @@ }, "node_modules/@jest/test-result/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4135,7 +4030,6 @@ }, "node_modules/@jest/test-result/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4143,7 +4037,6 @@ }, "node_modules/@jest/test-result/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4154,7 +4047,6 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -4168,7 +4060,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4179,7 +4070,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4195,12 +4085,10 @@ }, "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4208,7 +4096,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4222,7 +4109,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4237,7 +4123,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4248,7 +4133,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4256,7 +4140,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4280,7 +4163,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4288,7 +4170,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4304,7 +4185,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -4318,7 +4198,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4332,7 +4211,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4340,7 +4218,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5252,7 +5129,6 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -5260,7 +5136,6 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -5967,7 +5842,6 @@ }, "node_modules/@types/react": { "version": "18.2.71", - "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -6004,7 +5878,6 @@ }, "node_modules/@types/scheduler": { "version": "0.23.0", - "dev": true, "license": "MIT" }, "node_modules/@types/semver": { @@ -7852,7 +7725,6 @@ }, "node_modules/cliui": { "version": "8.0.1", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -7865,7 +7737,6 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -7879,7 +7750,6 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -7890,12 +7760,10 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7903,7 +7771,6 @@ }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7916,7 +7783,6 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8186,7 +8052,6 @@ }, "node_modules/create-jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8206,7 +8071,6 @@ }, "node_modules/create-jest/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -8217,7 +8081,6 @@ }, "node_modules/create-jest/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -8233,12 +8096,10 @@ }, "node_modules/create-jest/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/create-jest/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -8246,7 +8107,6 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -8260,7 +8120,6 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -8275,7 +8134,6 @@ }, "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -8286,7 +8144,6 @@ }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8294,7 +8151,6 @@ }, "node_modules/create-jest/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8310,7 +8166,6 @@ }, "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9018,7 +8873,6 @@ }, "node_modules/dedent": { "version": "1.5.1", - "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9263,7 +9117,6 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -9457,7 +9310,6 @@ }, "node_modules/emittery": { "version": "0.13.1", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10422,7 +10274,6 @@ }, "node_modules/expect": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -10437,7 +10288,6 @@ }, "node_modules/expect/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -10448,7 +10298,6 @@ }, "node_modules/expect/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -10464,12 +10313,10 @@ }, "node_modules/expect/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/expect/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -10477,7 +10324,6 @@ }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10491,7 +10337,6 @@ }, "node_modules/expect/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10506,7 +10351,6 @@ }, "node_modules/expect/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10517,7 +10361,6 @@ }, "node_modules/expect/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10525,7 +10368,6 @@ }, "node_modules/expect/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10533,7 +10375,6 @@ }, "node_modules/expect/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -10549,7 +10390,6 @@ }, "node_modules/expect/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -10857,9 +10697,9 @@ } }, "node_modules/flatted": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", - "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "license": "ISC" }, "node_modules/follow-redirects": { @@ -12699,7 +12539,6 @@ }, "node_modules/jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12724,7 +12563,6 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -12737,7 +12575,6 @@ }, "node_modules/jest-changed-files/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12748,7 +12585,6 @@ }, "node_modules/jest-changed-files/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12764,12 +12600,10 @@ }, "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-changed-files/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12777,7 +12611,6 @@ }, "node_modules/jest-changed-files/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12791,7 +12624,6 @@ }, "node_modules/jest-changed-files/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12806,7 +12638,6 @@ }, "node_modules/jest-changed-files/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12817,7 +12648,6 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", - "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -12839,7 +12669,6 @@ }, "node_modules/jest-changed-files/node_modules/get-stream": { "version": "6.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12850,7 +12679,6 @@ }, "node_modules/jest-changed-files/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12858,7 +12686,6 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -12866,7 +12693,6 @@ }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12877,7 +12703,6 @@ }, "node_modules/jest-changed-files/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12893,7 +12718,6 @@ }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12901,7 +12725,6 @@ }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -12912,7 +12735,6 @@ }, "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -12926,12 +12748,10 @@ }, "node_modules/jest-changed-files/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12939,7 +12759,6 @@ }, "node_modules/jest-changed-files/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12950,7 +12769,6 @@ }, "node_modules/jest-circus": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -12980,7 +12798,6 @@ }, "node_modules/jest-circus/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12991,7 +12808,6 @@ }, "node_modules/jest-circus/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13007,12 +12823,10 @@ }, "node_modules/jest-circus/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13020,7 +12834,6 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13034,7 +12847,6 @@ }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13049,7 +12861,6 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13060,7 +12871,6 @@ }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13068,7 +12878,6 @@ }, "node_modules/jest-circus/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13084,7 +12893,6 @@ }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13097,7 +12905,6 @@ }, "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13108,7 +12915,6 @@ }, "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13116,7 +12922,6 @@ }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13127,7 +12932,6 @@ }, "node_modules/jest-cli": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -13159,7 +12963,6 @@ }, "node_modules/jest-cli/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13170,7 +12973,6 @@ }, "node_modules/jest-cli/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13186,12 +12988,10 @@ }, "node_modules/jest-cli/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13199,7 +12999,6 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13213,7 +13012,6 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13228,7 +13026,6 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13239,7 +13036,6 @@ }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13247,7 +13043,6 @@ }, "node_modules/jest-cli/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13255,7 +13050,6 @@ }, "node_modules/jest-cli/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13271,7 +13065,6 @@ }, "node_modules/jest-cli/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13287,7 +13080,6 @@ }, "node_modules/jest-cli/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13300,7 +13092,6 @@ }, "node_modules/jest-cli/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13311,7 +13102,6 @@ }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13322,7 +13112,6 @@ }, "node_modules/jest-config": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13366,7 +13155,6 @@ }, "node_modules/jest-config/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13377,7 +13165,6 @@ }, "node_modules/jest-config/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13402,7 +13189,6 @@ }, "node_modules/jest-config/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13418,12 +13204,10 @@ }, "node_modules/jest-config/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13431,7 +13215,6 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13445,7 +13228,6 @@ }, "node_modules/jest-config/node_modules/babel-jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -13465,7 +13247,6 @@ }, "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -13479,7 +13260,6 @@ }, "node_modules/jest-config/node_modules/babel-preset-jest": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -13494,7 +13274,6 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13509,7 +13288,6 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13520,7 +13298,6 @@ }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13528,7 +13305,6 @@ }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13536,7 +13312,6 @@ }, "node_modules/jest-config/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13560,7 +13335,6 @@ }, "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13568,7 +13342,6 @@ }, "node_modules/jest-config/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13587,7 +13360,6 @@ }, "node_modules/jest-config/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13603,7 +13375,6 @@ }, "node_modules/jest-config/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13619,7 +13390,6 @@ }, "node_modules/jest-config/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -13633,7 +13403,6 @@ }, "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13647,7 +13416,6 @@ }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13660,7 +13428,6 @@ }, "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13671,7 +13438,6 @@ }, "node_modules/jest-config/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13679,12 +13445,10 @@ }, "node_modules/jest-config/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13692,7 +13456,6 @@ }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13703,7 +13466,6 @@ }, "node_modules/jest-config/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -13715,7 +13477,6 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13729,7 +13490,6 @@ }, "node_modules/jest-diff/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13740,12 +13500,10 @@ }, "node_modules/jest-diff/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13759,7 +13517,6 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13774,7 +13531,6 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13785,7 +13541,6 @@ }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13793,7 +13548,6 @@ }, "node_modules/jest-diff/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13801,7 +13555,6 @@ }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13814,7 +13567,6 @@ }, "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13825,7 +13577,6 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13836,7 +13587,6 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -13847,7 +13597,6 @@ }, "node_modules/jest-each": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13862,7 +13611,6 @@ }, "node_modules/jest-each/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13873,7 +13621,6 @@ }, "node_modules/jest-each/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13889,12 +13636,10 @@ }, "node_modules/jest-each/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13902,7 +13647,6 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13916,7 +13660,6 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13931,7 +13674,6 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13942,7 +13684,6 @@ }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13950,7 +13691,6 @@ }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13958,7 +13698,6 @@ }, "node_modules/jest-each/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13974,7 +13713,6 @@ }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13987,7 +13725,6 @@ }, "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13998,7 +13735,6 @@ }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14150,7 +13886,6 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -14166,7 +13901,6 @@ }, "node_modules/jest-environment-node/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14177,7 +13911,6 @@ }, "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14193,12 +13926,10 @@ }, "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-environment-node/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14206,7 +13937,6 @@ }, "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14220,7 +13950,6 @@ }, "node_modules/jest-environment-node/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14235,7 +13964,6 @@ }, "node_modules/jest-environment-node/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14246,7 +13974,6 @@ }, "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14254,7 +13981,6 @@ }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14270,7 +13996,6 @@ }, "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14767,7 +14492,6 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -14779,7 +14503,6 @@ }, "node_modules/jest-leak-detector/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14790,12 +14513,10 @@ }, "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-leak-detector/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14806,7 +14527,6 @@ }, "node_modules/jest-leak-detector/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14814,7 +14534,6 @@ }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14827,7 +14546,6 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -14841,7 +14559,6 @@ }, "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14852,12 +14569,10 @@ }, "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14871,7 +14586,6 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14886,7 +14600,6 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14897,7 +14610,6 @@ }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14905,7 +14617,6 @@ }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14913,7 +14624,6 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14926,7 +14636,6 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14937,7 +14646,6 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14948,7 +14656,6 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -14967,7 +14674,6 @@ }, "node_modules/jest-message-util/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14978,7 +14684,6 @@ }, "node_modules/jest-message-util/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14994,12 +14699,10 @@ }, "node_modules/jest-message-util/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-message-util/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15007,7 +14710,6 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15021,7 +14723,6 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15036,7 +14737,6 @@ }, "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15047,7 +14747,6 @@ }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15055,7 +14754,6 @@ }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15068,7 +14766,6 @@ }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15079,7 +14776,6 @@ }, "node_modules/jest-message-util/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15087,7 +14783,6 @@ }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15098,7 +14793,6 @@ }, "node_modules/jest-mock": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15111,7 +14805,6 @@ }, "node_modules/jest-mock/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15122,7 +14815,6 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15138,12 +14830,10 @@ }, "node_modules/jest-mock/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15151,7 +14841,6 @@ }, "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15165,7 +14854,6 @@ }, "node_modules/jest-mock/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15180,7 +14868,6 @@ }, "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15191,7 +14878,6 @@ }, "node_modules/jest-mock/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15199,7 +14885,6 @@ }, "node_modules/jest-mock/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15215,7 +14900,6 @@ }, "node_modules/jest-mock/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15267,7 +14951,6 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -15279,7 +14962,6 @@ }, "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15348,7 +15030,6 @@ }, "node_modules/jest-runner": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -15379,7 +15060,6 @@ }, "node_modules/jest-runner/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15390,7 +15070,6 @@ }, "node_modules/jest-runner/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15415,7 +15094,6 @@ }, "node_modules/jest-runner/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15431,12 +15109,10 @@ }, "node_modules/jest-runner/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15444,7 +15120,6 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15458,7 +15133,6 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15473,7 +15147,6 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15484,7 +15157,6 @@ }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15492,7 +15164,6 @@ }, "node_modules/jest-runner/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15500,7 +15171,6 @@ }, "node_modules/jest-runner/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15524,7 +15194,6 @@ }, "node_modules/jest-runner/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15532,7 +15201,6 @@ }, "node_modules/jest-runner/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15551,7 +15219,6 @@ }, "node_modules/jest-runner/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15567,7 +15234,6 @@ }, "node_modules/jest-runner/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15583,7 +15249,6 @@ }, "node_modules/jest-runner/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15597,7 +15262,6 @@ }, "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15611,7 +15275,6 @@ }, "node_modules/jest-runner/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15624,7 +15287,6 @@ }, "node_modules/jest-runner/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15635,7 +15297,6 @@ }, "node_modules/jest-runner/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15643,12 +15304,10 @@ }, "node_modules/jest-runner/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-runner/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15656,7 +15315,6 @@ }, "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15664,7 +15322,6 @@ }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", - "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -15673,7 +15330,6 @@ }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15684,7 +15340,6 @@ }, "node_modules/jest-runner/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15696,7 +15351,6 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -15728,7 +15382,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15739,7 +15392,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15764,7 +15416,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15780,12 +15431,10 @@ }, "node_modules/jest-runtime/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15793,7 +15442,6 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15807,7 +15455,6 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15822,7 +15469,6 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15833,7 +15479,6 @@ }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15841,7 +15486,6 @@ }, "node_modules/jest-runtime/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15849,7 +15493,6 @@ }, "node_modules/jest-runtime/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15873,7 +15516,6 @@ }, "node_modules/jest-runtime/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15881,7 +15523,6 @@ }, "node_modules/jest-runtime/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15900,7 +15541,6 @@ }, "node_modules/jest-runtime/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15916,7 +15556,6 @@ }, "node_modules/jest-runtime/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15932,7 +15571,6 @@ }, "node_modules/jest-runtime/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15946,7 +15584,6 @@ }, "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15960,7 +15597,6 @@ }, "node_modules/jest-runtime/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15973,7 +15609,6 @@ }, "node_modules/jest-runtime/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15984,7 +15619,6 @@ }, "node_modules/jest-runtime/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15992,12 +15626,10 @@ }, "node_modules/jest-runtime/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16005,7 +15637,6 @@ }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16016,7 +15647,6 @@ }, "node_modules/jest-runtime/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -16039,7 +15669,6 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -16069,7 +15698,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16080,7 +15708,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -16105,7 +15732,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16121,12 +15747,10 @@ }, "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16134,7 +15758,6 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16148,7 +15771,6 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16163,7 +15785,6 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16174,7 +15795,6 @@ }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16182,7 +15802,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -16190,7 +15809,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16214,7 +15832,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -16222,7 +15839,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16238,7 +15854,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -16252,7 +15867,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16266,7 +15880,6 @@ }, "node_modules/jest-snapshot/node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -16277,7 +15890,6 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16290,7 +15902,6 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -16301,7 +15912,6 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.0", - "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -16315,12 +15925,10 @@ }, "node_modules/jest-snapshot/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-snapshot/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16328,7 +15936,6 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16339,7 +15946,6 @@ }, "node_modules/jest-snapshot/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -16351,7 +15957,6 @@ }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", - "dev": true, "license": "ISC" }, "node_modules/jest-util": { @@ -16819,7 +16424,6 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -16837,7 +16441,6 @@ }, "node_modules/jest-watcher/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16848,7 +16451,6 @@ }, "node_modules/jest-watcher/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16864,12 +16466,10 @@ }, "node_modules/jest-watcher/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16877,7 +16477,6 @@ }, "node_modules/jest-watcher/node_modules/ansi-escapes": { "version": "4.3.2", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -16891,7 +16490,6 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16905,7 +16503,6 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16920,7 +16517,6 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16931,7 +16527,6 @@ }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16939,7 +16534,6 @@ }, "node_modules/jest-watcher/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16955,7 +16549,6 @@ }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16966,7 +16559,6 @@ }, "node_modules/jest-watcher/node_modules/type-fest": { "version": "0.21.3", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -17009,7 +16601,6 @@ }, "node_modules/jest/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -17020,7 +16611,6 @@ }, "node_modules/jest/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -17036,12 +16626,10 @@ }, "node_modules/jest/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -17049,7 +16637,6 @@ }, "node_modules/jest/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -17063,7 +16650,6 @@ }, "node_modules/jest/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -17078,7 +16664,6 @@ }, "node_modules/jest/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -17089,7 +16674,6 @@ }, "node_modules/jest/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17097,7 +16681,6 @@ }, "node_modules/jest/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -19982,7 +19565,6 @@ }, "node_modules/pure-rand": { "version": "6.1.0", - "dev": true, "funding": [ { "type": "individual", @@ -24189,7 +23771,6 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", - "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -25584,7 +25165,6 @@ }, "node_modules/yargs": { "version": "17.7.2", - "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -25601,7 +25181,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -25609,12 +25188,10 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25622,7 +25199,6 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", From 7a89f03b5e4b621208a44f2b8f5291757f49b515 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Tue, 24 Mar 2026 12:05:58 -0400 Subject: [PATCH 160/180] Update package lock --- client/package-lock.json | 424 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 424 insertions(+) diff --git a/client/package-lock.json b/client/package-lock.json index 5f72e177f..f37b8b982 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -2808,6 +2808,7 @@ }, "node_modules/@jest/console": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2823,6 +2824,7 @@ }, "node_modules/@jest/console/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2833,6 +2835,7 @@ }, "node_modules/@jest/console/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2848,10 +2851,12 @@ }, "node_modules/@jest/console/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2859,6 +2864,7 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2872,6 +2878,7 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2886,6 +2893,7 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2896,6 +2904,7 @@ }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2903,6 +2912,7 @@ }, "node_modules/@jest/console/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2918,6 +2928,7 @@ }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2925,6 +2936,7 @@ }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -2935,6 +2947,7 @@ }, "node_modules/@jest/core": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2980,6 +2993,7 @@ }, "node_modules/@jest/core/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2990,6 +3004,7 @@ }, "node_modules/@jest/core/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3014,6 +3029,7 @@ }, "node_modules/@jest/core/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3029,10 +3045,12 @@ }, "node_modules/@jest/core/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3040,6 +3058,7 @@ }, "node_modules/@jest/core/node_modules/ansi-escapes": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -3053,6 +3072,7 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3066,6 +3086,7 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3080,6 +3101,7 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3090,6 +3112,7 @@ }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3097,6 +3120,7 @@ }, "node_modules/@jest/core/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3104,6 +3128,7 @@ }, "node_modules/@jest/core/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3127,6 +3152,7 @@ }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3134,6 +3160,7 @@ }, "node_modules/@jest/core/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -3152,6 +3179,7 @@ }, "node_modules/@jest/core/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3167,6 +3195,7 @@ }, "node_modules/@jest/core/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3182,6 +3211,7 @@ }, "node_modules/@jest/core/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3195,6 +3225,7 @@ }, "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3208,6 +3239,7 @@ }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3220,6 +3252,7 @@ }, "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3230,6 +3263,7 @@ }, "node_modules/@jest/core/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3237,10 +3271,12 @@ }, "node_modules/@jest/core/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3248,6 +3284,7 @@ }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3258,6 +3295,7 @@ }, "node_modules/@jest/core/node_modules/type-fest": { "version": "0.21.3", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -3268,6 +3306,7 @@ }, "node_modules/@jest/core/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3279,6 +3318,7 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -3292,6 +3332,7 @@ }, "node_modules/@jest/environment/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3302,6 +3343,7 @@ }, "node_modules/@jest/environment/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3317,10 +3359,12 @@ }, "node_modules/@jest/environment/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/environment/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3328,6 +3372,7 @@ }, "node_modules/@jest/environment/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3341,6 +3386,7 @@ }, "node_modules/@jest/environment/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3355,6 +3401,7 @@ }, "node_modules/@jest/environment/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3365,6 +3412,7 @@ }, "node_modules/@jest/environment/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3372,6 +3420,7 @@ }, "node_modules/@jest/environment/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3382,6 +3431,7 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -3393,6 +3443,7 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -3403,6 +3454,7 @@ }, "node_modules/@jest/expect-utils/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3410,6 +3462,7 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3425,6 +3478,7 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3435,6 +3489,7 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3450,10 +3505,12 @@ }, "node_modules/@jest/fake-timers/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3461,6 +3518,7 @@ }, "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3474,6 +3532,7 @@ }, "node_modules/@jest/fake-timers/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3488,6 +3547,7 @@ }, "node_modules/@jest/fake-timers/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3498,6 +3558,7 @@ }, "node_modules/@jest/fake-timers/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3505,6 +3566,7 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3520,6 +3582,7 @@ }, "node_modules/@jest/fake-timers/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3530,6 +3593,7 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -3543,6 +3607,7 @@ }, "node_modules/@jest/globals/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3553,6 +3618,7 @@ }, "node_modules/@jest/globals/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3568,10 +3634,12 @@ }, "node_modules/@jest/globals/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/globals/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3579,6 +3647,7 @@ }, "node_modules/@jest/globals/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3592,6 +3661,7 @@ }, "node_modules/@jest/globals/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3606,6 +3676,7 @@ }, "node_modules/@jest/globals/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3616,6 +3687,7 @@ }, "node_modules/@jest/globals/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3623,6 +3695,7 @@ }, "node_modules/@jest/globals/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3633,6 +3706,7 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -3674,6 +3748,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3684,6 +3759,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3708,6 +3784,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3723,10 +3800,12 @@ }, "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3734,6 +3813,7 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3747,6 +3827,7 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3761,6 +3842,7 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3771,6 +3853,7 @@ }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3778,6 +3861,7 @@ }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.2", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -3792,6 +3876,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3815,6 +3900,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3822,6 +3908,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3837,6 +3924,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3850,6 +3938,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3863,6 +3952,7 @@ }, "node_modules/@jest/reporters/node_modules/lru-cache": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -3873,6 +3963,7 @@ }, "node_modules/@jest/reporters/node_modules/semver": { "version": "7.6.0", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -3886,10 +3977,12 @@ }, "node_modules/@jest/reporters/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3897,6 +3990,7 @@ }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3907,6 +4001,7 @@ }, "node_modules/@jest/reporters/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3918,6 +4013,7 @@ }, "node_modules/@jest/reporters/node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/@jest/schemas": { @@ -3932,6 +4028,7 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -3944,6 +4041,7 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -3957,6 +4055,7 @@ }, "node_modules/@jest/test-result/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3967,6 +4066,7 @@ }, "node_modules/@jest/test-result/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3982,10 +4082,12 @@ }, "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-result/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3993,6 +4095,7 @@ }, "node_modules/@jest/test-result/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4006,6 +4109,7 @@ }, "node_modules/@jest/test-result/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4020,6 +4124,7 @@ }, "node_modules/@jest/test-result/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4030,6 +4135,7 @@ }, "node_modules/@jest/test-result/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4037,6 +4143,7 @@ }, "node_modules/@jest/test-result/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4047,6 +4154,7 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -4060,6 +4168,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4070,6 +4179,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4085,10 +4195,12 @@ }, "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4096,6 +4208,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4109,6 +4222,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4123,6 +4237,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4133,6 +4248,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4140,6 +4256,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4163,6 +4280,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4170,6 +4288,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4185,6 +4304,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -4198,6 +4318,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4211,6 +4332,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4218,6 +4340,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5129,6 +5252,7 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -5136,6 +5260,7 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -5842,6 +5967,7 @@ }, "node_modules/@types/react": { "version": "18.2.71", + "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -5878,6 +6004,7 @@ }, "node_modules/@types/scheduler": { "version": "0.23.0", + "dev": true, "license": "MIT" }, "node_modules/@types/semver": { @@ -7725,6 +7852,7 @@ }, "node_modules/cliui": { "version": "8.0.1", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -7737,6 +7865,7 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -7750,6 +7879,7 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -7760,10 +7890,12 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7771,6 +7903,7 @@ }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7783,6 +7916,7 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8052,6 +8186,7 @@ }, "node_modules/create-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8071,6 +8206,7 @@ }, "node_modules/create-jest/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -8081,6 +8217,7 @@ }, "node_modules/create-jest/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -8096,10 +8233,12 @@ }, "node_modules/create-jest/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/create-jest/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -8107,6 +8246,7 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -8120,6 +8260,7 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -8134,6 +8275,7 @@ }, "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -8144,6 +8286,7 @@ }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8151,6 +8294,7 @@ }, "node_modules/create-jest/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8166,6 +8310,7 @@ }, "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -8873,6 +9018,7 @@ }, "node_modules/dedent": { "version": "1.5.1", + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9117,6 +9263,7 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -9310,6 +9457,7 @@ }, "node_modules/emittery": { "version": "0.13.1", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10274,6 +10422,7 @@ }, "node_modules/expect": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -10288,6 +10437,7 @@ }, "node_modules/expect/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -10298,6 +10448,7 @@ }, "node_modules/expect/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -10313,10 +10464,12 @@ }, "node_modules/expect/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/expect/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -10324,6 +10477,7 @@ }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10337,6 +10491,7 @@ }, "node_modules/expect/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10351,6 +10506,7 @@ }, "node_modules/expect/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10361,6 +10517,7 @@ }, "node_modules/expect/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10368,6 +10525,7 @@ }, "node_modules/expect/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10375,6 +10533,7 @@ }, "node_modules/expect/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -10390,6 +10549,7 @@ }, "node_modules/expect/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12537,6 +12697,7 @@ }, "node_modules/jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12561,6 +12722,7 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -12573,6 +12735,7 @@ }, "node_modules/jest-changed-files/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12583,6 +12746,7 @@ }, "node_modules/jest-changed-files/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12598,10 +12762,12 @@ }, "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-changed-files/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12609,6 +12775,7 @@ }, "node_modules/jest-changed-files/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12622,6 +12789,7 @@ }, "node_modules/jest-changed-files/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12636,6 +12804,7 @@ }, "node_modules/jest-changed-files/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12646,6 +12815,7 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -12667,6 +12837,7 @@ }, "node_modules/jest-changed-files/node_modules/get-stream": { "version": "6.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12677,6 +12848,7 @@ }, "node_modules/jest-changed-files/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12684,6 +12856,7 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -12691,6 +12864,7 @@ }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12701,6 +12875,7 @@ }, "node_modules/jest-changed-files/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12716,6 +12891,7 @@ }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12723,6 +12899,7 @@ }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -12733,6 +12910,7 @@ }, "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -12746,10 +12924,12 @@ }, "node_modules/jest-changed-files/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12757,6 +12937,7 @@ }, "node_modules/jest-changed-files/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12767,6 +12948,7 @@ }, "node_modules/jest-circus": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -12796,6 +12978,7 @@ }, "node_modules/jest-circus/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12806,6 +12989,7 @@ }, "node_modules/jest-circus/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12821,10 +13005,12 @@ }, "node_modules/jest-circus/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12832,6 +13018,7 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12845,6 +13032,7 @@ }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12859,6 +13047,7 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12869,6 +13058,7 @@ }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12876,6 +13066,7 @@ }, "node_modules/jest-circus/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12891,6 +13082,7 @@ }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12903,6 +13095,7 @@ }, "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12913,6 +13106,7 @@ }, "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12920,6 +13114,7 @@ }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12930,6 +13125,7 @@ }, "node_modules/jest-cli": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12961,6 +13157,7 @@ }, "node_modules/jest-cli/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12971,6 +13168,7 @@ }, "node_modules/jest-cli/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12986,10 +13184,12 @@ }, "node_modules/jest-cli/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12997,6 +13197,7 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13010,6 +13211,7 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13024,6 +13226,7 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13034,6 +13237,7 @@ }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13041,6 +13245,7 @@ }, "node_modules/jest-cli/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13048,6 +13253,7 @@ }, "node_modules/jest-cli/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13063,6 +13269,7 @@ }, "node_modules/jest-cli/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13078,6 +13285,7 @@ }, "node_modules/jest-cli/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13090,6 +13298,7 @@ }, "node_modules/jest-cli/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13100,6 +13309,7 @@ }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13110,6 +13320,7 @@ }, "node_modules/jest-config": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13153,6 +13364,7 @@ }, "node_modules/jest-config/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13163,6 +13375,7 @@ }, "node_modules/jest-config/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13187,6 +13400,7 @@ }, "node_modules/jest-config/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13202,10 +13416,12 @@ }, "node_modules/jest-config/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13213,6 +13429,7 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13226,6 +13443,7 @@ }, "node_modules/jest-config/node_modules/babel-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -13245,6 +13463,7 @@ }, "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -13258,6 +13477,7 @@ }, "node_modules/jest-config/node_modules/babel-preset-jest": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -13272,6 +13492,7 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13286,6 +13507,7 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13296,6 +13518,7 @@ }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13303,6 +13526,7 @@ }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13310,6 +13534,7 @@ }, "node_modules/jest-config/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13333,6 +13558,7 @@ }, "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13340,6 +13566,7 @@ }, "node_modules/jest-config/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13358,6 +13585,7 @@ }, "node_modules/jest-config/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13373,6 +13601,7 @@ }, "node_modules/jest-config/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13388,6 +13617,7 @@ }, "node_modules/jest-config/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -13401,6 +13631,7 @@ }, "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13414,6 +13645,7 @@ }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13426,6 +13658,7 @@ }, "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13436,6 +13669,7 @@ }, "node_modules/jest-config/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13443,10 +13677,12 @@ }, "node_modules/jest-config/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13454,6 +13690,7 @@ }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13464,6 +13701,7 @@ }, "node_modules/jest-config/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -13475,6 +13713,7 @@ }, "node_modules/jest-diff": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13488,6 +13727,7 @@ }, "node_modules/jest-diff/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13498,10 +13738,12 @@ }, "node_modules/jest-diff/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13515,6 +13757,7 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13529,6 +13772,7 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13539,6 +13783,7 @@ }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13546,6 +13791,7 @@ }, "node_modules/jest-diff/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13553,6 +13799,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13565,6 +13812,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13575,6 +13823,7 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13585,6 +13834,7 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -13595,6 +13845,7 @@ }, "node_modules/jest-each": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13609,6 +13860,7 @@ }, "node_modules/jest-each/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13619,6 +13871,7 @@ }, "node_modules/jest-each/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13634,10 +13887,12 @@ }, "node_modules/jest-each/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13645,6 +13900,7 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13658,6 +13914,7 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13672,6 +13929,7 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13682,6 +13940,7 @@ }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13689,6 +13948,7 @@ }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13696,6 +13956,7 @@ }, "node_modules/jest-each/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13711,6 +13972,7 @@ }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13723,6 +13985,7 @@ }, "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13733,6 +13996,7 @@ }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13884,6 +14148,7 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -13899,6 +14164,7 @@ }, "node_modules/jest-environment-node/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13909,6 +14175,7 @@ }, "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13924,10 +14191,12 @@ }, "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-environment-node/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13935,6 +14204,7 @@ }, "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13948,6 +14218,7 @@ }, "node_modules/jest-environment-node/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13962,6 +14233,7 @@ }, "node_modules/jest-environment-node/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13972,6 +14244,7 @@ }, "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13979,6 +14252,7 @@ }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13994,6 +14268,7 @@ }, "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14490,6 +14765,7 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -14501,6 +14777,7 @@ }, "node_modules/jest-leak-detector/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14511,10 +14788,12 @@ }, "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-leak-detector/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14525,6 +14804,7 @@ }, "node_modules/jest-leak-detector/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14532,6 +14812,7 @@ }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14544,6 +14825,7 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -14557,6 +14839,7 @@ }, "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14567,10 +14850,12 @@ }, "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14584,6 +14869,7 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14598,6 +14884,7 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14608,6 +14895,7 @@ }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14615,6 +14903,7 @@ }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14622,6 +14911,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14634,6 +14924,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14644,6 +14935,7 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14654,6 +14946,7 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -14672,6 +14965,7 @@ }, "node_modules/jest-message-util/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14682,6 +14976,7 @@ }, "node_modules/jest-message-util/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14697,10 +14992,12 @@ }, "node_modules/jest-message-util/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-message-util/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14708,6 +15005,7 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14721,6 +15019,7 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14735,6 +15034,7 @@ }, "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14745,6 +15045,7 @@ }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14752,6 +15053,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14764,6 +15066,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14774,6 +15077,7 @@ }, "node_modules/jest-message-util/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14781,6 +15085,7 @@ }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14791,6 +15096,7 @@ }, "node_modules/jest-mock": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14803,6 +15109,7 @@ }, "node_modules/jest-mock/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14813,6 +15120,7 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14828,10 +15136,12 @@ }, "node_modules/jest-mock/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14839,6 +15149,7 @@ }, "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14852,6 +15163,7 @@ }, "node_modules/jest-mock/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14866,6 +15178,7 @@ }, "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14876,6 +15189,7 @@ }, "node_modules/jest-mock/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14883,6 +15197,7 @@ }, "node_modules/jest-mock/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14898,6 +15213,7 @@ }, "node_modules/jest-mock/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14949,6 +15265,7 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -14960,6 +15277,7 @@ }, "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15028,6 +15346,7 @@ }, "node_modules/jest-runner": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -15058,6 +15377,7 @@ }, "node_modules/jest-runner/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15068,6 +15388,7 @@ }, "node_modules/jest-runner/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15092,6 +15413,7 @@ }, "node_modules/jest-runner/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15107,10 +15429,12 @@ }, "node_modules/jest-runner/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15118,6 +15442,7 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15131,6 +15456,7 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15145,6 +15471,7 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15155,6 +15482,7 @@ }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15162,6 +15490,7 @@ }, "node_modules/jest-runner/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15169,6 +15498,7 @@ }, "node_modules/jest-runner/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15192,6 +15522,7 @@ }, "node_modules/jest-runner/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15199,6 +15530,7 @@ }, "node_modules/jest-runner/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15217,6 +15549,7 @@ }, "node_modules/jest-runner/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15232,6 +15565,7 @@ }, "node_modules/jest-runner/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15247,6 +15581,7 @@ }, "node_modules/jest-runner/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15260,6 +15595,7 @@ }, "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15273,6 +15609,7 @@ }, "node_modules/jest-runner/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15285,6 +15622,7 @@ }, "node_modules/jest-runner/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15295,6 +15633,7 @@ }, "node_modules/jest-runner/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15302,10 +15641,12 @@ }, "node_modules/jest-runner/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-runner/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15313,6 +15654,7 @@ }, "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15320,6 +15662,7 @@ }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -15328,6 +15671,7 @@ }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15338,6 +15682,7 @@ }, "node_modules/jest-runner/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15349,6 +15694,7 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -15380,6 +15726,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15390,6 +15737,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15414,6 +15762,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15429,10 +15778,12 @@ }, "node_modules/jest-runtime/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15440,6 +15791,7 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15453,6 +15805,7 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15467,6 +15820,7 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15477,6 +15831,7 @@ }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15484,6 +15839,7 @@ }, "node_modules/jest-runtime/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15491,6 +15847,7 @@ }, "node_modules/jest-runtime/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15514,6 +15871,7 @@ }, "node_modules/jest-runtime/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15521,6 +15879,7 @@ }, "node_modules/jest-runtime/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15539,6 +15898,7 @@ }, "node_modules/jest-runtime/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15554,6 +15914,7 @@ }, "node_modules/jest-runtime/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15569,6 +15930,7 @@ }, "node_modules/jest-runtime/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15582,6 +15944,7 @@ }, "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15595,6 +15958,7 @@ }, "node_modules/jest-runtime/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15607,6 +15971,7 @@ }, "node_modules/jest-runtime/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15617,6 +15982,7 @@ }, "node_modules/jest-runtime/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15624,10 +15990,12 @@ }, "node_modules/jest-runtime/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15635,6 +16003,7 @@ }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15645,6 +16014,7 @@ }, "node_modules/jest-runtime/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15667,6 +16037,7 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15696,6 +16067,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15706,6 +16078,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15730,6 +16103,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15745,10 +16119,12 @@ }, "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15756,6 +16132,7 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15769,6 +16146,7 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15783,6 +16161,7 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15793,6 +16172,7 @@ }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15800,6 +16180,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15807,6 +16188,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15830,6 +16212,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15837,6 +16220,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15852,6 +16236,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15865,6 +16250,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15878,6 +16264,7 @@ }, "node_modules/jest-snapshot/node_modules/lru-cache": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -15888,6 +16275,7 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15900,6 +16288,7 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15910,6 +16299,7 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.0", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -15923,10 +16313,12 @@ }, "node_modules/jest-snapshot/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-snapshot/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15934,6 +16326,7 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15944,6 +16337,7 @@ }, "node_modules/jest-snapshot/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15955,6 +16349,7 @@ }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/jest-util": { @@ -16422,6 +16817,7 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -16439,6 +16835,7 @@ }, "node_modules/jest-watcher/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16449,6 +16846,7 @@ }, "node_modules/jest-watcher/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16464,10 +16862,12 @@ }, "node_modules/jest-watcher/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16475,6 +16875,7 @@ }, "node_modules/jest-watcher/node_modules/ansi-escapes": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -16488,6 +16889,7 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16501,6 +16903,7 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16515,6 +16918,7 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16525,6 +16929,7 @@ }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16532,6 +16937,7 @@ }, "node_modules/jest-watcher/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16547,6 +16953,7 @@ }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16557,6 +16964,7 @@ }, "node_modules/jest-watcher/node_modules/type-fest": { "version": "0.21.3", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -16599,6 +17007,7 @@ }, "node_modules/jest/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16609,6 +17018,7 @@ }, "node_modules/jest/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16624,10 +17034,12 @@ }, "node_modules/jest/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16635,6 +17047,7 @@ }, "node_modules/jest/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16648,6 +17061,7 @@ }, "node_modules/jest/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16662,6 +17076,7 @@ }, "node_modules/jest/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16672,6 +17087,7 @@ }, "node_modules/jest/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16679,6 +17095,7 @@ }, "node_modules/jest/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -19563,6 +19980,7 @@ }, "node_modules/pure-rand": { "version": "6.1.0", + "dev": true, "funding": [ { "type": "individual", @@ -23769,6 +24187,7 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -25163,6 +25582,7 @@ }, "node_modules/yargs": { "version": "17.7.2", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -25179,6 +25599,7 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -25186,10 +25607,12 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25197,6 +25620,7 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", From 75ae484566460451fd6ec4a52b3b91556eb1b2e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:02:29 +0000 Subject: [PATCH 161/180] Bump yaml in /client Bumps and [yaml](https://github.com/eemeli/yaml). These dependencies needed to be updated together. Updates `yaml` from 1.10.2 to 1.10.3 - [Release notes](https://github.com/eemeli/yaml/releases) - [Commits](https://github.com/eemeli/yaml/compare/v1.10.2...v1.10.3) Updates `yaml` from 2.4.1 to 2.8.3 - [Release notes](https://github.com/eemeli/yaml/releases) - [Commits](https://github.com/eemeli/yaml/compare/v1.10.2...v1.10.3) Updates `yaml` from 2.8.2 to 2.8.3 - [Release notes](https://github.com/eemeli/yaml/releases) - [Commits](https://github.com/eemeli/yaml/compare/v1.10.2...v1.10.3) --- updated-dependencies: - dependency-name: yaml dependency-version: 1.10.3 dependency-type: indirect - dependency-name: yaml dependency-version: 2.8.3 dependency-type: indirect - dependency-name: yaml dependency-version: 2.8.3 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- client/package-lock.json | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 9fb742c5a..957f21668 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -17057,9 +17057,9 @@ } }, "node_modules/lint-staged/node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "dev": true, "license": "ISC", "bin": { @@ -18732,13 +18732,18 @@ } }, "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.4.1", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/postcss-loader": { @@ -25157,7 +25162,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "1.10.2", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "license": "ISC", "engines": { "node": ">= 6" From cf36c39848c90ca517dbe5e6b0b224cb37b1d802 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Mar 2026 00:03:57 +0000 Subject: [PATCH 162/180] Bump picomatch from 2.3.1 to 2.3.2 in /client Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2. - [Release notes](https://github.com/micromatch/picomatch/releases) - [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2) --- updated-dependencies: - dependency-name: picomatch dependency-version: 2.3.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- client/package-lock.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/package-lock.json b/client/package-lock.json index 9fb742c5a..e7e16fa67 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -18113,7 +18113,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" From 3779b662e126feb067934521b9e539b1e4f2cf07 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Mar 2026 07:12:20 +0000 Subject: [PATCH 163/180] Bump picomatch from 2.3.1 to 2.3.2 in /server Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2. - [Release notes](https://github.com/micromatch/picomatch/releases) - [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2) --- updated-dependencies: - dependency-name: picomatch dependency-version: 2.3.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- server/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/package-lock.json b/server/package-lock.json index 14efd9a10..f055af876 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -5343,9 +5343,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -6484,9 +6484,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { From 7ca311f16205d950ed9cdedffb7cc7a160834ab2 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Thu, 26 Mar 2026 11:52:23 -0400 Subject: [PATCH 164/180] fix package lock --- client/package-lock.json | 424 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 424 insertions(+) diff --git a/client/package-lock.json b/client/package-lock.json index 9fb742c5a..12f561050 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -2808,6 +2808,7 @@ }, "node_modules/@jest/console": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2823,6 +2824,7 @@ }, "node_modules/@jest/console/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2833,6 +2835,7 @@ }, "node_modules/@jest/console/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2848,10 +2851,12 @@ }, "node_modules/@jest/console/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2859,6 +2864,7 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2872,6 +2878,7 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2886,6 +2893,7 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2896,6 +2904,7 @@ }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2903,6 +2912,7 @@ }, "node_modules/@jest/console/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2918,6 +2928,7 @@ }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2925,6 +2936,7 @@ }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -2935,6 +2947,7 @@ }, "node_modules/@jest/core": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2980,6 +2993,7 @@ }, "node_modules/@jest/core/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2990,6 +3004,7 @@ }, "node_modules/@jest/core/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3014,6 +3029,7 @@ }, "node_modules/@jest/core/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3029,10 +3045,12 @@ }, "node_modules/@jest/core/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3040,6 +3058,7 @@ }, "node_modules/@jest/core/node_modules/ansi-escapes": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -3053,6 +3072,7 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3066,6 +3086,7 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3080,6 +3101,7 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3090,6 +3112,7 @@ }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3097,6 +3120,7 @@ }, "node_modules/@jest/core/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3104,6 +3128,7 @@ }, "node_modules/@jest/core/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3127,6 +3152,7 @@ }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3134,6 +3160,7 @@ }, "node_modules/@jest/core/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -3152,6 +3179,7 @@ }, "node_modules/@jest/core/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3167,6 +3195,7 @@ }, "node_modules/@jest/core/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3182,6 +3211,7 @@ }, "node_modules/@jest/core/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3195,6 +3225,7 @@ }, "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3208,6 +3239,7 @@ }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3220,6 +3252,7 @@ }, "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3230,6 +3263,7 @@ }, "node_modules/@jest/core/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3237,10 +3271,12 @@ }, "node_modules/@jest/core/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3248,6 +3284,7 @@ }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3258,6 +3295,7 @@ }, "node_modules/@jest/core/node_modules/type-fest": { "version": "0.21.3", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -3268,6 +3306,7 @@ }, "node_modules/@jest/core/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3279,6 +3318,7 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -3292,6 +3332,7 @@ }, "node_modules/@jest/environment/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3302,6 +3343,7 @@ }, "node_modules/@jest/environment/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3317,10 +3359,12 @@ }, "node_modules/@jest/environment/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/environment/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3328,6 +3372,7 @@ }, "node_modules/@jest/environment/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3341,6 +3386,7 @@ }, "node_modules/@jest/environment/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3355,6 +3401,7 @@ }, "node_modules/@jest/environment/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3365,6 +3412,7 @@ }, "node_modules/@jest/environment/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3372,6 +3420,7 @@ }, "node_modules/@jest/environment/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3382,6 +3431,7 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -3393,6 +3443,7 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -3403,6 +3454,7 @@ }, "node_modules/@jest/expect-utils/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3410,6 +3462,7 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3425,6 +3478,7 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3435,6 +3489,7 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3450,10 +3505,12 @@ }, "node_modules/@jest/fake-timers/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3461,6 +3518,7 @@ }, "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3474,6 +3532,7 @@ }, "node_modules/@jest/fake-timers/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3488,6 +3547,7 @@ }, "node_modules/@jest/fake-timers/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3498,6 +3558,7 @@ }, "node_modules/@jest/fake-timers/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3505,6 +3566,7 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3520,6 +3582,7 @@ }, "node_modules/@jest/fake-timers/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3530,6 +3593,7 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -3543,6 +3607,7 @@ }, "node_modules/@jest/globals/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3553,6 +3618,7 @@ }, "node_modules/@jest/globals/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3568,10 +3634,12 @@ }, "node_modules/@jest/globals/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/globals/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3579,6 +3647,7 @@ }, "node_modules/@jest/globals/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3592,6 +3661,7 @@ }, "node_modules/@jest/globals/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3606,6 +3676,7 @@ }, "node_modules/@jest/globals/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3616,6 +3687,7 @@ }, "node_modules/@jest/globals/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3623,6 +3695,7 @@ }, "node_modules/@jest/globals/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3633,6 +3706,7 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -3674,6 +3748,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3684,6 +3759,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3708,6 +3784,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3723,10 +3800,12 @@ }, "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3734,6 +3813,7 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3747,6 +3827,7 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3761,6 +3842,7 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3771,6 +3853,7 @@ }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3778,6 +3861,7 @@ }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.2", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -3792,6 +3876,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3815,6 +3900,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3822,6 +3908,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3837,6 +3924,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3850,6 +3938,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3863,6 +3952,7 @@ }, "node_modules/@jest/reporters/node_modules/lru-cache": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -3873,6 +3963,7 @@ }, "node_modules/@jest/reporters/node_modules/semver": { "version": "7.6.0", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -3886,10 +3977,12 @@ }, "node_modules/@jest/reporters/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3897,6 +3990,7 @@ }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3907,6 +4001,7 @@ }, "node_modules/@jest/reporters/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3918,6 +4013,7 @@ }, "node_modules/@jest/reporters/node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/@jest/schemas": { @@ -3932,6 +4028,7 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -3944,6 +4041,7 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -3957,6 +4055,7 @@ }, "node_modules/@jest/test-result/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3967,6 +4066,7 @@ }, "node_modules/@jest/test-result/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3982,10 +4082,12 @@ }, "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-result/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3993,6 +4095,7 @@ }, "node_modules/@jest/test-result/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4006,6 +4109,7 @@ }, "node_modules/@jest/test-result/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4020,6 +4124,7 @@ }, "node_modules/@jest/test-result/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4030,6 +4135,7 @@ }, "node_modules/@jest/test-result/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4037,6 +4143,7 @@ }, "node_modules/@jest/test-result/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4047,6 +4154,7 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -4060,6 +4168,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4070,6 +4179,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4085,10 +4195,12 @@ }, "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4096,6 +4208,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4109,6 +4222,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4123,6 +4237,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4133,6 +4248,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4140,6 +4256,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4163,6 +4280,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4170,6 +4288,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4185,6 +4304,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -4198,6 +4318,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4211,6 +4332,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4218,6 +4340,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5129,6 +5252,7 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -5136,6 +5260,7 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -5842,6 +5967,7 @@ }, "node_modules/@types/react": { "version": "18.2.71", + "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -5878,6 +6004,7 @@ }, "node_modules/@types/scheduler": { "version": "0.23.0", + "dev": true, "license": "MIT" }, "node_modules/@types/semver": { @@ -7725,6 +7852,7 @@ }, "node_modules/cliui": { "version": "8.0.1", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -7737,6 +7865,7 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -7750,6 +7879,7 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -7760,10 +7890,12 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7771,6 +7903,7 @@ }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7783,6 +7916,7 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8052,6 +8186,7 @@ }, "node_modules/create-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8071,6 +8206,7 @@ }, "node_modules/create-jest/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -8081,6 +8217,7 @@ }, "node_modules/create-jest/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -8096,10 +8233,12 @@ }, "node_modules/create-jest/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/create-jest/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -8107,6 +8246,7 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -8120,6 +8260,7 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -8134,6 +8275,7 @@ }, "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -8144,6 +8286,7 @@ }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8151,6 +8294,7 @@ }, "node_modules/create-jest/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8166,6 +8310,7 @@ }, "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -8873,6 +9018,7 @@ }, "node_modules/dedent": { "version": "1.5.1", + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9117,6 +9263,7 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -9310,6 +9457,7 @@ }, "node_modules/emittery": { "version": "0.13.1", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10274,6 +10422,7 @@ }, "node_modules/expect": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -10288,6 +10437,7 @@ }, "node_modules/expect/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -10298,6 +10448,7 @@ }, "node_modules/expect/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -10313,10 +10464,12 @@ }, "node_modules/expect/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/expect/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -10324,6 +10477,7 @@ }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10337,6 +10491,7 @@ }, "node_modules/expect/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10351,6 +10506,7 @@ }, "node_modules/expect/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10361,6 +10517,7 @@ }, "node_modules/expect/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10368,6 +10525,7 @@ }, "node_modules/expect/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10375,6 +10533,7 @@ }, "node_modules/expect/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -10390,6 +10549,7 @@ }, "node_modules/expect/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12539,6 +12699,7 @@ }, "node_modules/jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12563,6 +12724,7 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -12575,6 +12737,7 @@ }, "node_modules/jest-changed-files/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12585,6 +12748,7 @@ }, "node_modules/jest-changed-files/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12600,10 +12764,12 @@ }, "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-changed-files/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12611,6 +12777,7 @@ }, "node_modules/jest-changed-files/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12624,6 +12791,7 @@ }, "node_modules/jest-changed-files/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12638,6 +12806,7 @@ }, "node_modules/jest-changed-files/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12648,6 +12817,7 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -12669,6 +12839,7 @@ }, "node_modules/jest-changed-files/node_modules/get-stream": { "version": "6.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12679,6 +12850,7 @@ }, "node_modules/jest-changed-files/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12686,6 +12858,7 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -12693,6 +12866,7 @@ }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12703,6 +12877,7 @@ }, "node_modules/jest-changed-files/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12718,6 +12893,7 @@ }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12725,6 +12901,7 @@ }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -12735,6 +12912,7 @@ }, "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -12748,10 +12926,12 @@ }, "node_modules/jest-changed-files/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12759,6 +12939,7 @@ }, "node_modules/jest-changed-files/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12769,6 +12950,7 @@ }, "node_modules/jest-circus": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -12798,6 +12980,7 @@ }, "node_modules/jest-circus/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12808,6 +12991,7 @@ }, "node_modules/jest-circus/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12823,10 +13007,12 @@ }, "node_modules/jest-circus/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12834,6 +13020,7 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12847,6 +13034,7 @@ }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12861,6 +13049,7 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12871,6 +13060,7 @@ }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12878,6 +13068,7 @@ }, "node_modules/jest-circus/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12893,6 +13084,7 @@ }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12905,6 +13097,7 @@ }, "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12915,6 +13108,7 @@ }, "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12922,6 +13116,7 @@ }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12932,6 +13127,7 @@ }, "node_modules/jest-cli": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12963,6 +13159,7 @@ }, "node_modules/jest-cli/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12973,6 +13170,7 @@ }, "node_modules/jest-cli/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12988,10 +13186,12 @@ }, "node_modules/jest-cli/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12999,6 +13199,7 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13012,6 +13213,7 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13026,6 +13228,7 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13036,6 +13239,7 @@ }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13043,6 +13247,7 @@ }, "node_modules/jest-cli/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13050,6 +13255,7 @@ }, "node_modules/jest-cli/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13065,6 +13271,7 @@ }, "node_modules/jest-cli/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13080,6 +13287,7 @@ }, "node_modules/jest-cli/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13092,6 +13300,7 @@ }, "node_modules/jest-cli/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13102,6 +13311,7 @@ }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13112,6 +13322,7 @@ }, "node_modules/jest-config": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13155,6 +13366,7 @@ }, "node_modules/jest-config/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13165,6 +13377,7 @@ }, "node_modules/jest-config/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13189,6 +13402,7 @@ }, "node_modules/jest-config/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13204,10 +13418,12 @@ }, "node_modules/jest-config/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13215,6 +13431,7 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13228,6 +13445,7 @@ }, "node_modules/jest-config/node_modules/babel-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -13247,6 +13465,7 @@ }, "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -13260,6 +13479,7 @@ }, "node_modules/jest-config/node_modules/babel-preset-jest": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -13274,6 +13494,7 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13288,6 +13509,7 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13298,6 +13520,7 @@ }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13305,6 +13528,7 @@ }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13312,6 +13536,7 @@ }, "node_modules/jest-config/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13335,6 +13560,7 @@ }, "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13342,6 +13568,7 @@ }, "node_modules/jest-config/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13360,6 +13587,7 @@ }, "node_modules/jest-config/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13375,6 +13603,7 @@ }, "node_modules/jest-config/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13390,6 +13619,7 @@ }, "node_modules/jest-config/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -13403,6 +13633,7 @@ }, "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13416,6 +13647,7 @@ }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13428,6 +13660,7 @@ }, "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13438,6 +13671,7 @@ }, "node_modules/jest-config/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13445,10 +13679,12 @@ }, "node_modules/jest-config/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13456,6 +13692,7 @@ }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13466,6 +13703,7 @@ }, "node_modules/jest-config/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -13477,6 +13715,7 @@ }, "node_modules/jest-diff": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13490,6 +13729,7 @@ }, "node_modules/jest-diff/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13500,10 +13740,12 @@ }, "node_modules/jest-diff/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13517,6 +13759,7 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13531,6 +13774,7 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13541,6 +13785,7 @@ }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13548,6 +13793,7 @@ }, "node_modules/jest-diff/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13555,6 +13801,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13567,6 +13814,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13577,6 +13825,7 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13587,6 +13836,7 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -13597,6 +13847,7 @@ }, "node_modules/jest-each": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13611,6 +13862,7 @@ }, "node_modules/jest-each/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13621,6 +13873,7 @@ }, "node_modules/jest-each/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13636,10 +13889,12 @@ }, "node_modules/jest-each/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13647,6 +13902,7 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13660,6 +13916,7 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13674,6 +13931,7 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13684,6 +13942,7 @@ }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13691,6 +13950,7 @@ }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13698,6 +13958,7 @@ }, "node_modules/jest-each/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13713,6 +13974,7 @@ }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13725,6 +13987,7 @@ }, "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13735,6 +13998,7 @@ }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13886,6 +14150,7 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -13901,6 +14166,7 @@ }, "node_modules/jest-environment-node/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13911,6 +14177,7 @@ }, "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13926,10 +14193,12 @@ }, "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-environment-node/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13937,6 +14206,7 @@ }, "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13950,6 +14220,7 @@ }, "node_modules/jest-environment-node/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13964,6 +14235,7 @@ }, "node_modules/jest-environment-node/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13974,6 +14246,7 @@ }, "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13981,6 +14254,7 @@ }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13996,6 +14270,7 @@ }, "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14492,6 +14767,7 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -14503,6 +14779,7 @@ }, "node_modules/jest-leak-detector/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14513,10 +14790,12 @@ }, "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-leak-detector/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14527,6 +14806,7 @@ }, "node_modules/jest-leak-detector/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14534,6 +14814,7 @@ }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14546,6 +14827,7 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -14559,6 +14841,7 @@ }, "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14569,10 +14852,12 @@ }, "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14586,6 +14871,7 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14600,6 +14886,7 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14610,6 +14897,7 @@ }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14617,6 +14905,7 @@ }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14624,6 +14913,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14636,6 +14926,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14646,6 +14937,7 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14656,6 +14948,7 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -14674,6 +14967,7 @@ }, "node_modules/jest-message-util/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14684,6 +14978,7 @@ }, "node_modules/jest-message-util/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14699,10 +14994,12 @@ }, "node_modules/jest-message-util/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-message-util/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14710,6 +15007,7 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14723,6 +15021,7 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14737,6 +15036,7 @@ }, "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14747,6 +15047,7 @@ }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14754,6 +15055,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14766,6 +15068,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14776,6 +15079,7 @@ }, "node_modules/jest-message-util/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14783,6 +15087,7 @@ }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14793,6 +15098,7 @@ }, "node_modules/jest-mock": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14805,6 +15111,7 @@ }, "node_modules/jest-mock/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14815,6 +15122,7 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14830,10 +15138,12 @@ }, "node_modules/jest-mock/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14841,6 +15151,7 @@ }, "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14854,6 +15165,7 @@ }, "node_modules/jest-mock/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14868,6 +15180,7 @@ }, "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14878,6 +15191,7 @@ }, "node_modules/jest-mock/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14885,6 +15199,7 @@ }, "node_modules/jest-mock/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14900,6 +15215,7 @@ }, "node_modules/jest-mock/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14951,6 +15267,7 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -14962,6 +15279,7 @@ }, "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15030,6 +15348,7 @@ }, "node_modules/jest-runner": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -15060,6 +15379,7 @@ }, "node_modules/jest-runner/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15070,6 +15390,7 @@ }, "node_modules/jest-runner/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15094,6 +15415,7 @@ }, "node_modules/jest-runner/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15109,10 +15431,12 @@ }, "node_modules/jest-runner/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15120,6 +15444,7 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15133,6 +15458,7 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15147,6 +15473,7 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15157,6 +15484,7 @@ }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15164,6 +15492,7 @@ }, "node_modules/jest-runner/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15171,6 +15500,7 @@ }, "node_modules/jest-runner/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15194,6 +15524,7 @@ }, "node_modules/jest-runner/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15201,6 +15532,7 @@ }, "node_modules/jest-runner/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15219,6 +15551,7 @@ }, "node_modules/jest-runner/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15234,6 +15567,7 @@ }, "node_modules/jest-runner/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15249,6 +15583,7 @@ }, "node_modules/jest-runner/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15262,6 +15597,7 @@ }, "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15275,6 +15611,7 @@ }, "node_modules/jest-runner/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15287,6 +15624,7 @@ }, "node_modules/jest-runner/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15297,6 +15635,7 @@ }, "node_modules/jest-runner/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15304,10 +15643,12 @@ }, "node_modules/jest-runner/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-runner/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15315,6 +15656,7 @@ }, "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15322,6 +15664,7 @@ }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -15330,6 +15673,7 @@ }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15340,6 +15684,7 @@ }, "node_modules/jest-runner/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15351,6 +15696,7 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -15382,6 +15728,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15392,6 +15739,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15416,6 +15764,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15431,10 +15780,12 @@ }, "node_modules/jest-runtime/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15442,6 +15793,7 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15455,6 +15807,7 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15469,6 +15822,7 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15479,6 +15833,7 @@ }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15486,6 +15841,7 @@ }, "node_modules/jest-runtime/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15493,6 +15849,7 @@ }, "node_modules/jest-runtime/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15516,6 +15873,7 @@ }, "node_modules/jest-runtime/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15523,6 +15881,7 @@ }, "node_modules/jest-runtime/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15541,6 +15900,7 @@ }, "node_modules/jest-runtime/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15556,6 +15916,7 @@ }, "node_modules/jest-runtime/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15571,6 +15932,7 @@ }, "node_modules/jest-runtime/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15584,6 +15946,7 @@ }, "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15597,6 +15960,7 @@ }, "node_modules/jest-runtime/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15609,6 +15973,7 @@ }, "node_modules/jest-runtime/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15619,6 +15984,7 @@ }, "node_modules/jest-runtime/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15626,10 +15992,12 @@ }, "node_modules/jest-runtime/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15637,6 +16005,7 @@ }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15647,6 +16016,7 @@ }, "node_modules/jest-runtime/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15669,6 +16039,7 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15698,6 +16069,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15708,6 +16080,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15732,6 +16105,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15747,10 +16121,12 @@ }, "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15758,6 +16134,7 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15771,6 +16148,7 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15785,6 +16163,7 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15795,6 +16174,7 @@ }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15802,6 +16182,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15809,6 +16190,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15832,6 +16214,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15839,6 +16222,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15854,6 +16238,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15867,6 +16252,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15880,6 +16266,7 @@ }, "node_modules/jest-snapshot/node_modules/lru-cache": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -15890,6 +16277,7 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15902,6 +16290,7 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15912,6 +16301,7 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.0", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -15925,10 +16315,12 @@ }, "node_modules/jest-snapshot/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-snapshot/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15936,6 +16328,7 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15946,6 +16339,7 @@ }, "node_modules/jest-snapshot/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15957,6 +16351,7 @@ }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/jest-util": { @@ -16424,6 +16819,7 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -16441,6 +16837,7 @@ }, "node_modules/jest-watcher/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16451,6 +16848,7 @@ }, "node_modules/jest-watcher/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16466,10 +16864,12 @@ }, "node_modules/jest-watcher/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16477,6 +16877,7 @@ }, "node_modules/jest-watcher/node_modules/ansi-escapes": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -16490,6 +16891,7 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16503,6 +16905,7 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16517,6 +16920,7 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16527,6 +16931,7 @@ }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16534,6 +16939,7 @@ }, "node_modules/jest-watcher/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16549,6 +16955,7 @@ }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16559,6 +16966,7 @@ }, "node_modules/jest-watcher/node_modules/type-fest": { "version": "0.21.3", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -16601,6 +17009,7 @@ }, "node_modules/jest/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16611,6 +17020,7 @@ }, "node_modules/jest/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16626,10 +17036,12 @@ }, "node_modules/jest/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16637,6 +17049,7 @@ }, "node_modules/jest/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16650,6 +17063,7 @@ }, "node_modules/jest/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16664,6 +17078,7 @@ }, "node_modules/jest/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16674,6 +17089,7 @@ }, "node_modules/jest/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16681,6 +17097,7 @@ }, "node_modules/jest/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -19565,6 +19982,7 @@ }, "node_modules/pure-rand": { "version": "6.1.0", + "dev": true, "funding": [ { "type": "individual", @@ -23771,6 +24189,7 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -25165,6 +25584,7 @@ }, "node_modules/yargs": { "version": "17.7.2", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -25181,6 +25601,7 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -25188,10 +25609,12 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25199,6 +25622,7 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", From 6b3d7c5449fa71115032e8752855b978de82c402 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Thu, 26 Mar 2026 11:58:49 -0400 Subject: [PATCH 165/180] Puts padding above NavigationPane whether or not it is rendered as sticky --- client/src/components/all-components/Lab/LabWindow.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/all-components/Lab/LabWindow.js b/client/src/components/all-components/Lab/LabWindow.js index d198a19e5..aef60f4ab 100644 --- a/client/src/components/all-components/Lab/LabWindow.js +++ b/client/src/components/all-components/Lab/LabWindow.js @@ -51,7 +51,7 @@ const LabWindow = (props) => { >
      From 9bdf189529a3b115c15d57ad79f1b4cf876ac0bf Mon Sep 17 00:00:00 2001 From: Owen Luts <112586252+shmowen@users.noreply.github.com> Date: Thu, 26 Mar 2026 12:17:17 -0400 Subject: [PATCH 166/180] Fix className attribute in Reinforcement component --- client/src/components/body/Reinforcement.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/body/Reinforcement.js b/client/src/components/body/Reinforcement.js index e4282ccdd..b35085c20 100644 --- a/client/src/components/body/Reinforcement.js +++ b/client/src/components/body/Reinforcement.js @@ -28,7 +28,7 @@ const Reinforcement = (props) => { } return ( -
      +

      Reinforcement

      Here is some supplemental material to reinforce the topic. From 3bcbb82649e1f2258a979eb2ad0d7b2a131e20c5 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Thu, 26 Mar 2026 21:27:40 -0400 Subject: [PATCH 167/180] Work on invalid page to match redesign kinda --- client/src/pages/landingpage/error.js | 69 ++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 6 deletions(-) diff --git a/client/src/pages/landingpage/error.js b/client/src/pages/landingpage/error.js index f3217207e..666ae690a 100644 --- a/client/src/pages/landingpage/error.js +++ b/client/src/pages/landingpage/error.js @@ -1,17 +1,74 @@ import React from "react"; +import useScroll from "src/use-hooks/useScroll"; import { navigate } from "@reach/router"; import ALLButton from "src/components/all-components/ALLButton"; -import useScroll from "src/use-hooks/useScroll"; const Error = () => { useScroll(); return ( -
      -

      Invalid Page

      -

      Please click the button to navigate home.

      - navigate("/")} /> -
      +
      +
      + {/* Left Side */} +
      +
      +
      +

      404

      +
      +
      +
      +
      + + {/* Right Side */} +
      +
      +
      +

      + Invalid Page +

      +

      + The URL you entered either does not exist or is not accessible! + Please click the button to navigate home. +

      +
      + navigate("/")} /> +
      +
      +
      +
      +
      +
      +
      ); }; From e5880e7270f6e719a47c258d94ba676ddba50c6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Mar 2026 01:06:31 +0000 Subject: [PATCH 168/180] Bump node-forge from 1.3.3 to 1.4.0 in /client Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.3.3 to 1.4.0. - [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md) - [Commits](https://github.com/digitalbazaar/forge/compare/v1.3.3...v1.4.0) --- updated-dependencies: - dependency-name: node-forge dependency-version: 1.4.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- client/package-lock.json | 430 +-------------------------------------- 1 file changed, 3 insertions(+), 427 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 608ddfd14..21147ae9f 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -2808,7 +2808,6 @@ }, "node_modules/@jest/console": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2824,7 +2823,6 @@ }, "node_modules/@jest/console/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2835,7 +2833,6 @@ }, "node_modules/@jest/console/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2851,12 +2848,10 @@ }, "node_modules/@jest/console/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2864,7 +2859,6 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2878,7 +2872,6 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2893,7 +2886,6 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2904,7 +2896,6 @@ }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2912,7 +2903,6 @@ }, "node_modules/@jest/console/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2928,7 +2918,6 @@ }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2936,7 +2925,6 @@ }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -2947,7 +2935,6 @@ }, "node_modules/@jest/core": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2993,7 +2980,6 @@ }, "node_modules/@jest/core/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3004,7 +2990,6 @@ }, "node_modules/@jest/core/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3029,7 +3014,6 @@ }, "node_modules/@jest/core/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3045,12 +3029,10 @@ }, "node_modules/@jest/core/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3058,7 +3040,6 @@ }, "node_modules/@jest/core/node_modules/ansi-escapes": { "version": "4.3.2", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -3072,7 +3053,6 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3086,7 +3066,6 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3101,7 +3080,6 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3112,7 +3090,6 @@ }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3120,7 +3097,6 @@ }, "node_modules/@jest/core/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3128,7 +3104,6 @@ }, "node_modules/@jest/core/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3152,7 +3127,6 @@ }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3160,7 +3134,6 @@ }, "node_modules/@jest/core/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -3179,7 +3152,6 @@ }, "node_modules/@jest/core/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3195,7 +3167,6 @@ }, "node_modules/@jest/core/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3211,7 +3182,6 @@ }, "node_modules/@jest/core/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3225,7 +3195,6 @@ }, "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3239,7 +3208,6 @@ }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3252,7 +3220,6 @@ }, "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3263,7 +3230,6 @@ }, "node_modules/@jest/core/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3271,12 +3237,10 @@ }, "node_modules/@jest/core/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3284,7 +3248,6 @@ }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3295,7 +3258,6 @@ }, "node_modules/@jest/core/node_modules/type-fest": { "version": "0.21.3", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -3306,7 +3268,6 @@ }, "node_modules/@jest/core/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3318,7 +3279,6 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -3332,7 +3292,6 @@ }, "node_modules/@jest/environment/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3343,7 +3302,6 @@ }, "node_modules/@jest/environment/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3359,12 +3317,10 @@ }, "node_modules/@jest/environment/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/environment/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3372,7 +3328,6 @@ }, "node_modules/@jest/environment/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3386,7 +3341,6 @@ }, "node_modules/@jest/environment/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3401,7 +3355,6 @@ }, "node_modules/@jest/environment/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3412,7 +3365,6 @@ }, "node_modules/@jest/environment/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3420,7 +3372,6 @@ }, "node_modules/@jest/environment/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3431,7 +3382,6 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -3443,7 +3393,6 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -3454,7 +3403,6 @@ }, "node_modules/@jest/expect-utils/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3462,7 +3410,6 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3478,7 +3425,6 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3489,7 +3435,6 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3505,12 +3450,10 @@ }, "node_modules/@jest/fake-timers/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3518,7 +3461,6 @@ }, "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3532,7 +3474,6 @@ }, "node_modules/@jest/fake-timers/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3547,7 +3488,6 @@ }, "node_modules/@jest/fake-timers/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3558,7 +3498,6 @@ }, "node_modules/@jest/fake-timers/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3566,7 +3505,6 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3582,7 +3520,6 @@ }, "node_modules/@jest/fake-timers/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3593,7 +3530,6 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -3607,7 +3543,6 @@ }, "node_modules/@jest/globals/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3618,7 +3553,6 @@ }, "node_modules/@jest/globals/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3634,12 +3568,10 @@ }, "node_modules/@jest/globals/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/globals/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3647,7 +3579,6 @@ }, "node_modules/@jest/globals/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3661,7 +3592,6 @@ }, "node_modules/@jest/globals/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3676,7 +3606,6 @@ }, "node_modules/@jest/globals/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3687,7 +3616,6 @@ }, "node_modules/@jest/globals/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3695,7 +3623,6 @@ }, "node_modules/@jest/globals/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3706,7 +3633,6 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -3748,7 +3674,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3759,7 +3684,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3784,7 +3708,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3800,12 +3723,10 @@ }, "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3813,7 +3734,6 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3827,7 +3747,6 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3842,7 +3761,6 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3853,7 +3771,6 @@ }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3861,7 +3778,6 @@ }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.2", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -3876,7 +3792,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3900,7 +3815,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3908,7 +3822,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3924,7 +3837,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3938,7 +3850,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3952,7 +3863,6 @@ }, "node_modules/@jest/reporters/node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -3963,7 +3873,6 @@ }, "node_modules/@jest/reporters/node_modules/semver": { "version": "7.6.0", - "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -3977,12 +3886,10 @@ }, "node_modules/@jest/reporters/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3990,7 +3897,6 @@ }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4001,7 +3907,6 @@ }, "node_modules/@jest/reporters/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -4013,7 +3918,6 @@ }, "node_modules/@jest/reporters/node_modules/yallist": { "version": "4.0.0", - "dev": true, "license": "ISC" }, "node_modules/@jest/schemas": { @@ -4028,7 +3932,6 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -4041,7 +3944,6 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -4055,7 +3957,6 @@ }, "node_modules/@jest/test-result/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4066,7 +3967,6 @@ }, "node_modules/@jest/test-result/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4082,12 +3982,10 @@ }, "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/test-result/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4095,7 +3993,6 @@ }, "node_modules/@jest/test-result/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4109,7 +4006,6 @@ }, "node_modules/@jest/test-result/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4124,7 +4020,6 @@ }, "node_modules/@jest/test-result/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4135,7 +4030,6 @@ }, "node_modules/@jest/test-result/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4143,7 +4037,6 @@ }, "node_modules/@jest/test-result/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4154,7 +4047,6 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -4168,7 +4060,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4179,7 +4070,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4195,12 +4085,10 @@ }, "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4208,7 +4096,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4222,7 +4109,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4237,7 +4123,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4248,7 +4133,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4256,7 +4140,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4280,7 +4163,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4288,7 +4170,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4304,7 +4185,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -4318,7 +4198,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4332,7 +4211,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4340,7 +4218,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5252,7 +5129,6 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -5260,7 +5136,6 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -5967,7 +5842,6 @@ }, "node_modules/@types/react": { "version": "18.2.71", - "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -6004,7 +5878,6 @@ }, "node_modules/@types/scheduler": { "version": "0.23.0", - "dev": true, "license": "MIT" }, "node_modules/@types/semver": { @@ -7852,7 +7725,6 @@ }, "node_modules/cliui": { "version": "8.0.1", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -7865,7 +7737,6 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -7879,7 +7750,6 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -7890,12 +7760,10 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7903,7 +7771,6 @@ }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7916,7 +7783,6 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8186,7 +8052,6 @@ }, "node_modules/create-jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8206,7 +8071,6 @@ }, "node_modules/create-jest/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -8217,7 +8081,6 @@ }, "node_modules/create-jest/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -8233,12 +8096,10 @@ }, "node_modules/create-jest/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/create-jest/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -8246,7 +8107,6 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -8260,7 +8120,6 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -8275,7 +8134,6 @@ }, "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -8286,7 +8144,6 @@ }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8294,7 +8151,6 @@ }, "node_modules/create-jest/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8310,7 +8166,6 @@ }, "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9018,7 +8873,6 @@ }, "node_modules/dedent": { "version": "1.5.1", - "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9263,7 +9117,6 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -9457,7 +9310,6 @@ }, "node_modules/emittery": { "version": "0.13.1", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10422,7 +10274,6 @@ }, "node_modules/expect": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -10437,7 +10288,6 @@ }, "node_modules/expect/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -10448,7 +10298,6 @@ }, "node_modules/expect/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -10464,12 +10313,10 @@ }, "node_modules/expect/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/expect/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -10477,7 +10324,6 @@ }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10491,7 +10337,6 @@ }, "node_modules/expect/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10506,7 +10351,6 @@ }, "node_modules/expect/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10517,7 +10361,6 @@ }, "node_modules/expect/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10525,7 +10368,6 @@ }, "node_modules/expect/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10533,7 +10375,6 @@ }, "node_modules/expect/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -10549,7 +10390,6 @@ }, "node_modules/expect/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12699,7 +12539,6 @@ }, "node_modules/jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12724,7 +12563,6 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -12737,7 +12575,6 @@ }, "node_modules/jest-changed-files/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12748,7 +12585,6 @@ }, "node_modules/jest-changed-files/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12764,12 +12600,10 @@ }, "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-changed-files/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12777,7 +12611,6 @@ }, "node_modules/jest-changed-files/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12791,7 +12624,6 @@ }, "node_modules/jest-changed-files/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12806,7 +12638,6 @@ }, "node_modules/jest-changed-files/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12817,7 +12648,6 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", - "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -12839,7 +12669,6 @@ }, "node_modules/jest-changed-files/node_modules/get-stream": { "version": "6.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12850,7 +12679,6 @@ }, "node_modules/jest-changed-files/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12858,7 +12686,6 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -12866,7 +12693,6 @@ }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12877,7 +12703,6 @@ }, "node_modules/jest-changed-files/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12893,7 +12718,6 @@ }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12901,7 +12725,6 @@ }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -12912,7 +12735,6 @@ }, "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -12926,12 +12748,10 @@ }, "node_modules/jest-changed-files/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12939,7 +12759,6 @@ }, "node_modules/jest-changed-files/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12950,7 +12769,6 @@ }, "node_modules/jest-circus": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -12980,7 +12798,6 @@ }, "node_modules/jest-circus/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12991,7 +12808,6 @@ }, "node_modules/jest-circus/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13007,12 +12823,10 @@ }, "node_modules/jest-circus/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13020,7 +12834,6 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13034,7 +12847,6 @@ }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13049,7 +12861,6 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13060,7 +12871,6 @@ }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13068,7 +12878,6 @@ }, "node_modules/jest-circus/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13084,7 +12893,6 @@ }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13097,7 +12905,6 @@ }, "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13108,7 +12915,6 @@ }, "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13116,7 +12922,6 @@ }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13127,7 +12932,6 @@ }, "node_modules/jest-cli": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -13159,7 +12963,6 @@ }, "node_modules/jest-cli/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13170,7 +12973,6 @@ }, "node_modules/jest-cli/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13186,12 +12988,10 @@ }, "node_modules/jest-cli/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13199,7 +12999,6 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13213,7 +13012,6 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13228,7 +13026,6 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13239,7 +13036,6 @@ }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13247,7 +13043,6 @@ }, "node_modules/jest-cli/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13255,7 +13050,6 @@ }, "node_modules/jest-cli/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13271,7 +13065,6 @@ }, "node_modules/jest-cli/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13287,7 +13080,6 @@ }, "node_modules/jest-cli/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13300,7 +13092,6 @@ }, "node_modules/jest-cli/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13311,7 +13102,6 @@ }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13322,7 +13112,6 @@ }, "node_modules/jest-config": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13366,7 +13155,6 @@ }, "node_modules/jest-config/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13377,7 +13165,6 @@ }, "node_modules/jest-config/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13402,7 +13189,6 @@ }, "node_modules/jest-config/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13418,12 +13204,10 @@ }, "node_modules/jest-config/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13431,7 +13215,6 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13445,7 +13228,6 @@ }, "node_modules/jest-config/node_modules/babel-jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -13465,7 +13247,6 @@ }, "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -13479,7 +13260,6 @@ }, "node_modules/jest-config/node_modules/babel-preset-jest": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -13494,7 +13274,6 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13509,7 +13288,6 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13520,7 +13298,6 @@ }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13528,7 +13305,6 @@ }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13536,7 +13312,6 @@ }, "node_modules/jest-config/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13560,7 +13335,6 @@ }, "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13568,7 +13342,6 @@ }, "node_modules/jest-config/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13587,7 +13360,6 @@ }, "node_modules/jest-config/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13603,7 +13375,6 @@ }, "node_modules/jest-config/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13619,7 +13390,6 @@ }, "node_modules/jest-config/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -13633,7 +13403,6 @@ }, "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13647,7 +13416,6 @@ }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13660,7 +13428,6 @@ }, "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13671,7 +13438,6 @@ }, "node_modules/jest-config/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13679,12 +13445,10 @@ }, "node_modules/jest-config/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13692,7 +13456,6 @@ }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13703,7 +13466,6 @@ }, "node_modules/jest-config/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -13715,7 +13477,6 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13729,7 +13490,6 @@ }, "node_modules/jest-diff/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13740,12 +13500,10 @@ }, "node_modules/jest-diff/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13759,7 +13517,6 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13774,7 +13531,6 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13785,7 +13541,6 @@ }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13793,7 +13548,6 @@ }, "node_modules/jest-diff/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13801,7 +13555,6 @@ }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13814,7 +13567,6 @@ }, "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13825,7 +13577,6 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13836,7 +13587,6 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -13847,7 +13597,6 @@ }, "node_modules/jest-each": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13862,7 +13611,6 @@ }, "node_modules/jest-each/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13873,7 +13621,6 @@ }, "node_modules/jest-each/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13889,12 +13636,10 @@ }, "node_modules/jest-each/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13902,7 +13647,6 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13916,7 +13660,6 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13931,7 +13674,6 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13942,7 +13684,6 @@ }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13950,7 +13691,6 @@ }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13958,7 +13698,6 @@ }, "node_modules/jest-each/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13974,7 +13713,6 @@ }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13987,7 +13725,6 @@ }, "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13998,7 +13735,6 @@ }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14150,7 +13886,6 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -14166,7 +13901,6 @@ }, "node_modules/jest-environment-node/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14177,7 +13911,6 @@ }, "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14193,12 +13926,10 @@ }, "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-environment-node/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14206,7 +13937,6 @@ }, "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14220,7 +13950,6 @@ }, "node_modules/jest-environment-node/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14235,7 +13964,6 @@ }, "node_modules/jest-environment-node/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14246,7 +13974,6 @@ }, "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14254,7 +13981,6 @@ }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14270,7 +13996,6 @@ }, "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14767,7 +14492,6 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -14779,7 +14503,6 @@ }, "node_modules/jest-leak-detector/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14790,12 +14513,10 @@ }, "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-leak-detector/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14806,7 +14527,6 @@ }, "node_modules/jest-leak-detector/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14814,7 +14534,6 @@ }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14827,7 +14546,6 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -14841,7 +14559,6 @@ }, "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14852,12 +14569,10 @@ }, "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14871,7 +14586,6 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14886,7 +14600,6 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14897,7 +14610,6 @@ }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14905,7 +14617,6 @@ }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14913,7 +14624,6 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14926,7 +14636,6 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14937,7 +14646,6 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14948,7 +14656,6 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -14967,7 +14674,6 @@ }, "node_modules/jest-message-util/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14978,7 +14684,6 @@ }, "node_modules/jest-message-util/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14994,12 +14699,10 @@ }, "node_modules/jest-message-util/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-message-util/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15007,7 +14710,6 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15021,7 +14723,6 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15036,7 +14737,6 @@ }, "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15047,7 +14747,6 @@ }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15055,7 +14754,6 @@ }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15068,7 +14766,6 @@ }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15079,7 +14776,6 @@ }, "node_modules/jest-message-util/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15087,7 +14783,6 @@ }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15098,7 +14793,6 @@ }, "node_modules/jest-mock": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15111,7 +14805,6 @@ }, "node_modules/jest-mock/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15122,7 +14815,6 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15138,12 +14830,10 @@ }, "node_modules/jest-mock/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15151,7 +14841,6 @@ }, "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15165,7 +14854,6 @@ }, "node_modules/jest-mock/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15180,7 +14868,6 @@ }, "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15191,7 +14878,6 @@ }, "node_modules/jest-mock/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15199,7 +14885,6 @@ }, "node_modules/jest-mock/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15215,7 +14900,6 @@ }, "node_modules/jest-mock/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15267,7 +14951,6 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -15279,7 +14962,6 @@ }, "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15348,7 +15030,6 @@ }, "node_modules/jest-runner": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -15379,7 +15060,6 @@ }, "node_modules/jest-runner/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15390,7 +15070,6 @@ }, "node_modules/jest-runner/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15415,7 +15094,6 @@ }, "node_modules/jest-runner/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15431,12 +15109,10 @@ }, "node_modules/jest-runner/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15444,7 +15120,6 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15458,7 +15133,6 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15473,7 +15147,6 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15484,7 +15157,6 @@ }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15492,7 +15164,6 @@ }, "node_modules/jest-runner/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15500,7 +15171,6 @@ }, "node_modules/jest-runner/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15524,7 +15194,6 @@ }, "node_modules/jest-runner/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15532,7 +15201,6 @@ }, "node_modules/jest-runner/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15551,7 +15219,6 @@ }, "node_modules/jest-runner/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15567,7 +15234,6 @@ }, "node_modules/jest-runner/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15583,7 +15249,6 @@ }, "node_modules/jest-runner/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15597,7 +15262,6 @@ }, "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15611,7 +15275,6 @@ }, "node_modules/jest-runner/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15624,7 +15287,6 @@ }, "node_modules/jest-runner/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15635,7 +15297,6 @@ }, "node_modules/jest-runner/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15643,12 +15304,10 @@ }, "node_modules/jest-runner/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-runner/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15656,7 +15315,6 @@ }, "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15664,7 +15322,6 @@ }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", - "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -15673,7 +15330,6 @@ }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15684,7 +15340,6 @@ }, "node_modules/jest-runner/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15696,7 +15351,6 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -15728,7 +15382,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15739,7 +15392,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15764,7 +15416,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15780,12 +15431,10 @@ }, "node_modules/jest-runtime/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15793,7 +15442,6 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15807,7 +15455,6 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15822,7 +15469,6 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15833,7 +15479,6 @@ }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15841,7 +15486,6 @@ }, "node_modules/jest-runtime/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15849,7 +15493,6 @@ }, "node_modules/jest-runtime/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15873,7 +15516,6 @@ }, "node_modules/jest-runtime/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15881,7 +15523,6 @@ }, "node_modules/jest-runtime/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15900,7 +15541,6 @@ }, "node_modules/jest-runtime/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15916,7 +15556,6 @@ }, "node_modules/jest-runtime/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15932,7 +15571,6 @@ }, "node_modules/jest-runtime/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15946,7 +15584,6 @@ }, "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15960,7 +15597,6 @@ }, "node_modules/jest-runtime/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15973,7 +15609,6 @@ }, "node_modules/jest-runtime/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15984,7 +15619,6 @@ }, "node_modules/jest-runtime/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15992,12 +15626,10 @@ }, "node_modules/jest-runtime/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16005,7 +15637,6 @@ }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16016,7 +15647,6 @@ }, "node_modules/jest-runtime/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -16039,7 +15669,6 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -16069,7 +15698,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16080,7 +15708,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -16105,7 +15732,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16121,12 +15747,10 @@ }, "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16134,7 +15758,6 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16148,7 +15771,6 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16163,7 +15785,6 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16174,7 +15795,6 @@ }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16182,7 +15802,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -16190,7 +15809,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16214,7 +15832,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -16222,7 +15839,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16238,7 +15854,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -16252,7 +15867,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16266,7 +15880,6 @@ }, "node_modules/jest-snapshot/node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -16277,7 +15890,6 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16290,7 +15902,6 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -16301,7 +15912,6 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.0", - "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -16315,12 +15925,10 @@ }, "node_modules/jest-snapshot/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-snapshot/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16328,7 +15936,6 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16339,7 +15946,6 @@ }, "node_modules/jest-snapshot/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -16351,7 +15957,6 @@ }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", - "dev": true, "license": "ISC" }, "node_modules/jest-util": { @@ -16819,7 +16424,6 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -16837,7 +16441,6 @@ }, "node_modules/jest-watcher/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16848,7 +16451,6 @@ }, "node_modules/jest-watcher/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16864,12 +16466,10 @@ }, "node_modules/jest-watcher/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16877,7 +16477,6 @@ }, "node_modules/jest-watcher/node_modules/ansi-escapes": { "version": "4.3.2", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -16891,7 +16490,6 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16905,7 +16503,6 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16920,7 +16517,6 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16931,7 +16527,6 @@ }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16939,7 +16534,6 @@ }, "node_modules/jest-watcher/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16955,7 +16549,6 @@ }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16966,7 +16559,6 @@ }, "node_modules/jest-watcher/node_modules/type-fest": { "version": "0.21.3", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -17009,7 +16601,6 @@ }, "node_modules/jest/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -17020,7 +16611,6 @@ }, "node_modules/jest/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -17036,12 +16626,10 @@ }, "node_modules/jest/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -17049,7 +16637,6 @@ }, "node_modules/jest/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -17063,7 +16650,6 @@ }, "node_modules/jest/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -17078,7 +16664,6 @@ }, "node_modules/jest/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -17089,7 +16674,6 @@ }, "node_modules/jest/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17097,7 +16681,6 @@ }, "node_modules/jest/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -18054,9 +17637,9 @@ } }, "node_modules/node-forge": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", - "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" @@ -19989,7 +19572,6 @@ }, "node_modules/pure-rand": { "version": "6.1.0", - "dev": true, "funding": [ { "type": "individual", @@ -24196,7 +23778,6 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", - "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -25593,7 +25174,6 @@ }, "node_modules/yargs": { "version": "17.7.2", - "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -25610,7 +25190,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -25618,12 +25197,10 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25631,7 +25208,6 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", From c956d31b3781a6ab49f8fb832fc70f578d15a47b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Mar 2026 05:00:30 +0000 Subject: [PATCH 169/180] Bump path-to-regexp from 0.1.12 to 0.1.13 in /client Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 0.1.12 to 0.1.13. - [Release notes](https://github.com/pillarjs/path-to-regexp/releases) - [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md) - [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13) --- updated-dependencies: - dependency-name: path-to-regexp dependency-version: 0.1.13 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- client/package-lock.json | 430 +-------------------------------------- 1 file changed, 3 insertions(+), 427 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 608ddfd14..28f065090 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -2808,7 +2808,6 @@ }, "node_modules/@jest/console": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2824,7 +2823,6 @@ }, "node_modules/@jest/console/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2835,7 +2833,6 @@ }, "node_modules/@jest/console/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2851,12 +2848,10 @@ }, "node_modules/@jest/console/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2864,7 +2859,6 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2878,7 +2872,6 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2893,7 +2886,6 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2904,7 +2896,6 @@ }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2912,7 +2903,6 @@ }, "node_modules/@jest/console/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2928,7 +2918,6 @@ }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2936,7 +2925,6 @@ }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -2947,7 +2935,6 @@ }, "node_modules/@jest/core": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2993,7 +2980,6 @@ }, "node_modules/@jest/core/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3004,7 +2990,6 @@ }, "node_modules/@jest/core/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3029,7 +3014,6 @@ }, "node_modules/@jest/core/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3045,12 +3029,10 @@ }, "node_modules/@jest/core/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3058,7 +3040,6 @@ }, "node_modules/@jest/core/node_modules/ansi-escapes": { "version": "4.3.2", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -3072,7 +3053,6 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3086,7 +3066,6 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3101,7 +3080,6 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3112,7 +3090,6 @@ }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3120,7 +3097,6 @@ }, "node_modules/@jest/core/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3128,7 +3104,6 @@ }, "node_modules/@jest/core/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3152,7 +3127,6 @@ }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3160,7 +3134,6 @@ }, "node_modules/@jest/core/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -3179,7 +3152,6 @@ }, "node_modules/@jest/core/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3195,7 +3167,6 @@ }, "node_modules/@jest/core/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3211,7 +3182,6 @@ }, "node_modules/@jest/core/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3225,7 +3195,6 @@ }, "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3239,7 +3208,6 @@ }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3252,7 +3220,6 @@ }, "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3263,7 +3230,6 @@ }, "node_modules/@jest/core/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3271,12 +3237,10 @@ }, "node_modules/@jest/core/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3284,7 +3248,6 @@ }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3295,7 +3258,6 @@ }, "node_modules/@jest/core/node_modules/type-fest": { "version": "0.21.3", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -3306,7 +3268,6 @@ }, "node_modules/@jest/core/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3318,7 +3279,6 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -3332,7 +3292,6 @@ }, "node_modules/@jest/environment/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3343,7 +3302,6 @@ }, "node_modules/@jest/environment/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3359,12 +3317,10 @@ }, "node_modules/@jest/environment/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/environment/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3372,7 +3328,6 @@ }, "node_modules/@jest/environment/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3386,7 +3341,6 @@ }, "node_modules/@jest/environment/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3401,7 +3355,6 @@ }, "node_modules/@jest/environment/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3412,7 +3365,6 @@ }, "node_modules/@jest/environment/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3420,7 +3372,6 @@ }, "node_modules/@jest/environment/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3431,7 +3382,6 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -3443,7 +3393,6 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -3454,7 +3403,6 @@ }, "node_modules/@jest/expect-utils/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3462,7 +3410,6 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3478,7 +3425,6 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3489,7 +3435,6 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3505,12 +3450,10 @@ }, "node_modules/@jest/fake-timers/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3518,7 +3461,6 @@ }, "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3532,7 +3474,6 @@ }, "node_modules/@jest/fake-timers/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3547,7 +3488,6 @@ }, "node_modules/@jest/fake-timers/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3558,7 +3498,6 @@ }, "node_modules/@jest/fake-timers/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3566,7 +3505,6 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3582,7 +3520,6 @@ }, "node_modules/@jest/fake-timers/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3593,7 +3530,6 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -3607,7 +3543,6 @@ }, "node_modules/@jest/globals/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3618,7 +3553,6 @@ }, "node_modules/@jest/globals/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3634,12 +3568,10 @@ }, "node_modules/@jest/globals/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/globals/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3647,7 +3579,6 @@ }, "node_modules/@jest/globals/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3661,7 +3592,6 @@ }, "node_modules/@jest/globals/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3676,7 +3606,6 @@ }, "node_modules/@jest/globals/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3687,7 +3616,6 @@ }, "node_modules/@jest/globals/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3695,7 +3623,6 @@ }, "node_modules/@jest/globals/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3706,7 +3633,6 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -3748,7 +3674,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3759,7 +3684,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3784,7 +3708,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3800,12 +3723,10 @@ }, "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3813,7 +3734,6 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3827,7 +3747,6 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3842,7 +3761,6 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3853,7 +3771,6 @@ }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3861,7 +3778,6 @@ }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.2", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -3876,7 +3792,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3900,7 +3815,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3908,7 +3822,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3924,7 +3837,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3938,7 +3850,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3952,7 +3863,6 @@ }, "node_modules/@jest/reporters/node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -3963,7 +3873,6 @@ }, "node_modules/@jest/reporters/node_modules/semver": { "version": "7.6.0", - "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -3977,12 +3886,10 @@ }, "node_modules/@jest/reporters/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3990,7 +3897,6 @@ }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4001,7 +3907,6 @@ }, "node_modules/@jest/reporters/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -4013,7 +3918,6 @@ }, "node_modules/@jest/reporters/node_modules/yallist": { "version": "4.0.0", - "dev": true, "license": "ISC" }, "node_modules/@jest/schemas": { @@ -4028,7 +3932,6 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -4041,7 +3944,6 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -4055,7 +3957,6 @@ }, "node_modules/@jest/test-result/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4066,7 +3967,6 @@ }, "node_modules/@jest/test-result/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4082,12 +3982,10 @@ }, "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/test-result/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4095,7 +3993,6 @@ }, "node_modules/@jest/test-result/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4109,7 +4006,6 @@ }, "node_modules/@jest/test-result/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4124,7 +4020,6 @@ }, "node_modules/@jest/test-result/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4135,7 +4030,6 @@ }, "node_modules/@jest/test-result/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4143,7 +4037,6 @@ }, "node_modules/@jest/test-result/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4154,7 +4047,6 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -4168,7 +4060,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4179,7 +4070,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4195,12 +4085,10 @@ }, "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4208,7 +4096,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4222,7 +4109,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4237,7 +4123,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4248,7 +4133,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4256,7 +4140,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4280,7 +4163,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4288,7 +4170,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4304,7 +4185,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -4318,7 +4198,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4332,7 +4211,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4340,7 +4218,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5252,7 +5129,6 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -5260,7 +5136,6 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -5967,7 +5842,6 @@ }, "node_modules/@types/react": { "version": "18.2.71", - "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -6004,7 +5878,6 @@ }, "node_modules/@types/scheduler": { "version": "0.23.0", - "dev": true, "license": "MIT" }, "node_modules/@types/semver": { @@ -7852,7 +7725,6 @@ }, "node_modules/cliui": { "version": "8.0.1", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -7865,7 +7737,6 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -7879,7 +7750,6 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -7890,12 +7760,10 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7903,7 +7771,6 @@ }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7916,7 +7783,6 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8186,7 +8052,6 @@ }, "node_modules/create-jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8206,7 +8071,6 @@ }, "node_modules/create-jest/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -8217,7 +8081,6 @@ }, "node_modules/create-jest/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -8233,12 +8096,10 @@ }, "node_modules/create-jest/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/create-jest/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -8246,7 +8107,6 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -8260,7 +8120,6 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -8275,7 +8134,6 @@ }, "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -8286,7 +8144,6 @@ }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8294,7 +8151,6 @@ }, "node_modules/create-jest/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8310,7 +8166,6 @@ }, "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9018,7 +8873,6 @@ }, "node_modules/dedent": { "version": "1.5.1", - "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9263,7 +9117,6 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -9457,7 +9310,6 @@ }, "node_modules/emittery": { "version": "0.13.1", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10422,7 +10274,6 @@ }, "node_modules/expect": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -10437,7 +10288,6 @@ }, "node_modules/expect/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -10448,7 +10298,6 @@ }, "node_modules/expect/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -10464,12 +10313,10 @@ }, "node_modules/expect/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/expect/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -10477,7 +10324,6 @@ }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10491,7 +10337,6 @@ }, "node_modules/expect/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10506,7 +10351,6 @@ }, "node_modules/expect/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10517,7 +10361,6 @@ }, "node_modules/expect/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10525,7 +10368,6 @@ }, "node_modules/expect/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10533,7 +10375,6 @@ }, "node_modules/expect/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -10549,7 +10390,6 @@ }, "node_modules/expect/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12699,7 +12539,6 @@ }, "node_modules/jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12724,7 +12563,6 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -12737,7 +12575,6 @@ }, "node_modules/jest-changed-files/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12748,7 +12585,6 @@ }, "node_modules/jest-changed-files/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12764,12 +12600,10 @@ }, "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-changed-files/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12777,7 +12611,6 @@ }, "node_modules/jest-changed-files/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12791,7 +12624,6 @@ }, "node_modules/jest-changed-files/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12806,7 +12638,6 @@ }, "node_modules/jest-changed-files/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12817,7 +12648,6 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", - "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -12839,7 +12669,6 @@ }, "node_modules/jest-changed-files/node_modules/get-stream": { "version": "6.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12850,7 +12679,6 @@ }, "node_modules/jest-changed-files/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12858,7 +12686,6 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -12866,7 +12693,6 @@ }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12877,7 +12703,6 @@ }, "node_modules/jest-changed-files/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12893,7 +12718,6 @@ }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12901,7 +12725,6 @@ }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -12912,7 +12735,6 @@ }, "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -12926,12 +12748,10 @@ }, "node_modules/jest-changed-files/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12939,7 +12759,6 @@ }, "node_modules/jest-changed-files/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12950,7 +12769,6 @@ }, "node_modules/jest-circus": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -12980,7 +12798,6 @@ }, "node_modules/jest-circus/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12991,7 +12808,6 @@ }, "node_modules/jest-circus/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13007,12 +12823,10 @@ }, "node_modules/jest-circus/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13020,7 +12834,6 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13034,7 +12847,6 @@ }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13049,7 +12861,6 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13060,7 +12871,6 @@ }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13068,7 +12878,6 @@ }, "node_modules/jest-circus/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13084,7 +12893,6 @@ }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13097,7 +12905,6 @@ }, "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13108,7 +12915,6 @@ }, "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13116,7 +12922,6 @@ }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13127,7 +12932,6 @@ }, "node_modules/jest-cli": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -13159,7 +12963,6 @@ }, "node_modules/jest-cli/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13170,7 +12973,6 @@ }, "node_modules/jest-cli/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13186,12 +12988,10 @@ }, "node_modules/jest-cli/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13199,7 +12999,6 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13213,7 +13012,6 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13228,7 +13026,6 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13239,7 +13036,6 @@ }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13247,7 +13043,6 @@ }, "node_modules/jest-cli/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13255,7 +13050,6 @@ }, "node_modules/jest-cli/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13271,7 +13065,6 @@ }, "node_modules/jest-cli/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13287,7 +13080,6 @@ }, "node_modules/jest-cli/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13300,7 +13092,6 @@ }, "node_modules/jest-cli/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13311,7 +13102,6 @@ }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13322,7 +13112,6 @@ }, "node_modules/jest-config": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13366,7 +13155,6 @@ }, "node_modules/jest-config/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13377,7 +13165,6 @@ }, "node_modules/jest-config/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13402,7 +13189,6 @@ }, "node_modules/jest-config/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13418,12 +13204,10 @@ }, "node_modules/jest-config/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13431,7 +13215,6 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13445,7 +13228,6 @@ }, "node_modules/jest-config/node_modules/babel-jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -13465,7 +13247,6 @@ }, "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -13479,7 +13260,6 @@ }, "node_modules/jest-config/node_modules/babel-preset-jest": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -13494,7 +13274,6 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13509,7 +13288,6 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13520,7 +13298,6 @@ }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13528,7 +13305,6 @@ }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13536,7 +13312,6 @@ }, "node_modules/jest-config/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13560,7 +13335,6 @@ }, "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13568,7 +13342,6 @@ }, "node_modules/jest-config/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13587,7 +13360,6 @@ }, "node_modules/jest-config/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13603,7 +13375,6 @@ }, "node_modules/jest-config/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13619,7 +13390,6 @@ }, "node_modules/jest-config/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -13633,7 +13403,6 @@ }, "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13647,7 +13416,6 @@ }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13660,7 +13428,6 @@ }, "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13671,7 +13438,6 @@ }, "node_modules/jest-config/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13679,12 +13445,10 @@ }, "node_modules/jest-config/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13692,7 +13456,6 @@ }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13703,7 +13466,6 @@ }, "node_modules/jest-config/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -13715,7 +13477,6 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13729,7 +13490,6 @@ }, "node_modules/jest-diff/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13740,12 +13500,10 @@ }, "node_modules/jest-diff/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13759,7 +13517,6 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13774,7 +13531,6 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13785,7 +13541,6 @@ }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13793,7 +13548,6 @@ }, "node_modules/jest-diff/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13801,7 +13555,6 @@ }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13814,7 +13567,6 @@ }, "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13825,7 +13577,6 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13836,7 +13587,6 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -13847,7 +13597,6 @@ }, "node_modules/jest-each": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13862,7 +13611,6 @@ }, "node_modules/jest-each/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13873,7 +13621,6 @@ }, "node_modules/jest-each/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13889,12 +13636,10 @@ }, "node_modules/jest-each/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13902,7 +13647,6 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13916,7 +13660,6 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13931,7 +13674,6 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13942,7 +13684,6 @@ }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13950,7 +13691,6 @@ }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13958,7 +13698,6 @@ }, "node_modules/jest-each/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13974,7 +13713,6 @@ }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13987,7 +13725,6 @@ }, "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13998,7 +13735,6 @@ }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14150,7 +13886,6 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -14166,7 +13901,6 @@ }, "node_modules/jest-environment-node/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14177,7 +13911,6 @@ }, "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14193,12 +13926,10 @@ }, "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-environment-node/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14206,7 +13937,6 @@ }, "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14220,7 +13950,6 @@ }, "node_modules/jest-environment-node/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14235,7 +13964,6 @@ }, "node_modules/jest-environment-node/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14246,7 +13974,6 @@ }, "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14254,7 +13981,6 @@ }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14270,7 +13996,6 @@ }, "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14767,7 +14492,6 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -14779,7 +14503,6 @@ }, "node_modules/jest-leak-detector/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14790,12 +14513,10 @@ }, "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-leak-detector/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14806,7 +14527,6 @@ }, "node_modules/jest-leak-detector/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14814,7 +14534,6 @@ }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14827,7 +14546,6 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -14841,7 +14559,6 @@ }, "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14852,12 +14569,10 @@ }, "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14871,7 +14586,6 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14886,7 +14600,6 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14897,7 +14610,6 @@ }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14905,7 +14617,6 @@ }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14913,7 +14624,6 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14926,7 +14636,6 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14937,7 +14646,6 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14948,7 +14656,6 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -14967,7 +14674,6 @@ }, "node_modules/jest-message-util/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14978,7 +14684,6 @@ }, "node_modules/jest-message-util/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14994,12 +14699,10 @@ }, "node_modules/jest-message-util/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-message-util/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15007,7 +14710,6 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15021,7 +14723,6 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15036,7 +14737,6 @@ }, "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15047,7 +14747,6 @@ }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15055,7 +14754,6 @@ }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15068,7 +14766,6 @@ }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15079,7 +14776,6 @@ }, "node_modules/jest-message-util/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15087,7 +14783,6 @@ }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15098,7 +14793,6 @@ }, "node_modules/jest-mock": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15111,7 +14805,6 @@ }, "node_modules/jest-mock/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15122,7 +14815,6 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15138,12 +14830,10 @@ }, "node_modules/jest-mock/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15151,7 +14841,6 @@ }, "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15165,7 +14854,6 @@ }, "node_modules/jest-mock/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15180,7 +14868,6 @@ }, "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15191,7 +14878,6 @@ }, "node_modules/jest-mock/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15199,7 +14885,6 @@ }, "node_modules/jest-mock/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15215,7 +14900,6 @@ }, "node_modules/jest-mock/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15267,7 +14951,6 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -15279,7 +14962,6 @@ }, "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15348,7 +15030,6 @@ }, "node_modules/jest-runner": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -15379,7 +15060,6 @@ }, "node_modules/jest-runner/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15390,7 +15070,6 @@ }, "node_modules/jest-runner/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15415,7 +15094,6 @@ }, "node_modules/jest-runner/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15431,12 +15109,10 @@ }, "node_modules/jest-runner/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15444,7 +15120,6 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15458,7 +15133,6 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15473,7 +15147,6 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15484,7 +15157,6 @@ }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15492,7 +15164,6 @@ }, "node_modules/jest-runner/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15500,7 +15171,6 @@ }, "node_modules/jest-runner/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15524,7 +15194,6 @@ }, "node_modules/jest-runner/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15532,7 +15201,6 @@ }, "node_modules/jest-runner/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15551,7 +15219,6 @@ }, "node_modules/jest-runner/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15567,7 +15234,6 @@ }, "node_modules/jest-runner/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15583,7 +15249,6 @@ }, "node_modules/jest-runner/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15597,7 +15262,6 @@ }, "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15611,7 +15275,6 @@ }, "node_modules/jest-runner/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15624,7 +15287,6 @@ }, "node_modules/jest-runner/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15635,7 +15297,6 @@ }, "node_modules/jest-runner/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15643,12 +15304,10 @@ }, "node_modules/jest-runner/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-runner/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15656,7 +15315,6 @@ }, "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15664,7 +15322,6 @@ }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", - "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -15673,7 +15330,6 @@ }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15684,7 +15340,6 @@ }, "node_modules/jest-runner/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15696,7 +15351,6 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -15728,7 +15382,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15739,7 +15392,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15764,7 +15416,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15780,12 +15431,10 @@ }, "node_modules/jest-runtime/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15793,7 +15442,6 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15807,7 +15455,6 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15822,7 +15469,6 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15833,7 +15479,6 @@ }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15841,7 +15486,6 @@ }, "node_modules/jest-runtime/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15849,7 +15493,6 @@ }, "node_modules/jest-runtime/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15873,7 +15516,6 @@ }, "node_modules/jest-runtime/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15881,7 +15523,6 @@ }, "node_modules/jest-runtime/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15900,7 +15541,6 @@ }, "node_modules/jest-runtime/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15916,7 +15556,6 @@ }, "node_modules/jest-runtime/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15932,7 +15571,6 @@ }, "node_modules/jest-runtime/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15946,7 +15584,6 @@ }, "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15960,7 +15597,6 @@ }, "node_modules/jest-runtime/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15973,7 +15609,6 @@ }, "node_modules/jest-runtime/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15984,7 +15619,6 @@ }, "node_modules/jest-runtime/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15992,12 +15626,10 @@ }, "node_modules/jest-runtime/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16005,7 +15637,6 @@ }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16016,7 +15647,6 @@ }, "node_modules/jest-runtime/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -16039,7 +15669,6 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -16069,7 +15698,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16080,7 +15708,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -16105,7 +15732,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16121,12 +15747,10 @@ }, "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16134,7 +15758,6 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16148,7 +15771,6 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16163,7 +15785,6 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16174,7 +15795,6 @@ }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16182,7 +15802,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -16190,7 +15809,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16214,7 +15832,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -16222,7 +15839,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16238,7 +15854,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -16252,7 +15867,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16266,7 +15880,6 @@ }, "node_modules/jest-snapshot/node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -16277,7 +15890,6 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16290,7 +15902,6 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -16301,7 +15912,6 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.0", - "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -16315,12 +15925,10 @@ }, "node_modules/jest-snapshot/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-snapshot/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16328,7 +15936,6 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16339,7 +15946,6 @@ }, "node_modules/jest-snapshot/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -16351,7 +15957,6 @@ }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", - "dev": true, "license": "ISC" }, "node_modules/jest-util": { @@ -16819,7 +16424,6 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -16837,7 +16441,6 @@ }, "node_modules/jest-watcher/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16848,7 +16451,6 @@ }, "node_modules/jest-watcher/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16864,12 +16466,10 @@ }, "node_modules/jest-watcher/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16877,7 +16477,6 @@ }, "node_modules/jest-watcher/node_modules/ansi-escapes": { "version": "4.3.2", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -16891,7 +16490,6 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16905,7 +16503,6 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16920,7 +16517,6 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16931,7 +16527,6 @@ }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16939,7 +16534,6 @@ }, "node_modules/jest-watcher/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16955,7 +16549,6 @@ }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16966,7 +16559,6 @@ }, "node_modules/jest-watcher/node_modules/type-fest": { "version": "0.21.3", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -17009,7 +16601,6 @@ }, "node_modules/jest/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -17020,7 +16611,6 @@ }, "node_modules/jest/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -17036,12 +16626,10 @@ }, "node_modules/jest/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -17049,7 +16637,6 @@ }, "node_modules/jest/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -17063,7 +16650,6 @@ }, "node_modules/jest/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -17078,7 +16664,6 @@ }, "node_modules/jest/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -17089,7 +16674,6 @@ }, "node_modules/jest/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17097,7 +16681,6 @@ }, "node_modules/jest/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -18507,9 +18090,9 @@ "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", "license": "MIT" }, "node_modules/path-type": { @@ -19989,7 +19572,6 @@ }, "node_modules/pure-rand": { "version": "6.1.0", - "dev": true, "funding": [ { "type": "individual", @@ -24196,7 +23778,6 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", - "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -25593,7 +25174,6 @@ }, "node_modules/yargs": { "version": "17.7.2", - "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -25610,7 +25190,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -25618,12 +25197,10 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25631,7 +25208,6 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", From 917ba33e986152c7462f078f750b560b91df0802 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Mar 2026 05:00:43 +0000 Subject: [PATCH 170/180] Bump brace-expansion from 1.1.12 to 1.1.13 in /client Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.13. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.13) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.13 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- client/package-lock.json | 442 +-------------------------------------- 1 file changed, 9 insertions(+), 433 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 608ddfd14..6b6924100 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -2808,7 +2808,6 @@ }, "node_modules/@jest/console": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2824,7 +2823,6 @@ }, "node_modules/@jest/console/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2835,7 +2833,6 @@ }, "node_modules/@jest/console/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2851,12 +2848,10 @@ }, "node_modules/@jest/console/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2864,7 +2859,6 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2878,7 +2872,6 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2893,7 +2886,6 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2904,7 +2896,6 @@ }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2912,7 +2903,6 @@ }, "node_modules/@jest/console/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2928,7 +2918,6 @@ }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2936,7 +2925,6 @@ }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -2947,7 +2935,6 @@ }, "node_modules/@jest/core": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2993,7 +2980,6 @@ }, "node_modules/@jest/core/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3004,7 +2990,6 @@ }, "node_modules/@jest/core/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3029,7 +3014,6 @@ }, "node_modules/@jest/core/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3045,12 +3029,10 @@ }, "node_modules/@jest/core/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3058,7 +3040,6 @@ }, "node_modules/@jest/core/node_modules/ansi-escapes": { "version": "4.3.2", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -3072,7 +3053,6 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3086,7 +3066,6 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3101,7 +3080,6 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3112,7 +3090,6 @@ }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3120,7 +3097,6 @@ }, "node_modules/@jest/core/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3128,7 +3104,6 @@ }, "node_modules/@jest/core/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3152,7 +3127,6 @@ }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3160,7 +3134,6 @@ }, "node_modules/@jest/core/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -3179,7 +3152,6 @@ }, "node_modules/@jest/core/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3195,7 +3167,6 @@ }, "node_modules/@jest/core/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3211,7 +3182,6 @@ }, "node_modules/@jest/core/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3225,7 +3195,6 @@ }, "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3239,7 +3208,6 @@ }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3252,7 +3220,6 @@ }, "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3263,7 +3230,6 @@ }, "node_modules/@jest/core/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3271,12 +3237,10 @@ }, "node_modules/@jest/core/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3284,7 +3248,6 @@ }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3295,7 +3258,6 @@ }, "node_modules/@jest/core/node_modules/type-fest": { "version": "0.21.3", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -3306,7 +3268,6 @@ }, "node_modules/@jest/core/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3318,7 +3279,6 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -3332,7 +3292,6 @@ }, "node_modules/@jest/environment/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3343,7 +3302,6 @@ }, "node_modules/@jest/environment/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3359,12 +3317,10 @@ }, "node_modules/@jest/environment/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/environment/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3372,7 +3328,6 @@ }, "node_modules/@jest/environment/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3386,7 +3341,6 @@ }, "node_modules/@jest/environment/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3401,7 +3355,6 @@ }, "node_modules/@jest/environment/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3412,7 +3365,6 @@ }, "node_modules/@jest/environment/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3420,7 +3372,6 @@ }, "node_modules/@jest/environment/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3431,7 +3382,6 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -3443,7 +3393,6 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -3454,7 +3403,6 @@ }, "node_modules/@jest/expect-utils/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3462,7 +3410,6 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3478,7 +3425,6 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3489,7 +3435,6 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3505,12 +3450,10 @@ }, "node_modules/@jest/fake-timers/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3518,7 +3461,6 @@ }, "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3532,7 +3474,6 @@ }, "node_modules/@jest/fake-timers/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3547,7 +3488,6 @@ }, "node_modules/@jest/fake-timers/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3558,7 +3498,6 @@ }, "node_modules/@jest/fake-timers/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3566,7 +3505,6 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3582,7 +3520,6 @@ }, "node_modules/@jest/fake-timers/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3593,7 +3530,6 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -3607,7 +3543,6 @@ }, "node_modules/@jest/globals/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3618,7 +3553,6 @@ }, "node_modules/@jest/globals/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3634,12 +3568,10 @@ }, "node_modules/@jest/globals/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/globals/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3647,7 +3579,6 @@ }, "node_modules/@jest/globals/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3661,7 +3592,6 @@ }, "node_modules/@jest/globals/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3676,7 +3606,6 @@ }, "node_modules/@jest/globals/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3687,7 +3616,6 @@ }, "node_modules/@jest/globals/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3695,7 +3623,6 @@ }, "node_modules/@jest/globals/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3706,7 +3633,6 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -3748,7 +3674,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3759,7 +3684,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3784,7 +3708,6 @@ }, "node_modules/@jest/reporters/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3800,12 +3723,10 @@ }, "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3813,7 +3734,6 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3827,7 +3747,6 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3842,7 +3761,6 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3853,7 +3771,6 @@ }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3861,7 +3778,6 @@ }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.2", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -3876,7 +3792,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3900,7 +3815,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3908,7 +3822,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3924,7 +3837,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3938,7 +3850,6 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3952,7 +3863,6 @@ }, "node_modules/@jest/reporters/node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -3963,7 +3873,6 @@ }, "node_modules/@jest/reporters/node_modules/semver": { "version": "7.6.0", - "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -3977,12 +3886,10 @@ }, "node_modules/@jest/reporters/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3990,7 +3897,6 @@ }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4001,7 +3907,6 @@ }, "node_modules/@jest/reporters/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -4013,7 +3918,6 @@ }, "node_modules/@jest/reporters/node_modules/yallist": { "version": "4.0.0", - "dev": true, "license": "ISC" }, "node_modules/@jest/schemas": { @@ -4028,7 +3932,6 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -4041,7 +3944,6 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -4055,7 +3957,6 @@ }, "node_modules/@jest/test-result/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4066,7 +3967,6 @@ }, "node_modules/@jest/test-result/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4082,12 +3982,10 @@ }, "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/test-result/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4095,7 +3993,6 @@ }, "node_modules/@jest/test-result/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4109,7 +4006,6 @@ }, "node_modules/@jest/test-result/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4124,7 +4020,6 @@ }, "node_modules/@jest/test-result/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4135,7 +4030,6 @@ }, "node_modules/@jest/test-result/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4143,7 +4037,6 @@ }, "node_modules/@jest/test-result/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4154,7 +4047,6 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -4168,7 +4060,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4179,7 +4070,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4195,12 +4085,10 @@ }, "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4208,7 +4096,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4222,7 +4109,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4237,7 +4123,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4248,7 +4133,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4256,7 +4140,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4280,7 +4163,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4288,7 +4170,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4304,7 +4185,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -4318,7 +4198,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4332,7 +4211,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4340,7 +4218,6 @@ }, "node_modules/@jest/test-sequencer/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5252,7 +5129,6 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -5260,7 +5136,6 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -5967,7 +5842,6 @@ }, "node_modules/@types/react": { "version": "18.2.71", - "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -6004,7 +5878,6 @@ }, "node_modules/@types/scheduler": { "version": "0.23.0", - "dev": true, "license": "MIT" }, "node_modules/@types/semver": { @@ -7498,9 +7371,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -7852,7 +7725,6 @@ }, "node_modules/cliui": { "version": "8.0.1", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -7865,7 +7737,6 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -7879,7 +7750,6 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -7890,12 +7760,10 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7903,7 +7771,6 @@ }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7916,7 +7783,6 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8186,7 +8052,6 @@ }, "node_modules/create-jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8206,7 +8071,6 @@ }, "node_modules/create-jest/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -8217,7 +8081,6 @@ }, "node_modules/create-jest/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -8233,12 +8096,10 @@ }, "node_modules/create-jest/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/create-jest/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -8246,7 +8107,6 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -8260,7 +8120,6 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -8275,7 +8134,6 @@ }, "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -8286,7 +8144,6 @@ }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8294,7 +8151,6 @@ }, "node_modules/create-jest/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8310,7 +8166,6 @@ }, "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9018,7 +8873,6 @@ }, "node_modules/dedent": { "version": "1.5.1", - "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9263,7 +9117,6 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -9457,7 +9310,6 @@ }, "node_modules/emittery": { "version": "0.13.1", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10422,7 +10274,6 @@ }, "node_modules/expect": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -10437,7 +10288,6 @@ }, "node_modules/expect/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -10448,7 +10298,6 @@ }, "node_modules/expect/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -10464,12 +10313,10 @@ }, "node_modules/expect/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/expect/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -10477,7 +10324,6 @@ }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10491,7 +10337,6 @@ }, "node_modules/expect/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10506,7 +10351,6 @@ }, "node_modules/expect/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10517,7 +10361,6 @@ }, "node_modules/expect/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10525,7 +10368,6 @@ }, "node_modules/expect/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10533,7 +10375,6 @@ }, "node_modules/expect/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -10549,7 +10390,6 @@ }, "node_modules/expect/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -10724,9 +10564,9 @@ } }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -12699,7 +12539,6 @@ }, "node_modules/jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12724,7 +12563,6 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -12737,7 +12575,6 @@ }, "node_modules/jest-changed-files/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12748,7 +12585,6 @@ }, "node_modules/jest-changed-files/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12764,12 +12600,10 @@ }, "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-changed-files/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12777,7 +12611,6 @@ }, "node_modules/jest-changed-files/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12791,7 +12624,6 @@ }, "node_modules/jest-changed-files/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12806,7 +12638,6 @@ }, "node_modules/jest-changed-files/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12817,7 +12648,6 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", - "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -12839,7 +12669,6 @@ }, "node_modules/jest-changed-files/node_modules/get-stream": { "version": "6.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12850,7 +12679,6 @@ }, "node_modules/jest-changed-files/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12858,7 +12686,6 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -12866,7 +12693,6 @@ }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12877,7 +12703,6 @@ }, "node_modules/jest-changed-files/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12893,7 +12718,6 @@ }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12901,7 +12725,6 @@ }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -12912,7 +12735,6 @@ }, "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -12926,12 +12748,10 @@ }, "node_modules/jest-changed-files/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12939,7 +12759,6 @@ }, "node_modules/jest-changed-files/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12950,7 +12769,6 @@ }, "node_modules/jest-circus": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -12980,7 +12798,6 @@ }, "node_modules/jest-circus/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12991,7 +12808,6 @@ }, "node_modules/jest-circus/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13007,12 +12823,10 @@ }, "node_modules/jest-circus/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13020,7 +12834,6 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13034,7 +12847,6 @@ }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13049,7 +12861,6 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13060,7 +12871,6 @@ }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13068,7 +12878,6 @@ }, "node_modules/jest-circus/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13084,7 +12893,6 @@ }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13097,7 +12905,6 @@ }, "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13108,7 +12915,6 @@ }, "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13116,7 +12922,6 @@ }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13127,7 +12932,6 @@ }, "node_modules/jest-cli": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -13159,7 +12963,6 @@ }, "node_modules/jest-cli/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13170,7 +12973,6 @@ }, "node_modules/jest-cli/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13186,12 +12988,10 @@ }, "node_modules/jest-cli/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13199,7 +12999,6 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13213,7 +13012,6 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13228,7 +13026,6 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13239,7 +13036,6 @@ }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13247,7 +13043,6 @@ }, "node_modules/jest-cli/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13255,7 +13050,6 @@ }, "node_modules/jest-cli/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13271,7 +13065,6 @@ }, "node_modules/jest-cli/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13287,7 +13080,6 @@ }, "node_modules/jest-cli/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13300,7 +13092,6 @@ }, "node_modules/jest-cli/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13311,7 +13102,6 @@ }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13322,7 +13112,6 @@ }, "node_modules/jest-config": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13366,7 +13155,6 @@ }, "node_modules/jest-config/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13377,7 +13165,6 @@ }, "node_modules/jest-config/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13402,7 +13189,6 @@ }, "node_modules/jest-config/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13418,12 +13204,10 @@ }, "node_modules/jest-config/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13431,7 +13215,6 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13445,7 +13228,6 @@ }, "node_modules/jest-config/node_modules/babel-jest": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -13465,7 +13247,6 @@ }, "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -13479,7 +13260,6 @@ }, "node_modules/jest-config/node_modules/babel-preset-jest": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -13494,7 +13274,6 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13509,7 +13288,6 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13520,7 +13298,6 @@ }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13528,7 +13305,6 @@ }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13536,7 +13312,6 @@ }, "node_modules/jest-config/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13560,7 +13335,6 @@ }, "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13568,7 +13342,6 @@ }, "node_modules/jest-config/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13587,7 +13360,6 @@ }, "node_modules/jest-config/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13603,7 +13375,6 @@ }, "node_modules/jest-config/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13619,7 +13390,6 @@ }, "node_modules/jest-config/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -13633,7 +13403,6 @@ }, "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13647,7 +13416,6 @@ }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13660,7 +13428,6 @@ }, "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13671,7 +13438,6 @@ }, "node_modules/jest-config/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13679,12 +13445,10 @@ }, "node_modules/jest-config/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13692,7 +13456,6 @@ }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13703,7 +13466,6 @@ }, "node_modules/jest-config/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -13715,7 +13477,6 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13729,7 +13490,6 @@ }, "node_modules/jest-diff/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13740,12 +13500,10 @@ }, "node_modules/jest-diff/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13759,7 +13517,6 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13774,7 +13531,6 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13785,7 +13541,6 @@ }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13793,7 +13548,6 @@ }, "node_modules/jest-diff/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13801,7 +13555,6 @@ }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13814,7 +13567,6 @@ }, "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13825,7 +13577,6 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13836,7 +13587,6 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -13847,7 +13597,6 @@ }, "node_modules/jest-each": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13862,7 +13611,6 @@ }, "node_modules/jest-each/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13873,7 +13621,6 @@ }, "node_modules/jest-each/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13889,12 +13636,10 @@ }, "node_modules/jest-each/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13902,7 +13647,6 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13916,7 +13660,6 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13931,7 +13674,6 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13942,7 +13684,6 @@ }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13950,7 +13691,6 @@ }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13958,7 +13698,6 @@ }, "node_modules/jest-each/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13974,7 +13713,6 @@ }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13987,7 +13725,6 @@ }, "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13998,7 +13735,6 @@ }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14150,7 +13886,6 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -14166,7 +13901,6 @@ }, "node_modules/jest-environment-node/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14177,7 +13911,6 @@ }, "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14193,12 +13926,10 @@ }, "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-environment-node/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14206,7 +13937,6 @@ }, "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14220,7 +13950,6 @@ }, "node_modules/jest-environment-node/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14235,7 +13964,6 @@ }, "node_modules/jest-environment-node/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14246,7 +13974,6 @@ }, "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14254,7 +13981,6 @@ }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14270,7 +13996,6 @@ }, "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14767,7 +14492,6 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -14779,7 +14503,6 @@ }, "node_modules/jest-leak-detector/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14790,12 +14513,10 @@ }, "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-leak-detector/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14806,7 +14527,6 @@ }, "node_modules/jest-leak-detector/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14814,7 +14534,6 @@ }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14827,7 +14546,6 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -14841,7 +14559,6 @@ }, "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14852,12 +14569,10 @@ }, "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14871,7 +14586,6 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14886,7 +14600,6 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14897,7 +14610,6 @@ }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14905,7 +14617,6 @@ }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14913,7 +14624,6 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14926,7 +14636,6 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14937,7 +14646,6 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14948,7 +14656,6 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -14967,7 +14674,6 @@ }, "node_modules/jest-message-util/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14978,7 +14684,6 @@ }, "node_modules/jest-message-util/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14994,12 +14699,10 @@ }, "node_modules/jest-message-util/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-message-util/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15007,7 +14710,6 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15021,7 +14723,6 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15036,7 +14737,6 @@ }, "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15047,7 +14747,6 @@ }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15055,7 +14754,6 @@ }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15068,7 +14766,6 @@ }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15079,7 +14776,6 @@ }, "node_modules/jest-message-util/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15087,7 +14783,6 @@ }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15098,7 +14793,6 @@ }, "node_modules/jest-mock": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15111,7 +14805,6 @@ }, "node_modules/jest-mock/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15122,7 +14815,6 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15138,12 +14830,10 @@ }, "node_modules/jest-mock/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15151,7 +14841,6 @@ }, "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15165,7 +14854,6 @@ }, "node_modules/jest-mock/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15180,7 +14868,6 @@ }, "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15191,7 +14878,6 @@ }, "node_modules/jest-mock/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15199,7 +14885,6 @@ }, "node_modules/jest-mock/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15215,7 +14900,6 @@ }, "node_modules/jest-mock/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15267,7 +14951,6 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -15279,7 +14962,6 @@ }, "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15348,7 +15030,6 @@ }, "node_modules/jest-runner": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -15379,7 +15060,6 @@ }, "node_modules/jest-runner/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15390,7 +15070,6 @@ }, "node_modules/jest-runner/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15415,7 +15094,6 @@ }, "node_modules/jest-runner/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15431,12 +15109,10 @@ }, "node_modules/jest-runner/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15444,7 +15120,6 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15458,7 +15133,6 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15473,7 +15147,6 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15484,7 +15157,6 @@ }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15492,7 +15164,6 @@ }, "node_modules/jest-runner/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15500,7 +15171,6 @@ }, "node_modules/jest-runner/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15524,7 +15194,6 @@ }, "node_modules/jest-runner/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15532,7 +15201,6 @@ }, "node_modules/jest-runner/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15551,7 +15219,6 @@ }, "node_modules/jest-runner/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15567,7 +15234,6 @@ }, "node_modules/jest-runner/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15583,7 +15249,6 @@ }, "node_modules/jest-runner/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15597,7 +15262,6 @@ }, "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15611,7 +15275,6 @@ }, "node_modules/jest-runner/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15624,7 +15287,6 @@ }, "node_modules/jest-runner/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15635,7 +15297,6 @@ }, "node_modules/jest-runner/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15643,12 +15304,10 @@ }, "node_modules/jest-runner/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-runner/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15656,7 +15315,6 @@ }, "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15664,7 +15322,6 @@ }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", - "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -15673,7 +15330,6 @@ }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15684,7 +15340,6 @@ }, "node_modules/jest-runner/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15696,7 +15351,6 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -15728,7 +15382,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15739,7 +15392,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15764,7 +15416,6 @@ }, "node_modules/jest-runtime/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15780,12 +15431,10 @@ }, "node_modules/jest-runtime/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15793,7 +15442,6 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15807,7 +15455,6 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15822,7 +15469,6 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15833,7 +15479,6 @@ }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15841,7 +15486,6 @@ }, "node_modules/jest-runtime/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15849,7 +15493,6 @@ }, "node_modules/jest-runtime/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15873,7 +15516,6 @@ }, "node_modules/jest-runtime/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15881,7 +15523,6 @@ }, "node_modules/jest-runtime/node_modules/jest-resolve": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15900,7 +15541,6 @@ }, "node_modules/jest-runtime/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15916,7 +15556,6 @@ }, "node_modules/jest-runtime/node_modules/jest-validate": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15932,7 +15571,6 @@ }, "node_modules/jest-runtime/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15946,7 +15584,6 @@ }, "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15960,7 +15597,6 @@ }, "node_modules/jest-runtime/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15973,7 +15609,6 @@ }, "node_modules/jest-runtime/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15984,7 +15619,6 @@ }, "node_modules/jest-runtime/node_modules/resolve.exports": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15992,12 +15626,10 @@ }, "node_modules/jest-runtime/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16005,7 +15637,6 @@ }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16016,7 +15647,6 @@ }, "node_modules/jest-runtime/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -16039,7 +15669,6 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -16069,7 +15698,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16080,7 +15708,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/transform": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -16105,7 +15732,6 @@ }, "node_modules/jest-snapshot/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16121,12 +15747,10 @@ }, "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16134,7 +15758,6 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16148,7 +15771,6 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16163,7 +15785,6 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16174,7 +15795,6 @@ }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16182,7 +15802,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-get-type": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -16190,7 +15809,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-haste-map": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16214,7 +15832,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-regex-util": { "version": "29.6.3", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -16222,7 +15839,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16238,7 +15854,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -16252,7 +15867,6 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16266,7 +15880,6 @@ }, "node_modules/jest-snapshot/node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -16277,7 +15890,6 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16290,7 +15902,6 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -16301,7 +15912,6 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.0", - "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -16315,12 +15925,10 @@ }, "node_modules/jest-snapshot/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, "license": "ISC" }, "node_modules/jest-snapshot/node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16328,7 +15936,6 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16339,7 +15946,6 @@ }, "node_modules/jest-snapshot/node_modules/write-file-atomic": { "version": "4.0.2", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -16351,7 +15957,6 @@ }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", - "dev": true, "license": "ISC" }, "node_modules/jest-util": { @@ -16819,7 +16424,6 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -16837,7 +16441,6 @@ }, "node_modules/jest-watcher/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16848,7 +16451,6 @@ }, "node_modules/jest-watcher/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16864,12 +16466,10 @@ }, "node_modules/jest-watcher/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16877,7 +16477,6 @@ }, "node_modules/jest-watcher/node_modules/ansi-escapes": { "version": "4.3.2", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -16891,7 +16490,6 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16905,7 +16503,6 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16920,7 +16517,6 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16931,7 +16527,6 @@ }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16939,7 +16534,6 @@ }, "node_modules/jest-watcher/node_modules/jest-util": { "version": "29.7.0", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16955,7 +16549,6 @@ }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16966,7 +16559,6 @@ }, "node_modules/jest-watcher/node_modules/type-fest": { "version": "0.21.3", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -17009,7 +16601,6 @@ }, "node_modules/jest/node_modules/@jest/schemas": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -17020,7 +16611,6 @@ }, "node_modules/jest/node_modules/@jest/types": { "version": "29.6.3", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -17036,12 +16626,10 @@ }, "node_modules/jest/node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, "license": "MIT" }, "node_modules/jest/node_modules/@types/yargs": { "version": "17.0.32", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -17049,7 +16637,6 @@ }, "node_modules/jest/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -17063,7 +16650,6 @@ }, "node_modules/jest/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -17078,7 +16664,6 @@ }, "node_modules/jest/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -17089,7 +16674,6 @@ }, "node_modules/jest/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17097,7 +16681,6 @@ }, "node_modules/jest/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -19989,7 +19572,6 @@ }, "node_modules/pure-rand": { "version": "6.1.0", - "dev": true, "funding": [ { "type": "individual", @@ -23252,9 +22834,9 @@ } }, "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -24196,7 +23778,6 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", - "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -25593,7 +25174,6 @@ }, "node_modules/yargs": { "version": "17.7.2", - "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -25610,7 +25190,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -25618,12 +25197,10 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25631,7 +25208,6 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", From e0f3ee3a95d91f46b7ebad8ce358740f3c66d648 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Mon, 30 Mar 2026 18:34:00 -0400 Subject: [PATCH 171/180] Updated header --- client/src/App.js | 2 +- client/src/components/header/header.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/App.js b/client/src/App.js index 6f7378d38..3c4f0d000 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -209,7 +209,7 @@ const App = () => { } > }> -
      +
      {labInProgress ? ( diff --git a/client/src/components/header/header.js b/client/src/components/header/header.js index f7747a21e..cb636f813 100644 --- a/client/src/components/header/header.js +++ b/client/src/components/header/header.js @@ -138,16 +138,16 @@ const Header = ({ isImagine }) => { return (
      {/* Shadow & Positioning*/}
      {/* Logo */} !isImagine && navigate("/")}> Accessible Learning Labs From 1ef1c93caac4b485a94301d6f8fc9f63b09b583a Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Mon, 30 Mar 2026 18:39:48 -0400 Subject: [PATCH 172/180] made it a bit bigger again ugh --- client/src/components/header/header.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/components/header/header.js b/client/src/components/header/header.js index cb636f813..ba0d14b55 100644 --- a/client/src/components/header/header.js +++ b/client/src/components/header/header.js @@ -138,7 +138,7 @@ const Header = ({ isImagine }) => { return (
      {/* Shadow & Positioning*/}
      { {/* Logo */} !isImagine && navigate("/")}> Accessible Learning Labs From ba10c6f8b930ece958f4c4344f86832d76ece296 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Mon, 30 Mar 2026 18:43:04 -0400 Subject: [PATCH 173/180] fix app.js --- client/src/App.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/App.js b/client/src/App.js index 3c4f0d000..6f7378d38 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -209,7 +209,7 @@ const App = () => { } > }> -
      +
      {labInProgress ? ( From 34bf7522244799e3aa3c1d66e2f8c7313b550e4c Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Mon, 30 Mar 2026 18:45:01 -0400 Subject: [PATCH 174/180] Fixed package lock --- client/package-lock.json | 424 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 424 insertions(+) diff --git a/client/package-lock.json b/client/package-lock.json index 6b6924100..e1d679099 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -2808,6 +2808,7 @@ }, "node_modules/@jest/console": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2823,6 +2824,7 @@ }, "node_modules/@jest/console/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2833,6 +2835,7 @@ }, "node_modules/@jest/console/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2848,10 +2851,12 @@ }, "node_modules/@jest/console/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2859,6 +2864,7 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2872,6 +2878,7 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2886,6 +2893,7 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2896,6 +2904,7 @@ }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2903,6 +2912,7 @@ }, "node_modules/@jest/console/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2918,6 +2928,7 @@ }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2925,6 +2936,7 @@ }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -2935,6 +2947,7 @@ }, "node_modules/@jest/core": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2980,6 +2993,7 @@ }, "node_modules/@jest/core/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2990,6 +3004,7 @@ }, "node_modules/@jest/core/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3014,6 +3029,7 @@ }, "node_modules/@jest/core/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3029,10 +3045,12 @@ }, "node_modules/@jest/core/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3040,6 +3058,7 @@ }, "node_modules/@jest/core/node_modules/ansi-escapes": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -3053,6 +3072,7 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3066,6 +3086,7 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3080,6 +3101,7 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3090,6 +3112,7 @@ }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3097,6 +3120,7 @@ }, "node_modules/@jest/core/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3104,6 +3128,7 @@ }, "node_modules/@jest/core/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3127,6 +3152,7 @@ }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3134,6 +3160,7 @@ }, "node_modules/@jest/core/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -3152,6 +3179,7 @@ }, "node_modules/@jest/core/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3167,6 +3195,7 @@ }, "node_modules/@jest/core/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3182,6 +3211,7 @@ }, "node_modules/@jest/core/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3195,6 +3225,7 @@ }, "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3208,6 +3239,7 @@ }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3220,6 +3252,7 @@ }, "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3230,6 +3263,7 @@ }, "node_modules/@jest/core/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3237,10 +3271,12 @@ }, "node_modules/@jest/core/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3248,6 +3284,7 @@ }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3258,6 +3295,7 @@ }, "node_modules/@jest/core/node_modules/type-fest": { "version": "0.21.3", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -3268,6 +3306,7 @@ }, "node_modules/@jest/core/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3279,6 +3318,7 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -3292,6 +3332,7 @@ }, "node_modules/@jest/environment/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3302,6 +3343,7 @@ }, "node_modules/@jest/environment/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3317,10 +3359,12 @@ }, "node_modules/@jest/environment/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/environment/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3328,6 +3372,7 @@ }, "node_modules/@jest/environment/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3341,6 +3386,7 @@ }, "node_modules/@jest/environment/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3355,6 +3401,7 @@ }, "node_modules/@jest/environment/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3365,6 +3412,7 @@ }, "node_modules/@jest/environment/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3372,6 +3420,7 @@ }, "node_modules/@jest/environment/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3382,6 +3431,7 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -3393,6 +3443,7 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -3403,6 +3454,7 @@ }, "node_modules/@jest/expect-utils/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3410,6 +3462,7 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3425,6 +3478,7 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3435,6 +3489,7 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3450,10 +3505,12 @@ }, "node_modules/@jest/fake-timers/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3461,6 +3518,7 @@ }, "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3474,6 +3532,7 @@ }, "node_modules/@jest/fake-timers/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3488,6 +3547,7 @@ }, "node_modules/@jest/fake-timers/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3498,6 +3558,7 @@ }, "node_modules/@jest/fake-timers/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3505,6 +3566,7 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3520,6 +3582,7 @@ }, "node_modules/@jest/fake-timers/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3530,6 +3593,7 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -3543,6 +3607,7 @@ }, "node_modules/@jest/globals/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3553,6 +3618,7 @@ }, "node_modules/@jest/globals/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3568,10 +3634,12 @@ }, "node_modules/@jest/globals/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/globals/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3579,6 +3647,7 @@ }, "node_modules/@jest/globals/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3592,6 +3661,7 @@ }, "node_modules/@jest/globals/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3606,6 +3676,7 @@ }, "node_modules/@jest/globals/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3616,6 +3687,7 @@ }, "node_modules/@jest/globals/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3623,6 +3695,7 @@ }, "node_modules/@jest/globals/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3633,6 +3706,7 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -3674,6 +3748,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3684,6 +3759,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3708,6 +3784,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3723,10 +3800,12 @@ }, "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3734,6 +3813,7 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3747,6 +3827,7 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3761,6 +3842,7 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3771,6 +3853,7 @@ }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3778,6 +3861,7 @@ }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.2", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -3792,6 +3876,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3815,6 +3900,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3822,6 +3908,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3837,6 +3924,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3850,6 +3938,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3863,6 +3952,7 @@ }, "node_modules/@jest/reporters/node_modules/lru-cache": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -3873,6 +3963,7 @@ }, "node_modules/@jest/reporters/node_modules/semver": { "version": "7.6.0", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -3886,10 +3977,12 @@ }, "node_modules/@jest/reporters/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3897,6 +3990,7 @@ }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3907,6 +4001,7 @@ }, "node_modules/@jest/reporters/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3918,6 +4013,7 @@ }, "node_modules/@jest/reporters/node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/@jest/schemas": { @@ -3932,6 +4028,7 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -3944,6 +4041,7 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -3957,6 +4055,7 @@ }, "node_modules/@jest/test-result/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3967,6 +4066,7 @@ }, "node_modules/@jest/test-result/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3982,10 +4082,12 @@ }, "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-result/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3993,6 +4095,7 @@ }, "node_modules/@jest/test-result/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4006,6 +4109,7 @@ }, "node_modules/@jest/test-result/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4020,6 +4124,7 @@ }, "node_modules/@jest/test-result/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4030,6 +4135,7 @@ }, "node_modules/@jest/test-result/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4037,6 +4143,7 @@ }, "node_modules/@jest/test-result/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4047,6 +4154,7 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -4060,6 +4168,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4070,6 +4179,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4085,10 +4195,12 @@ }, "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4096,6 +4208,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4109,6 +4222,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4123,6 +4237,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4133,6 +4248,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4140,6 +4256,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4163,6 +4280,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4170,6 +4288,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4185,6 +4304,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -4198,6 +4318,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4211,6 +4332,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4218,6 +4340,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5129,6 +5252,7 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -5136,6 +5260,7 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -5842,6 +5967,7 @@ }, "node_modules/@types/react": { "version": "18.2.71", + "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -5878,6 +6004,7 @@ }, "node_modules/@types/scheduler": { "version": "0.23.0", + "dev": true, "license": "MIT" }, "node_modules/@types/semver": { @@ -7725,6 +7852,7 @@ }, "node_modules/cliui": { "version": "8.0.1", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -7737,6 +7865,7 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -7750,6 +7879,7 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -7760,10 +7890,12 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7771,6 +7903,7 @@ }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7783,6 +7916,7 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8052,6 +8186,7 @@ }, "node_modules/create-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8071,6 +8206,7 @@ }, "node_modules/create-jest/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -8081,6 +8217,7 @@ }, "node_modules/create-jest/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -8096,10 +8233,12 @@ }, "node_modules/create-jest/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/create-jest/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -8107,6 +8246,7 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -8120,6 +8260,7 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -8134,6 +8275,7 @@ }, "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -8144,6 +8286,7 @@ }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8151,6 +8294,7 @@ }, "node_modules/create-jest/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8166,6 +8310,7 @@ }, "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -8873,6 +9018,7 @@ }, "node_modules/dedent": { "version": "1.5.1", + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9117,6 +9263,7 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -9310,6 +9457,7 @@ }, "node_modules/emittery": { "version": "0.13.1", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10274,6 +10422,7 @@ }, "node_modules/expect": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -10288,6 +10437,7 @@ }, "node_modules/expect/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -10298,6 +10448,7 @@ }, "node_modules/expect/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -10313,10 +10464,12 @@ }, "node_modules/expect/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/expect/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -10324,6 +10477,7 @@ }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10337,6 +10491,7 @@ }, "node_modules/expect/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10351,6 +10506,7 @@ }, "node_modules/expect/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10361,6 +10517,7 @@ }, "node_modules/expect/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10368,6 +10525,7 @@ }, "node_modules/expect/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10375,6 +10533,7 @@ }, "node_modules/expect/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -10390,6 +10549,7 @@ }, "node_modules/expect/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12539,6 +12699,7 @@ }, "node_modules/jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12563,6 +12724,7 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -12575,6 +12737,7 @@ }, "node_modules/jest-changed-files/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12585,6 +12748,7 @@ }, "node_modules/jest-changed-files/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12600,10 +12764,12 @@ }, "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-changed-files/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12611,6 +12777,7 @@ }, "node_modules/jest-changed-files/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12624,6 +12791,7 @@ }, "node_modules/jest-changed-files/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12638,6 +12806,7 @@ }, "node_modules/jest-changed-files/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12648,6 +12817,7 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -12669,6 +12839,7 @@ }, "node_modules/jest-changed-files/node_modules/get-stream": { "version": "6.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12679,6 +12850,7 @@ }, "node_modules/jest-changed-files/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12686,6 +12858,7 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -12693,6 +12866,7 @@ }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12703,6 +12877,7 @@ }, "node_modules/jest-changed-files/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12718,6 +12893,7 @@ }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12725,6 +12901,7 @@ }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -12735,6 +12912,7 @@ }, "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -12748,10 +12926,12 @@ }, "node_modules/jest-changed-files/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12759,6 +12939,7 @@ }, "node_modules/jest-changed-files/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12769,6 +12950,7 @@ }, "node_modules/jest-circus": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -12798,6 +12980,7 @@ }, "node_modules/jest-circus/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12808,6 +12991,7 @@ }, "node_modules/jest-circus/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12823,10 +13007,12 @@ }, "node_modules/jest-circus/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12834,6 +13020,7 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12847,6 +13034,7 @@ }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12861,6 +13049,7 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12871,6 +13060,7 @@ }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12878,6 +13068,7 @@ }, "node_modules/jest-circus/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12893,6 +13084,7 @@ }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12905,6 +13097,7 @@ }, "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12915,6 +13108,7 @@ }, "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12922,6 +13116,7 @@ }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12932,6 +13127,7 @@ }, "node_modules/jest-cli": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12963,6 +13159,7 @@ }, "node_modules/jest-cli/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12973,6 +13170,7 @@ }, "node_modules/jest-cli/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12988,10 +13186,12 @@ }, "node_modules/jest-cli/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12999,6 +13199,7 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13012,6 +13213,7 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13026,6 +13228,7 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13036,6 +13239,7 @@ }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13043,6 +13247,7 @@ }, "node_modules/jest-cli/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13050,6 +13255,7 @@ }, "node_modules/jest-cli/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13065,6 +13271,7 @@ }, "node_modules/jest-cli/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13080,6 +13287,7 @@ }, "node_modules/jest-cli/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13092,6 +13300,7 @@ }, "node_modules/jest-cli/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13102,6 +13311,7 @@ }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13112,6 +13322,7 @@ }, "node_modules/jest-config": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13155,6 +13366,7 @@ }, "node_modules/jest-config/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13165,6 +13377,7 @@ }, "node_modules/jest-config/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13189,6 +13402,7 @@ }, "node_modules/jest-config/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13204,10 +13418,12 @@ }, "node_modules/jest-config/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13215,6 +13431,7 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13228,6 +13445,7 @@ }, "node_modules/jest-config/node_modules/babel-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -13247,6 +13465,7 @@ }, "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -13260,6 +13479,7 @@ }, "node_modules/jest-config/node_modules/babel-preset-jest": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -13274,6 +13494,7 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13288,6 +13509,7 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13298,6 +13520,7 @@ }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13305,6 +13528,7 @@ }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13312,6 +13536,7 @@ }, "node_modules/jest-config/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13335,6 +13560,7 @@ }, "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13342,6 +13568,7 @@ }, "node_modules/jest-config/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13360,6 +13587,7 @@ }, "node_modules/jest-config/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13375,6 +13603,7 @@ }, "node_modules/jest-config/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13390,6 +13619,7 @@ }, "node_modules/jest-config/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -13403,6 +13633,7 @@ }, "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13416,6 +13647,7 @@ }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13428,6 +13660,7 @@ }, "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13438,6 +13671,7 @@ }, "node_modules/jest-config/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13445,10 +13679,12 @@ }, "node_modules/jest-config/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13456,6 +13692,7 @@ }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13466,6 +13703,7 @@ }, "node_modules/jest-config/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -13477,6 +13715,7 @@ }, "node_modules/jest-diff": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13490,6 +13729,7 @@ }, "node_modules/jest-diff/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13500,10 +13740,12 @@ }, "node_modules/jest-diff/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13517,6 +13759,7 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13531,6 +13774,7 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13541,6 +13785,7 @@ }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13548,6 +13793,7 @@ }, "node_modules/jest-diff/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13555,6 +13801,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13567,6 +13814,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13577,6 +13825,7 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13587,6 +13836,7 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -13597,6 +13847,7 @@ }, "node_modules/jest-each": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13611,6 +13862,7 @@ }, "node_modules/jest-each/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13621,6 +13873,7 @@ }, "node_modules/jest-each/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13636,10 +13889,12 @@ }, "node_modules/jest-each/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13647,6 +13902,7 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13660,6 +13916,7 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13674,6 +13931,7 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13684,6 +13942,7 @@ }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13691,6 +13950,7 @@ }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13698,6 +13958,7 @@ }, "node_modules/jest-each/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13713,6 +13974,7 @@ }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13725,6 +13987,7 @@ }, "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13735,6 +13998,7 @@ }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13886,6 +14150,7 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -13901,6 +14166,7 @@ }, "node_modules/jest-environment-node/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13911,6 +14177,7 @@ }, "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13926,10 +14193,12 @@ }, "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-environment-node/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13937,6 +14206,7 @@ }, "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13950,6 +14220,7 @@ }, "node_modules/jest-environment-node/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13964,6 +14235,7 @@ }, "node_modules/jest-environment-node/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13974,6 +14246,7 @@ }, "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13981,6 +14254,7 @@ }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13996,6 +14270,7 @@ }, "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14492,6 +14767,7 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -14503,6 +14779,7 @@ }, "node_modules/jest-leak-detector/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14513,10 +14790,12 @@ }, "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-leak-detector/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14527,6 +14806,7 @@ }, "node_modules/jest-leak-detector/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14534,6 +14814,7 @@ }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14546,6 +14827,7 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -14559,6 +14841,7 @@ }, "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14569,10 +14852,12 @@ }, "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14586,6 +14871,7 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14600,6 +14886,7 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14610,6 +14897,7 @@ }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14617,6 +14905,7 @@ }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14624,6 +14913,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14636,6 +14926,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14646,6 +14937,7 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14656,6 +14948,7 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -14674,6 +14967,7 @@ }, "node_modules/jest-message-util/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14684,6 +14978,7 @@ }, "node_modules/jest-message-util/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14699,10 +14994,12 @@ }, "node_modules/jest-message-util/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-message-util/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14710,6 +15007,7 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14723,6 +15021,7 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14737,6 +15036,7 @@ }, "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14747,6 +15047,7 @@ }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14754,6 +15055,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14766,6 +15068,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14776,6 +15079,7 @@ }, "node_modules/jest-message-util/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14783,6 +15087,7 @@ }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14793,6 +15098,7 @@ }, "node_modules/jest-mock": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14805,6 +15111,7 @@ }, "node_modules/jest-mock/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14815,6 +15122,7 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14830,10 +15138,12 @@ }, "node_modules/jest-mock/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14841,6 +15151,7 @@ }, "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14854,6 +15165,7 @@ }, "node_modules/jest-mock/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14868,6 +15180,7 @@ }, "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14878,6 +15191,7 @@ }, "node_modules/jest-mock/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14885,6 +15199,7 @@ }, "node_modules/jest-mock/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14900,6 +15215,7 @@ }, "node_modules/jest-mock/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14951,6 +15267,7 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -14962,6 +15279,7 @@ }, "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15030,6 +15348,7 @@ }, "node_modules/jest-runner": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -15060,6 +15379,7 @@ }, "node_modules/jest-runner/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15070,6 +15390,7 @@ }, "node_modules/jest-runner/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15094,6 +15415,7 @@ }, "node_modules/jest-runner/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15109,10 +15431,12 @@ }, "node_modules/jest-runner/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15120,6 +15444,7 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15133,6 +15458,7 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15147,6 +15473,7 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15157,6 +15484,7 @@ }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15164,6 +15492,7 @@ }, "node_modules/jest-runner/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15171,6 +15500,7 @@ }, "node_modules/jest-runner/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15194,6 +15524,7 @@ }, "node_modules/jest-runner/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15201,6 +15532,7 @@ }, "node_modules/jest-runner/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15219,6 +15551,7 @@ }, "node_modules/jest-runner/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15234,6 +15567,7 @@ }, "node_modules/jest-runner/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15249,6 +15583,7 @@ }, "node_modules/jest-runner/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15262,6 +15597,7 @@ }, "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15275,6 +15611,7 @@ }, "node_modules/jest-runner/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15287,6 +15624,7 @@ }, "node_modules/jest-runner/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15297,6 +15635,7 @@ }, "node_modules/jest-runner/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15304,10 +15643,12 @@ }, "node_modules/jest-runner/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-runner/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15315,6 +15656,7 @@ }, "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15322,6 +15664,7 @@ }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -15330,6 +15673,7 @@ }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15340,6 +15684,7 @@ }, "node_modules/jest-runner/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15351,6 +15696,7 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -15382,6 +15728,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15392,6 +15739,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15416,6 +15764,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15431,10 +15780,12 @@ }, "node_modules/jest-runtime/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15442,6 +15793,7 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15455,6 +15807,7 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15469,6 +15822,7 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15479,6 +15833,7 @@ }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15486,6 +15841,7 @@ }, "node_modules/jest-runtime/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15493,6 +15849,7 @@ }, "node_modules/jest-runtime/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15516,6 +15873,7 @@ }, "node_modules/jest-runtime/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15523,6 +15881,7 @@ }, "node_modules/jest-runtime/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15541,6 +15900,7 @@ }, "node_modules/jest-runtime/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15556,6 +15916,7 @@ }, "node_modules/jest-runtime/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15571,6 +15932,7 @@ }, "node_modules/jest-runtime/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15584,6 +15946,7 @@ }, "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15597,6 +15960,7 @@ }, "node_modules/jest-runtime/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15609,6 +15973,7 @@ }, "node_modules/jest-runtime/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15619,6 +15984,7 @@ }, "node_modules/jest-runtime/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15626,10 +15992,12 @@ }, "node_modules/jest-runtime/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15637,6 +16005,7 @@ }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15647,6 +16016,7 @@ }, "node_modules/jest-runtime/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15669,6 +16039,7 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15698,6 +16069,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15708,6 +16080,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15732,6 +16105,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15747,10 +16121,12 @@ }, "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15758,6 +16134,7 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15771,6 +16148,7 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15785,6 +16163,7 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15795,6 +16174,7 @@ }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15802,6 +16182,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15809,6 +16190,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15832,6 +16214,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15839,6 +16222,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15854,6 +16238,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15867,6 +16252,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15880,6 +16266,7 @@ }, "node_modules/jest-snapshot/node_modules/lru-cache": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -15890,6 +16277,7 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15902,6 +16290,7 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15912,6 +16301,7 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.0", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -15925,10 +16315,12 @@ }, "node_modules/jest-snapshot/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-snapshot/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15936,6 +16328,7 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15946,6 +16339,7 @@ }, "node_modules/jest-snapshot/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15957,6 +16351,7 @@ }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/jest-util": { @@ -16424,6 +16819,7 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -16441,6 +16837,7 @@ }, "node_modules/jest-watcher/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16451,6 +16848,7 @@ }, "node_modules/jest-watcher/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16466,10 +16864,12 @@ }, "node_modules/jest-watcher/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16477,6 +16877,7 @@ }, "node_modules/jest-watcher/node_modules/ansi-escapes": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -16490,6 +16891,7 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16503,6 +16905,7 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16517,6 +16920,7 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16527,6 +16931,7 @@ }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16534,6 +16939,7 @@ }, "node_modules/jest-watcher/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16549,6 +16955,7 @@ }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16559,6 +16966,7 @@ }, "node_modules/jest-watcher/node_modules/type-fest": { "version": "0.21.3", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -16601,6 +17009,7 @@ }, "node_modules/jest/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16611,6 +17020,7 @@ }, "node_modules/jest/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16626,10 +17036,12 @@ }, "node_modules/jest/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16637,6 +17049,7 @@ }, "node_modules/jest/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16650,6 +17063,7 @@ }, "node_modules/jest/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16664,6 +17078,7 @@ }, "node_modules/jest/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16674,6 +17089,7 @@ }, "node_modules/jest/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16681,6 +17097,7 @@ }, "node_modules/jest/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -19572,6 +19989,7 @@ }, "node_modules/pure-rand": { "version": "6.1.0", + "dev": true, "funding": [ { "type": "individual", @@ -23778,6 +24196,7 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -25174,6 +25593,7 @@ }, "node_modules/yargs": { "version": "17.7.2", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -25190,6 +25610,7 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -25197,10 +25618,12 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25208,6 +25631,7 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", From 98d150bda4498fcc72cd98f0f0a91c2b6d367173 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Mon, 30 Mar 2026 18:48:32 -0400 Subject: [PATCH 175/180] Fix package lock --- client/package-lock.json | 424 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 424 insertions(+) diff --git a/client/package-lock.json b/client/package-lock.json index 28f065090..328ed2a58 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -2808,6 +2808,7 @@ }, "node_modules/@jest/console": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2823,6 +2824,7 @@ }, "node_modules/@jest/console/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2833,6 +2835,7 @@ }, "node_modules/@jest/console/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2848,10 +2851,12 @@ }, "node_modules/@jest/console/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2859,6 +2864,7 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2872,6 +2878,7 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2886,6 +2893,7 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2896,6 +2904,7 @@ }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2903,6 +2912,7 @@ }, "node_modules/@jest/console/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2918,6 +2928,7 @@ }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2925,6 +2936,7 @@ }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -2935,6 +2947,7 @@ }, "node_modules/@jest/core": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2980,6 +2993,7 @@ }, "node_modules/@jest/core/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2990,6 +3004,7 @@ }, "node_modules/@jest/core/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3014,6 +3029,7 @@ }, "node_modules/@jest/core/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3029,10 +3045,12 @@ }, "node_modules/@jest/core/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3040,6 +3058,7 @@ }, "node_modules/@jest/core/node_modules/ansi-escapes": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -3053,6 +3072,7 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3066,6 +3086,7 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3080,6 +3101,7 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3090,6 +3112,7 @@ }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3097,6 +3120,7 @@ }, "node_modules/@jest/core/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3104,6 +3128,7 @@ }, "node_modules/@jest/core/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3127,6 +3152,7 @@ }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3134,6 +3160,7 @@ }, "node_modules/@jest/core/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -3152,6 +3179,7 @@ }, "node_modules/@jest/core/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3167,6 +3195,7 @@ }, "node_modules/@jest/core/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3182,6 +3211,7 @@ }, "node_modules/@jest/core/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3195,6 +3225,7 @@ }, "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3208,6 +3239,7 @@ }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3220,6 +3252,7 @@ }, "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3230,6 +3263,7 @@ }, "node_modules/@jest/core/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3237,10 +3271,12 @@ }, "node_modules/@jest/core/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3248,6 +3284,7 @@ }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3258,6 +3295,7 @@ }, "node_modules/@jest/core/node_modules/type-fest": { "version": "0.21.3", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -3268,6 +3306,7 @@ }, "node_modules/@jest/core/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3279,6 +3318,7 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -3292,6 +3332,7 @@ }, "node_modules/@jest/environment/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3302,6 +3343,7 @@ }, "node_modules/@jest/environment/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3317,10 +3359,12 @@ }, "node_modules/@jest/environment/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/environment/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3328,6 +3372,7 @@ }, "node_modules/@jest/environment/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3341,6 +3386,7 @@ }, "node_modules/@jest/environment/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3355,6 +3401,7 @@ }, "node_modules/@jest/environment/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3365,6 +3412,7 @@ }, "node_modules/@jest/environment/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3372,6 +3420,7 @@ }, "node_modules/@jest/environment/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3382,6 +3431,7 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -3393,6 +3443,7 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -3403,6 +3454,7 @@ }, "node_modules/@jest/expect-utils/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3410,6 +3462,7 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3425,6 +3478,7 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3435,6 +3489,7 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3450,10 +3505,12 @@ }, "node_modules/@jest/fake-timers/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3461,6 +3518,7 @@ }, "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3474,6 +3532,7 @@ }, "node_modules/@jest/fake-timers/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3488,6 +3547,7 @@ }, "node_modules/@jest/fake-timers/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3498,6 +3558,7 @@ }, "node_modules/@jest/fake-timers/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3505,6 +3566,7 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3520,6 +3582,7 @@ }, "node_modules/@jest/fake-timers/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3530,6 +3593,7 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -3543,6 +3607,7 @@ }, "node_modules/@jest/globals/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3553,6 +3618,7 @@ }, "node_modules/@jest/globals/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3568,10 +3634,12 @@ }, "node_modules/@jest/globals/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/globals/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3579,6 +3647,7 @@ }, "node_modules/@jest/globals/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3592,6 +3661,7 @@ }, "node_modules/@jest/globals/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3606,6 +3676,7 @@ }, "node_modules/@jest/globals/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3616,6 +3687,7 @@ }, "node_modules/@jest/globals/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3623,6 +3695,7 @@ }, "node_modules/@jest/globals/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3633,6 +3706,7 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -3674,6 +3748,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3684,6 +3759,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3708,6 +3784,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3723,10 +3800,12 @@ }, "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3734,6 +3813,7 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3747,6 +3827,7 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3761,6 +3842,7 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3771,6 +3853,7 @@ }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3778,6 +3861,7 @@ }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.2", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -3792,6 +3876,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3815,6 +3900,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3822,6 +3908,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3837,6 +3924,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3850,6 +3938,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3863,6 +3952,7 @@ }, "node_modules/@jest/reporters/node_modules/lru-cache": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -3873,6 +3963,7 @@ }, "node_modules/@jest/reporters/node_modules/semver": { "version": "7.6.0", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -3886,10 +3977,12 @@ }, "node_modules/@jest/reporters/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3897,6 +3990,7 @@ }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3907,6 +4001,7 @@ }, "node_modules/@jest/reporters/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3918,6 +4013,7 @@ }, "node_modules/@jest/reporters/node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/@jest/schemas": { @@ -3932,6 +4028,7 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -3944,6 +4041,7 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -3957,6 +4055,7 @@ }, "node_modules/@jest/test-result/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3967,6 +4066,7 @@ }, "node_modules/@jest/test-result/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3982,10 +4082,12 @@ }, "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-result/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3993,6 +4095,7 @@ }, "node_modules/@jest/test-result/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4006,6 +4109,7 @@ }, "node_modules/@jest/test-result/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4020,6 +4124,7 @@ }, "node_modules/@jest/test-result/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4030,6 +4135,7 @@ }, "node_modules/@jest/test-result/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4037,6 +4143,7 @@ }, "node_modules/@jest/test-result/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4047,6 +4154,7 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -4060,6 +4168,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4070,6 +4179,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4085,10 +4195,12 @@ }, "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4096,6 +4208,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4109,6 +4222,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4123,6 +4237,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4133,6 +4248,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4140,6 +4256,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4163,6 +4280,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4170,6 +4288,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4185,6 +4304,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -4198,6 +4318,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4211,6 +4332,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4218,6 +4340,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5129,6 +5252,7 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -5136,6 +5260,7 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -5842,6 +5967,7 @@ }, "node_modules/@types/react": { "version": "18.2.71", + "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -5878,6 +6004,7 @@ }, "node_modules/@types/scheduler": { "version": "0.23.0", + "dev": true, "license": "MIT" }, "node_modules/@types/semver": { @@ -7725,6 +7852,7 @@ }, "node_modules/cliui": { "version": "8.0.1", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -7737,6 +7865,7 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -7750,6 +7879,7 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -7760,10 +7890,12 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7771,6 +7903,7 @@ }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7783,6 +7916,7 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8052,6 +8186,7 @@ }, "node_modules/create-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8071,6 +8206,7 @@ }, "node_modules/create-jest/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -8081,6 +8217,7 @@ }, "node_modules/create-jest/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -8096,10 +8233,12 @@ }, "node_modules/create-jest/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/create-jest/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -8107,6 +8246,7 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -8120,6 +8260,7 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -8134,6 +8275,7 @@ }, "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -8144,6 +8286,7 @@ }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8151,6 +8294,7 @@ }, "node_modules/create-jest/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8166,6 +8310,7 @@ }, "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -8873,6 +9018,7 @@ }, "node_modules/dedent": { "version": "1.5.1", + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9117,6 +9263,7 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -9310,6 +9457,7 @@ }, "node_modules/emittery": { "version": "0.13.1", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10274,6 +10422,7 @@ }, "node_modules/expect": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -10288,6 +10437,7 @@ }, "node_modules/expect/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -10298,6 +10448,7 @@ }, "node_modules/expect/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -10313,10 +10464,12 @@ }, "node_modules/expect/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/expect/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -10324,6 +10477,7 @@ }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10337,6 +10491,7 @@ }, "node_modules/expect/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10351,6 +10506,7 @@ }, "node_modules/expect/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10361,6 +10517,7 @@ }, "node_modules/expect/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10368,6 +10525,7 @@ }, "node_modules/expect/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10375,6 +10533,7 @@ }, "node_modules/expect/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -10390,6 +10549,7 @@ }, "node_modules/expect/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12539,6 +12699,7 @@ }, "node_modules/jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12563,6 +12724,7 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -12575,6 +12737,7 @@ }, "node_modules/jest-changed-files/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12585,6 +12748,7 @@ }, "node_modules/jest-changed-files/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12600,10 +12764,12 @@ }, "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-changed-files/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12611,6 +12777,7 @@ }, "node_modules/jest-changed-files/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12624,6 +12791,7 @@ }, "node_modules/jest-changed-files/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12638,6 +12806,7 @@ }, "node_modules/jest-changed-files/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12648,6 +12817,7 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -12669,6 +12839,7 @@ }, "node_modules/jest-changed-files/node_modules/get-stream": { "version": "6.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12679,6 +12850,7 @@ }, "node_modules/jest-changed-files/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12686,6 +12858,7 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -12693,6 +12866,7 @@ }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12703,6 +12877,7 @@ }, "node_modules/jest-changed-files/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12718,6 +12893,7 @@ }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12725,6 +12901,7 @@ }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -12735,6 +12912,7 @@ }, "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -12748,10 +12926,12 @@ }, "node_modules/jest-changed-files/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12759,6 +12939,7 @@ }, "node_modules/jest-changed-files/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12769,6 +12950,7 @@ }, "node_modules/jest-circus": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -12798,6 +12980,7 @@ }, "node_modules/jest-circus/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12808,6 +12991,7 @@ }, "node_modules/jest-circus/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12823,10 +13007,12 @@ }, "node_modules/jest-circus/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12834,6 +13020,7 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12847,6 +13034,7 @@ }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12861,6 +13049,7 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12871,6 +13060,7 @@ }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12878,6 +13068,7 @@ }, "node_modules/jest-circus/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12893,6 +13084,7 @@ }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12905,6 +13097,7 @@ }, "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12915,6 +13108,7 @@ }, "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12922,6 +13116,7 @@ }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12932,6 +13127,7 @@ }, "node_modules/jest-cli": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12963,6 +13159,7 @@ }, "node_modules/jest-cli/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12973,6 +13170,7 @@ }, "node_modules/jest-cli/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12988,10 +13186,12 @@ }, "node_modules/jest-cli/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12999,6 +13199,7 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13012,6 +13213,7 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13026,6 +13228,7 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13036,6 +13239,7 @@ }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13043,6 +13247,7 @@ }, "node_modules/jest-cli/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13050,6 +13255,7 @@ }, "node_modules/jest-cli/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13065,6 +13271,7 @@ }, "node_modules/jest-cli/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13080,6 +13287,7 @@ }, "node_modules/jest-cli/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13092,6 +13300,7 @@ }, "node_modules/jest-cli/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13102,6 +13311,7 @@ }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13112,6 +13322,7 @@ }, "node_modules/jest-config": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13155,6 +13366,7 @@ }, "node_modules/jest-config/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13165,6 +13377,7 @@ }, "node_modules/jest-config/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13189,6 +13402,7 @@ }, "node_modules/jest-config/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13204,10 +13418,12 @@ }, "node_modules/jest-config/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13215,6 +13431,7 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13228,6 +13445,7 @@ }, "node_modules/jest-config/node_modules/babel-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -13247,6 +13465,7 @@ }, "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -13260,6 +13479,7 @@ }, "node_modules/jest-config/node_modules/babel-preset-jest": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -13274,6 +13494,7 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13288,6 +13509,7 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13298,6 +13520,7 @@ }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13305,6 +13528,7 @@ }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13312,6 +13536,7 @@ }, "node_modules/jest-config/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13335,6 +13560,7 @@ }, "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13342,6 +13568,7 @@ }, "node_modules/jest-config/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13360,6 +13587,7 @@ }, "node_modules/jest-config/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13375,6 +13603,7 @@ }, "node_modules/jest-config/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13390,6 +13619,7 @@ }, "node_modules/jest-config/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -13403,6 +13633,7 @@ }, "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13416,6 +13647,7 @@ }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13428,6 +13660,7 @@ }, "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13438,6 +13671,7 @@ }, "node_modules/jest-config/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13445,10 +13679,12 @@ }, "node_modules/jest-config/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13456,6 +13692,7 @@ }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13466,6 +13703,7 @@ }, "node_modules/jest-config/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -13477,6 +13715,7 @@ }, "node_modules/jest-diff": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13490,6 +13729,7 @@ }, "node_modules/jest-diff/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13500,10 +13740,12 @@ }, "node_modules/jest-diff/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13517,6 +13759,7 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13531,6 +13774,7 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13541,6 +13785,7 @@ }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13548,6 +13793,7 @@ }, "node_modules/jest-diff/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13555,6 +13801,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13567,6 +13814,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13577,6 +13825,7 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13587,6 +13836,7 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -13597,6 +13847,7 @@ }, "node_modules/jest-each": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13611,6 +13862,7 @@ }, "node_modules/jest-each/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13621,6 +13873,7 @@ }, "node_modules/jest-each/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13636,10 +13889,12 @@ }, "node_modules/jest-each/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13647,6 +13902,7 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13660,6 +13916,7 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13674,6 +13931,7 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13684,6 +13942,7 @@ }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13691,6 +13950,7 @@ }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13698,6 +13958,7 @@ }, "node_modules/jest-each/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13713,6 +13974,7 @@ }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13725,6 +13987,7 @@ }, "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13735,6 +13998,7 @@ }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13886,6 +14150,7 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -13901,6 +14166,7 @@ }, "node_modules/jest-environment-node/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13911,6 +14177,7 @@ }, "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13926,10 +14193,12 @@ }, "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-environment-node/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13937,6 +14206,7 @@ }, "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13950,6 +14220,7 @@ }, "node_modules/jest-environment-node/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13964,6 +14235,7 @@ }, "node_modules/jest-environment-node/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13974,6 +14246,7 @@ }, "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13981,6 +14254,7 @@ }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13996,6 +14270,7 @@ }, "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14492,6 +14767,7 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -14503,6 +14779,7 @@ }, "node_modules/jest-leak-detector/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14513,10 +14790,12 @@ }, "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-leak-detector/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14527,6 +14806,7 @@ }, "node_modules/jest-leak-detector/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14534,6 +14814,7 @@ }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14546,6 +14827,7 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -14559,6 +14841,7 @@ }, "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14569,10 +14852,12 @@ }, "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14586,6 +14871,7 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14600,6 +14886,7 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14610,6 +14897,7 @@ }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14617,6 +14905,7 @@ }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14624,6 +14913,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14636,6 +14926,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14646,6 +14937,7 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14656,6 +14948,7 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -14674,6 +14967,7 @@ }, "node_modules/jest-message-util/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14684,6 +14978,7 @@ }, "node_modules/jest-message-util/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14699,10 +14994,12 @@ }, "node_modules/jest-message-util/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-message-util/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14710,6 +15007,7 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14723,6 +15021,7 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14737,6 +15036,7 @@ }, "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14747,6 +15047,7 @@ }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14754,6 +15055,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14766,6 +15068,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14776,6 +15079,7 @@ }, "node_modules/jest-message-util/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14783,6 +15087,7 @@ }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14793,6 +15098,7 @@ }, "node_modules/jest-mock": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14805,6 +15111,7 @@ }, "node_modules/jest-mock/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14815,6 +15122,7 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14830,10 +15138,12 @@ }, "node_modules/jest-mock/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14841,6 +15151,7 @@ }, "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14854,6 +15165,7 @@ }, "node_modules/jest-mock/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14868,6 +15180,7 @@ }, "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14878,6 +15191,7 @@ }, "node_modules/jest-mock/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14885,6 +15199,7 @@ }, "node_modules/jest-mock/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14900,6 +15215,7 @@ }, "node_modules/jest-mock/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14951,6 +15267,7 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -14962,6 +15279,7 @@ }, "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15030,6 +15348,7 @@ }, "node_modules/jest-runner": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -15060,6 +15379,7 @@ }, "node_modules/jest-runner/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15070,6 +15390,7 @@ }, "node_modules/jest-runner/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15094,6 +15415,7 @@ }, "node_modules/jest-runner/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15109,10 +15431,12 @@ }, "node_modules/jest-runner/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15120,6 +15444,7 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15133,6 +15458,7 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15147,6 +15473,7 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15157,6 +15484,7 @@ }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15164,6 +15492,7 @@ }, "node_modules/jest-runner/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15171,6 +15500,7 @@ }, "node_modules/jest-runner/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15194,6 +15524,7 @@ }, "node_modules/jest-runner/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15201,6 +15532,7 @@ }, "node_modules/jest-runner/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15219,6 +15551,7 @@ }, "node_modules/jest-runner/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15234,6 +15567,7 @@ }, "node_modules/jest-runner/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15249,6 +15583,7 @@ }, "node_modules/jest-runner/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15262,6 +15597,7 @@ }, "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15275,6 +15611,7 @@ }, "node_modules/jest-runner/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15287,6 +15624,7 @@ }, "node_modules/jest-runner/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15297,6 +15635,7 @@ }, "node_modules/jest-runner/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15304,10 +15643,12 @@ }, "node_modules/jest-runner/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-runner/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15315,6 +15656,7 @@ }, "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15322,6 +15664,7 @@ }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -15330,6 +15673,7 @@ }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15340,6 +15684,7 @@ }, "node_modules/jest-runner/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15351,6 +15696,7 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -15382,6 +15728,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15392,6 +15739,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15416,6 +15764,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15431,10 +15780,12 @@ }, "node_modules/jest-runtime/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15442,6 +15793,7 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15455,6 +15807,7 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15469,6 +15822,7 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15479,6 +15833,7 @@ }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15486,6 +15841,7 @@ }, "node_modules/jest-runtime/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15493,6 +15849,7 @@ }, "node_modules/jest-runtime/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15516,6 +15873,7 @@ }, "node_modules/jest-runtime/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15523,6 +15881,7 @@ }, "node_modules/jest-runtime/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15541,6 +15900,7 @@ }, "node_modules/jest-runtime/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15556,6 +15916,7 @@ }, "node_modules/jest-runtime/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15571,6 +15932,7 @@ }, "node_modules/jest-runtime/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15584,6 +15946,7 @@ }, "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15597,6 +15960,7 @@ }, "node_modules/jest-runtime/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15609,6 +15973,7 @@ }, "node_modules/jest-runtime/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15619,6 +15984,7 @@ }, "node_modules/jest-runtime/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15626,10 +15992,12 @@ }, "node_modules/jest-runtime/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15637,6 +16005,7 @@ }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15647,6 +16016,7 @@ }, "node_modules/jest-runtime/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15669,6 +16039,7 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15698,6 +16069,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15708,6 +16080,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15732,6 +16105,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15747,10 +16121,12 @@ }, "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15758,6 +16134,7 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15771,6 +16148,7 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15785,6 +16163,7 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15795,6 +16174,7 @@ }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15802,6 +16182,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15809,6 +16190,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15832,6 +16214,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15839,6 +16222,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15854,6 +16238,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15867,6 +16252,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15880,6 +16266,7 @@ }, "node_modules/jest-snapshot/node_modules/lru-cache": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -15890,6 +16277,7 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15902,6 +16290,7 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15912,6 +16301,7 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.0", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -15925,10 +16315,12 @@ }, "node_modules/jest-snapshot/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-snapshot/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15936,6 +16328,7 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15946,6 +16339,7 @@ }, "node_modules/jest-snapshot/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15957,6 +16351,7 @@ }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/jest-util": { @@ -16424,6 +16819,7 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -16441,6 +16837,7 @@ }, "node_modules/jest-watcher/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16451,6 +16848,7 @@ }, "node_modules/jest-watcher/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16466,10 +16864,12 @@ }, "node_modules/jest-watcher/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16477,6 +16877,7 @@ }, "node_modules/jest-watcher/node_modules/ansi-escapes": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -16490,6 +16891,7 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16503,6 +16905,7 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16517,6 +16920,7 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16527,6 +16931,7 @@ }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16534,6 +16939,7 @@ }, "node_modules/jest-watcher/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16549,6 +16955,7 @@ }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16559,6 +16966,7 @@ }, "node_modules/jest-watcher/node_modules/type-fest": { "version": "0.21.3", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -16601,6 +17009,7 @@ }, "node_modules/jest/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16611,6 +17020,7 @@ }, "node_modules/jest/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16626,10 +17036,12 @@ }, "node_modules/jest/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16637,6 +17049,7 @@ }, "node_modules/jest/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16650,6 +17063,7 @@ }, "node_modules/jest/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16664,6 +17078,7 @@ }, "node_modules/jest/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16674,6 +17089,7 @@ }, "node_modules/jest/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16681,6 +17097,7 @@ }, "node_modules/jest/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -19572,6 +19989,7 @@ }, "node_modules/pure-rand": { "version": "6.1.0", + "dev": true, "funding": [ { "type": "individual", @@ -23778,6 +24196,7 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -25174,6 +25593,7 @@ }, "node_modules/yargs": { "version": "17.7.2", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -25190,6 +25610,7 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -25197,10 +25618,12 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25208,6 +25631,7 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", From 4a27849989d252140375a9a120ae8a277235f669 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Mon, 30 Mar 2026 18:51:50 -0400 Subject: [PATCH 176/180] Fix package lock --- client/package-lock.json | 424 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 424 insertions(+) diff --git a/client/package-lock.json b/client/package-lock.json index 21147ae9f..71364e0f2 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -2808,6 +2808,7 @@ }, "node_modules/@jest/console": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2823,6 +2824,7 @@ }, "node_modules/@jest/console/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2833,6 +2835,7 @@ }, "node_modules/@jest/console/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2848,10 +2851,12 @@ }, "node_modules/@jest/console/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2859,6 +2864,7 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2872,6 +2878,7 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2886,6 +2893,7 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2896,6 +2904,7 @@ }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2903,6 +2912,7 @@ }, "node_modules/@jest/console/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2918,6 +2928,7 @@ }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2925,6 +2936,7 @@ }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -2935,6 +2947,7 @@ }, "node_modules/@jest/core": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2980,6 +2993,7 @@ }, "node_modules/@jest/core/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2990,6 +3004,7 @@ }, "node_modules/@jest/core/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3014,6 +3029,7 @@ }, "node_modules/@jest/core/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3029,10 +3045,12 @@ }, "node_modules/@jest/core/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3040,6 +3058,7 @@ }, "node_modules/@jest/core/node_modules/ansi-escapes": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -3053,6 +3072,7 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3066,6 +3086,7 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3080,6 +3101,7 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3090,6 +3112,7 @@ }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3097,6 +3120,7 @@ }, "node_modules/@jest/core/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3104,6 +3128,7 @@ }, "node_modules/@jest/core/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3127,6 +3152,7 @@ }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3134,6 +3160,7 @@ }, "node_modules/@jest/core/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -3152,6 +3179,7 @@ }, "node_modules/@jest/core/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3167,6 +3195,7 @@ }, "node_modules/@jest/core/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3182,6 +3211,7 @@ }, "node_modules/@jest/core/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3195,6 +3225,7 @@ }, "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3208,6 +3239,7 @@ }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3220,6 +3252,7 @@ }, "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3230,6 +3263,7 @@ }, "node_modules/@jest/core/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3237,10 +3271,12 @@ }, "node_modules/@jest/core/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3248,6 +3284,7 @@ }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3258,6 +3295,7 @@ }, "node_modules/@jest/core/node_modules/type-fest": { "version": "0.21.3", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -3268,6 +3306,7 @@ }, "node_modules/@jest/core/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3279,6 +3318,7 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -3292,6 +3332,7 @@ }, "node_modules/@jest/environment/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3302,6 +3343,7 @@ }, "node_modules/@jest/environment/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3317,10 +3359,12 @@ }, "node_modules/@jest/environment/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/environment/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3328,6 +3372,7 @@ }, "node_modules/@jest/environment/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3341,6 +3386,7 @@ }, "node_modules/@jest/environment/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3355,6 +3401,7 @@ }, "node_modules/@jest/environment/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3365,6 +3412,7 @@ }, "node_modules/@jest/environment/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3372,6 +3420,7 @@ }, "node_modules/@jest/environment/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3382,6 +3431,7 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -3393,6 +3443,7 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -3403,6 +3454,7 @@ }, "node_modules/@jest/expect-utils/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3410,6 +3462,7 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3425,6 +3478,7 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3435,6 +3489,7 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3450,10 +3505,12 @@ }, "node_modules/@jest/fake-timers/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3461,6 +3518,7 @@ }, "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3474,6 +3532,7 @@ }, "node_modules/@jest/fake-timers/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3488,6 +3547,7 @@ }, "node_modules/@jest/fake-timers/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3498,6 +3558,7 @@ }, "node_modules/@jest/fake-timers/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3505,6 +3566,7 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3520,6 +3582,7 @@ }, "node_modules/@jest/fake-timers/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3530,6 +3593,7 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -3543,6 +3607,7 @@ }, "node_modules/@jest/globals/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3553,6 +3618,7 @@ }, "node_modules/@jest/globals/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3568,10 +3634,12 @@ }, "node_modules/@jest/globals/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/globals/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3579,6 +3647,7 @@ }, "node_modules/@jest/globals/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3592,6 +3661,7 @@ }, "node_modules/@jest/globals/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3606,6 +3676,7 @@ }, "node_modules/@jest/globals/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3616,6 +3687,7 @@ }, "node_modules/@jest/globals/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3623,6 +3695,7 @@ }, "node_modules/@jest/globals/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3633,6 +3706,7 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -3674,6 +3748,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3684,6 +3759,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -3708,6 +3784,7 @@ }, "node_modules/@jest/reporters/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3723,10 +3800,12 @@ }, "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3734,6 +3813,7 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3747,6 +3827,7 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3761,6 +3842,7 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3771,6 +3853,7 @@ }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3778,6 +3861,7 @@ }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.2", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -3792,6 +3876,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3815,6 +3900,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3822,6 +3908,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -3837,6 +3924,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3850,6 +3938,7 @@ }, "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3863,6 +3952,7 @@ }, "node_modules/@jest/reporters/node_modules/lru-cache": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -3873,6 +3963,7 @@ }, "node_modules/@jest/reporters/node_modules/semver": { "version": "7.6.0", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -3886,10 +3977,12 @@ }, "node_modules/@jest/reporters/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3897,6 +3990,7 @@ }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3907,6 +4001,7 @@ }, "node_modules/@jest/reporters/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -3918,6 +4013,7 @@ }, "node_modules/@jest/reporters/node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/@jest/schemas": { @@ -3932,6 +4028,7 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -3944,6 +4041,7 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -3957,6 +4055,7 @@ }, "node_modules/@jest/test-result/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3967,6 +4066,7 @@ }, "node_modules/@jest/test-result/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -3982,10 +4082,12 @@ }, "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-result/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -3993,6 +4095,7 @@ }, "node_modules/@jest/test-result/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4006,6 +4109,7 @@ }, "node_modules/@jest/test-result/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4020,6 +4124,7 @@ }, "node_modules/@jest/test-result/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4030,6 +4135,7 @@ }, "node_modules/@jest/test-result/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4037,6 +4143,7 @@ }, "node_modules/@jest/test-result/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4047,6 +4154,7 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -4060,6 +4168,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -4070,6 +4179,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -4085,10 +4195,12 @@ }, "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4096,6 +4208,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4109,6 +4222,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4123,6 +4237,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4133,6 +4248,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4140,6 +4256,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4163,6 +4280,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4170,6 +4288,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4185,6 +4304,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -4198,6 +4318,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4211,6 +4332,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4218,6 +4340,7 @@ }, "node_modules/@jest/test-sequencer/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5129,6 +5252,7 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -5136,6 +5260,7 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -5842,6 +5967,7 @@ }, "node_modules/@types/react": { "version": "18.2.71", + "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -5878,6 +6004,7 @@ }, "node_modules/@types/scheduler": { "version": "0.23.0", + "dev": true, "license": "MIT" }, "node_modules/@types/semver": { @@ -7725,6 +7852,7 @@ }, "node_modules/cliui": { "version": "8.0.1", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -7737,6 +7865,7 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -7750,6 +7879,7 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -7760,10 +7890,12 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7771,6 +7903,7 @@ }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7783,6 +7916,7 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8052,6 +8186,7 @@ }, "node_modules/create-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8071,6 +8206,7 @@ }, "node_modules/create-jest/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -8081,6 +8217,7 @@ }, "node_modules/create-jest/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -8096,10 +8233,12 @@ }, "node_modules/create-jest/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/create-jest/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -8107,6 +8246,7 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -8120,6 +8260,7 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -8134,6 +8275,7 @@ }, "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -8144,6 +8286,7 @@ }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8151,6 +8294,7 @@ }, "node_modules/create-jest/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -8166,6 +8310,7 @@ }, "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -8873,6 +9018,7 @@ }, "node_modules/dedent": { "version": "1.5.1", + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9117,6 +9263,7 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -9310,6 +9457,7 @@ }, "node_modules/emittery": { "version": "0.13.1", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10274,6 +10422,7 @@ }, "node_modules/expect": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -10288,6 +10437,7 @@ }, "node_modules/expect/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -10298,6 +10448,7 @@ }, "node_modules/expect/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -10313,10 +10464,12 @@ }, "node_modules/expect/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/expect/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -10324,6 +10477,7 @@ }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10337,6 +10491,7 @@ }, "node_modules/expect/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10351,6 +10506,7 @@ }, "node_modules/expect/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10361,6 +10517,7 @@ }, "node_modules/expect/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10368,6 +10525,7 @@ }, "node_modules/expect/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10375,6 +10533,7 @@ }, "node_modules/expect/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -10390,6 +10549,7 @@ }, "node_modules/expect/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12539,6 +12699,7 @@ }, "node_modules/jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12563,6 +12724,7 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -12575,6 +12737,7 @@ }, "node_modules/jest-changed-files/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12585,6 +12748,7 @@ }, "node_modules/jest-changed-files/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12600,10 +12764,12 @@ }, "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-changed-files/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12611,6 +12777,7 @@ }, "node_modules/jest-changed-files/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12624,6 +12791,7 @@ }, "node_modules/jest-changed-files/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12638,6 +12806,7 @@ }, "node_modules/jest-changed-files/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12648,6 +12817,7 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -12669,6 +12839,7 @@ }, "node_modules/jest-changed-files/node_modules/get-stream": { "version": "6.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12679,6 +12850,7 @@ }, "node_modules/jest-changed-files/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12686,6 +12858,7 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -12693,6 +12866,7 @@ }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12703,6 +12877,7 @@ }, "node_modules/jest-changed-files/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12718,6 +12893,7 @@ }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12725,6 +12901,7 @@ }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -12735,6 +12912,7 @@ }, "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -12748,10 +12926,12 @@ }, "node_modules/jest-changed-files/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12759,6 +12939,7 @@ }, "node_modules/jest-changed-files/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12769,6 +12950,7 @@ }, "node_modules/jest-circus": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -12798,6 +12980,7 @@ }, "node_modules/jest-circus/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12808,6 +12991,7 @@ }, "node_modules/jest-circus/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12823,10 +13007,12 @@ }, "node_modules/jest-circus/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12834,6 +13020,7 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12847,6 +13034,7 @@ }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -12861,6 +13049,7 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12871,6 +13060,7 @@ }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12878,6 +13068,7 @@ }, "node_modules/jest-circus/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12893,6 +13084,7 @@ }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12905,6 +13097,7 @@ }, "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12915,6 +13108,7 @@ }, "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12922,6 +13116,7 @@ }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12932,6 +13127,7 @@ }, "node_modules/jest-cli": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -12963,6 +13159,7 @@ }, "node_modules/jest-cli/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -12973,6 +13170,7 @@ }, "node_modules/jest-cli/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -12988,10 +13186,12 @@ }, "node_modules/jest-cli/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -12999,6 +13199,7 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13012,6 +13213,7 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13026,6 +13228,7 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13036,6 +13239,7 @@ }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13043,6 +13247,7 @@ }, "node_modules/jest-cli/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13050,6 +13255,7 @@ }, "node_modules/jest-cli/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13065,6 +13271,7 @@ }, "node_modules/jest-cli/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13080,6 +13287,7 @@ }, "node_modules/jest-cli/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13092,6 +13300,7 @@ }, "node_modules/jest-cli/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13102,6 +13311,7 @@ }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13112,6 +13322,7 @@ }, "node_modules/jest-config": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13155,6 +13366,7 @@ }, "node_modules/jest-config/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13165,6 +13377,7 @@ }, "node_modules/jest-config/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -13189,6 +13402,7 @@ }, "node_modules/jest-config/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13204,10 +13418,12 @@ }, "node_modules/jest-config/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13215,6 +13431,7 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13228,6 +13445,7 @@ }, "node_modules/jest-config/node_modules/babel-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -13247,6 +13465,7 @@ }, "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -13260,6 +13479,7 @@ }, "node_modules/jest-config/node_modules/babel-preset-jest": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -13274,6 +13494,7 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13288,6 +13509,7 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13298,6 +13520,7 @@ }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13305,6 +13528,7 @@ }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13312,6 +13536,7 @@ }, "node_modules/jest-config/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13335,6 +13560,7 @@ }, "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13342,6 +13568,7 @@ }, "node_modules/jest-config/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13360,6 +13587,7 @@ }, "node_modules/jest-config/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13375,6 +13603,7 @@ }, "node_modules/jest-config/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13390,6 +13619,7 @@ }, "node_modules/jest-config/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -13403,6 +13633,7 @@ }, "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13416,6 +13647,7 @@ }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13428,6 +13660,7 @@ }, "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13438,6 +13671,7 @@ }, "node_modules/jest-config/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13445,10 +13679,12 @@ }, "node_modules/jest-config/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13456,6 +13692,7 @@ }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13466,6 +13703,7 @@ }, "node_modules/jest-config/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -13477,6 +13715,7 @@ }, "node_modules/jest-diff": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -13490,6 +13729,7 @@ }, "node_modules/jest-diff/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13500,10 +13740,12 @@ }, "node_modules/jest-diff/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13517,6 +13759,7 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13531,6 +13774,7 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13541,6 +13785,7 @@ }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13548,6 +13793,7 @@ }, "node_modules/jest-diff/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13555,6 +13801,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13567,6 +13814,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13577,6 +13825,7 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13587,6 +13836,7 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -13597,6 +13847,7 @@ }, "node_modules/jest-each": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13611,6 +13862,7 @@ }, "node_modules/jest-each/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13621,6 +13873,7 @@ }, "node_modules/jest-each/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13636,10 +13889,12 @@ }, "node_modules/jest-each/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13647,6 +13902,7 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13660,6 +13916,7 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13674,6 +13931,7 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13684,6 +13942,7 @@ }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13691,6 +13950,7 @@ }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13698,6 +13958,7 @@ }, "node_modules/jest-each/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13713,6 +13974,7 @@ }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13725,6 +13987,7 @@ }, "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13735,6 +13998,7 @@ }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13886,6 +14150,7 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -13901,6 +14166,7 @@ }, "node_modules/jest-environment-node/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -13911,6 +14177,7 @@ }, "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -13926,10 +14193,12 @@ }, "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-environment-node/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -13937,6 +14206,7 @@ }, "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13950,6 +14220,7 @@ }, "node_modules/jest-environment-node/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13964,6 +14235,7 @@ }, "node_modules/jest-environment-node/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13974,6 +14246,7 @@ }, "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13981,6 +14254,7 @@ }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13996,6 +14270,7 @@ }, "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14492,6 +14767,7 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -14503,6 +14779,7 @@ }, "node_modules/jest-leak-detector/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14513,10 +14790,12 @@ }, "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-leak-detector/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14527,6 +14806,7 @@ }, "node_modules/jest-leak-detector/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14534,6 +14814,7 @@ }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14546,6 +14827,7 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -14559,6 +14841,7 @@ }, "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14569,10 +14852,12 @@ }, "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14586,6 +14871,7 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14600,6 +14886,7 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14610,6 +14897,7 @@ }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14617,6 +14905,7 @@ }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14624,6 +14913,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14636,6 +14926,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14646,6 +14937,7 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14656,6 +14948,7 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -14674,6 +14967,7 @@ }, "node_modules/jest-message-util/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14684,6 +14978,7 @@ }, "node_modules/jest-message-util/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14699,10 +14994,12 @@ }, "node_modules/jest-message-util/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-message-util/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14710,6 +15007,7 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14723,6 +15021,7 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14737,6 +15036,7 @@ }, "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14747,6 +15047,7 @@ }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14754,6 +15055,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14766,6 +15068,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14776,6 +15079,7 @@ }, "node_modules/jest-message-util/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14783,6 +15087,7 @@ }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14793,6 +15098,7 @@ }, "node_modules/jest-mock": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14805,6 +15111,7 @@ }, "node_modules/jest-mock/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -14815,6 +15122,7 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -14830,10 +15138,12 @@ }, "node_modules/jest-mock/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -14841,6 +15151,7 @@ }, "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14854,6 +15165,7 @@ }, "node_modules/jest-mock/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14868,6 +15180,7 @@ }, "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14878,6 +15191,7 @@ }, "node_modules/jest-mock/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14885,6 +15199,7 @@ }, "node_modules/jest-mock/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -14900,6 +15215,7 @@ }, "node_modules/jest-mock/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14951,6 +15267,7 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -14962,6 +15279,7 @@ }, "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15030,6 +15348,7 @@ }, "node_modules/jest-runner": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -15060,6 +15379,7 @@ }, "node_modules/jest-runner/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15070,6 +15390,7 @@ }, "node_modules/jest-runner/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15094,6 +15415,7 @@ }, "node_modules/jest-runner/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15109,10 +15431,12 @@ }, "node_modules/jest-runner/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15120,6 +15444,7 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15133,6 +15458,7 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15147,6 +15473,7 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15157,6 +15484,7 @@ }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15164,6 +15492,7 @@ }, "node_modules/jest-runner/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15171,6 +15500,7 @@ }, "node_modules/jest-runner/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15194,6 +15524,7 @@ }, "node_modules/jest-runner/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15201,6 +15532,7 @@ }, "node_modules/jest-runner/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15219,6 +15551,7 @@ }, "node_modules/jest-runner/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15234,6 +15567,7 @@ }, "node_modules/jest-runner/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15249,6 +15583,7 @@ }, "node_modules/jest-runner/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15262,6 +15597,7 @@ }, "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15275,6 +15611,7 @@ }, "node_modules/jest-runner/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15287,6 +15624,7 @@ }, "node_modules/jest-runner/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15297,6 +15635,7 @@ }, "node_modules/jest-runner/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15304,10 +15643,12 @@ }, "node_modules/jest-runner/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-runner/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15315,6 +15656,7 @@ }, "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15322,6 +15664,7 @@ }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -15330,6 +15673,7 @@ }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15340,6 +15684,7 @@ }, "node_modules/jest-runner/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15351,6 +15696,7 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -15382,6 +15728,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15392,6 +15739,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15416,6 +15764,7 @@ }, "node_modules/jest-runtime/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15431,10 +15780,12 @@ }, "node_modules/jest-runtime/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15442,6 +15793,7 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15455,6 +15807,7 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15469,6 +15822,7 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15479,6 +15833,7 @@ }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15486,6 +15841,7 @@ }, "node_modules/jest-runtime/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15493,6 +15849,7 @@ }, "node_modules/jest-runtime/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15516,6 +15873,7 @@ }, "node_modules/jest-runtime/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15523,6 +15881,7 @@ }, "node_modules/jest-runtime/node_modules/jest-resolve": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -15541,6 +15900,7 @@ }, "node_modules/jest-runtime/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15556,6 +15916,7 @@ }, "node_modules/jest-runtime/node_modules/jest-validate": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15571,6 +15932,7 @@ }, "node_modules/jest-runtime/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15584,6 +15946,7 @@ }, "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15597,6 +15960,7 @@ }, "node_modules/jest-runtime/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15609,6 +15973,7 @@ }, "node_modules/jest-runtime/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15619,6 +15984,7 @@ }, "node_modules/jest-runtime/node_modules/resolve.exports": { "version": "2.0.2", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15626,10 +15992,12 @@ }, "node_modules/jest-runtime/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15637,6 +16005,7 @@ }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15647,6 +16016,7 @@ }, "node_modules/jest-runtime/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15669,6 +16039,7 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15698,6 +16069,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -15708,6 +16080,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/transform": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -15732,6 +16105,7 @@ }, "node_modules/jest-snapshot/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15747,10 +16121,12 @@ }, "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15758,6 +16134,7 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15771,6 +16148,7 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15785,6 +16163,7 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15795,6 +16174,7 @@ }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15802,6 +16182,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-get-type": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15809,6 +16190,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-haste-map": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15832,6 +16214,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-regex-util": { "version": "29.6.3", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15839,6 +16222,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -15854,6 +16238,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15867,6 +16252,7 @@ }, "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15880,6 +16266,7 @@ }, "node_modules/jest-snapshot/node_modules/lru-cache": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -15890,6 +16277,7 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -15902,6 +16290,7 @@ }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15912,6 +16301,7 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.0", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -15925,10 +16315,12 @@ }, "node_modules/jest-snapshot/node_modules/signal-exit": { "version": "3.0.7", + "dev": true, "license": "ISC" }, "node_modules/jest-snapshot/node_modules/slash": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15936,6 +16328,7 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15946,6 +16339,7 @@ }, "node_modules/jest-snapshot/node_modules/write-file-atomic": { "version": "4.0.2", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -15957,6 +16351,7 @@ }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/jest-util": { @@ -16424,6 +16819,7 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -16441,6 +16837,7 @@ }, "node_modules/jest-watcher/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16451,6 +16848,7 @@ }, "node_modules/jest-watcher/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16466,10 +16864,12 @@ }, "node_modules/jest-watcher/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16477,6 +16877,7 @@ }, "node_modules/jest-watcher/node_modules/ansi-escapes": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -16490,6 +16891,7 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16503,6 +16905,7 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16517,6 +16920,7 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16527,6 +16931,7 @@ }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16534,6 +16939,7 @@ }, "node_modules/jest-watcher/node_modules/jest-util": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -16549,6 +16955,7 @@ }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -16559,6 +16966,7 @@ }, "node_modules/jest-watcher/node_modules/type-fest": { "version": "0.21.3", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -16601,6 +17009,7 @@ }, "node_modules/jest/node_modules/@jest/schemas": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -16611,6 +17020,7 @@ }, "node_modules/jest/node_modules/@jest/types": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -16626,10 +17036,12 @@ }, "node_modules/jest/node_modules/@sinclair/typebox": { "version": "0.27.8", + "dev": true, "license": "MIT" }, "node_modules/jest/node_modules/@types/yargs": { "version": "17.0.32", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -16637,6 +17049,7 @@ }, "node_modules/jest/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16650,6 +17063,7 @@ }, "node_modules/jest/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16664,6 +17078,7 @@ }, "node_modules/jest/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16674,6 +17089,7 @@ }, "node_modules/jest/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16681,6 +17097,7 @@ }, "node_modules/jest/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -19572,6 +19989,7 @@ }, "node_modules/pure-rand": { "version": "6.1.0", + "dev": true, "funding": [ { "type": "individual", @@ -23778,6 +24196,7 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -25174,6 +25593,7 @@ }, "node_modules/yargs": { "version": "17.7.2", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -25190,6 +25610,7 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -25197,10 +25618,12 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25208,6 +25631,7 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", From 998203cd1869bb75653daca2c35ce896daa8fae7 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Tue, 31 Mar 2026 19:03:53 -0400 Subject: [PATCH 177/180] Fixed professors showing undefined favorite lab --- client/src/pages/about-us/MemberDisplay.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/pages/about-us/MemberDisplay.js b/client/src/pages/about-us/MemberDisplay.js index c03581df6..0bb1a505e 100644 --- a/client/src/pages/about-us/MemberDisplay.js +++ b/client/src/pages/about-us/MemberDisplay.js @@ -138,7 +138,7 @@ const MemberDisplay = (props) => { })}
      - {currentMember.favoritelab !== null ? ( + {currentMember.favoritelab ? (

      Favorite Lab From 3526ab991aa2108bcd4a006593628062e8da44c3 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Tue, 31 Mar 2026 19:16:36 -0400 Subject: [PATCH 178/180] Also fixed interior scrollbar on lab13 based on new viewport changes --- client/src/components/exercise/lab13/Main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/exercise/lab13/Main.js b/client/src/components/exercise/lab13/Main.js index cb3353971..f95f5f95b 100644 --- a/client/src/components/exercise/lab13/Main.js +++ b/client/src/components/exercise/lab13/Main.js @@ -16,7 +16,7 @@ import IDEIntroduction from "./pages/IDEIntroduction"; */ const Main = () => { return ( -
      +
      From 05aebf283c4ff57acb13fa078fb92e2f906083e9 Mon Sep 17 00:00:00 2001 From: Owen Luts Date: Thu, 2 Apr 2026 12:07:22 -0400 Subject: [PATCH 179/180] minor nits --- server/database/schema.sql | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/server/database/schema.sql b/server/database/schema.sql index 69d6e3521..6d4068590 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -2996,7 +2996,7 @@ to test your knowledge. Click "Next" to start!', e'{ "LO1: Construct a basic neural network using provided components (Synthesis)", "LO2: Simulate neural network training (Comprehension).", "LO3: Demonstrate bias present in a neural network (Application)." -]', 'Jonathan Cruz, Domenic Mangano, Emily Crilley', 'https://ball.rit.edu/Lab10/', null, 'In this lab, you will learn about where bias is present within neural networks and ways to help reduce the biases developed in the algorithms. You will understand how neural networks work and how to build appropriate training data sets to combat development bias, view related media to reinforce the topic, and take a quiz to test your knowledge. Click "Next" to start!', e'{ +]', 'Jonathan Cruz, Domenic Mangano, Emily Crilley', 'https://all.rit.edu/Lab10/', null, 'In this lab, you will learn about where bias is present within neural networks and ways to help reduce the biases developed in the algorithms. You will understand how neural networks work and how to build appropriate training data sets to combat development bias, view related media to reinforce the topic, and take a quiz to test your knowledge. Click "Next" to start!', e'{ "piechart":{ "header":"Company investments towards AI", "caption":["Billions of dollars invested towards AI by major tech companies"], @@ -3470,7 +3470,7 @@ e'[ "LO2: Exposure to and analysis of poorly accessible design: Examine a software application that doesn\’t properly accommodate accessibility in regards to identity (Analysis)", "LO3: Apply solutions to solve access problems: Use knowledge of accessibility design solutions to construct corrective measures to allow previously inaccessible software to become accessible to appropriate parties (Application)", "LO4: Develop further empathy: Relate to individuals who experience difficulties with their gender (Comprehension)" -]', 'Domenic Mangano, Heather Moses, Owen Luts', 'https://ball.rit.edu/Lab12/', null, 'In this lab, you will learn about the importance of accessibility for users that identify as genders other than male or female. You will learn about the issues related to lack of accessible software for this demographic, increase your understanding through an interactive module on identity accessibility, view related media to reinforce the topic, and take a quiz to test your knowledge! Click +]', 'Domenic Mangano, Heather Moses, Owen Luts', 'https://all.rit.edu/Lab12/', null, 'In this lab, you will learn about the importance of accessibility for users that identify as genders other than male or female. You will learn about the issues related to lack of accessible software for this demographic, increase your understanding through an interactive module on identity accessibility, view related media to reinforce the topic, and take a quiz to test your knowledge! Click “Next” to start!', e'{ "piechart": { "header":"Unbiased Forms", @@ -3702,7 +3702,7 @@ e'[ "LO2: Create design strategies that promote critical thinking, such as certainty indicators and disclaimers about AI limitations (Synthesis)", "LO3: Identify common hallucination patterns in generative AI, including false citations and misleading self-references (Application)", "LO4: Experience how confident language, polished grammar, and proximity to credible sources can lead to overestimation of AI accuracy (Comprehension)" -]', 'Emma Schmitt, Jack DeFeo, Kristen Fang, Darlyn Gomez, Christine Espeleta', 'https://ball.rit.edu/Lab13/', null, +]', 'Emma Schmitt, Jack DeFeo, Kristen Fang, Darlyn Gomez, Christine Espeleta', 'https://all.rit.edu/Lab13/', null, 'In this lab, you will explore what cognitive bias is and how it influences trust in AI systems. You will evaluate AI responses, compare them with search results, and reflect on @@ -3963,13 +3963,13 @@ a quiz to test your knowledge. Click "Next" to start!', e'{ } ]', 1, 'coming soon', 'coming soon', true), -(14, 'Quantum Cryptography', 'Quantum', 'AI', '/quantumcryptography.jpg', 'Learn about quantum computing through the lens of cryptography.', 'This lab introduces the concepts of Quantum Computing through the lens of cryptography. Participants will learn about different ways to encrypt messages, and the algorithms used to decrypt them. Then, the lab explores the difference in time and efficiency between breaking these ciphers with both Classical and Quantum computers.', +(14, 'Quantum Cryptography', 'Quantum', 'Quantum Computing', '/quantumcryptography.jpg', 'Learn about quantum computing through the lens of cryptography.', 'This lab introduces the concepts of Quantum Computing through the lens of cryptography. Participants will learn about different ways to encrypt messages, and the algorithms used to decrypt them. Then, the lab explores the difference in time and efficiency between breaking these ciphers with both Classical and Quantum computers.', e'[ "LO1: Understand role of qubits giving quantum computers greater computational power (Comprehension)", "LO2: Interact with a simple quantum simulation to see how adding qubits improves factoring (Application)", "LO3: Use the simulation to factor a small number and decrypt an encrypted message (Application)", "LO4: Explain why increasing qubit count helps quantum algorithms break encryption faster (Analysis)" - ]', 'Owen Luts, Vivian Hernandez, William Herrick', 'https://ball.rit.edu/Lab14/', null, + ]', 'Owen Luts, Vivian Hernandez, William Herrick', 'https://all.rit.edu/Lab14/', null, -- About Section 'In this lab, you will learn about the fundamentals of quantum computing and how it differs from classical computing. You will practice applying these concepts through interactive exercises, including encrypting and decrypting messages with the Caesar cipher to compare classical and quantum approaches. Click “Next” to start!', e'{ "description":"", From b9bd9b179aaef3971e265b1011090db2d0661200 Mon Sep 17 00:00:00 2001 From: JackyFTW Date: Thu, 2 Apr 2026 13:27:59 -0400 Subject: [PATCH 180/180] Replaced featured lab 12 with lab 13 --- client/src/pages/landingpage/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/pages/landingpage/index.js b/client/src/pages/landingpage/index.js index 19fcfb534..0ccf07104 100644 --- a/client/src/pages/landingpage/index.js +++ b/client/src/pages/landingpage/index.js @@ -36,18 +36,18 @@ const Home = () => { const getFeaturedLabs = async () => { const allLabs = await labService.getAllLabs(); - let lab12; + let lab13; let lab14; allLabs.map((lab) => { - if (lab.labShortName == "Identity") { - lab12 = lab; + if (lab.labShortName == "Cognitive Bias") { + lab13 = lab; } else if (lab.labShortName == "Quantum") { lab14 = lab; } }); - setFeaturedLabs([lab14, lab12]); + setFeaturedLabs([lab14, lab13]); }; const endImagine = () => actions.setIsImagine(false);

    {/* get user's first and last initials */} diff --git a/client/src/components/exercise/lab13/components/Avatar.js b/client/src/components/exercise/lab13/components/Avatar.js index 079dad31e..a125bcfb4 100644 --- a/client/src/components/exercise/lab13/components/Avatar.js +++ b/client/src/components/exercise/lab13/components/Avatar.js @@ -1,9 +1,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import RobotImage from '../../../../assets/images/lab13/robot.png'; +import { AvatarType } from '../../../../constants/lab13/AvatarType'; const Avatar = ({ type, size = 40 }) => { - const isAI = type === 'ai'; + const isAI = type === AvatarType.AI; return (
    { }; Avatar.propTypes = { - type: PropTypes.oneOf(['ai', 'user']).isRequired, + type: PropTypes.oneOf([AvatarType.AI, AvatarType.User]).isRequired, size: PropTypes.number, }; diff --git a/client/src/components/header/header.js b/client/src/components/header/header.js index ee2cd3daf..322efc922 100644 --- a/client/src/components/header/header.js +++ b/client/src/components/header/header.js @@ -26,6 +26,7 @@ import { LOGOUT_SUCCESS, SUCCESS, } from "../../constants/notifications"; +import UserPfp from "../all-components/UserPfp"; const mapStateToProps = (state) => { return { @@ -202,18 +203,7 @@ const Header = (props) => { {loggedIn && user ? ( // TO-DO: PROFILE LINK HERE -
    - navigate(state, props.state, actions, 2, 99) - } - aria-label="Google Profile Photo" - className="tw-h-12 tw-object-cover" - style={{ - backgroundImage: `url(${user?.userpfp}`, - backgroundRepeat: "no-repeat", - backgroundSize: "cover", - }} - >
    + navigate(state, props.state, actions, 2, 99)} />
    ) : ( diff --git a/client/src/constants/lab13/AvatarType.js b/client/src/constants/lab13/AvatarType.js new file mode 100644 index 000000000..d7d426b83 --- /dev/null +++ b/client/src/constants/lab13/AvatarType.js @@ -0,0 +1,4 @@ +export const AvatarType = { + User: 'user', + AI: 'ai' +} \ No newline at end of file From 44c6b5a45853c28b5227f3f55e47814b4317d6af Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Fri, 13 Feb 2026 15:09:38 -0500 Subject: [PATCH 090/180] Verifying the output has the words verify and output as words with spaces around them --- client/src/components/exercise/lab13/Lab13Context.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/components/exercise/lab13/Lab13Context.js b/client/src/components/exercise/lab13/Lab13Context.js index b70c6c04d..e473a3f7f 100644 --- a/client/src/components/exercise/lab13/Lab13Context.js +++ b/client/src/components/exercise/lab13/Lab13Context.js @@ -141,9 +141,9 @@ export const ExerciseStateProvider = ({ children }) => { .toLowerCase(); // The disclaimer should be at least 20 characters, and include the words "verify" and "output" const disclaimerValid = - disclaimerValue.length >= 20 && - disclaimerValue.includes("verify") && - disclaimerValue.includes("output"); + disclaimerValue.length >= 20 && + /\bverify\b/.test(disclaimerValue) && + /\boutput\b/.test(disclaimerValue); const confidenceValid = !!exercisePromptsState.find( (i) => i.id === 'confidence' ).value; From 5213db2052ed4a1f627932b4ce58730ca20eca9c Mon Sep 17 00:00:00 2001 From: ConnerDeFeo Date: Fri, 13 Feb 2026 15:10:26 -0500 Subject: [PATCH 091/180] pfp now working --- client/src/assets/images/DefaultUser.png | Bin 0 -> 9495 bytes client/src/components/all-components/UserPfp.js | 15 ++++++++------- .../exercise/lab13/components/Avatar.js | 12 ++---------- 3 files changed, 10 insertions(+), 17 deletions(-) create mode 100644 client/src/assets/images/DefaultUser.png diff --git a/client/src/assets/images/DefaultUser.png b/client/src/assets/images/DefaultUser.png new file mode 100644 index 0000000000000000000000000000000000000000..31e0a0bc4204e2b1c2b37683cece4e48fd78e14f GIT binary patch literal 9495 zcmd^ldo+~$|L-$1?w4VbQ9?{oZMQfQ7*Y{ zl1fZF(q&u{v0XA-MNP#>MG?REw7=(^-#Y)Cwa$NM9cx+hJfG|P^S-{`@6U5?r^{Al z1x*D6L6qr^G*<+{!y_J%lYyTv?5-d1BXwj8-CYj;;^g*W@Gj4C^f`hcN)?iS+*^gS z#n8Ao%HBK5?GPg>X7}L`Bqk=tgc%WbWbbZPh{>VDq1j_Lnh2tc&}p09**TvEV+SIl zea0u+n{RGEsq}~367`*nbBbujr?p%t*E1GTT>e=_8Wj{%mCxJ#UG>kq_orp0l^+QH z=55chwI&u9$?f6LxaW#fF{PgGdk32s)qg*nycr!7RyH*H^VncT=zL4eV^Gp?9A3MtFNjRhE{<(_3*fT?Qh1yhg{BL>0o)XM*t_2Tsj8MYLugsmf5i zGs0IqRpDH-u!oTU`uY~}b3y&}b(}6qzZ9uTS?nm367CQF&_{baN3dFAwZXi-g1GF~ zW4x~NN(%9Y--Z1()swnJnnb}kt7@0Oav7+sd z!s#Qz_1xI#XjP_?5puwlrbVciKlCZARhnPL{oXCobzOTK>AH;dQYmxjn7z5l+^6+Y z(}LkWJBpbuNY@3dH#6eRc-aa3bR)moY%&Q>sz658>QUl#tdx5TsmTs+pGEoMgNlh1 z<7_`9>lW5)MwwG(YnaU4Ej)$p*xED!Q$mj53;y=4|8vR|ZE+8Mt`Fx33eeu-OIAb~ z%!zLeQ^NZ{`)n!*dE;ScyYbMtg7OW&QBKP@*FHVUK>S8fUrWU-^r2%pg^0A_UM}4F zyymB}Sdkm+0Vi8YMp_+cvr=MQ@NJP%)|qzX(qlmah*|l;J;XwhG{F-3`_FdgKSU=f zdz>SQOjR=C97xkrtk>vmpe8dy6NIx^U1+pw@u3LZ{!Ys9ZvG5fR$9IP<=kSnEhErV zn?)gv^G97ra$--PDN(zb4q3ao?Ca!l<6Ez+eT zXghryci;i75pR{N)b3-{Y_SzgT(b*JV+Q8yzS>d;CAD*(+QY(siMJbUI{@ZQD z!k1K~E?(z9yEa~>p#M6@;32+X&GF@f=RC4b1|?%#J(E(`UGYOS3!Be<*-$rL!TfH* zI#eOsvCtc_ppvRo1{>zfVNvyIeX)6JYcOu?+ArnM?PqRGXwnfNJzptSUq
    K$w%1fixOyFpgw_^K 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 literal 0 HcmV?d00001 diff --git a/client/src/components/all-components/UserPfp.js b/client/src/components/all-components/UserPfp.js index ff5dcc0cf..c1e0c4eb4 100644 --- a/client/src/components/all-components/UserPfp.js +++ b/client/src/components/all-components/UserPfp.js @@ -1,26 +1,27 @@ import useMainStateContext from "src/reducers/MainContext"; import PropTypes from "prop-types"; +import DefaultUser from '../../assets/images/DefaultUser.png'; // User profile picture circle const UserPfp = ({ onClick }) => { const { state } = useMainStateContext(); const user = state.main.user; - if (!user) { - return null; // or a default avatar - } + const className = `tw-w-full tw-h-full tw-object-cover tw-rounded-full ${onClick ? "tw-cursor-pointer" : ""}`; - return ( + return (user && user.userpfp ?
    + /> + : + Default User ); }; diff --git a/client/src/components/exercise/lab13/components/Avatar.js b/client/src/components/exercise/lab13/components/Avatar.js index a125bcfb4..78667614e 100644 --- a/client/src/components/exercise/lab13/components/Avatar.js +++ b/client/src/components/exercise/lab13/components/Avatar.js @@ -2,6 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import RobotImage from '../../../../assets/images/lab13/robot.png'; import { AvatarType } from '../../../../constants/lab13/AvatarType'; +import UserPfp from 'src/components/all-components/UserPfp'; const Avatar = ({ type, size = 40 }) => { const isAI = type === AvatarType.AI; @@ -35,16 +36,7 @@ const Avatar = ({ type, size = 40 }) => { }} /> ) : ( - - - + )}
    ); From 501962a61435a574be6a9b1531f5031aa9d54982 Mon Sep 17 00:00:00 2001 From: Elaina Trapatsos Date: Tue, 17 Feb 2026 11:31:45 -0500 Subject: [PATCH 092/180] Set min height to content --- client/src/components/all-components/Lab/LabWindow.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/all-components/Lab/LabWindow.js b/client/src/components/all-components/Lab/LabWindow.js index 77fbf21d5..ffabed744 100644 --- a/client/src/components/all-components/Lab/LabWindow.js +++ b/client/src/components/all-components/Lab/LabWindow.js @@ -68,7 +68,7 @@ const LabWindow = (props) => {

    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

  • Yd17MK@le|yz!ZpnUxu?)Z+_-lcDbKWDbKkofGoCx;Iuv+CU*g zvk@1{!VVrPhxOCURN@1u(K9WnjEYLJt`G&kVQjdZ-Ud%}@BGnw+9mNGoeqG&q=;sv zhk%7gu{(VV@o3&jy3r?6|NTIAg zqwNK*tIW55HVahRwpq6dxx>5*+ciSN@zbnO4C|CcM`bY8z(Cc5tsTcPabZ%PZ~)%U z1U|YDwfjQ4!Og&5b|J$AIY-M_gXd`hEF&|#l%l=)*qYirp}jA4`IFb(2#3K#LR~ZY zz7p>j$l}EZ{KB3pvUqUw#3$0q7eVe%Zp6SJ)988vpLQ(FlPFOQPhjf70weENZG%-m zH#UULU<_s95i60!$Kt1iG$}Qjjj^a6T{eeqPGiV`!A(D&^l}XLHb{PLUuHBcI6yly zkg?5<>PFY0rrxW=2$_qnJP_l^0sWe`1L3BW>v#??;t&#iIwhLiVbg^D>i(y4RQ}j6 zq^8+-*Yo*&G5vd1k7c$XlHIA&7xu#4ZCKG#L|Je(PDVyNe_qE!ynX<9wJ#6?O zTSM4~rIUYsS|mD3+lSbW75k?_WtD^dpQO!Aoo)hIHzYcUebTq%XRl9A1EqK}{Z>6a zmb>0gzt>PVz^iZJez$OiaBrbJHO(c$ zOtHQ2O-E2dUo$!h{m1FW5(*SudUpMB<>2v8pc+$*W$+r~&YQH9(o9tM+SJ@0gxELj z%1~rZA(@l~3w;O?%7KpCBeWILOp%s6pH>@YH9`3RAI7R+Nw|7JX5J^1Oq1j1UPKm= zRD3e)rZ-OFB@>R|`O*>K_x9-m zcuU52jev%aJ;ay@3)hzclV$1cT8g9vq~Rr-Te=}BLSTs$F0&ib9nV(N*z72_Dr)aa zMD73`^rQ?3fr85Bkw3HzvkX)Sgb=~wg_}pNcp`aF{8&0-$lYhhg{w4J_0sRP^^tZK zAR!%40|V=9tk|`MHaRs(6n~b};!G1=QvGO*(BEq;3VUMFGY>&I{HFI9DufQv2=UEV z{!+CnsKlO#h^}9q%aU)})e*ZstnYU7^xK-P{DLIe$N%0+B0pZ(@Dx)CKFdcP&Y#el zH&7e3z1ZHI^Sv5c0mO6M(k;Mn7DeY97xQc2nR9-+gz+7C{!$b5#Yy~#)cN=qUz2<@ z3pT6!3@jZ&r?Yb{-;JG%Rssw*&&em6ME~dAVlY4Z?of~a%+!tYnlUBDiSG)QEFNiD zYK#>;z2|v(0d&}9H+gT&NdeQiKi;*55bK2OxMpe`#F)62OT-OaDQudc4_{+OpPkA; zEf`Sura}1hdJ8U*Z7NeAntG^!W1iU6QxoJR;DB$=d{tGz<$BBLl~QAuJ&_xv{9=72 zVMc*Ld9AM*hBX!-jO8z@JyrO|>7{2~O>7l(aDILkxVOJ{E}pY^xa@>$82vzHD-U@! z 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[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 { + {}, + firstName: "", + setFirstName: () => {}, + lastName: "", + setLastName: () => {}, + preferredName: "", + setPreferredName: () => {}, + pronouns: "", + setPronouns: () => {}, + college: "", + setCollege: () => {}, + major: "", + setMajor: () => {}, + gradTerm: "", + setGradTerm: () => {}, +}); + +export default ExerciseStateContext; diff --git a/client/src/components/exercise/lab13/Main.js b/client/src/components/exercise/lab13/Main.js new file mode 100644 index 000000000..5a0bd4390 --- /dev/null +++ b/client/src/components/exercise/lab13/Main.js @@ -0,0 +1,76 @@ +import React, { useState } from "react"; +import { Router } from "@reach/router"; + +import { EXERCISE_STATES } from "../../../constants/lab13"; +import ExerciseStateContext from "./Lab13Context"; + +// lab imported dependencies; +// import GradApplication from "./components/GradApplication.js"; +// import Diploma from "./components/Diploma"; +// import AlumniNewsletter from "./pages/AlumniNewsletter"; +// import ExerciseIntro from "./pages/Explanations/ExerciseIntro"; +// import PreWrongDiploma from "./pages/Explanations/PreWrongDiploma"; +// import PostWrongNewsletter from "./pages/Explanations/PostWrongNewsletter"; +// import PreCorrectDiploma from "./pages/Explanations/PreCorrectDiploma"; +// import PostCorrectNewsletter from "./pages/Explanations/PostCorrectNewsletter"; +// import KeyTakeaways from "./pages/Explanations/KeyTakeaways"; +// import PreDbRepair from "./pages/Explanations/PreDbRepair"; + +/** + * Main(): is the routing component for managing the lab exercise progression, + * this will be responsible for iterating through the different stages of the lab + * and acting as the container managing the state of the user. + */ +const Main = () => { + const [exerciseState, setExerciseState] = useState( + EXERCISE_STATES.EXERCISE_SELECTION_DEFAULT, + ); + // const [firstName, setFirstName] = useState(""); + // const [lastName, setLastName] = useState(""); + // const [preferredName, setPreferredName] = useState(""); + // const [pronouns, setPronouns] = useState(""); + // const [college, setCollege] = useState(""); + // const [major, setMajor] = useState(""); + // const [gradTerm, setGradTerm] = useState(""); + + return ( +
    + + + {/* + + + + + + + + + + + */} + + +
    + ); +}; +export default Main; diff --git a/client/src/constants/index.js b/client/src/constants/index.js index 5bf4f6276..7472b6659 100644 --- a/client/src/constants/index.js +++ b/client/src/constants/index.js @@ -243,6 +243,26 @@ export const Sections = { name: "Quiz", }, }, + 13: { + fullname: "Lab 13: Human Cognitive Bias & AI Lab", + // TODO: edit this once we have an official title + name: "Lab13", + 0: { + name: "About", + }, + 1: { + name: "Reading", + }, + 2: { + name: "Exercise", + }, + 3: { + name: "Reinforcement", + }, + 4: { + name: "Quiz", + }, + }, }; // for shared component export const EXERCISE_IDLE = "EXERCISE_IDLE"; diff --git a/client/src/constants/lab13/index.js b/client/src/constants/lab13/index.js new file mode 100644 index 000000000..334da585b --- /dev/null +++ b/client/src/constants/lab13/index.js @@ -0,0 +1,10 @@ +const LAB_ID = 13; +const EXERCISE_PATH = "/Lab12/Exercise"; + +const EXERCISE_SELECTION_DEFAULT = "default selection"; + +const EXERCISE_STATES = { + EXERCISE_SELECTION_DEFAULT, +}; + +export { LAB_ID, EXERCISE_PATH, EXERCISE_STATES }; diff --git a/client/src/helpers/Redirect.js b/client/src/helpers/Redirect.js index 0165456c3..4bd70caac 100644 --- a/client/src/helpers/Redirect.js +++ b/client/src/helpers/Redirect.js @@ -95,6 +95,9 @@ export const stateChange = (actions, pathname) => { case "Lab12": actions.setLab(12); break; + case "Lab13": + actions.setLab(13); + break; case "": actions.setLab(0); break; diff --git a/client/src/services/lab13/ExerciseService.js b/client/src/services/lab13/ExerciseService.js new file mode 100644 index 000000000..2550c2a54 --- /dev/null +++ b/client/src/services/lab13/ExerciseService.js @@ -0,0 +1,45 @@ +import API from "../API"; + +const prefix = { + POST_SUFFIX: "submit", + LAB_PREFIX: `${process.env.REACT_APP_SERVER_URL}/lab13`, +}; + +const resource = { + EXERCISE: `${prefix.LAB_PREFIX}/exercise`, +}; + +const endpoints = { + GET_EXERCISE: resource.EXERCISE, + POST_EXERCISE: `${resource.EXERCISE}/${prefix.POST_SUFFIX}`, +}; + +const ExerciseService = { + fetchExercise: async (data = {}) => { + try { + const getRoute = `${endpoints.GET_EXERCISE}/${data.userid}`; + return API.get(getRoute).then((response) => { + return response.json(); + }); + } catch (error) { + console.error(error); + } + }, + submitExercise: async (data) => { + try { + const body = { + userID: data.userid, + isFormRepairComplete: data.isFormRepairComplete, + isDatabaseRepairComplete: data.isDatabaseRepairComplete, + isExerciseComplete: data.isExerciseComplete, + hasViewed: data.hasViewed, + }; + const response = await API.postWithBody(endpoints.POST_EXERCISE, body); + return response.status; + } catch (error) { + console.error(error); + } + }, +}; + +export { ExerciseService }; diff --git a/client/src/services/lab13/RepairService.js b/client/src/services/lab13/RepairService.js new file mode 100644 index 000000000..f58b1cb8f --- /dev/null +++ b/client/src/services/lab13/RepairService.js @@ -0,0 +1,58 @@ +/** + * RepairService(): This file is responsible for managing all states for routing for + * interacting and requesting to the database. + */ +import API from "../API"; + +const prefix = { + POST_SUFFIX: `submit`, + LAB_PREFIX: `${process.env.REACT_APP_SERVER_URL}/lab13`, +}; +const resources = { + REPAIR: `${prefix.LAB_PREFIX}/repair`, +}; + +const endpoints = { + REPAIR: resources.REPAIR, + POST_REPAIR: `${resources.REPAIR}/${prefix.POST_SUFFIX}`, +}; + +const RepairService = { + /** + * submitRepair(): is an async function that is responsible for handling the submission of user input + * to the database. This depends on calling the fetch api to send a post request to the ALL DB. + * @param {Object} data payload that is to be secured in the body of the post request. + * @param {string} route designated route for the backend database. + * @returns {Number} the id of the repair. + */ + submitRepair: async (data = {}) => { + try { + const body = { + userID: data.userid, + repair: data.repair, + section: data.section, + isComplete: data.isComplete, + }; + return API.postWithBody(endpoints.POST_REPAIR, body); + } catch (error) { + console.error(error); + } + }, + /** + * getRepair(): is a function that is responsible for sending a request to get someone's information about + * their last recorded attempt when making changes in the repair section. + * @param {Object} data contains user information especially the userid to request correct data. + * @param {Object} route rout endpoint to ALL DB server + * @returns {Object} Containing the last state recorded when it was played or repaired + */ + getRepair: async (data = {}, section) => { + try { + const getRoute = `${endpoints.REPAIR}/${data.userid}/${section}`; + return API.get(getRoute).then((response) => response.json()); + } catch (error) { + console.error(error); + } + }, +}; + +export { RepairService, endpoints }; diff --git a/configPath.js b/configPath.js new file mode 100644 index 000000000..19f008860 --- /dev/null +++ b/configPath.js @@ -0,0 +1,18 @@ +const path = require('path'); +const os = require('os'); + +const NODE_MODULES = 'node_modules'; +const NPM = 'npm'; +const BIN = 'bin'; +const NPM_CLI = 'npm-cli.js' + +const platform = os.platform(); +const isWindows = platform === 'win32'; + +const NODE_PATH = isWindows && process.env.Path.split(';').filter( f => f.includes('nodejs') )[0]; +const NPM_PATH = isWindows && path.join(NODE_PATH, NODE_MODULES, NPM, BIN, NPM_CLI); + +module.exports = { + isWindows, + NPM_PATH +}; \ No newline at end of file diff --git a/server/controllers/lab13/ExerciseController.js b/server/controllers/lab13/ExerciseController.js new file mode 100644 index 000000000..3e26737f8 --- /dev/null +++ b/server/controllers/lab13/ExerciseController.js @@ -0,0 +1,47 @@ +const ExerciseService = require('../../services/lab13/ExerciseService'); +// eslint-disable-next-line valid-jsdoc +/** + * getExercise(): is a function responsible for retrieving the + * user id from the query params from the route to the endpoint. + * this allows for the ability to retrieve the last game state. + * @param {Object} req request object containing userId; + * @param {Object} res response object containing the response; + */ +async function getExercise(req) { + try { + const {userID} = req.params; + return await ExerciseService.getExercise(userID); + } catch (error) { + console.error('Error: Could Not Find Exercise', error); + } +} + +/** + * postExercise(): is a function that is responsible for sending the + * user's state to the database for when they are completed with a section + * of the lab's repair. This function is responsible for getting the contents + * of the body of the request and pass it off to the Exercise service. + * @param {Object} req request object containing user information and payload. + * @param {Object} res response object containing the response; + */ +async function postExercise(req) { + try { + const {userID, isDatabaseRepairComplete, isFormRepairComplete, + isExerciseComplete, hasViewed} = req.body; + const response = await ExerciseService.postExercise({ + userId: userID, + isFormRepairComplete: isFormRepairComplete, + isDatabaseRepairComplete: isDatabaseRepairComplete, + isExerciseComplete: isExerciseComplete, + hasViewed: hasViewed, + }); + return response; + } catch (error) { + console.error(error); + } +} + +module.exports = { + getExercise, + postExercise, +}; diff --git a/server/controllers/lab13/RepairController.js b/server/controllers/lab13/RepairController.js new file mode 100644 index 000000000..ff8dc7205 --- /dev/null +++ b/server/controllers/lab13/RepairController.js @@ -0,0 +1,46 @@ +const RepairService = require('../../services/lab13/RepairService'); + +/** + * submitChange(): is a function that is responsible for + * handling when a user submits their change to either + * the database or form repair fields + * @param {Object} req + * @param {Object} res response object. containing information to client + */ +async function submitChange(req) { + try { + const {userID, repair, isComplete, section} = req.body; + // eslint-disable-next-line max-len + if (userID !== '' || repair !== '' || isComplete !== null || section !== '') { + const response = RepairService.submitRepair({ + userID, repair, section, isComplete, + }); + return response; + } + } catch (error) { + console.error('Error submitting change: ', error); + } +} + +/** + * getRepair(): is a function that is responsible + * for handling retrieving the last recorded + * state of a users repair when request + * @param {Object} req request object sent to retrieve repair + * information. + */ +async function getRepair(req) { + try { + const {userID, section} = req.params; + const repair = await RepairService.getRepair(userID, section); + return repair; + } catch (error) { + console.error(error); + } +} + + +module.exports = { + getRepair, + submitChange, +}; diff --git a/server/database/models/lab13/Exercise.js b/server/database/models/lab13/Exercise.js new file mode 100644 index 000000000..ae5ddc418 --- /dev/null +++ b/server/database/models/lab13/Exercise.js @@ -0,0 +1,39 @@ +module.exports = (sequelize, DataTypes) => { + const Exercise = sequelize.define('ExerciseLab13', + { + repairId: { + type: DataTypes.INTEGER, + unique: true, + primaryKey: true, + autoIncrement: true, + }, + userid: { + type: DataTypes.BIGINT, + }, + isFormRepairComplete: { + type: DataTypes.BOOLEAN, + }, + isDatabaseRepairComplete: { + type: DataTypes.BOOLEAN, + }, + attemptTime: { + type: DataTypes.DATE, + }, + isExerciseComplete: { + type: DataTypes.BOOLEAN, + }, + hasViewed: { + type: DataTypes.BOOLEAN, + }, + attemptCount: { + type: DataTypes.INTEGER, + }, + }, + { + tableName: 'lab13_exercise', + }, + ); + + Exercise.sync(); + return Exercise; +}; diff --git a/server/database/models/lab13/Repair.js b/server/database/models/lab13/Repair.js new file mode 100644 index 000000000..9b4191d05 --- /dev/null +++ b/server/database/models/lab13/Repair.js @@ -0,0 +1,42 @@ +/* eslint-disable new-cap */ +const FORM_REPAIR = 'FormRepair'; +const DATABASE_REPAIR = 'DatabaseRepair'; +module.exports = (sequelize, DataTypes) => { + const IdentityRepair = sequelize.define('RepairLab13', + { + repairId: { + type: DataTypes.INTEGER, + unique: true, + primaryKey: true, + autoIncrement: true, + }, + userid: { + type: DataTypes.BIGINT, + }, + section: { + type: + DataTypes.ENUM( + FORM_REPAIR, + DATABASE_REPAIR, + ), + }, + repair: { + type: DataTypes.JSON, + }, + isComplete: { + type: DataTypes.BOOLEAN, + }, + attemptTime: { + type: DataTypes.DATE, + }, + repairCount: { + type: DataTypes.BIGINT, + }, + }, + { + tableName: 'lab13_repair', + }, + ); + IdentityRepair.sync(); + return IdentityRepair; +}; diff --git a/server/database/schema.sql b/server/database/schema.sql index 8a1803b27..f7079a26d 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3220,7 +3220,8 @@ to test your knowledge. Click "Next" to start!', e'{ "multiChoice": true } ] -', 2, 'coming soon', 'coming soon', true), (12, 'Accessibility to Identity', 'Identity', 'Accessibility', '/identity.jpg', 'Learn about developing identity sensitive software.', 'This lab will introduce the idea of gender and identity and the importance of creating software that is accessible to those who conform outside the social/gender norm. Participants will learn how to design and implement gender sensitive terminology in their software. In the exercise portion of the lab they will encounter an interface that is not accessible, and learn how and why to implement an interface that is accessible to gender and identity.', +', 2, 'coming soon', 'coming soon', true), +(12, 'Accessibility to Identity', 'Identity', 'Accessibility', '/identity.jpg', 'Learn about developing identity sensitive software.', 'This lab will introduce the idea of gender and identity and the importance of creating software that is accessible to those who conform outside the social/gender norm. Participants will learn how to design and implement gender sensitive terminology in their software. In the exercise portion of the lab they will encounter an interface that is not accessible, and learn how and why to implement an interface that is accessible to gender and identity.', e'[ "LO1: Knowledge of user significance, characteristics, and needs: Recognize the significance of the population that identifies outside the gender norm, and their needs for accessible use of software (Knowledge)", "LO2: Exposure to and analysis of poorly accessible design: Examine a software application that doesn\’t properly accommodate accessibility in regards to identity (Analysis)", @@ -3450,7 +3451,239 @@ e'[ ], "multiChoice": false } -]', 2, 'coming soon', 'coming soon', true); +]', 2, 'coming soon', 'coming soon', true), +(13, 'Human Cognitive Bias and Generative AI', 'Cognitive Bias', 'AI', '/cognitivebiasai.jpg', 'Learn about Human Cognitive Bias and how it impacts day to day interactions with Generative Artifical Intelligence (AI).', 'This lab will introduce the idea of Human Cognitive Bias and how it impacts day to day interactions with Generative AI. Human Bias plays a large part into why do individuals trust AI generated responses without questions if the responses they are recieving are accurate. Participants will learn how to their own unconsicous bias play into typical interactions with AI, impacting a users trust in AI generated responses. In the exercise portion of the lab they will encounter an interface.', +e'[ + "LO1: Knowledge of user significance, characteristics, and needs: Recognize the significance of the population that identifies outside the gender norm, and their needs for accessible use of software (Knowledge)", + "LO2: Exposure to and analysis of poorly accessible design: Examine a software application that doesn\’t properly accommodate accessibility in regards to identity (Analysis)", + "LO3: Apply solutions to solve access problems: Use knowledge of accessibility design solutions to construct corrective measures to allow previously inaccessible software to become accessible to appropriate parties (Application)", + "LO4: Develop further empathy: Relate to individuals who experience difficulties with their gender (Comprehension)" +]', 'Emma Schmitt, Kristen Fang, Darlyn Gomez, Christine Espeleta', 'https://ball.rit.edu/Lab13/', null, 'In this lab, you will learn about how a persons own bias can play a part into Generative AI interactions. You will learn about what Cognitive Bias is, how it plays into Human Interactions with Generative AI, Three Specific Cognitive Biases that normally impact AI Interactions, view related media to reinforce the topic, and take a quiz to test your knowledge! Click +“Next” to start!', e'{ + "piechart": { + "header":"Unbiased Forms", + "caption":["59% of Gen Z believes forms should have options outside of male and female."], + "data": { + "labels": [ + "Gen Zers who believe forms should have options outside of male / female", + "Gen Zers who DO NOT believe forms should have options outside of male / female" + ], + "datasets": [ + { + "label": "Unbiased Forms", + "borderColor": "black", + "backgroundColor": ["#FFC107","#004D40"], + "data": [59, 41], + "borderWidth": "2" + } + ] + } + }, + "description":"", + "body":[ + { + "header":"Gender Identity", + "type":"", + "content":["Gender Identity is the concept of self; male, female, both, neither and more. It\'s an individual\'s unique perception of who they are. Gender identity may match assigned sex at birth but many don\'t fit in these assigned categories. 69.5% of youth between 13-18 years old within the LGBTQ+ community identify as at least one non-cisgender (male/female) identity according to a 2023 survey conducted by the Human Rights Campaign (HRC). These gender identities are expressed by people\'s characteristics, clothing, behavior and notably through preferred names and pronouns. The same survey shows a clear link between the usage of preferred names and pronouns by those around an individual and a reduction in anxiety and depression."] + }, + { + "header": "", + "type": "links", + "content": [ + { + "name": "2023 LGBTQ+ Youth Report Survey", + "link": "https://reports.hrc.org/2023-lgbtq-youth-report" + } + ] + }, + { + "header":"", + "type":"", + "content":["As the LGBTQ+ community continues to expand, as it has within the past two decades, it\'s important to stay open. Laws continue to be passed nationwide to keep up with this growth, serving to protect members of these communities from harassment and discrimination. Those who identify outside of the traditional male or female gender identities have been perpetual targets for hate speech and violence. Adapting to new practices when it comes to gender identity is crucial to creating a safe and positive environment, whether that be within the workplace, classrooms, or at home."] + }, + { + "header": "", + "type": "image", + "content" : { + "image":"/pronoun_guide.png", + "alt":"Pronouns- A How To Guide", + "sub_caption":"Figure 1", + "caption":"A Guide to Effective use of Pronouns" + } + }, + { + "header": "Gender Non-Discrimination in the Workplace", + "type": "", + "content": ["One company that has strived for acceptance is ADP, an HR and Payroll consulting company. ADP, which has been named in Fortune\'s \'World\'s Most Admired Companies\' list for 17 consecutive years, advocates for the importance of using preferred names and fostering an accessible environment. They also outline the best practices for using preferred names at work to create a safe workplace for everyone. These practices reinforce the use of preferred pronouns. Additionally, these practices highlight how to respectfully ask how someone identifies. Furthermore, ADP emphasizes how important it is to be respectful and think before making what could be an awkward joke, and allow for some mistakes initially as long as you stay respectful and acknowledge the mistakes. Lastly, the practices outlined by ADP point out that you may need to adjust and become familiar with someone\'s chosen pronouns by amplifying usage."] + }, + { + "header": "", + "type": "links", + "content": [ + { + "name": "Fostering Accessible Environments in the Workplace", + "link": "https://www.adp.com/spark/articles/2018/06/foster-an-inclusive-workplace-for-transgender-talent-by-creating-a-preferred-name-policy.aspx" + }, + { + "name": "Using Preferred Names at Work", + "link": "https://www.adp.com/spark/articles/2022/06/10-best-practices-for-using-preferred-or-chosen-names-at-work.aspx" + } + ] + }, + { + "header": "", + "type": "", + "content": ["These practices should be reflected throughout any institutions, including gender non-discriminatory terminology and allowing for expression of these preferred names and pronouns. When filling out applications, surveys, or any other data form where gender would be recorded, preferred pronouns and names should be present. There is no definitive list of all the pronouns which are in use. However, the ability to express one\'s gender identity is something which advocates have been pushing for, and the opportunity to voice chosen names and pronouns would be a valuable addition to any organization. From the same HRC survey mentioned previously, 76.8% of youth surveyed want to be open about their gender identity at their future job. Giving people this opportunity would be a step in the right direction and a strong starting point for fostering a positive environment."] + } + ], + "footer":{ + "links":[ + { + "name":"Accessible Design Best Practices", + "link":"https://vorecol.com/blogs/blog-best-practices-for-designing-inclusive-software-interfaces-for-gender-diversity-177983" + } + ] + } +}', +'[{"title":"Artifical Intelligence and Dunning Kruger Effect","link": "https://www.youtube.com/embed/dPbGoeW3uVw?si=29cnMsdK_okYF9Ge"},{"title":"Introduction to Halo Effect","link": "https://www.youtube.com/embed/kpjeMaOirvg?si=j383aHRvYakZyNi1"},{"title":"Truth is an Illusion (Truth Bias)","link":"https://www.youtube.com/embed/cebFWOlx848?si=rHm0WHB4a-BMsQtF"}]', '[ + { + "question": "What does gender refer to?", + "answers": [ + { + "val": 0, + "type": "0", + "content": "A person’s assigned sex at birth" + }, + { + "val": 1, + "type": "1", + "content": "A person’s unique perception of who they are", + "explanation": "While sex is a biological characteristic, gender is a self-identified concept." + }, + { + "val": 0, + "type": "2", + "content": "The sex other people perceive a person as" + } + ], + "multiChoice": false + }, + { + "question": "Why is it important to respect someone’s chosen pronouns/name?", + "answers": [ + { + "val": 0, + "type": "0", + "content": "To show respect to others" + }, + { + "val": 0, + "type": "1", + "content": "It can lead to a decrease in anxiety" + }, + { + "val": 0, + "type": "2", + "content": "To foster a bias-free environment" + }, + { + "val": 1, + "type": "3", + "content": "All of the above", + "explanation": "Using a person’s preferred name and pronouns creates a respectful environment and can decrease anxiety regarding gender expression." + } + ], + "multiChoice": false + }, + { + "question": "Which of the following could be used to add gender non-discrimination features to software?", + "answers": [ + { + "val": 0, + "type": "0", + "content": "Making everything rainbow colored" + }, + { + "val": 1, + "type": "1", + "content": "Adding an ‘other’ text field when asking for gender", + "explanation": "When asking for a person’s gender in web forms, it’s important to include options in addition to just “male” and “female”." + }, + { + "val": 0, + "type": "2", + "content": "Mandating/requiring users to input their gender" + }, + { + "val": 0, + "type": "3", + "content": "Adjust font size, font color, and text alignment" + } + ], + "multiChoice": false + }, + { + "question": "ADP, an HR and Payroll consulting company, has recently strived for accessibility in which of the following ways?", + "answers": [ + { + "val": 1, + "type": "0", + "content": "Advocates for the importance of using preferred names", + "explanation": "ADP had created HR policies regarding preferred names, making ADP a leading advocate.", + "source": "https://www.adp.com/spark/articles/2018/06/foster-an-inclusive-workplace-for-transgender-talent-by-creating-a-preferred-name-policy.aspx" + }, + { + "val": 1, + "type": "1", + "content": "Outline the best practices for using preferred names at work", + "explanation": "ADP has created a list of 10 best practices for using preferred names, including asking if you’re unsure and leading by example.", + "source": "https://www.adp.com/spark/articles/2022/06/10-best-practices-for-using-preferred-or-chosen-names-at-work.aspx" + }, + { + "val": 0, + "type": "2", + "content": "Harshly reprimanding anyone who doesn’t follow these social standards" + }, + { + "val": 1, + "type": "3", + "content": "Become familiar with and consistent with someone’s preferred pronouns", + "explanation": "ADP’s HR policies include using everyone’s preferred name and pronouns.", + "source": "https://www.adp.com/spark/articles/2018/06/foster-an-inclusive-workplace-for-transgender-talent-by-creating-a-preferred-name-policy.aspx" + } + ], + "multiChoice": true + }, + { + "question": "What percentage of youth surveyed want to be open about their gender identity at their future job?", + "answers": [ + { + "val": 1, + "type": "0", + "content": "76%", + "explanation": "According to the Human Rights Campaign 2023 LGBTQ+ Youth Report, 76% of youth surveyed want to be open about their gender identity at their future job.", + "source": "https://reports.hrc.org/2023-lgbtq-youth-report" + }, + { + "val": 0, + "type": "1", + "content": "31%" + }, + { + "val": 0, + "type": "2", + "content": "12%" + }, + { + "val": 0, + "type": "3", + "content": "This hasn’t been surveyed before." + } + ], + "multiChoice": false + } +]', 1, 'coming soon', 'coming soon', true); + diff --git a/server/routes/index.js b/server/routes/index.js index 65df66335..0519ab85b 100644 --- a/server/routes/index.js +++ b/server/routes/index.js @@ -45,10 +45,16 @@ const RepairControllerLab9 = require('../controllers/lab9/RepairController'); // LAB 11 Controller const ExerciseControllerLab11 = require('../controllers/lab11/ExerciseController'); const RepairControllerLab11 = require('../controllers/lab11/RepairController'); + // LAB10 Controller const ExerciseControllerLab10 = require('../controllers/lab10/ExerciseController'); const ExerciseControllerLab12 = require('../controllers/lab12/ExerciseController'); const RepairControllerLab12 = require('../controllers/lab12/RepairController'); + +// LAB 13 Controller +const ExerciseControllerLab13 = require('../controllers/lab13/ExerciseController'); +const RepairControllerLab13 = require('../controllers/lab13/RepairController'); + // Lab Controller const LabController = require('../controllers/LabController'); @@ -181,6 +187,22 @@ router.post('/lab12/repair/submit', async function(req, res) { res.send(id); }); +{/* Lab 13 Exercise and Repair Controller Calls */} +router.get('/lab13/exercise/:userID', async function(req, res) { + res.json(await ExerciseControllerLab13.getExercise(req)); +}); +router.post('/lab13/exercise/submit', async function(req, res) { + const id = await ExerciseControllerLab13.postExercise(req); + res.send(id); +}); +router.get('/lab13/repair/:userID/:section', async function(req, res) { + res.json(await RepairControllerLab13.getRepair(req)); +}); +router.post('/lab13/repair/submit', async function(req, res) { + const id = await RepairControllerLab13.submitChange(req); + res.send(id); +}); + // Create a Page Entry router.post('/page/complete', PageController.createPage); diff --git a/server/services/lab13/ExerciseService.js b/server/services/lab13/ExerciseService.js new file mode 100644 index 000000000..b3b34753f --- /dev/null +++ b/server/services/lab13/ExerciseService.js @@ -0,0 +1,83 @@ +const db = require('../../database'); +/** + * getExercise(): is a function that is responsible for retrieving + * the last played exercise by a particular user. this function is + * responsible for querying the database and retrieving the correct + * information from the database. + * @param {Object} data Contains information about the user to search + * the database. + */ +async function getExercise(data) { + try { + const exerciseResponse = await db.ExerciseLab13.findOne( + { + order: [['attemptTime', 'DESC']], + where: { + userid: data, + }, + raw: true, + }, + ); + + return exerciseResponse; + } catch (error) { + console.error(error); + } +} + +/** + * postExercise(): is a function that is responsible for storing + * changes to the database. This allows the user's information to + * be properly stored and allow for the ability to be retrieved later + * when needed. + * @param {Object} data Contains information that is intended to be stored + * in the database, + */ +async function postExercise(data) { + try { + const { + userId, + isFormRepairComplete, + isDatabaseRepairComplete, + isExerciseComplete, + hasViewed, + } = data; + const getExerciseResponse = await getExercise(userId); + const currentTime = new Date().toISOString(); + const newExercise = { + userid: userId, + isFormRepairComplete: false, + isDatabaseRepairComplete: false, + isExerciseComplete: false, + attemptTime: currentTime, + attemptCount: 1, + hasViewed: false, + }; + if (!getExerciseResponse) { + // adds in new entry + return await db.ExerciseLab13.create(newExercise).id; + } else { + const convert = parseInt(getExerciseResponse.attemptCount); + const newVal = convert + 1; + const updatedExercise = { + userid: userId, + isFormRepairComplete: isFormRepairComplete, + isDatabaseRepairComplete: isDatabaseRepairComplete, + isExerciseComplete: isExerciseComplete, + attemptTime: currentTime, + attemptCount: newVal, + hasViewed: hasViewed, + }; + await db.ExerciseLab13.create(updatedExercise).id; + return updatedExercise; + } + } catch (error) { + console.error(error); + } +} + + +module.exports = { + getExercise, + postExercise, +}; diff --git a/server/services/lab13/RepairService.js b/server/services/lab13/RepairService.js new file mode 100644 index 000000000..c404a1cae --- /dev/null +++ b/server/services/lab13/RepairService.js @@ -0,0 +1,69 @@ +const db = require('../../database'); +/** + * getRepair(): is a service based function that allows for the + * operability to retrieve a user's date based on their user id + * and their closest ime from when the request is sent to track + * when input is logged. + * @param {Number} userid integer storing payload of the request to retrieve + * information based on the request. +* @param {String} section string section indicator to indicate the + * repair section + */ +async function getRepair(userid, section) { + try { + return await db.RepairLab13.findOne({ + order: [['repairId', 'DESC']], + where: { + userid: userid, + section: section, + }, + raw: true, + }); + } catch (error) { + console.error(error); + } +} + +/** + * submitRepair(): is a function that is responsible for + * recording a users repair changes. + * @param {Object} data Object containing body of the request + * assignment for the correct service + * @return {Number} repair id to show it is created + */ +async function submitRepair(data) { + const {userID, repair, isComplete, section} = data; + try { + const currentTime = new Date().toISOString(); + const outputData = await getRepair(userID, section); + if ((!outputData) || outputData.isComplete === true) { + const newRepair = { + userid: userID, + repair: repair, + isComplete: isComplete, + section: section, + attemptTime: currentTime, + repairCount: 1, + }; + return await db.RepairLab13.create(newRepair).id; + } + const convert = parseInt(outputData.repairCount); + const newCount = convert + 1; + const postRepair = { + userid: userID, + repair: repair, + isComplete: isComplete, + section: section, + attemptTime: currentTime, + repairCount: newCount, + }; + return await db.RepairLab13.create(postRepair).id; + } catch (error) { + console.error(error); + } +} + +module.exports = { + submitRepair, + getRepair, +}; From 12e409dffe6f5da5fd1afb49eb6946147bd78c27 Mon Sep 17 00:00:00 2001 From: Emma Schmitt Date: Mon, 27 Oct 2025 15:31:57 -0400 Subject: [PATCH 002/180] Change to Learning Objectives 0-4 for CB Lab --- server/database/schema.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/database/schema.sql b/server/database/schema.sql index f7079a26d..d8f38c788 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3454,10 +3454,10 @@ e'[ ]', 2, 'coming soon', 'coming soon', true), (13, 'Human Cognitive Bias and Generative AI', 'Cognitive Bias', 'AI', '/cognitivebiasai.jpg', 'Learn about Human Cognitive Bias and how it impacts day to day interactions with Generative Artifical Intelligence (AI).', 'This lab will introduce the idea of Human Cognitive Bias and how it impacts day to day interactions with Generative AI. Human Bias plays a large part into why do individuals trust AI generated responses without questions if the responses they are recieving are accurate. Participants will learn how to their own unconsicous bias play into typical interactions with AI, impacting a users trust in AI generated responses. In the exercise portion of the lab they will encounter an interface.', e'[ - "LO1: Knowledge of user significance, characteristics, and needs: Recognize the significance of the population that identifies outside the gender norm, and their needs for accessible use of software (Knowledge)", - "LO2: Exposure to and analysis of poorly accessible design: Examine a software application that doesn\’t properly accommodate accessibility in regards to identity (Analysis)", - "LO3: Apply solutions to solve access problems: Use knowledge of accessibility design solutions to construct corrective measures to allow previously inaccessible software to become accessible to appropriate parties (Application)", - "LO4: Develop further empathy: Relate to individuals who experience difficulties with their gender (Comprehension)" + "LO1: Recognize how cognitive biases such as the Halo Effect, Authority Bias, and Truth Bias influence trust in AI-generated content (Knowledge)", + "LO2: Create design strategies that promote critical thinking, such as certainty indicators and disclaimers about AI limitations (Synthesis)", + "LO3: Identify common hallucination patterns in generative AI, including false citations and misleading self-references (Application)", + "LO4: Experience how confident language, polished grammar, and proximity to credible sources can lead to overestimation of AI accuracy (Comprehension)" ]', 'Emma Schmitt, Kristen Fang, Darlyn Gomez, Christine Espeleta', 'https://ball.rit.edu/Lab13/', null, 'In this lab, you will learn about how a persons own bias can play a part into Generative AI interactions. You will learn about what Cognitive Bias is, how it plays into Human Interactions with Generative AI, Three Specific Cognitive Biases that normally impact AI Interactions, view related media to reinforce the topic, and take a quiz to test your knowledge! Click “Next” to start!', e'{ "piechart": { From 82e119d2bac21c6d6e2cc606d700e47438e5d69a Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Tue, 28 Oct 2025 13:21:30 -0400 Subject: [PATCH 003/180] Adding text questions and answers to the quiz section --- server/database/schema.sql | 93 +++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 51 deletions(-) diff --git a/server/database/schema.sql b/server/database/schema.sql index d8f38c788..8d6e9a41f 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3547,137 +3547,128 @@ e'[ }', '[{"title":"Artifical Intelligence and Dunning Kruger Effect","link": "https://www.youtube.com/embed/dPbGoeW3uVw?si=29cnMsdK_okYF9Ge"},{"title":"Introduction to Halo Effect","link": "https://www.youtube.com/embed/kpjeMaOirvg?si=j383aHRvYakZyNi1"},{"title":"Truth is an Illusion (Truth Bias)","link":"https://www.youtube.com/embed/cebFWOlx848?si=rHm0WHB4a-BMsQtF"}]', '[ { - "question": "What does gender refer to?", + "question": "Which cognitive bias best describes this scenario? Bob is a student who used ChatGPT to do his math homework. He puts in his equation and it gives back an incorrect answer. He thought that the equation would be too hard for him to solve on his own, which is why he turned to Generative AI. He submits his homework and gets a 0 on it.", "answers": [ { "val": 0, "type": "0", - "content": "A person’s assigned sex at birth" + "content": "Truth Bias" }, { - "val": 1, + "val": 0, "type": "1", - "content": "A person’s unique perception of who they are", - "explanation": "While sex is a biological characteristic, gender is a self-identified concept." + "content": "Halo Effect" }, { - "val": 0, + "val": 1, "type": "2", - "content": "The sex other people perceive a person as" + "content": "Authority Bias", + "explanation": "Authority Bias is the tendency to attribute greater accuracy to the opinion of an authority figure (or perceived authority) and be more influenced by that opinion." + }, + { + "val": 0, + "type": "3", + "content": "Dunning-Kruger Effect" } ], "multiChoice": false }, { - "question": "Why is it important to respect someone’s chosen pronouns/name?", + "question": "Which one describes the Halo Effect?", "answers": [ { "val": 0, "type": "0", - "content": "To show respect to others" + "content": "Generative AI giving a wrong answer" }, { - "val": 0, + "val": 1, "type": "1", - "content": "It can lead to a decrease in anxiety" + "content": "Generative AI using \"✅\" in its responses", + "explanation": "The Halo Effect is a cognitive bias in which our overall impression of a person, company, brand, or product influences how we feel and think about their character or properties. In this case, the use of \"✅\" gives the impression that the answer is correct, even if it is not." }, { "val": 0, "type": "2", - "content": "To foster a bias-free environment" + "content": "Believing that Generative AI is correct because it is an online resource" }, { - "val": 1, + "val": 0, "type": "3", - "content": "All of the above", - "explanation": "Using a person’s preferred name and pronouns creates a respectful environment and can decrease anxiety regarding gender expression." + "content": "A lack of knowledge in the topic leading to believing that Generative AI is correct" } ], "multiChoice": false }, { - "question": "Which of the following could be used to add gender non-discrimination features to software?", + "question": "True or False: Since Generative AI has access to lots of information and is trained on a vast dataset, it can always be trusted.", "answers": [ { "val": 0, "type": "0", - "content": "Making everything rainbow colored" + "content": "True" }, { "val": 1, "type": "1", - "content": "Adding an ‘other’ text field when asking for gender", - "explanation": "When asking for a person’s gender in web forms, it’s important to include options in addition to just “male” and “female”." - }, - { - "val": 0, - "type": "2", - "content": "Mandating/requiring users to input their gender" - }, - { - "val": 0, - "type": "3", - "content": "Adjust font size, font color, and text alignment" + "content": "False", + "explanation": "Generative AI can produce incorrect or misleading information, so it should not always be trusted without verification." } ], "multiChoice": false }, { - "question": "ADP, an HR and Payroll consulting company, has recently strived for accessibility in which of the following ways?", + "question": "Select all the things that users should check when using Generative AI to check validity", "answers": [ { "val": 1, "type": "0", - "content": "Advocates for the importance of using preferred names", - "explanation": "ADP had created HR policies regarding preferred names, making ADP a leading advocate.", - "source": "https://www.adp.com/spark/articles/2018/06/foster-an-inclusive-workplace-for-transgender-talent-by-creating-a-preferred-name-policy.aspx" + "content": "Disclaimers", + "explanation": "Many Generative AI tools include disclaimers that the information provided may not be accurate or up-to-date." }, { - "val": 1, + "val": 0, "type": "1", - "content": "Outline the best practices for using preferred names at work", - "explanation": "ADP has created a list of 10 best practices for using preferred names, including asking if you’re unsure and leading by example.", - "source": "https://www.adp.com/spark/articles/2022/06/10-best-practices-for-using-preferred-or-chosen-names-at-work.aspx" + "content": "The tone of the response" }, { - "val": 0, + "val": 1, "type": "2", - "content": "Harshly reprimanding anyone who doesn’t follow these social standards" + "content": "Confidence Scores", + "explanation": "Generative AI tools can provide confidence scores indicating how certain the model is about its response." }, { "val": 1, "type": "3", - "content": "Become familiar with and consistent with someone’s preferred pronouns", - "explanation": "ADP’s HR policies include using everyone’s preferred name and pronouns.", - "source": "https://www.adp.com/spark/articles/2018/06/foster-an-inclusive-workplace-for-transgender-talent-by-creating-a-preferred-name-policy.aspx" + "content": "A separate search of the question", + "explanation": "Users should verify the information provided by Generative AI through independent research or trusted sources." } ], "multiChoice": true }, { - "question": "What percentage of youth surveyed want to be open about their gender identity at their future job?", + "question": "Which of these is cognitive bias NOT based on?", "answers": [ { - "val": 1, + "val": 0, "type": "0", - "content": "76%", - "explanation": "According to the Human Rights Campaign 2023 LGBTQ+ Youth Report, 76% of youth surveyed want to be open about their gender identity at their future job.", - "source": "https://reports.hrc.org/2023-lgbtq-youth-report" + "content": "Perceptions" }, { "val": 0, "type": "1", - "content": "31%" + "content": "Memories" }, { "val": 0, "type": "2", - "content": "12%" + "content": "Societal Beliefs" }, { - "val": 0, + "val": 1, "type": "3", - "content": "This hasn’t been surveyed before." + "content": "Factual Evidence", + "explanation": "Cognitive biases are systematic patterns of deviation from norm or rationality in judgment, often influenced by perceptions, memories, and societal beliefs rather than factual evidence." } ], "multiChoice": false From e685f1abd1d73f2eb52a4abbeb832fb07b455f3d Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 29 Oct 2025 13:06:05 -0400 Subject: [PATCH 004/180] Changed wording of Q4 --- server/database/schema.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/database/schema.sql b/server/database/schema.sql index 8d6e9a41f..571b1ada7 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3618,7 +3618,7 @@ e'[ "multiChoice": false }, { - "question": "Select all the things that users should check when using Generative AI to check validity", + "question": "Select all of the following that users can use to check the validity of Generative AI responses.", "answers": [ { "val": 1, From 0523ae827b1c950a0894690072c391d1ceb4e647 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 29 Oct 2025 15:07:38 -0400 Subject: [PATCH 005/180] Changing Q1 to be related to be Dunning Kruger effect --- server/database/schema.sql | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/database/schema.sql b/server/database/schema.sql index 571b1ada7..04bda5460 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3547,7 +3547,7 @@ e'[ }', '[{"title":"Artifical Intelligence and Dunning Kruger Effect","link": "https://www.youtube.com/embed/dPbGoeW3uVw?si=29cnMsdK_okYF9Ge"},{"title":"Introduction to Halo Effect","link": "https://www.youtube.com/embed/kpjeMaOirvg?si=j383aHRvYakZyNi1"},{"title":"Truth is an Illusion (Truth Bias)","link":"https://www.youtube.com/embed/cebFWOlx848?si=rHm0WHB4a-BMsQtF"}]', '[ { - "question": "Which cognitive bias best describes this scenario? Bob is a student who used ChatGPT to do his math homework. He puts in his equation and it gives back an incorrect answer. He thought that the equation would be too hard for him to solve on his own, which is why he turned to Generative AI. He submits his homework and gets a 0 on it.", + "question": "Which cognitive bias best describes this scenario? Bob is a student who used ChatGPT to do his math homework. He argues with his teacher about his homework that he got a 0 on. He believes that his math skills are strong enough to not check the answers of ChatGPT because they \"look right\". His teacher continued to give him a 0.", "answers": [ { "val": 0, @@ -3560,15 +3560,15 @@ e'[ "content": "Halo Effect" }, { - "val": 1, + "val": 0, "type": "2", - "content": "Authority Bias", - "explanation": "Authority Bias is the tendency to attribute greater accuracy to the opinion of an authority figure (or perceived authority) and be more influenced by that opinion." + "content": "Authority Bias" }, { - "val": 0, + "val": 1, "type": "3", - "content": "Dunning-Kruger Effect" + "content": "Dunning-Kruger Effect", + "explanation": "The Dunning-Kruger Effect is a cognitive bias in which people overestimate their ability in a task. In this case, Bob overestimates his math skills and trusts the AI without verification." } ], "multiChoice": false From 03bab4870533b8c760ffd87f912f6f0937010557 Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 29 Oct 2025 15:38:19 -0400 Subject: [PATCH 006/180] Changing the question answers for Q5 --- server/database/schema.sql | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/server/database/schema.sql b/server/database/schema.sql index 04bda5460..7fafd87f2 100644 --- a/server/database/schema.sql +++ b/server/database/schema.sql @@ -3652,23 +3652,23 @@ e'[ { "val": 0, "type": "0", - "content": "Perceptions" + "content": "Intuition" }, { - "val": 0, + "val": 1, "type": "1", - "content": "Memories" + "content": "Facts", + "explanation": "Cognitive biases are systematic patterns of deviation from norm or rationality in judgment, often based on intuition rather than objective facts." }, { "val": 0, "type": "2", - "content": "Societal Beliefs" + "content": "Familiarity" }, { - "val": 1, + "val": 0, "type": "3", - "content": "Factual Evidence", - "explanation": "Cognitive biases are systematic patterns of deviation from norm or rationality in judgment, often influenced by perceptions, memories, and societal beliefs rather than factual evidence." + "content": "Quick Conclusions" } ], "multiChoice": false From bd91e2000a3361fd5132564f3f79c7b2e8f286ba Mon Sep 17 00:00:00 2001 From: Kristen Fang Date: Wed, 29 Oct 2025 15:39:28 -0400 Subject: [PATCH 007/180] Deleting the leftover lab12 development file --- .../quiz/api/Lab12/quizQuestions.js | 135 ------------------ 1 file changed, 135 deletions(-) delete mode 100644 client/src/components/quiz/api/Lab12/quizQuestions.js diff --git a/client/src/components/quiz/api/Lab12/quizQuestions.js b/client/src/components/quiz/api/Lab12/quizQuestions.js deleted file mode 100644 index ee7ccb7e7..000000000 --- a/client/src/components/quiz/api/Lab12/quizQuestions.js +++ /dev/null @@ -1,135 +0,0 @@ -/* eslint-disable max-len */ -const quizQuestionsLab12 = [ - { - question: "What does gender refer to?", - answers: [ - { - val: 0, - type: "0", - content: "A person’s assigned sex at birth", - }, - { - val: 1, - type: "1", - content: "A person’s unique perception of who they are", - }, - { - val: 0, - type: "2", - content: "The sex other people perceive a person as", - }, - ], - multiChoice: false, - }, - { - question: "Why is it important to respect someone’s chosen pronouns/name?", - answers: [ - { - val: 0, - type: "0", - content: "To show respect to others", - }, - { - val: 0, - type: "1", - content: "It can lead to a decrease in anxiety", - }, - { - val: 0, - type: "2", - content: "To foster a bias-free environment", - }, - { - val: 1, - type: "3", - content: "All of the above", - }, - ], - multiChoice: false, - }, - { - question: - "Which of the following could be used to add gender non-discrimination features to software?", - answers: [ - { - val: 0, - type: "0", - content: "Making everything rainbow colored", - }, - { - val: 1, - type: "1", - content: "Adding an ‘other’ text field when asking for gender", - }, - { - val: 0, - type: "2", - content: "Mandating/requiring users to input their gender", - }, - { - val: 0, - type: "3", - content: "Adjust font size, font color, and text alignment", - }, - ], - multiChoice: false, - }, - { - question: - "ADP, an HR and Payroll consulting company, has recently strived for gender sensitivity in which of the following ways?", - answers: [ - { - val: 1, - type: "0", - content: "Advocates for the importance of using preferred names", - }, - { - val: 1, - type: "1", - content: "Outline the best practices for using preferred names at work", - }, - { - val: 0, - type: "2", - content: - "Harshly reprimanding anyone who doesn’t follow these social standards", - }, - { - val: 1, - type: "3", - content: - "Become familiar with and consistent with someone’s preferred pronouns", - }, - ], - multiChoice: true, - }, - { - question: - "What percentage of youth surveyed want to be open about their gender identity at their future job?", - answers: [ - { - val: 1, - type: "0", - content: "76%", - }, - { - val: 0, - type: "1", - content: "31%", - }, - { - val: 0, - type: "2", - content: "12%", - }, - { - val: 0, - type: "3", - content: "This hasn’t been surveyed before.", - }, - ], - multiChoice: false, - }, -]; - -export default quizQuestionsLab12; From 487f4e460f0aea79296fdbf0ca7e1df03f9e7875 Mon Sep 17 00:00:00 2001 From: Darlyn Gomez Date: Tue, 4 Nov 2025 15:20:52 -0500 Subject: [PATCH 008/180] Complete Lab 13 reading section with flexible pie chart rendering - Implement hasPiechartInBody() helper for intentional pie chart rendering - Add piechart type option in body loop - Add 6 sections of reading content --- .../what-is-cognitive-bias-image.png | Bin 0 -> 729706 bytes client/src/components/body/Reading/Reading.js | 24 +- package-lock.json | 269 +++++++++--------- package.json | 4 +- server/database/schema.sql | 197 ++++++++----- 5 files changed, 276 insertions(+), 218 deletions(-) create mode 100644 client/public/img/lab_images/what-is-cognitive-bias-image.png diff --git a/client/public/img/lab_images/what-is-cognitive-bias-image.png b/client/public/img/lab_images/what-is-cognitive-bias-image.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6ef9e926c4b5cc9f39a498f8b19dcce590011c GIT binary patch literal 729706 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