From 3380fc5bbd8d3acf4eb2235329697ec4bfa171b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 28 Sep 2024 11:35:15 +0800 Subject: [PATCH 01/23] Bump rollup from 2.79.1 to 2.79.2 (#3055) Bumps [rollup](https://github.com/rollup/rollup) from 2.79.1 to 2.79.2. - [Release notes](https://github.com/rollup/rollup/releases) - [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md) - [Commits](https://github.com/rollup/rollup/compare/v2.79.1...v2.79.2) --- updated-dependencies: - dependency-name: rollup dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 564738d150..e3f7ef0e2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12205,9 +12205,9 @@ rollup-plugin-terser@^7.0.0: terser "^5.0.0" rollup@^2.43.1, rollup@^2.67.2: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + version "2.79.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090" + integrity sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ== optionalDependencies: fsevents "~2.3.2" From 81573e61047b574a3d73c1a6c88557159513e142 Mon Sep 17 00:00:00 2001 From: TheMythologist Date: Sun, 29 Sep 2024 23:05:19 +0800 Subject: [PATCH 02/23] Bump `@testing-library/react` package (#3054) --- package.json | 2 +- yarn.lock | 31 +++++++++++++++++++------------ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index c0714545bc..a291aac964 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@craco/craco": "^7.1.0", "@svgr/webpack": "^8.0.0", "@testing-library/jest-dom": "^6.0.0", - "@testing-library/react": "^14.0.0", + "@testing-library/react": "^15.0.6", "@testing-library/user-event": "^14.4.3", "@types/dompurify": "^3.0.5", "@types/estree": "^1.0.5", diff --git a/yarn.lock b/yarn.lock index e3f7ef0e2b..a509642aaa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2704,15 +2704,15 @@ resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.12.0.tgz#ada34e17ca761fed99353b48e8cb7deacc971025" integrity sha512-cq/ylWVrOwixmwNXQjgZaQw1Izf7+nPxjczum7paAnMtwPg1S2qRAJU+Jb8rEBUWm69voC/zcChmePlk2hc6ug== -"@testing-library/dom@^9.0.0": - version "9.3.1" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.1.tgz#8094f560e9389fb973fe957af41bf766937a9ee9" - integrity sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w== +"@testing-library/dom@^10.0.0": + version "10.4.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8" + integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^5.0.1" - aria-query "5.1.3" + aria-query "5.3.0" chalk "^4.1.0" dom-accessibility-api "^0.5.9" lz-string "^1.5.0" @@ -2732,13 +2732,13 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react@^14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.0.0.tgz#59030392a6792450b9ab8e67aea5f3cc18d6347c" - integrity sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg== +"@testing-library/react@^15.0.6": + version "15.0.7" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-15.0.7.tgz#ff733ce0893c875cb5a47672e8e772897128f4ae" + integrity sha512-cg0RvEdD1TIhhkm1IeYMQxrzy0MtUNfa3minv4MjbgcYzJAZ7yD0i0lwoPOTPr+INtiXFezt2o8xMSnyHhEn2Q== dependencies: "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^9.0.0" + "@testing-library/dom" "^10.0.0" "@types/react-dom" "^18.0.0" "@testing-library/user-event@^14.4.3": @@ -3957,7 +3957,14 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@5.1.3, aria-query@^5.0.0, aria-query@^5.1.3: +aria-query@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +aria-query@^5.0.0, aria-query@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== @@ -5761,7 +5768,7 @@ deprecation@^2.0.0: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -dequal@^2.0.0: +dequal@^2.0.0, dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== From a98dd495e3afc66f9c15acf1bb98d8af4f54b475 Mon Sep 17 00:00:00 2001 From: Kyriel Abad Date: Wed, 2 Oct 2024 15:34:07 +0800 Subject: [PATCH 03/23] Simplify logic for adding of StepperLimit slider (#3056) * Update js-slang * Enable step limit for Scheme variants * Simplify logic for step limit setting * update snapshots * remove commented line * update tests * update execution time logic --- src/commons/application/ApplicationTypes.ts | 4 ++++ src/pages/playground/Playground.tsx | 15 ++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/commons/application/ApplicationTypes.ts b/src/commons/application/ApplicationTypes.ts index e0a54c99ac..b5e269220c 100644 --- a/src/commons/application/ApplicationTypes.ts +++ b/src/commons/application/ApplicationTypes.ts @@ -214,6 +214,10 @@ export function isSchemeLanguage(chapter: Chapter): boolean { ].includes(chapter); } +export function isCseVariant(variant: Variant): boolean { + return variant == Variant.EXPLICIT_CONTROL; +} + const pySubLanguages: Array> = [ { chapter: Chapter.PYTHON_1, variant: Variant.DEFAULT, displayName: 'Python \xa71' } //{ chapter: Chapter.PYTHON_2, variant: Variant.DEFAULT, displayName: 'Python \xa72' }, diff --git a/src/pages/playground/Playground.tsx b/src/pages/playground/Playground.tsx index 4c4940073d..58aeabeebd 100644 --- a/src/pages/playground/Playground.tsx +++ b/src/pages/playground/Playground.tsx @@ -18,6 +18,7 @@ import { setSessionDetails, setSharedbConnected } from 'src/commons/collabEditing/CollabEditingActions'; +import { ControlBarExecutionTime } from 'src/commons/controlBar/ControlBarExecutionTime'; import makeCseMachineTabFrom from 'src/commons/sideContent/content/SideContentCseMachine'; import makeDataVisualizerTabFrom from 'src/commons/sideContent/content/SideContentDataVisualizer'; import makeHtmlDisplayTabFrom from 'src/commons/sideContent/content/SideContentHtmlDisplay'; @@ -49,6 +50,7 @@ import { import { getDefaultFilePath, getLanguageConfig, + isCseVariant, isSourceLanguage, OverallState, ResultOutput, @@ -59,7 +61,6 @@ import { ControlBarAutorunButtons } from '../../commons/controlBar/ControlBarAut import { ControlBarChapterSelect } from '../../commons/controlBar/ControlBarChapterSelect'; import { ControlBarClearButton } from '../../commons/controlBar/ControlBarClearButton'; import { ControlBarEvalButton } from '../../commons/controlBar/ControlBarEvalButton'; -import { ControlBarExecutionTime } from '../../commons/controlBar/ControlBarExecutionTime'; import { ControlBarGoogleDriveButtons } from '../../commons/controlBar/ControlBarGoogleDriveButtons'; import { ControlBarSessionButtons } from '../../commons/controlBar/ControlBarSessionButton'; import { ControlBarShareButton } from '../../commons/controlBar/ControlBarShareButton'; @@ -210,8 +211,8 @@ const Playground: React.FC = props => { editorTabs, editorSessionId, sessionDetails, - execTime, stepLimit, + execTime, isEditorAutorun, isRunning, isDebugging, @@ -977,11 +978,11 @@ const Playground: React.FC = props => { languageConfig.supports.multiFile ? toggleFolderModeButton : null, persistenceButtons, githubButtons, - usingRemoteExecution || !isSourceLanguage(languageConfig.chapter) - ? null - : usingSubst || usingCse - ? stepperStepLimit - : executionTime + usingSubst || usingCse || isCseVariant(languageConfig.variant) + ? stepperStepLimit + : isSourceLanguage(languageConfig.chapter) + ? executionTime + : null ] }, editorContainerProps: editorContainerProps, From 32e2cff71a6e0ed102fedffc43ffd1e31998165f Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Wed, 2 Oct 2024 18:40:58 +0800 Subject: [PATCH 04/23] Bump c-slang to 1.0.21 (#3057) --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a291aac964..1a7e6f184d 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@octokit/rest": "^20.0.0", "@reduxjs/toolkit": "^1.9.7", "@sentry/browser": "^7.57.0", - "@sourceacademy/c-slang": "^1.0.20", + "@sourceacademy/c-slang": "^1.0.21", "@sourceacademy/sharedb-ace": "^2.0.3", "@sourceacademy/sling-client": "^0.1.0", "@szhsin/react-menu": "^4.0.0", diff --git a/yarn.lock b/yarn.lock index a509642aaa..97d819d906 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2438,10 +2438,10 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sourceacademy/c-slang@^1.0.20": - version "1.0.20" - resolved "https://registry.yarnpkg.com/@sourceacademy/c-slang/-/c-slang-1.0.20.tgz#d2d3ecc77316d07ad87a302d979cd4688055c75d" - integrity sha512-nbRjzL2bUzurbPiENc270WnmcS11nu82Yq7JFV5dFCR/PqGdf/X7+2dV/1ltEoQwFjUEur+u4Ek4OY0drgEZXQ== +"@sourceacademy/c-slang@^1.0.21": + version "1.0.21" + resolved "https://registry.yarnpkg.com/@sourceacademy/c-slang/-/c-slang-1.0.21.tgz#a292d68a2993af2e1466bf8fc018c24c3af35e4d" + integrity sha512-sny7mTJtzfeJC0Uflubfl50deElcl6/jT5DFazv1D7zr7v2CCevrAk9c7vrXmHV3mA6BpovYgwykZmIrYSWSNg== dependencies: bignumber.js "^9.1.2" peggy "^3.0.2" From 076fd7aedd57349c86e673d8c269eb2315ba81cc Mon Sep 17 00:00:00 2001 From: TheMythologist Date: Wed, 2 Oct 2024 18:46:31 +0800 Subject: [PATCH 05/23] Migrate from moment to dayjs (#3053) --- package.json | 2 +- src/commons/achievement/utils/DateHelper.ts | 14 +++++++------- .../utils/InsertFakeAchievements.ts | 4 ++-- src/commons/utils/DateHelper.ts | 19 ++++++++++++------- .../subcomponents/GroundControlEditCell.tsx | 12 ++++++------ yarn.lock | 10 +++++----- 6 files changed, 33 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 1a7e6f184d..8fe3ff2ad0 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "array-move": "^4.0.0", "browserfs": "^1.4.3", "classnames": "^2.3.2", + "dayjs": "^1.11.13", "dompurify": "^3.1.6", "flexboxgrid": "^6.3.1", "flexboxgrid-helpers": "^1.1.3", @@ -62,7 +63,6 @@ "lz-string": "^1.4.4", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-hast": "^13.0.0", - "moment": "^2.29.4", "normalize.css": "^8.0.1", "phaser": "^3.55.2", "query-string": "^9.0.0", diff --git a/src/commons/achievement/utils/DateHelper.ts b/src/commons/achievement/utils/DateHelper.ts index 1d695f1a02..df7cbd696b 100644 --- a/src/commons/achievement/utils/DateHelper.ts +++ b/src/commons/achievement/utils/DateHelper.ts @@ -1,4 +1,4 @@ -import moment from 'moment'; +import dayjs from 'dayjs'; const now = new Date(); @@ -38,12 +38,12 @@ export const timeFromExpired = (deadline?: Date) => export const prettifyDate = (deadline?: Date) => { if (deadline === undefined) return ''; - return moment(deadline).format('D MMMM YYYY HH:mm'); + return dayjs(deadline).format('D MMMM YYYY HH:mm'); }; export const prettifyTime = (time?: Date) => { if (time === undefined) return ''; - return moment(time).format('HH:mm'); + return dayjs(time).format('HH:mm'); }; // Converts Date to deadline countdown @@ -54,11 +54,11 @@ export const prettifyDeadline = (deadline?: Date) => { return 'Expired'; } - const now = moment(); + const now = dayjs(); - const weeksAway = Math.ceil(moment(deadline).diff(now, 'weeks', true)); - const daysAway = Math.ceil(moment(deadline).diff(now, 'days', true)); - const hoursAway = Math.ceil(moment(deadline).diff(now, 'hours', true)); + const weeksAway = Math.ceil(dayjs(deadline).diff(now, 'weeks', true)); + const daysAway = Math.ceil(dayjs(deadline).diff(now, 'days', true)); + const hoursAway = Math.ceil(dayjs(deadline).diff(now, 'hours', true)); let prettifiedDeadline = ''; if (weeksAway > 1) { diff --git a/src/commons/achievement/utils/InsertFakeAchievements.ts b/src/commons/achievement/utils/InsertFakeAchievements.ts index 9ba1c1d0d8..93182c3155 100644 --- a/src/commons/achievement/utils/InsertFakeAchievements.ts +++ b/src/commons/achievement/utils/InsertFakeAchievements.ts @@ -1,4 +1,4 @@ -import moment from 'moment'; +import dayjs from 'dayjs'; import { cardBackgroundUrl, @@ -23,7 +23,7 @@ function insertFakeAchievements( inferencer: AchievementInferencer ) { const sortedOverviews = [...assessmentOverviews].sort((overview1, overview2) => - moment(overview1.closeAt).diff(moment(overview2.closeAt)) + dayjs(overview1.closeAt).diff(dayjs(overview2.closeAt)) ); const length = assessmentOverviews.length; diff --git a/src/commons/utils/DateHelper.ts b/src/commons/utils/DateHelper.ts index 79454affba..ff40ad064f 100644 --- a/src/commons/utils/DateHelper.ts +++ b/src/commons/utils/DateHelper.ts @@ -1,4 +1,9 @@ -import moment from 'moment'; +import dayjs from 'dayjs'; +import advancedFormat from 'dayjs/plugin/advancedFormat'; +import relativeTime from 'dayjs/plugin/relativeTime'; + +dayjs.extend(advancedFormat); +dayjs.extend(relativeTime); /** * Checks if a date is before or at the current time. @@ -9,8 +14,8 @@ import moment from 'moment'; * is before the time of execution of this function. */ export const beforeNow = (dateString: string): boolean => { - const date = moment(dateString); - const now = moment(); + const date = dayjs(dateString); + const now = dayjs(); return date.isBefore(now); }; @@ -25,25 +30,25 @@ export const beforeNow = (dateString: string): boolean => { * e.g 7th June, 20:09 */ export const getPrettyDate = (dateString: string): string => { - const date = moment(dateString); + const date = dayjs(dateString); const prettyDate = date.format('Do MMMM, HH:mm'); return prettyDate; }; export const getStandardDateTime = (dateString: string): string => { - const date = moment(dateString); + const date = dayjs(dateString); const prettyDate = date.format('MMMM Do YYYY, HH:mm'); return prettyDate; }; export const getStandardDate = (dateString: string): string => { - const date = moment(dateString); + const date = dayjs(dateString); const prettyDate = date.format('MMMM Do YYYY'); return prettyDate; }; export const getPrettyDateAfterHours = (dateString: string, hours: number): string => { - const date = moment(dateString).add(hours, 'hours'); + const date = dayjs(dateString).add(hours, 'hours'); const absolutePrettyDate = date.format('Do MMMM, HH:mm'); const relativePrettyDate = date.fromNow(); return `${absolutePrettyDate} (${relativePrettyDate})`; diff --git a/src/pages/academy/groundControl/subcomponents/GroundControlEditCell.tsx b/src/pages/academy/groundControl/subcomponents/GroundControlEditCell.tsx index 19cb9f68d9..43c40e5196 100644 --- a/src/pages/academy/groundControl/subcomponents/GroundControlEditCell.tsx +++ b/src/pages/academy/groundControl/subcomponents/GroundControlEditCell.tsx @@ -1,7 +1,7 @@ import { Dialog, DialogBody, DialogFooter, Intent } from '@blueprintjs/core'; import { DateInput3 } from '@blueprintjs/datetime2'; import { IconNames } from '@blueprintjs/icons'; -import moment from 'moment'; +import dayjs from 'dayjs'; import React, { useCallback, useState } from 'react'; import { AssessmentOverview } from '../../../../commons/assessment/AssessmentTypes'; @@ -21,10 +21,10 @@ const EditCell: React.FC = ({ data, forOpenDate, handleAssessmentChangeDa const maxDate = new Date(2030, 11, 31); const currentDateString = forOpenDate ? data.openAt : data.closeAt; - const currentDate = moment(currentDateString, moment.ISO_8601, true); + const currentDate = dayjs(currentDateString, undefined, true); const [isDialogOpen, setDialogState] = useState(false); - const [newDate, setNewDate] = useState(currentDate); + const [newDate, setNewDate] = useState(currentDate); const handleOpenDialog = useCallback(() => setDialogState(true), []); const handleCloseDialog = useCallback(() => setDialogState(false), []); @@ -46,13 +46,13 @@ const EditCell: React.FC = ({ data, forOpenDate, handleAssessmentChangeDa }, [newDate, currentDate, data, handleAssessmentChangeDate, forOpenDate, handleCloseDialog]); const handleParseDate = (str: string) => { - const date = moment(str, dateDisplayFormat, true); + const date = dayjs(str, dateDisplayFormat, true); return date.isValid() ? date.toDate() : false; }; - const handleFormatDate = (date: Date) => moment(date).format(dateDisplayFormat); + const handleFormatDate = (date: Date) => dayjs(date).format(dateDisplayFormat); const handleDateChange = React.useCallback( - (selectedDate: string | null) => setNewDate(moment(selectedDate)), + (selectedDate: string | null) => setNewDate(dayjs(selectedDate)), [] ); const handleDateError = React.useCallback(() => { diff --git a/yarn.lock b/yarn.lock index 97d819d906..ad456ab49c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5596,6 +5596,11 @@ date-fns@^2.28.0: dependencies: "@babel/runtime" "^7.21.0" +dayjs@^1.11.13: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + debounce@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -9879,11 +9884,6 @@ mkdirp@~0.5.1: dependencies: minimist "^1.2.6" -moment@^2.29.4: - version "2.30.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" - integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== - mqtt-packet@^6.8.0: version "6.10.0" resolved "https://registry.yarnpkg.com/mqtt-packet/-/mqtt-packet-6.10.0.tgz#c8b507832c4152e3e511c0efa104ae4a64cd418f" From dbc8ec882662a98f56fada7835b9dc7014119efa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 15:11:11 +0800 Subject: [PATCH 06/23] Bump @sentry/browser from 7.107.0 to 8.33.0 (#3058) Bumps [@sentry/browser](https://github.com/getsentry/sentry-javascript) from 7.107.0 to 8.33.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.107.0...8.33.0) --- updated-dependencies: - dependency-name: "@sentry/browser" dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 140 +++++++++++++++++++++++++-------------------------- 2 files changed, 71 insertions(+), 71 deletions(-) diff --git a/package.json b/package.json index 8fe3ff2ad0..b16062dc0a 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@mantine/hooks": "^7.11.2", "@octokit/rest": "^20.0.0", "@reduxjs/toolkit": "^1.9.7", - "@sentry/browser": "^7.57.0", + "@sentry/browser": "^8.33.0", "@sourceacademy/c-slang": "^1.0.21", "@sourceacademy/sharedb-ace": "^2.0.3", "@sourceacademy/sling-client": "^0.1.0", diff --git a/yarn.lock b/yarn.lock index ad456ab49c..253bf11a8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2343,76 +2343,76 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== -"@sentry-internal/feedback@7.107.0": - version "7.107.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-7.107.0.tgz#144cf01b1c1739d61db3990519f59b49a356fef1" - integrity sha512-okF0B9AJHrpkwNMxNs/Lffw3N5ZNbGwz4uvCfyOfnMxc7E2VfDM18QzUvTBRvNr3bA9wl+InJ+EMG3aZhyPunA== - dependencies: - "@sentry/core" "7.107.0" - "@sentry/types" "7.107.0" - "@sentry/utils" "7.107.0" - -"@sentry-internal/replay-canvas@7.107.0": - version "7.107.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-7.107.0.tgz#ce2a8f6bf63ab962e696f26b509cfb87aa931302" - integrity sha512-dmDL9g3QDfo7axBOsVnpiKdJ/DXrdeuRv1AqsLgwzJKvItsv0ZizX0u+rj5b1UoxcwbXRMxJ0hit5a1yt3t/ow== - dependencies: - "@sentry/core" "7.107.0" - "@sentry/replay" "7.107.0" - "@sentry/types" "7.107.0" - "@sentry/utils" "7.107.0" - -"@sentry-internal/tracing@7.107.0": - version "7.107.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.107.0.tgz#a10b4abcbc9e0d8da948e3a95029574387ca7b16" - integrity sha512-le9wM8+OHBbq7m/8P7JUJ1UhSPIty+Z/HmRXc5Z64ODZcOwFV6TmDpYx729IXDdz36XUKmeI+BeM7yQdTTZPfQ== - dependencies: - "@sentry/core" "7.107.0" - "@sentry/types" "7.107.0" - "@sentry/utils" "7.107.0" - -"@sentry/browser@^7.57.0": - version "7.107.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.107.0.tgz#a1caf4a3c39857862ba3314b9d4ed03f9259f338" - integrity sha512-KnqaQDhxv6w9dJ+mYLsNwPeGZfgbpM3vaismBNyJCKLgWn2V75kxkSq+bDX8LQT/13AyK7iFp317L6P8EuNa3g== - dependencies: - "@sentry-internal/feedback" "7.107.0" - "@sentry-internal/replay-canvas" "7.107.0" - "@sentry-internal/tracing" "7.107.0" - "@sentry/core" "7.107.0" - "@sentry/replay" "7.107.0" - "@sentry/types" "7.107.0" - "@sentry/utils" "7.107.0" - -"@sentry/core@7.107.0": - version "7.107.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.107.0.tgz#926838ba2c2861d6bd2bced0232e1f9d1ead6c75" - integrity sha512-C7ogye6+KPyBi8NVL0P8Rxx3Ur7Td8ufnjxosVy678lqY+dcYPk/HONROrzUFYW5fMKWL4/KYnwP+x9uHnkDmw== - dependencies: - "@sentry/types" "7.107.0" - "@sentry/utils" "7.107.0" - -"@sentry/replay@7.107.0": - version "7.107.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.107.0.tgz#d714f864ef8602e6d009b2fa8ff8e4ef63c3e9e4" - integrity sha512-BNJDEVaEwr/YnV22qnyVA1almx/3p615m3+KaF8lPo7YleYgJGSJv1auH64j1G8INkrJ0J0wFBujb1EFjMYkxA== - dependencies: - "@sentry-internal/tracing" "7.107.0" - "@sentry/core" "7.107.0" - "@sentry/types" "7.107.0" - "@sentry/utils" "7.107.0" - -"@sentry/types@7.107.0": - version "7.107.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.107.0.tgz#5ba4b472be6ccad9aecd58dbc0141a09dafb68c1" - integrity sha512-H7qcPjPSUWHE/Zf5bR1EE24G0pGVuJgrSx8Tvvl5nKEepswMYlbXHRVSDN0gTk/E5Z7cqf+hUBOpkQgZyps77w== - -"@sentry/utils@7.107.0": - version "7.107.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.107.0.tgz#b8524539d052a40f9c5f34a8347501f0f81a0751" - integrity sha512-C6PbN5gHh73MRHohnReeQ60N8rrLYa9LciHue3Ru2290eSThg4CzsPnx4SzkGpkSeVlhhptKtKZ+hp/ha3iVuw== - dependencies: - "@sentry/types" "7.107.0" +"@sentry-internal/browser-utils@8.33.0": + version "8.33.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.33.0.tgz#17921cd2b83c835f6b986877d65b2aeb68e4b9b0" + integrity sha512-zwjmD+XI3pgxxiqKGLXYDGSd+zfO7az9zzbLn1le8Vv9cRL2lZyMLcwiwEaTpwz3B0pPONeDZMT8+bzMGRs8zw== + dependencies: + "@sentry/core" "8.33.0" + "@sentry/types" "8.33.0" + "@sentry/utils" "8.33.0" + +"@sentry-internal/feedback@8.33.0": + version "8.33.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.33.0.tgz#dac09d62e7852143ff8cc3081e298828c18ecff7" + integrity sha512-KSW/aiNgmJc8PDl2NsM+ONvGure4tPaluj7O1Nw+947Dh8W6CJnQ9srB7xPyoYYWyQW8Hyl1vzxY9W0J+fjlhA== + dependencies: + "@sentry/core" "8.33.0" + "@sentry/types" "8.33.0" + "@sentry/utils" "8.33.0" + +"@sentry-internal/replay-canvas@8.33.0": + version "8.33.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.33.0.tgz#d498ef94163fca9f79a7f35093ac746d44965b36" + integrity sha512-9fEhMP+gQYQrtn/SQd1Vd7U7emTSGBpLKc5h5f0iV0yDmjYAhNVbq4RgPTYAgnBEcdVo3qgboL6UIz9Dv+dYRQ== + dependencies: + "@sentry-internal/replay" "8.33.0" + "@sentry/core" "8.33.0" + "@sentry/types" "8.33.0" + "@sentry/utils" "8.33.0" + +"@sentry-internal/replay@8.33.0": + version "8.33.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.33.0.tgz#5a1297e05666aee059e2de9f278889ab5c405f44" + integrity sha512-GFBaDA4yhlEf3wTXOVXnJVG/diuKxeqZuXcuhsAwJb+YcFR0NhgsRn3wIGuYOZZF8GBXzx9PFnb9yIuFgx5Nbw== + dependencies: + "@sentry-internal/browser-utils" "8.33.0" + "@sentry/core" "8.33.0" + "@sentry/types" "8.33.0" + "@sentry/utils" "8.33.0" + +"@sentry/browser@^8.33.0": + version "8.33.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.33.0.tgz#077fce0014d0674405920c87c8aed03be11d4815" + integrity sha512-qu/g20ZskywEU8BWc4Fts1kXFFBtw1vS+XvPq7Ta9zCeRG5dlXhhYDVQ4/v4nAL/cs0o6aLCq73m109CFF0Kig== + dependencies: + "@sentry-internal/browser-utils" "8.33.0" + "@sentry-internal/feedback" "8.33.0" + "@sentry-internal/replay" "8.33.0" + "@sentry-internal/replay-canvas" "8.33.0" + "@sentry/core" "8.33.0" + "@sentry/types" "8.33.0" + "@sentry/utils" "8.33.0" + +"@sentry/core@8.33.0": + version "8.33.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.33.0.tgz#407b70c19038b3201a742b3f041ab44fbb7f7397" + integrity sha512-618PQGHQLBVCpAq1s+e/rpIUaLUnj19IPUgn97rUGXLLna8ETIAoyQoG70wz4q9niw4Z4GlS5kZNrael2O3+2w== + dependencies: + "@sentry/types" "8.33.0" + "@sentry/utils" "8.33.0" + +"@sentry/types@8.33.0": + version "8.33.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-8.33.0.tgz#2613acefae23c53e660c410120d5d4cbcfc5d713" + integrity sha512-V/A+72ZdnfGtXeXIpz1kUo3LRdq3WKEYYFUR2RKpCdPh9yeOrHq6u/rmzTWx49+om0yhZN+JhVoxDzt75UoFRg== + +"@sentry/utils@8.33.0": + version "8.33.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-8.33.0.tgz#60b7d441e93500f1e547e819e62987d0e544e644" + integrity sha512-TdwtGdevJij2wq2x/hDUr+x5TXt47ZhWxZ8zluai/lnIDTUB3Xs/L9yHtj1J+H9hr8obkMASE9IanUrWXzrP6Q== + dependencies: + "@sentry/types" "8.33.0" "@sinclair/typebox@^0.24.1": version "0.24.51" From 8213d21951b01a27861bcb684d7981d52364bcfa Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Tue, 8 Oct 2024 18:22:43 +0800 Subject: [PATCH 07/23] fix: Memoize achievement inferencer (#3061) Uses a per-component instance singleton and memoizes it, as we only need to keep track of the initial states of the control panel. Also added a TODO comment for future refactoring to more modern React principles using component state and hooks. --- .../achievement/control/AchievementControl.tsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pages/achievement/control/AchievementControl.tsx b/src/pages/achievement/control/AchievementControl.tsx index 1f464c2bdf..caf60cfa54 100644 --- a/src/pages/achievement/control/AchievementControl.tsx +++ b/src/pages/achievement/control/AchievementControl.tsx @@ -35,8 +35,18 @@ const AchievementControl: React.FC = () => { [dispatch] ); - const inferencer = useTypedSelector( - state => new AchievementInferencer(state.achievement.achievements, state.achievement.goals) + // TODO: This is a hacky fix. By right, we shouldn't need to use an + // inferencer instance since we can encapsulate the logic using hooks + // and component state. + const [initialAchievements, initialGoals] = useTypedSelector(state => [ + state.achievement.achievements, + state.achievement.goals + ]); + const inferencer = useMemo( + () => new AchievementInferencer(initialAchievements, initialGoals), + // We only want to create the inferencer once + // eslint-disable-next-line react-hooks/exhaustive-deps + [] ); /** From a5b6f7df88a4f0af2afe2d85bf3298026c950841 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 26 Oct 2024 10:46:25 +0800 Subject: [PATCH 08/23] Bump http-proxy-middleware from 2.0.6 to 2.0.7 (#3063) Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.6 to 2.0.7. - [Release notes](https://github.com/chimurai/http-proxy-middleware/releases) - [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.7/CHANGELOG.md) - [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7) --- updated-dependencies: - dependency-name: http-proxy-middleware dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 253bf11a8b..96371d340b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7724,9 +7724,9 @@ http-proxy-agent@^7.0.0: debug "^4.3.4" http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + version "2.0.7" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz#915f236d92ae98ef48278a95dedf17e991936ec6" + integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" From e60abdfd77d5cb97ac36eacfbb3f92290c8420d8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:00:32 +0000 Subject: [PATCH 09/23] chore(deps): update dependency npm-run-all2 to v7 (#3065) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 46 +++++++++++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index b16062dc0a..410c641085 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "eslint-plugin-simple-import-sort": "^12.1.1", "https-browserify": "^1.0.0", "husky": "^9.0.0", - "npm-run-all2": "^6.0.0", + "npm-run-all2": "^7.0.0", "os-browserify": "^0.3.0", "path-browserify": "^1.0.1", "prettier": "^3.3.3", diff --git a/yarn.lock b/yarn.lock index 96371d340b..3691fa3a89 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9058,10 +9058,10 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-parse-even-better-errors@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz#02bb29fb5da90b5444581749c22cedd3597c6cb0" - integrity sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg== +json-parse-even-better-errors@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz#d3f67bd5925e81d3e31aa466acc821c8375cec43" + integrity sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA== json-schema-traverse@^0.4.1: version "0.4.1" @@ -10076,23 +10076,24 @@ normalize.css@^8.0.1: resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== -npm-normalize-package-bin@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" - integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== +npm-normalize-package-bin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz#df79e70cd0a113b77c02d1fe243c96b8e618acb1" + integrity sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w== -npm-run-all2@^6.0.0: - version "6.1.2" - resolved "https://registry.yarnpkg.com/npm-run-all2/-/npm-run-all2-6.1.2.tgz#637b2b804f32dd8cee9e5edf7d47a9fc4ca8bf9d" - integrity sha512-WwwnS8Ft+RpXve6T2EIEVpFLSqN+ORHRvgNk3H9N62SZXjmzKoRhMFg3I17TK3oMaAEr+XFbRirWS2Fn3BCPSg== +npm-run-all2@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/npm-run-all2/-/npm-run-all2-7.0.1.tgz#7a20f65d072db4a880802d4ba5cd19566daef752" + integrity sha512-Adbv+bJQ8UTAM03rRODqrO5cx0YU5KCG2CvHtSURiadvdTjjgGJXdbc1oQ9CXBh9dnGfHSoSB1Web/0Dzp6kOQ== dependencies: ansi-styles "^6.2.1" cross-spawn "^7.0.3" memorystream "^0.3.1" minimatch "^9.0.0" pidtree "^0.6.0" - read-package-json-fast "^3.0.2" + read-package-json-fast "^4.0.0" shell-quote "^1.7.3" + which "^5.0.0" npm-run-path@^4.0.1: version "4.0.1" @@ -11820,13 +11821,13 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -read-package-json-fast@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" - integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== +read-package-json-fast@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz#8ccbc05740bb9f58264f400acc0b4b4eee8d1b39" + integrity sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg== dependencies: - json-parse-even-better-errors "^3.0.0" - npm-normalize-package-bin "^3.0.0" + json-parse-even-better-errors "^4.0.0" + npm-normalize-package-bin "^4.0.0" "readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" @@ -14299,6 +14300,13 @@ which@^4.0.0: dependencies: isexe "^3.1.1" +which@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-5.0.0.tgz#d93f2d93f79834d4363c7d0c23e00d07c466c8d6" + integrity sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ== + dependencies: + isexe "^3.1.1" + wide-align@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" From 55fbe325fe89d7e8d3deadceeef3b4ae11ff7811 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:09:15 +0000 Subject: [PATCH 10/23] fix(deps): update dependency react-i18next to v15 (#3066) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 410c641085..013765a335 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "react-drag-drop-files": "^2.3.10", "react-draggable": "^4.4.5", "react-dropzone": "^14.2.3", - "react-i18next": "^14.1.0", + "react-i18next": "^15.0.0", "react-konva": "^18.2.10", "react-latex-next": "^3.0.0", "react-mde": "^11.5.0", diff --git a/yarn.lock b/yarn.lock index 3691fa3a89..a2dbabc233 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1149,13 +1149,20 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.25.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" @@ -11519,12 +11526,12 @@ react-fast-compare@^3.0.1: resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== -react-i18next@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-14.1.0.tgz#44da74fbffd416f5d0c5307ef31735cf10cc91d9" - integrity sha512-3KwX6LHpbvGQ+sBEntjV4sYW3Zovjjl3fpoHbUwSgFHf0uRBcbeCBLR5al6ikncI5+W0EFb71QXZmfop+J6NrQ== +react-i18next@^15.0.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-15.1.0.tgz#9494e4add2389f04c205dd7628c1aa75747b98a3" + integrity sha512-zj3nJynMnZsy2gPZiOTC7XctCY5eQGqT3tcKMmfJWC9FMvgd+960w/adq61j8iPzpwmsXejqID9qC3Mqu1Xu2Q== dependencies: - "@babel/runtime" "^7.23.9" + "@babel/runtime" "^7.25.0" html-parse-stringify "^3.0.1" react-innertext@^1.1.5: From 559a2f2b0fd117bb66d85e0284371c1e6be707f6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:14:36 +0000 Subject: [PATCH 11/23] chore(config): migrate config renovate.json (#3067) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- renovate.json | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/renovate.json b/renovate.json index 99481ca534..efbc2b440b 100644 --- a/renovate.json +++ b/renovate.json @@ -1,13 +1,18 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:base", ":dependencyDashboard", "group:allNonMajor", ":label(dependencies)"], + "extends": [ + "config:recommended", + ":dependencyDashboard", + "group:allNonMajor", + ":label(dependencies)" + ], "major": { "dependencyDashboardApproval": true }, "packageRules": [ { - "matchPackagePatterns": ["*"], - "rangeStrategy": "update-lockfile" + "rangeStrategy": "update-lockfile", + "matchPackageNames": ["*"] } ], "enabledManagers": ["npm"] From c7bdcb39eea3c2acfe8420677f4d7af9e057677b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:31:28 +0000 Subject: [PATCH 12/23] fix(deps): update dependency i18next-browser-languagedetector to v8 (#3068) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 013765a335..b1c531bb64 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "flexboxgrid-helpers": "^1.1.3", "hastscript": "^9.0.0", "i18next": "^23.11.2", - "i18next-browser-languagedetector": "^7.2.1", + "i18next-browser-languagedetector": "^8.0.0", "java-slang": "^1.0.13", "js-cookie": "^3.0.5", "js-slang": "^1.0.76", diff --git a/yarn.lock b/yarn.lock index a2dbabc233..70ae889e0f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7790,10 +7790,10 @@ husky@^9.0.0: resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.11.tgz#fc91df4c756050de41b3e478b2158b87c1e79af9" integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== -i18next-browser-languagedetector@^7.2.1: - version "7.2.1" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.1.tgz#1968196d437b4c8db847410c7c33554f6c448f6f" - integrity sha512-h/pM34bcH6tbz8WgGXcmWauNpQupCGr25XPp9cZwZInR9XHSjIFDYp1SIok7zSPsTOMxdvuLyu86V+g2Kycnfw== +i18next-browser-languagedetector@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.0.tgz#b6fdd9b43af67c47f2c26c9ba27710a1eaf31e2f" + integrity sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw== dependencies: "@babel/runtime" "^7.23.2" From bde6efdce38e7f0aeaf76035d283cd994ad49002 Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Tue, 29 Oct 2024 09:22:33 +0800 Subject: [PATCH 13/23] fix(deps): Bump React Ace to v12, fix broken syntax highlighting (#2905) * Bump react-ace and ace-builds * Remove some unneeded imports * Bump ace dependencies * Bump react-ace to v12 * Bump ace-builds version * Deduplicate dependencies * Fix syntax highlighting --- package.json | 4 +- src/commons/utils/AceHelper.ts | 9 + .../ChapterSimulatorTextLoader.tsx | 2 - yarn.lock | 222 +++--------------- 4 files changed, 44 insertions(+), 193 deletions(-) diff --git a/package.json b/package.json index b1c531bb64..118aa4baaa 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@szhsin/react-menu": "^4.0.0", "@tanstack/react-table": "^8.9.3", "@tremor/react": "^1.8.2", - "ace-builds": "^1.4.14", + "ace-builds": "^1.36.3", "acorn": "^8.9.0", "ag-grid-community": "^32.0.2", "ag-grid-react": "^32.0.2", @@ -68,7 +68,7 @@ "query-string": "^9.0.0", "re-resizable": "^6.9.9", "react": "^18.3.1", - "react-ace": "^10.1.0", + "react-ace": "^12.0.0", "react-copy-to-clipboard": "^5.1.0", "react-debounce-render": "^8.0.2", "react-dom": "^18.3.1", diff --git a/src/commons/utils/AceHelper.ts b/src/commons/utils/AceHelper.ts index 903824bdac..7e958f124c 100644 --- a/src/commons/utils/AceHelper.ts +++ b/src/commons/utils/AceHelper.ts @@ -31,6 +31,15 @@ export const selectMode = (chapter: Chapter, variant: Variant, library: string) ModeSelector(chapter, variant, library); }; +import 'ace-builds/src-noconflict/mode-c_cpp'; +import 'ace-builds/src-noconflict/mode-html'; +import 'ace-builds/src-noconflict/mode-java'; +import 'ace-builds/src-noconflict/mode-javascript'; +import 'ace-builds/src-noconflict/mode-python'; +import 'ace-builds/src-noconflict/mode-scheme'; +import 'ace-builds/src-noconflict/mode-typescript'; +import 'js-slang/dist/editors/ace/theme/source'; + export const getModeString = (chapter: Chapter, variant: Variant, library: string) => { // TODO: Create our own highlighting rules for the different sublanguages switch (chapter) { diff --git a/src/pages/academy/gameSimulator/subcomponents/chapterSimulator/ChapterSimulatorTextLoader.tsx b/src/pages/academy/gameSimulator/subcomponents/chapterSimulator/ChapterSimulatorTextLoader.tsx index 4fa87efcc8..09cc79f689 100644 --- a/src/pages/academy/gameSimulator/subcomponents/chapterSimulator/ChapterSimulatorTextLoader.tsx +++ b/src/pages/academy/gameSimulator/subcomponents/chapterSimulator/ChapterSimulatorTextLoader.tsx @@ -1,5 +1,3 @@ -import 'ace-builds/webpack-resolver'; - import { Button, Classes, Tab, Tabs } from '@blueprintjs/core'; import { useState } from 'react'; import { toTxtPath } from 'src/features/game/assets/TextAssets'; diff --git a/yarn.lock b/yarn.lock index 70ae889e0f..5614c98ed9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -250,22 +250,12 @@ dependencies: "@babel/types" "^7.24.5" -"@babel/helper-string-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - "@babel/helper-string-parser@^7.24.8": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== -"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" - integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== - -"@babel/helper-validator-identifier@^7.24.7": +"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5", "@babel/helper-validator-identifier@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== @@ -303,12 +293,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" - integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== - -"@babel/parser@^7.19.4": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.19.4", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": version "7.25.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== @@ -1149,14 +1134,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" - integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.25.0": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.5", "@babel/runtime@^7.25.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== @@ -1188,16 +1166,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" - integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== - dependencies: - "@babel/helper-string-parser" "^7.24.1" - "@babel/helper-validator-identifier" "^7.24.5" - to-fast-properties "^2.0.0" - -"@babel/types@^7.25.6": +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.25.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.25.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== @@ -1975,7 +1944,7 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.5": +"@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== @@ -1994,14 +1963,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - "@jridgewell/source-map@^0.3.3": version "0.3.6" resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" @@ -2023,7 +1984,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -3293,16 +3254,11 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -"@types/trusted-types@*": +"@types/trusted-types@*", "@types/trusted-types@^2.0.2": version "2.0.7" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== -"@types/trusted-types@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" - integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== - "@types/unist@*", "@types/unist@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20" @@ -3703,10 +3659,10 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -ace-builds@^1.4.12, ace-builds@^1.4.14: - version "1.15.3" - resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.15.3.tgz#9e35d174acb80297c6f236be2c8bb8574786f719" - integrity sha512-hq8+4DfQcUYcUyAF3vF7UoGFXwNxXST5A2IdarUOp9/Xg1thWTfxusPI2HAlTvXRTVjLDQOj9O34uPoTehEs0A== +ace-builds@^1.32.8, ace-builds@^1.36.3, ace-builds@^1.4.12: + version "1.36.3" + resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.36.3.tgz#b6d172e89597a3be769045d0432e2d09a9f59000" + integrity sha512-YcdwV2IIaJSfjkWAR1NEYN5IxBiXefTgwXsJ//UlaFrjXDX5hQpvPFvEePHz2ZBUfvO54RjHeRUQGX8MS5HaMQ== acorn-class-fields@^1.0.0: version "1.0.0" @@ -3759,24 +3715,19 @@ acorn-walk@^7.0.0, acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn-walk@^8.0.0: +acorn-walk@^8.0.0, acorn-walk@^8.1.1: version "8.3.3" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== dependencies: acorn "^8.11.0" -acorn-walk@^8.1.1: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== - acorn@^7.0.0, acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.1, acorn@^8.11.0, acorn@^8.12.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.0.4, acorn@^8.1, acorn@^8.11.0, acorn@^8.12.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.12.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== @@ -3964,20 +3915,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@5.3.0: +aria-query@5.3.0, aria-query@^5.0.0, aria-query@^5.1.3: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: dequal "^2.0.3" -aria-query@^5.0.0, aria-query@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" @@ -4539,17 +4483,7 @@ browserfs@^1.4.3: async "^2.1.4" pako "^1.0.4" -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== - dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -browserslist@^4.21.10: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.22.2: version "4.23.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== @@ -4679,7 +4613,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001565, caniuse-lite@^1.0.30001646: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001646: version "1.0.30001655" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz" integrity sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg== @@ -5620,7 +5554,7 @@ debug@2.6.9, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@^4.3.4: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.6" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== @@ -5634,13 +5568,6 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - decimal.js-light@^2.4.1: version "2.5.1" resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" @@ -6070,11 +5997,6 @@ ejs@^3.1.6: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.601: - version "1.4.647" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.647.tgz#3c8d4815e5ed2fbdd37f4ab7333cd9f8fc56d53a" - integrity sha512-Z/fTNGwc45WrYQhPaEcz5tAJuZZ8G7S/DBnhS6Kgp4BxnS40Z/HqlJ0hHg3Z79IGVzuVartIlTcjw/cQbPLgOw== - electron-to-chromium@^1.5.4: version "1.5.13" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" @@ -6312,12 +6234,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escalade@^3.1.2: +escalade@^3.1.1, escalade@^3.1.2: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== @@ -6835,7 +6752,7 @@ fast-equals@^5.0.0: resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.0.1.tgz#a4eefe3c5d1c0d021aeed0bc10ba5e0c12ee405d" integrity sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ== -fast-glob@^3.2.12: +fast-glob@^3.2.12, fast-glob@^3.2.9: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -6846,17 +6763,6 @@ fast-glob@^3.2.12: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -9791,14 +9697,7 @@ minimatch@^5.0.1, minimatch@^5.1.0: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0: - version "9.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.4: +minimatch@^9.0.0, minimatch@^9.0.4: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -10039,11 +9938,6 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - node-releases@^2.0.18: version "2.0.18" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" @@ -10530,12 +10424,7 @@ picocolors@^0.2.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picocolors@^1.0.1: +picocolors@^1.0.0, picocolors@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== @@ -11315,20 +11204,13 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@6.13.0: +qs@6.13.0, qs@^6.11.2: version "6.13.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== dependencies: side-channel "^1.0.6" -qs@^6.11.2: - version "6.11.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" - integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== - dependencies: - side-channel "^1.0.4" - qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -11402,16 +11284,16 @@ re-resizable@^6.9.9: resolved "https://registry.yarnpkg.com/re-resizable/-/re-resizable-6.9.11.tgz#f356e27877f12d926d076ab9ad9ff0b95912b475" integrity sha512-a3hiLWck/NkmyLvGWUuvkAmN1VhwAz4yOhS6FdMTaxCUVN9joIWkT11wsO68coG/iEYuwn+p/7qAmfQzRhiPLQ== -react-ace@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-10.1.0.tgz#d348eac2b16475231779070b6cd16768deed565f" - integrity sha512-VkvUjZNhdYTuKOKQpMIZi7uzZZVgzCjM7cLYu6F64V0mejY8a2XTyPUIMszC6A4trbeMIHbK5fYFcT/wkP/8VA== +react-ace@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-12.0.0.tgz#d40afc7382092109eead7227d9426f55dcc2209d" + integrity sha512-PstU6CSMfYIJknb4su2Fa0WgLXzq2ufQgR6fjcSWuGT1hGTHkBzuKw+SncV8PuLCdSJBJc1VehPhyeXlWByG/g== dependencies: - ace-builds "^1.4.14" + ace-builds "^1.32.8" diff-match-patch "^1.0.5" lodash.get "^4.4.2" lodash.isequal "^4.5.0" - prop-types "^15.7.2" + prop-types "^15.8.1" react-app-polyfill@^3.0.0: version "3.0.0" @@ -12331,16 +12213,7 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.2.0: +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -12371,7 +12244,7 @@ selfsigned@^2.1.1: dependencies: node-forge "^1" -semver@7.6.0, semver@^7.3.2, semver@^7.3.7, semver@^7.3.8, semver@^7.6.0: +semver@7.6.0: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -12383,7 +12256,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.5: +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.6.0: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -13267,18 +13140,7 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^5.2.5: - version "5.3.7" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" - integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.16.5" - -terser-webpack-plugin@^5.3.10: +terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== @@ -13289,17 +13151,7 @@ terser-webpack-plugin@^5.3.10: serialize-javascript "^6.0.1" terser "^5.26.0" -terser@^5.0.0, terser@^5.10.0, terser@^5.16.5: - version "5.16.6" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.6.tgz#f6c7a14a378ee0630fbe3ac8d1f41b4681109533" - integrity sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -terser@^5.26.0: +terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: version "5.31.6" resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.6.tgz#c63858a0f0703988d0266a82fcbf2d7ba76422b1" integrity sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg== @@ -13783,14 +13635,6 @@ upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - update-browserslist-db@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" From 864a64150f76a0e2af21c0f582eb796da7365960 Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Tue, 29 Oct 2024 09:27:53 +0800 Subject: [PATCH 14/23] fix(deps): Bump uuid dependency to v11 (#3070) * Bump uuid to v11 * Deduplicate dependencies --- package.json | 3 +-- yarn.lock | 15 +++++---------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 118aa4baaa..eee63af97f 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "showdown": "^2.1.0", "sourceror": "^0.8.5", "unified": "^11.0.0", - "uuid": "^9.0.0", + "uuid": "^11.0.2", "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz", "xml2js": "^0.6.0", "yareco": "^0.1.5" @@ -129,7 +129,6 @@ "@types/react-test-renderer": "^18.0.0", "@types/redux-mock-store": "^1.0.3", "@types/showdown": "^2.0.1", - "@types/uuid": "^9.0.0", "@types/xml2js": "^0.4.11", "babel-jest": "^29.7.0", "buffer": "^6.0.3", diff --git a/yarn.lock b/yarn.lock index 5614c98ed9..7707927fe3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3269,11 +3269,6 @@ resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== -"@types/uuid@^9.0.0": - version "9.0.8" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" - integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== - "@types/ws@^8.5.1": version "8.5.4" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" @@ -13734,6 +13729,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.0.2.tgz#a8d68ba7347d051e7ea716cc8dcbbab634d66875" + integrity sha512-14FfcOJmqdjbBPdDjFQyk/SdT4NySW4eM0zcG+HqbHP5jzuH56xO3J1DGhgs/cEMCfwYi3HQI1gnTO62iaG+tQ== + uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -13744,11 +13744,6 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" From 105546f5448964f8c978d9c17dc39eb01b26b61b Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Tue, 29 Oct 2024 11:20:46 +0800 Subject: [PATCH 15/23] fix: achievements loading and assessment workspace 404 (#3073) * Fix achievement inferencer memoization It was previously not reupdating properly when new data is fetched from the backend. * Fix errorneous 404 on individual assessments --- src/commons/assessmentWorkspace/AssessmentWorkspace.tsx | 7 ++++--- src/pages/achievement/control/AchievementControl.tsx | 7 +------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/commons/assessmentWorkspace/AssessmentWorkspace.tsx b/src/commons/assessmentWorkspace/AssessmentWorkspace.tsx index bb5b9b79a8..adbe92f7de 100644 --- a/src/commons/assessmentWorkspace/AssessmentWorkspace.tsx +++ b/src/commons/assessmentWorkspace/AssessmentWorkspace.tsx @@ -191,9 +191,10 @@ const AssessmentWorkspace: React.FC = props => { }, []); useEffect(() => { - handleTeamOverviewFetch(props.assessmentId); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + if (assessmentOverview && assessmentOverview.maxTeamSize > 1) { + handleTeamOverviewFetch(props.assessmentId); + } + }, [assessmentOverview, handleTeamOverviewFetch, props.assessmentId]); /** * After mounting (either an older copy of the assessment diff --git a/src/pages/achievement/control/AchievementControl.tsx b/src/pages/achievement/control/AchievementControl.tsx index caf60cfa54..581d9974a4 100644 --- a/src/pages/achievement/control/AchievementControl.tsx +++ b/src/pages/achievement/control/AchievementControl.tsx @@ -35,18 +35,13 @@ const AchievementControl: React.FC = () => { [dispatch] ); - // TODO: This is a hacky fix. By right, we shouldn't need to use an - // inferencer instance since we can encapsulate the logic using hooks - // and component state. const [initialAchievements, initialGoals] = useTypedSelector(state => [ state.achievement.achievements, state.achievement.goals ]); const inferencer = useMemo( () => new AchievementInferencer(initialAchievements, initialGoals), - // We only want to create the inferencer once - // eslint-disable-next-line react-hooks/exhaustive-deps - [] + [initialAchievements, initialGoals] ); /** From 99e54ed4461c588cad6fc9626fb3a34b19f409f1 Mon Sep 17 00:00:00 2001 From: Josh Thoo Jen Sen <110712708+josh1248@users.noreply.github.com> Date: Tue, 29 Oct 2024 13:34:24 +0800 Subject: [PATCH 16/23] Resolve loading indicator issues in grading table (#3064) * Use updated AGGrid API for async loading logo Current implementation uses the outdated api.showLoadingOverlay(), which causes issues in loading as the loading logo disappears even before the data arrives. This commit uses the current method of using the "loading" field in the AGGrid component, which solves the loading mismatch issue. * Block refreshing while loading * Remove unnecesssary closing tag * Update tooltip position for visibility --------- Co-authored-by: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> --- src/pages/academy/grading/Grading.tsx | 6 +- .../grading/subcomponents/GradingActions.tsx | 12 +- .../subcomponents/GradingSubmissionsTable.tsx | 105 +++++++++--------- 3 files changed, 63 insertions(+), 60 deletions(-) diff --git a/src/pages/academy/grading/Grading.tsx b/src/pages/academy/grading/Grading.tsx index 4685546f1e..5a821e367b 100644 --- a/src/pages/academy/grading/Grading.tsx +++ b/src/pages/academy/grading/Grading.tsx @@ -1,6 +1,6 @@ import { Button, Icon, NonIdealState, Position, Spinner, SpinnerSize } from '@blueprintjs/core'; import { IconNames } from '@blueprintjs/icons'; -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useDispatch } from 'react-redux'; import { Navigate, useParams } from 'react-router'; import SessionActions from 'src/commons/application/actions/SessionActions'; @@ -57,6 +57,9 @@ const Grading: React.FC = () => { const dispatch = useDispatch(); const allColsSortStates = useTypedSelector(state => state.workspaces.grading.allColsSortStates); const hasLoadedBefore = useTypedSelector(state => state.workspaces.grading.hasLoadedBefore); + const requestCounter = useTypedSelector(state => state.workspaces.grading.requestCounter); + + const isLoading = useMemo(() => requestCounter > 0, [requestCounter]); const updateGradingOverviewsCallback = useCallback( (page: number, filterParams: object) => { @@ -207,6 +210,7 @@ const Grading: React.FC = () => { setAnimateRefresh(true); }} onAnimationEnd={e => setAnimateRefresh(false)} + disabled={isLoading} > diff --git a/src/pages/academy/grading/subcomponents/GradingActions.tsx b/src/pages/academy/grading/subcomponents/GradingActions.tsx index 4c6c47ce81..d43a80458c 100644 --- a/src/pages/academy/grading/subcomponents/GradingActions.tsx +++ b/src/pages/academy/grading/subcomponents/GradingActions.tsx @@ -1,4 +1,4 @@ -import { Button, Icon, Tooltip } from '@blueprintjs/core'; +import { Button, Icon, Position, Tooltip } from '@blueprintjs/core'; import { IconNames } from '@blueprintjs/icons'; import React from 'react'; import { useDispatch } from 'react-redux'; @@ -82,7 +82,7 @@ const GradingActions: React.FC = ({ submissionId, style, progress, filter {filterMode && ( - + @@ -96,7 +96,7 @@ const GradingActions: React.FC = ({ submissionId, style, progress, filter style={{ padding: 0 }} onClick={handleReautogradeClick} > - + @@ -109,7 +109,7 @@ const GradingActions: React.FC = ({ submissionId, style, progress, filter style={{ padding: 0 }} onClick={handleUnsubmitClick} > - + @@ -117,7 +117,7 @@ const GradingActions: React.FC = ({ submissionId, style, progress, filter {isGraded && ( @@ -125,7 +125,7 @@ const GradingActions: React.FC = ({ submissionId, style, progress, filter {isPublished && ( diff --git a/src/pages/academy/grading/subcomponents/GradingSubmissionsTable.tsx b/src/pages/academy/grading/subcomponents/GradingSubmissionsTable.tsx index 0be42cefed..cec762c819 100644 --- a/src/pages/academy/grading/subcomponents/GradingSubmissionsTable.tsx +++ b/src/pages/academy/grading/subcomponents/GradingSubmissionsTable.tsx @@ -99,6 +99,8 @@ const GradingSubmissionTable: React.FC = ({ // This is what that controls Grading Mode. If future feedback says it's better to default to filter mode, change it here. const [filterMode, setFilterMode] = useState(false); + const isLoading = useMemo(() => requestCounter > 0, [requestCounter]); + const maxPage = useMemo(() => Math.ceil(totalRows / pageSize) - 1, [totalRows, pageSize]); const resetPage = useCallback(() => setPage(0), [setPage]); @@ -264,56 +266,52 @@ const GradingSubmissionTable: React.FC = ({ useEffect(() => { if (gridRef.current?.api) { - if (requestCounter <= 0) { - const newData: IGradingTableRow[] = []; - - const sameData: boolean = submissions.reduce((sameData, currentSubmission, index) => { - const newRow: IGradingTableRow = { - assessmentName: currentSubmission.assessmentName, - assessmentType: currentSubmission.assessmentType, - studentName: currentSubmission.studentName - ? currentSubmission.studentName - : currentSubmission.studentNames - ? currentSubmission.studentNames.join(', ') - : '', - studentUsername: currentSubmission.studentUsername - ? currentSubmission.studentUsername - : currentSubmission.studentUsernames - ? currentSubmission.studentUsernames.join(', ') - : '', - groupName: currentSubmission.groupName, - progressStatus: currentSubmission.progress, - xp: - currentSubmission.currentXp + - ' (+' + - currentSubmission.xpBonus + - ') / ' + - currentSubmission.maxXp, - actionsIndex: currentSubmission.submissionId, - courseID: courseId! - }; - newData.push(newRow); - return ( - sameData && - newRow.actionsIndex === rowData?.[index]?.actionsIndex && - newRow.studentUsername === rowData?.[index]?.studentUsername && - newRow.groupName === rowData?.[index]?.groupName && - newRow.progressStatus === rowData?.[index]?.progressStatus && - newRow.xp === rowData?.[index]?.xp - ); - }, submissions.length === rowData?.length); - - if (!sameData) { - setRowData(newData); - } + const newData: IGradingTableRow[] = []; + + const sameData: boolean = submissions.reduce((sameData, currentSubmission, index) => { + const newRow: IGradingTableRow = { + assessmentName: currentSubmission.assessmentName, + assessmentType: currentSubmission.assessmentType, + studentName: currentSubmission.studentName + ? currentSubmission.studentName + : currentSubmission.studentNames + ? currentSubmission.studentNames.join(', ') + : '', + studentUsername: currentSubmission.studentUsername + ? currentSubmission.studentUsername + : currentSubmission.studentUsernames + ? currentSubmission.studentUsernames.join(', ') + : '', + groupName: currentSubmission.groupName, + progressStatus: currentSubmission.progress, + xp: + currentSubmission.currentXp + + ' (+' + + currentSubmission.xpBonus + + ') / ' + + currentSubmission.maxXp, + actionsIndex: currentSubmission.submissionId, + courseID: courseId! + }; + newData.push(newRow); + return ( + sameData && + newRow.actionsIndex === rowData?.[index]?.actionsIndex && + newRow.studentUsername === rowData?.[index]?.studentUsername && + newRow.groupName === rowData?.[index]?.groupName && + newRow.progressStatus === rowData?.[index]?.progressStatus && + newRow.xp === rowData?.[index]?.xp + ); + }, submissions.length === rowData?.length); + + if (!sameData) { + setRowData(newData); + } - gridRef.current!.api.hideOverlay(); + gridRef.current!.api.hideOverlay(); - if (newData.length === 0 && requestCounter <= 0) { - gridRef.current!.api.showNoRowsOverlay(); - } - } else { - gridRef.current!.api.showLoadingOverlay(); + if (newData.length === 0 && requestCounter <= 0) { + gridRef.current!.api.showNoRowsOverlay(); } } // We ignore the dependency on rowData purposely as we setRowData above. @@ -392,7 +390,7 @@ const GradingSubmissionTable: React.FC = ({ large={true} value={searchQuery} onChange={handleSearchQueryUpdate} - > + />
@@ -404,6 +402,7 @@ const GradingSubmissionTable: React.FC = ({ components={tableProperties.customComponents} defaultColDef={tableProperties.defaultColDefs} headerHeight={tableProperties.headerHeight} + loading={isLoading} overlayLoadingTemplate={tableProperties.overlayLoadingTemplate} overlayNoRowsTemplate={tableProperties.overlayNoRowsTemplate} pagination={tableProperties.pagination} @@ -445,14 +444,14 @@ const GradingSubmissionTable: React.FC = ({ minimal icon={IconNames.DOUBLE_CHEVRON_LEFT} onClick={() => setPage(0)} - disabled={page <= 0} + disabled={page <= 0 || isLoading} />