diff --git a/RELEASE.rst b/RELEASE.rst index a8d4983e79..5b85dfed7c 100644 --- a/RELEASE.rst +++ b/RELEASE.rst @@ -1,6 +1,14 @@ Release Notes ============= +Version 0.100.2 +--------------- + +- Update dependency webpack to v5.94.0 [SECURITY] (#2370) +- Fix typo in unenrollment email (#2369) +- Most relevant run should be determined in the backend only (#2363) +- mitxonline dashboard crashes when courserun has no upgrade deadline (#2362) + Version 0.100.1 (Released September 03, 2024) --------------- diff --git a/courses/templates/mail/course_run_unenrollment/body.html b/courses/templates/mail/course_run_unenrollment/body.html index 86ae3a776a..5ebbe4ae62 100644 --- a/courses/templates/mail/course_run_unenrollment/body.html +++ b/courses/templates/mail/course_run_unenrollment/body.html @@ -9,7 +9,7 @@
Dear {{ user.name }},
- You have been unenrolled in + You have been unenrolled from {% if enrollment.run.start_date %} {{ enrollment.run.course_number }} {{ enrollment.run.course.title }} starting {{ enrollment.run.start_date|date:"F j, Y"}}. {% else %} diff --git a/courses/templates/mail/course_run_unenrollment/subject.txt b/courses/templates/mail/course_run_unenrollment/subject.txt index d7683678bf..db8f076fb4 100644 --- a/courses/templates/mail/course_run_unenrollment/subject.txt +++ b/courses/templates/mail/course_run_unenrollment/subject.txt @@ -1 +1 @@ -You have been unenrolled in {{ enrollment.run.course_number }} {{ enrollment.run.course.title }}. +You have been unenrolled from {{ enrollment.run.course_number }} {{ enrollment.run.course.title }}. diff --git a/frontend/public/package.json b/frontend/public/package.json index b32e369507..a25882c47b 100644 --- a/frontend/public/package.json +++ b/frontend/public/package.json @@ -122,7 +122,7 @@ "video.js": "7.21.6", "videojs-youtube": "2.6.1", "waait": "1.0.5", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-bundle-analyzer": "^4.6.1", "webpack-bundle-tracker": "1.4.0", "webpack-cli": "4.10.0", diff --git a/frontend/public/src/components/CourseProductDetailEnroll_test.js b/frontend/public/src/components/CourseProductDetailEnroll_test.js index 2d41a2c85e..b9bb517ee8 100644 --- a/frontend/public/src/components/CourseProductDetailEnroll_test.js +++ b/frontend/public/src/components/CourseProductDetailEnroll_test.js @@ -88,12 +88,20 @@ describe("CourseProductDetailEnrollShallowRender", () => { it("checks for enroll now button", async () => { const courseRun = makeCourseRunDetail() + courseRun.is_enrollable = true + course.courseruns = [courseRun] + course.next_run_id = courseRun.id const { inner } = await renderPage( { entities: { - courseRuns: [courseRun] + courseRuns: [courseRun], + courses: [course] }, queries: { + courses: { + isPending: false, + status: 200 + }, courseRuns: { isPending: false, status: 200 @@ -103,10 +111,13 @@ describe("CourseProductDetailEnrollShallowRender", () => { {} ) - assert.equal(inner.find(".enroll-now").at(0).text(), "Enroll Now") + assert.equal( + inner.find(".btn-enrollment-button").at(0).text(), + "Enroll Now" + ) }) - it("checks for enroll now button should appear disabled if enrollment start in future", async () => { + it("checks for Access Course Materials button should appear disabled if no enrollable runs", async () => { const courseRun = makeCourseRunDetail() courseRun["is_enrollable"] = false const course = makeCourseDetailNoRuns() @@ -125,13 +136,15 @@ describe("CourseProductDetailEnrollShallowRender", () => { }, {} ) - assert.isTrue(inner.find(".enroll-now").at(0).exists()) - assert.isTrue(inner.find(".enroll-now").at(0).prop("disabled")) + assert.isTrue(inner.find(".btn-enrollment-button").at(0).exists()) + assert.isTrue(inner.find(".btn-enrollment-button").at(0).prop("disabled")) }) it("checks for enroll now button should appear if enrollment start not in future", async () => { const courseRun = makeCourseRunDetail() + courseRun.is_enrollable = true const course = makeCourseDetailNoRuns() + course.next_run_id = courseRun.id course.courseruns = [courseRun] const { inner } = await renderPage( { @@ -161,7 +174,9 @@ describe("CourseProductDetailEnrollShallowRender", () => { is_archived: true, upgrade_deadline: null } + courseRun.is_enrollable = true const course = makeCourseDetailNoRuns() + course.next_run_id = courseRun.id course.courseruns = [courseRun] const { inner } = await renderPage( { @@ -187,10 +202,15 @@ describe("CourseProductDetailEnrollShallowRender", () => { it("checks for form-based enrollment form if there is no product", async () => { const courseRun = makeCourseRunDetail() + courseRun.is_enrollable = true + const course = makeCourseDetailNoRuns() + course.next_run_id = courseRun.id + course.courseruns = [courseRun] const { inner } = await renderPage( { entities: { - courseRuns: [courseRun] + courseRuns: [courseRun], + courses: [course] }, queries: { courseRuns: { @@ -244,6 +264,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { const course = makeCourseDetailNoRuns() course.courseruns = courseRuns + course.next_run_id = courseRun.id const entities = { currentUser: userExists ? currentUser : makeAnonymousUser(), @@ -280,6 +301,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { } } const course = makeCourseDetailNoRuns() + course.next_run_id = courseRun.id course.courseruns = [courseRun] isFinancialAssistanceAvailableStub.returns(true) const { inner } = await renderPage( @@ -339,6 +361,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { courseRun["is_self_paced"] = false } const course = makeCourseDetailNoRuns() + course.next_run_id = courseRun.id course.courseruns = [courseRun] const entities = { currentUser: currentUser, @@ -372,7 +395,8 @@ describe("CourseProductDetailEnrollShallowRender", () => { } const course = { ...makeCourseDetailWithRuns(), - courseruns: [courseRun] + courseruns: [courseRun], + next_run_id: courseRun.id } const entities = { @@ -451,6 +475,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { } ] course.courseruns = [courseRun] + course.next_run_id = courseRun.id const { inner } = await renderPage( { entities: { @@ -495,6 +520,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { } } ] + course.next_run_id = courseRun.id course.courseruns = [courseRun] const { inner } = await renderPage( { @@ -543,6 +569,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { } ] isFinancialAssistanceAvailableStub.returns(false) + course.next_run_id = courseRun.id course.courseruns = [courseRun] const { inner } = await renderPage( { @@ -632,6 +659,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { product_flexible_price: {} } ] + course.next_run_id = courseRun.id course.courseruns = [courseRun] const { inner } = await renderPage( { @@ -663,6 +691,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { if (multiples) { courseRuns.push(courseRun) } + course.next_run_id = courseRun.id course.courseruns = courseRuns const { inner } = await renderPage({ @@ -715,6 +744,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { courseRun["is_upgradable"] = false const courseRuns = [courseRun] courseRuns.push(courseRun) + course.next_run_id = courseRun.id course.courseruns = courseRuns const { inner } = await renderPage({ @@ -754,6 +784,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { } const courseRuns = [courseRun] courseRuns.push(runWithMixedInfo) + course.next_run_id = courseRun.id course.courseruns = courseRuns const { inner } = await renderPage({ @@ -828,7 +859,8 @@ describe("CourseProductDetailEnrollShallowRender", () => { ] const course = { ...makeCourseDetailWithRuns(), - courseruns: [pastCourseRun, currentCourseRun] + courseruns: [pastCourseRun, currentCourseRun], + next_run_id: currentCourseRun.id } const { inner } = await renderPage({ @@ -884,6 +916,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { } else { courseRun["start_date"] = moment().subtract(10, "months").toISOString() } + course.next_run_id = courseRun.id course.courseruns = [courseRun] const entities = { @@ -953,6 +986,7 @@ describe("CourseProductDetailEnrollShallowRender", () => { } course.courseruns = courseRuns + course.next_run_id = courseRun.id const entities = { currentUser: userExists ? currentUser : makeAnonymousUser(), diff --git a/frontend/public/src/components/EnrolledItemCard.js b/frontend/public/src/components/EnrolledItemCard.js index 59b0b6caa9..b1401129ac 100644 --- a/frontend/public/src/components/EnrolledItemCard.js +++ b/frontend/public/src/components/EnrolledItemCard.js @@ -438,12 +438,14 @@ export class EnrolledItemCard extends React.Component< Upgrade today and, upon passing, receive your certificate signed by MIT faculty to highlight the knowledge and skills you've gained from this MITx course.{" "} - - Upgrade expires:{" "} - {formatPrettyDateTimeAmPmTz( - parseDateString(enrollment.run.upgrade_deadline) - )} - + {enrollment.run.upgrade_deadline ? ( + + Upgrade expires:{" "} + {formatPrettyDateTimeAmPmTz( + parseDateString(enrollment.run.upgrade_deadline) + )} + + ) : null} ) : null diff --git a/frontend/public/src/components/EnrolledItemCard_test.js b/frontend/public/src/components/EnrolledItemCard_test.js index 6328d92b8d..6007db4f1c 100644 --- a/frontend/public/src/components/EnrolledItemCard_test.js +++ b/frontend/public/src/components/EnrolledItemCard_test.js @@ -253,4 +253,46 @@ describe("EnrolledItemCard", () => { const modals = inner.find(`#${modalId}`) assert.lengthOf(modals, 1) }) + ;["audit", "verified", "program"].forEach(mode => { + it(`renders the card for enrollment mode ${mode}`, async () => { + const testEnrollment = + mode === "program" ? + makeProgramEnrollment() : + makeCourseRunEnrollmentWithProduct() + userEnrollment = testEnrollment + enrollmentCardProps.enrollment = testEnrollment + const inner = await renderedCard() + const enrolledItems = inner.find(".enrolled-item") + assert.lengthOf(enrolledItems, 1) + const enrolledItem = enrolledItems.at(0) + if (mode !== "program") { + assert.equal( + enrolledItem.find("h2").text(), + userEnrollment.run.course.title + ) + if (mode === "verified") { + const pricingLinks = inner.find(".pricing-links") + assert.isFalse(pricingLinks.exists()) + } + } else { + assert.equal( + enrolledItem.find("h2").text(), + testEnrollment.program.title + ) + } + }) + }) + it("Test", async () => { + const testEnrollment = makeCourseRunEnrollmentWithProduct() + userEnrollment = testEnrollment + enrollmentCardProps.enrollment = testEnrollment + enrollmentCardProps.enrollment.enrollment_mode = "audit" + const inner = await renderedCard() + const enrollmentExtraLinks = inner + .find(".enrolled-item") + .find(".certificate-upgrade-message") + assert.isTrue(enrollmentExtraLinks.exists()) + const courseDetailsPageLink = enrollmentExtraLinks.find("b").at(0) + assert.isTrue(courseDetailsPageLink.exists()) + }) }) diff --git a/frontend/public/src/lib/courseApi.js b/frontend/public/src/lib/courseApi.js index 418c22dbb4..7f5de8db29 100644 --- a/frontend/public/src/lib/courseApi.js +++ b/frontend/public/src/lib/courseApi.js @@ -213,8 +213,6 @@ export const getFirstRelevantRun = ( /* Finds the next most relevant course run: - If the course has a next_run_id, return that run - - If there are future runs, return the run closer to now - - If all runs are in the past, return the most recently ended run - If there are no runs, return null Args: @@ -235,40 +233,5 @@ export const getFirstRelevantRun = ( if (course.next_run_id) { return courseRuns.find(run => run.id === course.next_run_id) } - - const now = moment() - const enrollableRuns = courseRuns.filter(run => run.is_enrollable) - if (enrollableRuns.length > 0) { - if ( - enrollableRuns.some( - run => run.start_date && moment(run.start_date).isSameOrAfter(now) - ) - ) { - return enrollableRuns - .filter( - run => run.start_date && moment(run.start_date).isSameOrAfter(now) - ) - .reduce((prev, curr) => - moment(curr.start_date).isBefore(moment(prev.start_date)) ? - curr : - prev - ) - } - - return enrollableRuns - .filter(run => run.start_date && moment(run.start_date).isBefore(now)) - .reduce((prev, curr) => - moment(curr.start_date).isBefore(moment(prev.start_date)) ? prev : curr - ) - } - // no enrollable runs, then check for future runs - const futureRuns = courseRuns.filter( - run => run.start_date && moment(run.start_date).isSameOrAfter(now) - ) - if (futureRuns.length > 0) { - return futureRuns.reduce((prev, curr) => - moment(curr.start_date).isBefore(moment(prev.start_date)) ? curr : prev - ) - } return null } diff --git a/frontend/public/src/lib/courseApi_test.js b/frontend/public/src/lib/courseApi_test.js index c79fcb5700..297c2d58aa 100644 --- a/frontend/public/src/lib/courseApi_test.js +++ b/frontend/public/src/lib/courseApi_test.js @@ -28,11 +28,8 @@ import type { LoggedInUser } from "../flow/authTypes" describe("Course API", () => { const past = moment().add(-10, "days").toISOString(), - farPast = moment().add(-50, "days").toISOString(), - farFarPast = moment().add(-100, "days").toISOString(), future = moment().add(10, "days").toISOString(), farFuture = moment().add(50, "days").toISOString(), - farFarFuture = moment().add(100, "days").toISOString(), exampleUrl = "http://example.com" let courseRun: CourseRunDetail, user: LoggedInUser @@ -302,7 +299,7 @@ describe("Course API", () => { assert.equal(result, null) }) - it("returns null if there aren't course runs in the course", () => { + it("returns null if next_run_id is not provided for the course", () => { const testCourse = { ...makeCourseDetailWithRuns(), courseruns: [] @@ -310,113 +307,12 @@ describe("Course API", () => { const result = getFirstRelevantRun(testCourse, [makeCourseRunDetail()]) assert.equal(result, null) }) - ;[ - ["in order", true], - ["out of order", false] - ].forEach(([isInOrderDesc, isInOrder]) => { - it(`returns the first run that is in the future and runs are ${isInOrderDesc}`, () => { - const runs = [ - { - ...makeCourseRunDetail(), - start_date: future, - enrollment_start: future, - end_date: farFuture, - enrollment_end: farFuture - }, - { - ...makeCourseRunDetail(), - start_date: farFuture, - enrollment_start: farFuture, - end_date: farFarFuture, - enrollment_end: farFarFuture - } - ] - - if (!isInOrder) { - runs.reverse() - } - - const testCourse = { - ...makeCourseDetailWithRuns(), - next_run_id: null, - courseruns: runs - } - - const result = getFirstRelevantRun(testCourse, runs) - assert.equal(result, isInOrder ? runs[0] : runs[1]) - }) - }) - ;[ - ["in order", true], - ["out of order", false] - ].forEach(([isInOrderDesc, isInOrder]) => { - it(`returns the first run that is in the future and runs are ${isInOrderDesc}`, () => { - const runs = [ - { - ...makeCourseRunDetail(), - start_date: future, - enrollment_start: future, - end_date: farFuture, - enrollment_end: farFuture - }, - { - ...makeCourseRunDetail(), - start_date: farPast, - enrollment_start: farPast, - end_date: past, - enrollment_end: past - } - ] - - if (!isInOrder) { - runs.reverse() - } - - const testCourse = { - ...makeCourseDetailWithRuns(), - next_run_id: null, - courseruns: runs - } - - const result = getFirstRelevantRun(testCourse, runs) - assert.equal(result, isInOrder ? runs[0] : runs[1]) - }) - }) - ;[ - ["in order", true], - ["out of order", false] - ].forEach(([isInOrderDesc, isInOrder]) => { - it(`returns the most recent run that is in the past if all runs are done and runs are ${isInOrderDesc}`, () => { - const runs = [ - { - ...makeCourseRunDetail(), - start_date: farPast, - enrollment_start: farPast, - end_date: past, - enrollment_end: past - }, - { - ...makeCourseRunDetail(), - start_date: farFarPast, - enrollment_start: farFarPast, - end_date: farPast, - enrollment_end: farPast - } - ] - - if (!isInOrder) { - runs.reverse() - } - - const testCourse = { - ...makeCourseDetailWithRuns(), - next_run_id: null, - courseruns: runs - } - - const result = getFirstRelevantRun(testCourse, runs) - assert.equal(result, isInOrder ? runs[0] : runs[1]) - }) + it("returns next_run_id for the course", () => { + const testCourse = makeCourseDetailWithRuns() + const courseRun = testCourse.courseruns[0] + testCourse.next_run_id = courseRun.id + const result = getFirstRelevantRun(testCourse, [courseRun]) + assert.equal(result, courseRun) }) }) }) diff --git a/main/settings.py b/main/settings.py index 91d053efb3..a4e5777638 100644 --- a/main/settings.py +++ b/main/settings.py @@ -29,7 +29,7 @@ from main.celery_utils import OffsettingSchedule from main.sentry import init_sentry -VERSION = "0.100.1" +VERSION = "0.100.2" log = logging.getLogger() diff --git a/yarn.lock b/yarn.lock index fa3f175433..742abc4a49 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4277,13 +4277,6 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^0.0.51": - version: 0.0.51 - resolution: "@types/estree@npm:0.0.51" - checksum: e56a3bcf759fd9185e992e7fdb3c6a5f81e8ff120e871641607581fb3728d16c811702a7d40fa5f869b7f7b4437ab6a87eb8d98ffafeee51e85bbe955932a189 - languageName: node - linkType: hard - "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": version: 4.19.0 resolution: "@types/express-serve-static-core@npm:4.19.0" @@ -5048,16 +5041,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ast@npm:1.11.1" - dependencies: - "@webassemblyjs/helper-numbers": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - checksum: 1eee1534adebeece635362f8e834ae03e389281972611408d64be7895fc49f48f98fddbbb5339bf8a72cb101bcb066e8bca3ca1bf1ef47dadf89def0395a8d87 - languageName: node - linkType: hard - "@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/ast@npm:1.12.1" @@ -5068,13 +5051,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" - checksum: b8efc6fa08e4787b7f8e682182d84dfdf8da9d9c77cae5d293818bc4a55c1f419a87fa265ab85252b3e6c1fd323d799efea68d825d341a7c365c64bc14750e97 - languageName: node - linkType: hard - "@webassemblyjs/floating-point-hex-parser@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" @@ -5082,13 +5058,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" - checksum: 0792813f0ed4a0e5ee0750e8b5d0c631f08e927f4bdfdd9fe9105dc410c786850b8c61bff7f9f515fdfb149903bec3c976a1310573a4c6866a94d49bc7271959 - languageName: node - linkType: hard - "@webassemblyjs/helper-api-error@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" @@ -5096,13 +5065,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" - checksum: a337ee44b45590c3a30db5a8b7b68a717526cf967ada9f10253995294dbd70a58b2da2165222e0b9830cd4fc6e4c833bf441a721128d1fe2e9a7ab26b36003ce - languageName: node - linkType: hard - "@webassemblyjs/helper-buffer@npm:1.12.1": version: 1.12.1 resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" @@ -5110,17 +5072,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" - dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: 44d2905dac2f14d1e9b5765cf1063a0fa3d57295c6d8930f6c59a36462afecc6e763e8a110b97b342a0f13376166c5d41aa928e6ced92e2f06b071fd0db59d3a - languageName: node - linkType: hard - "@webassemblyjs/helper-numbers@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" @@ -5132,13 +5083,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" - checksum: eac400113127832c88f5826bcc3ad1c0db9b3dbd4c51a723cfdb16af6bfcbceb608170fdaac0ab7731a7e18b291be7af68a47fcdb41cfe0260c10857e7413d97 - languageName: node - linkType: hard - "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" @@ -5146,18 +5090,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - checksum: 617696cfe8ecaf0532763162aaf748eb69096fb27950219bb87686c6b2e66e11cd0614d95d319d0ab1904bc14ebe4e29068b12c3e7c5e020281379741fe4bedf - languageName: node - linkType: hard - "@webassemblyjs/helper-wasm-section@npm:1.12.1": version: 1.12.1 resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" @@ -5170,15 +5102,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ieee754@npm:1.11.1" - dependencies: - "@xtuc/ieee754": ^1.2.0 - checksum: 23a0ac02a50f244471631802798a816524df17e56b1ef929f0c73e3cde70eaf105a24130105c60aff9d64a24ce3b640dad443d6f86e5967f922943a7115022ec - languageName: node - linkType: hard - "@webassemblyjs/ieee754@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/ieee754@npm:1.11.6" @@ -5188,15 +5111,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/leb128@npm:1.11.1" - dependencies: - "@xtuc/long": 4.2.2 - checksum: 33ccc4ade2f24de07bf31690844d0b1ad224304ee2062b0e464a610b0209c79e0b3009ac190efe0e6bd568b0d1578d7c3047fc1f9d0197c92fc061f56224ff4a - languageName: node - linkType: hard - "@webassemblyjs/leb128@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/leb128@npm:1.11.6" @@ -5206,13 +5120,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/utf8@npm:1.11.1" - checksum: 972c5cfc769d7af79313a6bfb96517253a270a4bf0c33ba486aa43cac43917184fb35e51dfc9e6b5601548cd5931479a42e42c89a13bb591ffabebf30c8a6a0b - languageName: node - linkType: hard - "@webassemblyjs/utf8@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/utf8@npm:1.11.6" @@ -5220,22 +5127,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/helper-wasm-section": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-opt": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - "@webassemblyjs/wast-printer": 1.11.1 - checksum: 6d7d9efaec1227e7ef7585a5d7ff0be5f329f7c1c6b6c0e906b18ed2e9a28792a5635e450aca2d136770d0207225f204eff70a4b8fd879d3ac79e1dcc26dbeb9 - languageName: node - linkType: hard - "@webassemblyjs/wasm-edit@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" @@ -5252,19 +5143,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 1f6921e640293bf99fb16b21e09acb59b340a79f986c8f979853a0ae9f0b58557534b81e02ea2b4ef11e929d946708533fd0693c7f3712924128fdafd6465f5b - languageName: node - linkType: hard - "@webassemblyjs/wasm-gen@npm:1.12.1": version: 1.12.1 resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" @@ -5278,18 +5156,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - checksum: 21586883a20009e2b20feb67bdc451bbc6942252e038aae4c3a08e6f67b6bae0f5f88f20bfc7bd0452db5000bacaf5ab42b98cf9aa034a6c70e9fc616142e1db - languageName: node - linkType: hard - "@webassemblyjs/wasm-opt@npm:1.12.1": version: 1.12.1 resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" @@ -5302,20 +5168,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 1521644065c360e7b27fad9f4bb2df1802d134dd62937fa1f601a1975cde56bc31a57b6e26408b9ee0228626ff3ba1131ae6f74ffb7d718415b6528c5a6dbfc2 - languageName: node - linkType: hard - "@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" @@ -5330,16 +5182,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wast-printer@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: f15ae4c2441b979a3b4fce78f3d83472fb22350c6dc3fd34bfe7c3da108e0b2360718734d961bba20e7716cb8578e964b870da55b035e209e50ec9db0378a3f7 - languageName: node - linkType: hard - "@webassemblyjs/wast-printer@npm:1.12.1": version: 1.12.1 resolution: "@webassemblyjs/wast-printer@npm:1.12.1" @@ -5438,7 +5280,7 @@ __metadata: languageName: node linkType: hard -"acorn-import-assertions@npm:^1.7.6, acorn-import-assertions@npm:^1.9.0": +"acorn-import-assertions@npm:^1.9.0": version: 1.9.0 resolution: "acorn-import-assertions@npm:1.9.0" peerDependencies: @@ -5447,6 +5289,15 @@ __metadata: languageName: node linkType: hard +"acorn-import-attributes@npm:^1.9.5": + version: 1.9.5 + resolution: "acorn-import-attributes@npm:1.9.5" + peerDependencies: + acorn: ^8 + checksum: 1c0c49b6a244503964ae46ae850baccf306e84caf99bc2010ed6103c69a423987b07b520a6c619f075d215388bd4923eccac995886a54309eda049ab78a4be95 + languageName: node + linkType: hard + "acorn-jsx@npm:^3.0.0": version: 3.0.1 resolution: "acorn-jsx@npm:3.0.1" @@ -6787,7 +6638,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.22.2, browserslist@npm:^4.23.0": +"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.22.2, browserslist@npm:^4.23.0": version: 4.23.0 resolution: "browserslist@npm:4.23.0" dependencies: @@ -8974,7 +8825,7 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.10.0, enhanced-resolve@npm:^5.16.0": +"enhanced-resolve@npm:^5.16.0": version: 5.16.0 resolution: "enhanced-resolve@npm:5.16.0" dependencies: @@ -8984,6 +8835,16 @@ __metadata: languageName: node linkType: hard +"enhanced-resolve@npm:^5.17.1": + version: 5.17.1 + resolution: "enhanced-resolve@npm:5.17.1" + dependencies: + graceful-fs: ^4.2.4 + tapable: ^2.2.0 + checksum: 4bc38cf1cea96456f97503db7280394177d1bc46f8f87c267297d04f795ac5efa81e48115a2f5b6273c781027b5b6bfc5f62b54df629e4d25fa7001a86624f59 + languageName: node + linkType: hard + "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" @@ -9244,13 +9105,6 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^0.9.0": - version: 0.9.3 - resolution: "es-module-lexer@npm:0.9.3" - checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 - languageName: node - linkType: hard - "es-module-lexer@npm:^1.2.1": version: 1.5.2 resolution: "es-module-lexer@npm:1.5.2" @@ -15186,7 +15040,7 @@ __metadata: video.js: 7.21.6 videojs-youtube: 2.6.1 waait: 1.0.5 - webpack: 5.76.0 + webpack: 5.94.0 webpack-bundle-analyzer: ^4.6.1 webpack-bundle-tracker: 1.4.0 webpack-cli: 4.10.0 @@ -20046,7 +19900,7 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": version: 3.3.0 resolution: "schema-utils@npm:3.3.0" dependencies: @@ -21394,7 +21248,7 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.2.5, terser-webpack-plugin@npm:^5.3.10": +"terser-webpack-plugin@npm:^5.2.5, terser-webpack-plugin@npm:^5.3.10": version: 5.3.10 resolution: "terser-webpack-plugin@npm:5.3.10" dependencies: @@ -22659,7 +22513,7 @@ __metadata: languageName: node linkType: hard -"watchpack@npm:^2.4.0, watchpack@npm:^2.4.1": +"watchpack@npm:^2.4.1": version: 2.4.1 resolution: "watchpack@npm:2.4.1" dependencies: @@ -22981,40 +22835,39 @@ __metadata: languageName: node linkType: hard -"webpack@npm:5.76.0": - version: 5.76.0 - resolution: "webpack@npm:5.76.0" +"webpack@npm:5.94.0": + version: 5.94.0 + resolution: "webpack@npm:5.94.0" dependencies: - "@types/eslint-scope": ^3.7.3 - "@types/estree": ^0.0.51 - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/wasm-edit": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 + "@types/estree": ^1.0.5 + "@webassemblyjs/ast": ^1.12.1 + "@webassemblyjs/wasm-edit": ^1.12.1 + "@webassemblyjs/wasm-parser": ^1.12.1 acorn: ^8.7.1 - acorn-import-assertions: ^1.7.6 - browserslist: ^4.14.5 + acorn-import-attributes: ^1.9.5 + browserslist: ^4.21.10 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.10.0 - es-module-lexer: ^0.9.0 + enhanced-resolve: ^5.17.1 + es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.9 + graceful-fs: ^4.2.11 json-parse-even-better-errors: ^2.3.1 loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 - schema-utils: ^3.1.0 + schema-utils: ^3.2.0 tapable: ^2.1.1 - terser-webpack-plugin: ^5.1.3 - watchpack: ^2.4.0 + terser-webpack-plugin: ^5.3.10 + watchpack: ^2.4.1 webpack-sources: ^3.2.3 peerDependenciesMeta: webpack-cli: optional: true bin: webpack: bin/webpack.js - checksum: e897b3b34068222fe910d8894837cbf39f5e66b4772fe8d24dfc0090cd13e19337a3a757a97bc185be6c64d9d5a7b1ae372821b65a6079ce8c7ceba606edb409 + checksum: 6a3d667be304a69cd6dcb8d676bc29f47642c0d389af514cfcd646eaaa809961bc6989fc4b2621a717dfc461130f29c6e20006d62a32e012dafaa9517813a4e6 languageName: node linkType: hard