From 011563b6851ec97f33f4dbc5238ebf2ab4a7893b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 10:00:38 +0500 Subject: [PATCH 1/8] fix(deps): update dependency jsdom to v26 (#3456) * fix(deps): update dependency jsdom to v26 * fix: add window proxy to update location * docs: documenting reason for proxy --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: asajjad2 --- package.json | 2 +- static/js/babelhook.js | 30 ++- yarn.lock | 466 ++++++++++++++++++----------------------- 3 files changed, 219 insertions(+), 279 deletions(-) diff --git a/package.json b/package.json index 2bc741b577..4c7657ca65 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "hls.js": "^1.0.0", "isomorphic-fetch": "^2.2.1", "jquery": "^3.5.1", - "jsdom": "^16.2.2", + "jsdom": "^26.0.0", "lodash": "^4.17.21", "mini-css-extract-plugin": "^0.12.0", "minimist": "^1.2.6", diff --git a/static/js/babelhook.js b/static/js/babelhook.js index 75a57ae632..af7ec0b861 100644 --- a/static/js/babelhook.js +++ b/static/js/babelhook.js @@ -25,8 +25,25 @@ function copyProps(src, target) { }); } -global.window = window; -global.document = window.document; +// Proxy window.location assignments to use jsdom.reconfigure() +// instead of direct assignment, which is no longer allowed in v26 +const windowProxy = new Proxy(window, { + set: function (target, prop, value) { + if (prop === "location") { + let url = value; + if (!url.startsWith("http")) { + url = `http://fake${url}`; + } + jsdom.reconfigure({ url }); + return true; + } + + return Reflect.set(target, prop, value); + }, +}); + +global.window = windowProxy; +global.document = windowProxy.document; global.navigator = { userAgent: "node.js", }; @@ -38,13 +55,4 @@ global.cancelAnimationFrame = function (id) { }; copyProps(window, global); -Object.defineProperty(window, "location", { - set: (value) => { - if (!value.startsWith("http")) { - value = `http://fake${value}`; - } - jsdom.reconfigure({ url: value }); - }, -}); - require("@babel/register")(babelSharedLoader.options); diff --git a/yarn.lock b/yarn.lock index a24ef559c2..56f9d589b4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,6 +15,19 @@ __metadata: languageName: node linkType: hard +"@asamuzakjp/css-color@npm:^3.1.2": + version: 3.2.0 + resolution: "@asamuzakjp/css-color@npm:3.2.0" + dependencies: + "@csstools/css-calc": ^2.1.3 + "@csstools/css-color-parser": ^3.0.9 + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + lru-cache: ^10.4.3 + checksum: e253261700fff817af23d8903e58c6a8ccf1aacc13059eb68fe0744e9084f3912869944715cdbe40dd09a1f3406d9b313a5cf1e08c7584d2339aa7a17209802d + languageName: node + linkType: hard + "@babel/cli@npm:^7.4.3": version: 7.27.0 resolution: "@babel/cli@npm:7.27.0" @@ -1540,6 +1553,36 @@ __metadata: languageName: node linkType: hard +"@csstools/color-helpers@npm:^5.0.2": + version: 5.0.2 + resolution: "@csstools/color-helpers@npm:5.0.2" + checksum: 76753f9823579af959630be5f7682e1abe5ae13b75621532927cfc1ff601cc1e31b78547fe387699980820bb7353e20e8cab258fab590aac9d19aa44984283d5 + languageName: node + linkType: hard + +"@csstools/css-calc@npm:^2.1.3": + version: 2.1.3 + resolution: "@csstools/css-calc@npm:2.1.3" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 83974e4b230821c1053d7e4fe352accc6f01d9ee7b91ffbf1a23020ac0db0aeed8a660dad886df485ea90ade95ecc9d13e8ff051ca0281dd58393da345400f4a + languageName: node + linkType: hard + +"@csstools/css-color-parser@npm:^3.0.9": + version: 3.0.9 + resolution: "@csstools/css-color-parser@npm:3.0.9" + dependencies: + "@csstools/color-helpers": ^5.0.2 + "@csstools/css-calc": ^2.1.3 + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 010d01f6ae15550dadc3188b8c214c53de10e2a3dbc99fee3ff35db296fb4a650042e59ebad270b387721261235a2e5b51f53c1223aa6c8eabb192aa03b69517 + languageName: node + linkType: hard + "@csstools/css-parser-algorithms@npm:^3.0.4": version: 3.0.4 resolution: "@csstools/css-parser-algorithms@npm:3.0.4" @@ -2879,13 +2922,6 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.3, abab@npm:^2.0.5": - version: 2.0.6 - resolution: "abab@npm:2.0.6" - checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e - languageName: node - linkType: hard - "abbrev@npm:^3.0.0": version: 3.0.1 resolution: "abbrev@npm:3.0.1" @@ -2903,16 +2939,6 @@ __metadata: languageName: node linkType: hard -"acorn-globals@npm:^6.0.0": - version: 6.0.0 - resolution: "acorn-globals@npm:6.0.0" - dependencies: - acorn: ^7.1.1 - acorn-walk: ^7.1.1 - checksum: 72d95e5b5e585f9acd019b993ab8bbba68bb3cbc9d9b5c1ebb3c2f1fe5981f11deababfb4949f48e6262f9c57878837f5958c0cca396f81023814680ca878042 - languageName: node - linkType: hard - "acorn-jsx@npm:^3.0.0": version: 3.0.1 resolution: "acorn-jsx@npm:3.0.1" @@ -2931,13 +2957,6 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^7.1.1": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f - languageName: node - linkType: hard - "acorn-walk@npm:^8.0.0": version: 8.3.4 resolution: "acorn-walk@npm:8.3.4" @@ -2965,16 +2984,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^7.1.1": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407 - languageName: node - linkType: hard - -"acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.2.4, acorn@npm:^8.8.2, acorn@npm:^8.9.0": +"acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.14.1 resolution: "acorn@npm:8.14.1" bin: @@ -3691,13 +3701,6 @@ __metadata: languageName: node linkType: hard -"browser-process-hrtime@npm:^1.0.0": - version: 1.0.0 - resolution: "browser-process-hrtime@npm:1.0.0" - checksum: e30f868cdb770b1201afb714ad1575dd86366b6e861900884665fb627109b3cc757c40067d3bfee1ff2a29c835257ea30725a8018a9afd02ac1c24b408b1e45f - languageName: node - linkType: hard - "browser-stdout@npm:^1.3.1": version: 1.3.1 resolution: "browser-stdout@npm:1.3.1" @@ -4542,26 +4545,13 @@ __metadata: languageName: node linkType: hard -"cssom@npm:^0.4.4": - version: 0.4.4 - resolution: "cssom@npm:0.4.4" - checksum: e3bc1076e7ee4213d4fef05e7ae03bfa83dc05f32611d8edc341f4ecc3d9647b89c8245474c7dd2cdcdb797a27c462e99da7ad00a34399694559f763478ff53f - languageName: node - linkType: hard - -"cssom@npm:~0.3.6": - version: 0.3.8 - resolution: "cssom@npm:0.3.8" - checksum: 24beb3087c76c0d52dd458be9ee1fbc80ac771478a9baef35dd258cdeb527c68eb43204dd439692bb2b1ae5272fa5f2946d10946edab0d04f1078f85e06bc7f6 - languageName: node - linkType: hard - -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" +"cssstyle@npm:^4.2.1": + version: 4.3.1 + resolution: "cssstyle@npm:4.3.1" dependencies: - cssom: ~0.3.6 - checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 + "@asamuzakjp/css-color": ^3.1.2 + rrweb-cssom: ^0.8.0 + checksum: 71e2736854f25b69f9c323aaf10bfc85e5be08f46344ce01eb1d0b7a772c0701095dbc3b9833172bd55849636f30f79e1dc48dab5e8b3b415976aa03426381e7 languageName: node linkType: hard @@ -4589,14 +4579,13 @@ __metadata: languageName: node linkType: hard -"data-urls@npm:^2.0.0": - version: 2.0.0 - resolution: "data-urls@npm:2.0.0" +"data-urls@npm:^5.0.0": + version: 5.0.0 + resolution: "data-urls@npm:5.0.0" dependencies: - abab: ^2.0.3 - whatwg-mimetype: ^2.3.0 - whatwg-url: ^8.0.0 - checksum: 97caf828aac25e25e04ba6869db0f99c75e6859bb5b424ada28d3e7841941ebf08ddff3c1b1bb4585986bd507a5d54c2a716853ea6cb98af877400e637393e71 + whatwg-mimetype: ^4.0.0 + whatwg-url: ^14.0.0 + checksum: 5c40568c31b02641a70204ff233bc4e42d33717485d074244a98661e5f2a1e80e38fe05a5755dfaf2ee549f2ab509d6a3af2a85f4b2ad2c984e5d176695eaf46 languageName: node linkType: hard @@ -4703,7 +4692,7 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.2.1": +"decimal.js@npm:^10.5.0": version: 10.5.0 resolution: "decimal.js@npm:10.5.0" checksum: 91c6b53b5dd2f39a05535349ced6840f591d1f914e3c025c6dcec6ffada6e3cfc8dc3f560d304b716be9a9aece3567a7f80f6aff8f38d11ab6f78541c3a91a01 @@ -4938,15 +4927,6 @@ __metadata: languageName: node linkType: hard -"domexception@npm:^2.0.1": - version: 2.0.1 - resolution: "domexception@npm:2.0.1" - dependencies: - webidl-conversions: ^5.0.0 - checksum: d638e9cb05c52999f1b2eb87c374b03311ea5b1d69c2f875bc92da73e17db60c12142b45c950228642ff7f845c536b65305483350d080df59003a653da80b691 - languageName: node - linkType: hard - "domhandler@npm:^5.0, domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": version: 5.0.3 resolution: "domhandler@npm:5.0.3" @@ -5100,6 +5080,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^6.0.0": + version: 6.0.0 + resolution: "entities@npm:6.0.0" + checksum: 4e964b5549b0f1e7a88836527d38181aa7b2f87222ed2424e78309781b17212de684c84094435f53bea69a7e7e2505268fd96772af166adb686d086d64361435 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0, env-paths@npm:^2.2.1": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -5470,24 +5457,6 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0": - version: 2.1.0 - resolution: "escodegen@npm:2.1.0" - dependencies: - esprima: ^4.0.1 - estraverse: ^5.2.0 - esutils: ^2.0.2 - source-map: ~0.6.1 - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 096696407e161305cd05aebb95134ad176708bc5cb13d0dcc89a5fcbb959b8ed757e7f2591a5f8036f8f4952d4a724de0df14cd419e29212729fa6df5ce16bf6 - languageName: node - linkType: hard - "escope@npm:^3.6.0": version: 3.6.0 resolution: "escope@npm:3.6.0" @@ -5810,7 +5779,7 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^4.0.0, esprima@npm:^4.0.1": +"esprima@npm:^4.0.0": version: 4.0.1 resolution: "esprima@npm:4.0.1" bin: @@ -6358,18 +6327,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^3.0.0": - version: 3.0.3 - resolution: "form-data@npm:3.0.3" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - es-set-tostringtag: ^2.1.0 - mime-types: ^2.1.35 - checksum: e79641abb58b3d7230816ed00645c2732cb64aa44172221644619238106556584aafd908bcc0d728fb06ef6a0d88261e72f4e01111bae3da6d2d7a429e4e1fd2 - languageName: node - linkType: hard - "formidable@npm:^1.2.0": version: 1.2.6 resolution: "formidable@npm:1.2.6" @@ -7058,12 +7015,12 @@ __metadata: languageName: node linkType: hard -"html-encoding-sniffer@npm:^2.0.1": - version: 2.0.1 - resolution: "html-encoding-sniffer@npm:2.0.1" +"html-encoding-sniffer@npm:^4.0.0": + version: 4.0.0 + resolution: "html-encoding-sniffer@npm:4.0.0" dependencies: - whatwg-encoding: ^1.0.5 - checksum: bf30cce461015ed7e365736fcd6a3063c7bc016a91f74398ef6158886970a96333938f7c02417ab3c12aa82e3e53b40822145facccb9ddfbcdc15a879ae4d7ba + whatwg-encoding: ^3.1.1 + checksum: 3339b71dab2723f3159a56acf541ae90a408ce2d11169f00fe7e0c4663d31d6398c8a4408b504b4eec157444e47b084df09b3cb039c816660f0dd04846b8957d languageName: node linkType: hard @@ -7145,7 +7102,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^4.0.0, http-proxy-agent@npm:^4.0.1": +"http-proxy-agent@npm:^4.0.0": version: 4.0.1 resolution: "http-proxy-agent@npm:4.0.1" dependencies: @@ -7156,7 +7113,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^7.0.0": +"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.2": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" dependencies: @@ -7186,7 +7143,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.1": +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.6": version: 7.0.6 resolution: "https-proxy-agent@npm:7.0.6" dependencies: @@ -7212,7 +7169,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.6.2": +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -8057,43 +8014,36 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^16.2.2": - version: 16.7.0 - resolution: "jsdom@npm:16.7.0" +"jsdom@npm:^26.0.0": + version: 26.1.0 + resolution: "jsdom@npm:26.1.0" dependencies: - abab: ^2.0.5 - acorn: ^8.2.4 - acorn-globals: ^6.0.0 - cssom: ^0.4.4 - cssstyle: ^2.3.0 - data-urls: ^2.0.0 - decimal.js: ^10.2.1 - domexception: ^2.0.1 - escodegen: ^2.0.0 - form-data: ^3.0.0 - html-encoding-sniffer: ^2.0.1 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 + cssstyle: ^4.2.1 + data-urls: ^5.0.0 + decimal.js: ^10.5.0 + html-encoding-sniffer: ^4.0.0 + http-proxy-agent: ^7.0.2 + https-proxy-agent: ^7.0.6 is-potential-custom-element-name: ^1.0.1 - nwsapi: ^2.2.0 - parse5: 6.0.1 - saxes: ^5.0.1 + nwsapi: ^2.2.16 + parse5: ^7.2.1 + rrweb-cssom: ^0.8.0 + saxes: ^6.0.0 symbol-tree: ^3.2.4 - tough-cookie: ^4.0.0 - w3c-hr-time: ^1.0.2 - w3c-xmlserializer: ^2.0.0 - webidl-conversions: ^6.1.0 - whatwg-encoding: ^1.0.5 - whatwg-mimetype: ^2.3.0 - whatwg-url: ^8.5.0 - ws: ^7.4.6 - xml-name-validator: ^3.0.0 - peerDependencies: - canvas: ^2.5.0 + tough-cookie: ^5.1.1 + w3c-xmlserializer: ^5.0.0 + webidl-conversions: ^7.0.0 + whatwg-encoding: ^3.1.1 + whatwg-mimetype: ^4.0.0 + whatwg-url: ^14.1.1 + ws: ^8.18.0 + xml-name-validator: ^5.0.0 + peerDependencies: + canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: true - checksum: 454b83371857000763ed31130a049acd1b113e3b927e6dcd75c67ddc30cdd242d7ebcac5c2294b7a1a6428155cb1398709c573b3c6d809218692ea68edd93370 + checksum: 248e500a872b70bfba3fdbd01a13890ab520bfe42912bb85cb99e7f2eda375d80aa4adfcbd5c4716b6e35e93c2c72b127b8e74527a598c5b6d8e62e05f29eb9b languageName: node linkType: hard @@ -8569,7 +8519,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.0.0, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.2.1, lodash@npm:^4.3.0, lodash@npm:^4.7.0": +"lodash@npm:^4.0.0, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.2.1, lodash@npm:^4.3.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -8613,7 +8563,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a @@ -9105,7 +9055,7 @@ __metadata: hls.js: ^1.0.0 isomorphic-fetch: ^2.2.1 jquery: ^3.5.1 - jsdom: ^16.2.2 + jsdom: ^26.0.0 lodash: ^4.17.21 mini-css-extract-plugin: ^0.12.0 minimist: ^1.2.6 @@ -9488,7 +9438,7 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.0": +"nwsapi@npm:^2.2.16": version: 2.2.20 resolution: "nwsapi@npm:2.2.20" checksum: 37100d6023b278d85fc6893fb9f8c13172ced31f6cfd1de8d67d15229526ab51991dfd6b863163a9df684d339a359abe9d34b953676c68c062e2f12dcd39ac47 @@ -9841,13 +9791,6 @@ __metadata: languageName: node linkType: hard -"parse5@npm:6.0.1": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd - languageName: node - linkType: hard - "parse5@npm:^7.0.0": version: 7.2.1 resolution: "parse5@npm:7.2.1" @@ -9857,6 +9800,15 @@ __metadata: languageName: node linkType: hard +"parse5@npm:^7.2.1": + version: 7.3.0 + resolution: "parse5@npm:7.3.0" + dependencies: + entities: ^6.0.0 + checksum: ffd040c4695d93f0bc370e3d6d75c1b352178514af41be7afa212475ea5cead1d6e377cd9d4cec6a5e2bcf497ca50daf9e0088eadaa37dbc271f60def08fdfcd + languageName: node + linkType: hard + "parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" @@ -10342,15 +10294,6 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.33": - version: 1.15.0 - resolution: "psl@npm:1.15.0" - dependencies: - punycode: ^2.3.1 - checksum: 6f777d82eecfe1c2406dadbc15e77467b186fec13202ec887a45d0209a2c6fca530af94a462a477c3c4a767ad892ec9ede7c482d98f61f653dd838b50e89dc15 - languageName: node - linkType: hard - "pump@npm:^3.0.0": version: 3.0.2 resolution: "pump@npm:3.0.2" @@ -10361,7 +10304,7 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": +"punycode@npm:^2.1.0, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 @@ -10398,13 +10341,6 @@ __metadata: languageName: node linkType: hard -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -11147,13 +11083,6 @@ __metadata: languageName: node linkType: hard -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff - languageName: node - linkType: hard - "reselect@npm:^5.0.0": version: 5.1.1 resolution: "reselect@npm:5.1.1" @@ -11319,6 +11248,13 @@ __metadata: languageName: node linkType: hard +"rrweb-cssom@npm:^0.8.0": + version: 0.8.0 + resolution: "rrweb-cssom@npm:0.8.0" + checksum: b84912cd1fbab9c972bf3fd5ca27b492efb442cacb23b6fd5a5ef6508572a91e411d325692609bf758865bc38a01b876e343c552d0e2ae87d0ff9907d96ef622 + languageName: node + linkType: hard + "rst-selector-parser@npm:^2.2.3": version: 2.2.3 resolution: "rst-selector-parser@npm:2.2.3" @@ -11471,12 +11407,12 @@ __metadata: languageName: node linkType: hard -"saxes@npm:^5.0.1": - version: 5.0.1 - resolution: "saxes@npm:5.0.1" +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" dependencies: xmlchars: ^2.2.0 - checksum: 5636b55cf15f7cf0baa73f2797bf992bdcf75d1b39d82c0aa4608555c774368f6ac321cb641fd5f3d3ceb87805122cd47540da6a7b5960fe0dbdb8f8c263f000 + checksum: d3fa3e2aaf6c65ed52ee993aff1891fc47d5e47d515164b5449cbf5da2cbdc396137e55590472e64c5c436c14ae64a8a03c29b9e7389fc6f14035cf4e982ef3b languageName: node linkType: hard @@ -12610,6 +12546,24 @@ __metadata: languageName: node linkType: hard +"tldts-core@npm:^6.1.86": + version: 6.1.86 + resolution: "tldts-core@npm:6.1.86" + checksum: 0a715457e03101deff9b34cf45dcd91b81985ef32d35b8e9c4764dcf76369bf75394304997584080bb7b8897e94e20f35f3e8240a1ec87d6faba3cc34dc5a954 + languageName: node + linkType: hard + +"tldts@npm:^6.1.32": + version: 6.1.86 + resolution: "tldts@npm:6.1.86" + dependencies: + tldts-core: ^6.1.86 + bin: + tldts: bin/cli.js + checksum: e5c57664f73663c6c8f7770db02c0c03d6f877fe837854c72037be8092826f95b8e568962358441ef18431b80b7e40ed88391c70873ee7ec0d4344999a12e3de + languageName: node + linkType: hard + "to-camel-case@npm:^1.0.0": version: 1.0.0 resolution: "to-camel-case@npm:1.0.0" @@ -12665,24 +12619,21 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.0.0": - version: 4.1.4 - resolution: "tough-cookie@npm:4.1.4" +"tough-cookie@npm:^5.1.1": + version: 5.1.2 + resolution: "tough-cookie@npm:5.1.2" dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.2.0 - url-parse: ^1.5.3 - checksum: 5815059f014c31179a303c673f753f7899a6fce94ac93712c88ea5f3c26e0c042b5f0c7a599a00f8e0feeca4615dba75c3dffc54f3c1a489978aa8205e09307c + tldts: ^6.1.32 + checksum: 31c626a77ac247b881665851035773afe7eeac283b91ed8da3c297ed55480ea1dd1ba3f5bb1f94b653ac2d5b184f17ce4bf1cf6ca7c58ee7c321b4323c4f8024 languageName: node linkType: hard -"tr46@npm:^2.1.0": - version: 2.1.0 - resolution: "tr46@npm:2.1.0" +"tr46@npm:^5.1.0": + version: 5.1.1 + resolution: "tr46@npm:5.1.1" dependencies: - punycode: ^2.1.1 - checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3 + punycode: ^2.3.1 + checksum: da7a04bd3f77e641abdabe948bb84f24e6ee73e81c8c96c36fe79796c889ba97daf3dbacae778f8581ff60307a4136ee14c9540a5f85ebe44f99c6cc39a97690 languageName: node linkType: hard @@ -13047,13 +12998,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.1 resolution: "universalify@npm:2.0.1" @@ -13128,16 +13072,6 @@ __metadata: languageName: node linkType: hard -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: ^2.1.1 - requires-port: ^1.0.0 - checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf - languageName: node - linkType: hard - "urlgrey@npm:0.4.4": version: 0.4.4 resolution: "urlgrey@npm:0.4.4" @@ -13222,21 +13156,12 @@ __metadata: languageName: node linkType: hard -"w3c-hr-time@npm:^1.0.2": - version: 1.0.2 - resolution: "w3c-hr-time@npm:1.0.2" - dependencies: - browser-process-hrtime: ^1.0.0 - checksum: ec3c2dacbf8050d917bbf89537a101a08c2e333b4c19155f7d3bedde43529d4339db6b3d049d9610789cb915f9515f8be037e0c54c079e9d4735c50b37ed52b9 - languageName: node - linkType: hard - -"w3c-xmlserializer@npm:^2.0.0": - version: 2.0.0 - resolution: "w3c-xmlserializer@npm:2.0.0" +"w3c-xmlserializer@npm:^5.0.0": + version: 5.0.0 + resolution: "w3c-xmlserializer@npm:5.0.0" dependencies: - xml-name-validator: ^3.0.0 - checksum: ae25c51cf71f1fb2516df1ab33a481f83461a117565b95e3d0927432522323f93b1b2846cbb60196d337970c421adb604fc2d0d180c6a47a839da01db5b9973b + xml-name-validator: ^5.0.0 + checksum: 593acc1fdab3f3207ec39d851e6df0f3fa41a36b5809b0ace364c7a6d92e351938c53424a7618ce8e0fbaffee8be2e8e070a5734d05ee54666a8bdf1a376cc40 languageName: node linkType: hard @@ -13280,17 +13205,10 @@ __metadata: languageName: node linkType: hard -"webidl-conversions@npm:^5.0.0": - version: 5.0.0 - resolution: "webidl-conversions@npm:5.0.0" - checksum: ccf1ec2ca7c0b5671e5440ace4a66806ae09c49016ab821481bec0c05b1b82695082dc0a27d1fe9d804d475a408ba0c691e6803fd21be608e710955d4589cd69 - languageName: node - linkType: hard - -"webidl-conversions@npm:^6.1.0": - version: 6.1.0 - resolution: "webidl-conversions@npm:6.1.0" - checksum: 1f526507aa491f972a0c1409d07f8444e1d28778dfa269a9971f2e157182f3d496dc33296e4ed45b157fdb3bf535bb90c90bf10c50dcf1dd6caacb2a34cc84fb +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b languageName: node linkType: hard @@ -13454,12 +13372,12 @@ __metadata: languageName: node linkType: hard -"whatwg-encoding@npm:^1.0.5": - version: 1.0.5 - resolution: "whatwg-encoding@npm:1.0.5" +"whatwg-encoding@npm:^3.1.1": + version: 3.1.1 + resolution: "whatwg-encoding@npm:3.1.1" dependencies: - iconv-lite: 0.4.24 - checksum: 5be4efe111dce29ddee3448d3915477fcc3b28f991d9cf1300b4e50d6d189010d47bca2f51140a844cf9b726e8f066f4aee72a04d687bfe4f2ee2767b2f5b1e6 + iconv-lite: 0.6.3 + checksum: f75a61422421d991e4aec775645705beaf99a16a88294d68404866f65e92441698a4f5b9fa11dd609017b132d7b286c3c1534e2de5b3e800333856325b549e3c languageName: node linkType: hard @@ -13470,10 +13388,20 @@ __metadata: languageName: node linkType: hard -"whatwg-mimetype@npm:^2.3.0": - version: 2.3.0 - resolution: "whatwg-mimetype@npm:2.3.0" - checksum: 23eb885940bcbcca4ff841c40a78e9cbb893ec42743993a42bf7aed16085b048b44b06f3402018931687153550f9a32d259dfa524e4f03577ab898b6965e5383 +"whatwg-mimetype@npm:^4.0.0": + version: 4.0.0 + resolution: "whatwg-mimetype@npm:4.0.0" + checksum: f97edd4b4ee7e46a379f3fb0e745de29fe8b839307cc774300fd49059fcdd560d38cb8fe21eae5575b8f39b022f23477cc66e40b0355c2851ce84760339cef30 + languageName: node + linkType: hard + +"whatwg-url@npm:^14.0.0, whatwg-url@npm:^14.1.1": + version: 14.2.0 + resolution: "whatwg-url@npm:14.2.0" + dependencies: + tr46: ^5.1.0 + webidl-conversions: ^7.0.0 + checksum: c4f1ae1d353b9e56ab3c154cd73bf2b621cea1a2499fd2a9b2a17d448c2ed5e73a8922a0f395939de565fc3661461140111ae2aea26d4006a1ad0cfbf021c034 languageName: node linkType: hard @@ -13487,17 +13415,6 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": - version: 8.7.0 - resolution: "whatwg-url@npm:8.7.0" - dependencies: - lodash: ^4.7.0 - tr46: ^2.1.0 - webidl-conversions: ^6.1.0 - checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e - languageName: node - linkType: hard - "which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": version: 1.1.1 resolution: "which-boxed-primitive@npm:1.1.1" @@ -13691,7 +13608,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^7.3.1, ws@npm:^7.4.6": +"ws@npm:^7.3.1": version: 7.5.10 resolution: "ws@npm:7.5.10" peerDependencies: @@ -13706,10 +13623,25 @@ __metadata: languageName: node linkType: hard -"xml-name-validator@npm:^3.0.0": - version: 3.0.0 - resolution: "xml-name-validator@npm:3.0.0" - checksum: b3ac459afed783c285bb98e4960bd1f3ba12754fd4f2320efa0f9181ca28928c53cc75ca660d15d205e81f92304419afe94c531c7cfb3e0649aa6d140d53ecb0 +"ws@npm:^8.18.0": + version: 8.18.2 + resolution: "ws@npm:8.18.2" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: e38beae19ba4d68577ec24eb34fbfab376333fedd10f99b07511a8e842e22dbc102de39adac333a18e4c58868d0703cd5f239b04b345e22402d0ed8c34ea0aa0 + languageName: node + linkType: hard + +"xml-name-validator@npm:^5.0.0": + version: 5.0.0 + resolution: "xml-name-validator@npm:5.0.0" + checksum: 86effcc7026f437701252fcc308b877b4bc045989049cfc79b0cc112cb365cf7b009f4041fab9fb7cd1795498722c3e9fe9651afc66dfa794c16628a639a4c45 languageName: node linkType: hard From aa0e9fccf4e4ced9ee548fae70c9b8dc6f64409f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 11:11:30 +0500 Subject: [PATCH 2/8] fix(deps): update dependency django-ipware to v7 (#3515) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- poetry.lock | 27 ++++++++++++++++++++++----- pyproject.toml | 2 +- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index f3e47b842b..772e4a3057 100644 --- a/poetry.lock +++ b/poetry.lock @@ -959,15 +959,18 @@ test = ["pytest", "pytest-cov", "pytest-django"] [[package]] name = "django-ipware" -version = "3.0.7" +version = "7.0.1" description = "A Django application to retrieve user's IP address" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.8" files = [ - {file = "django-ipware-3.0.7.tar.gz", hash = "sha256:753f8214a16ccaac54ea977349a96e37b582a28a54065e00c1c46d530862c85e"}, - {file = "django_ipware-3.0.7-py2.py3-none-any.whl", hash = "sha256:a18820ea2b98ff3f87b7530eb6346f5feb65d18e89397606aacc098fa7b93db2"}, + {file = "django-ipware-7.0.1.tar.gz", hash = "sha256:d9ec43d2bf7cdf216fed8d494a084deb5761a54860a53b2e74346a4f384cff47"}, + {file = "django_ipware-7.0.1-py2.py3-none-any.whl", hash = "sha256:db16bbee920f661ae7f678e4270460c85850f03c6761a4eaeb489bdc91f64709"}, ] +[package.dependencies] +python-ipware = ">=2.0.3" + [[package]] name = "django-modelcluster" version = "6.4" @@ -3358,6 +3361,20 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "python-ipware" +version = "3.0.0" +description = "A Python package to retrieve user's IP address" +optional = false +python-versions = ">=3.7" +files = [ + {file = "python_ipware-3.0.0-py3-none-any.whl", hash = "sha256:fc936e6e7ec9fcc107f9315df40658f468ac72f739482a707181742882e36b60"}, + {file = "python_ipware-3.0.0.tar.gz", hash = "sha256:9117b1c4dddcb5d5ca49e6a9617de2fc66aec2ef35394563ac4eecabdf58c062"}, +] + +[package.extras] +dev = ["coverage[toml]", "coveralls (>=3.3,<4.0)", "ruff", "twine"] + [[package]] name = "python3-openid" version = "3.2.0" @@ -4437,4 +4454,4 @@ xmlsec = ["xmlsec (>=0.6.1)"] [metadata] lock-version = "2.0" python-versions = "3.12.6" -content-hash = "04e9686873d14488dc7b481ba05eb01dc7e59153c4932efd808b37ed63ab84fb" +content-hash = "1af62c89bf680484c927c77f1f51609c0cf78f30a0f38f797932df7a6ed47439" diff --git a/pyproject.toml b/pyproject.toml index fc04ffe86f..968af5346f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ django = "4.2.21" django-anymail = { version = "13.0", extras = ["mailgun"] } django-filter = "^23.4" django-hijack = "3.7.2" -django-ipware = "3.0.7" +django-ipware = "7.0.1" django-oauth-toolkit = "1.7.1" django-redis = "5.0.0" django-robots = "6.1" From 4e54581562ee33548c146d0de731aff5f999686f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 15:34:01 +0500 Subject: [PATCH 3/8] fix(deps): update dependency mitol-django-common to v2025 (#3488) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- poetry.lock | 19 +++++++++++-------- pyproject.toml | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index 772e4a3057..f665d6bb2b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2274,26 +2274,29 @@ social-auth-app-django = ">=5.4.0" [[package]] name = "mitol-django-common" -version = "2023.12.19" +version = "2025.5.23" description = "MIT Open Learning django app extensions for common utilities" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" files = [ - {file = "mitol-django-common-2023.12.19.tar.gz", hash = "sha256:b7df5f57fcc06d822e7465470e2279ff4ee5c3b9a108513dc10a6979dd92fdda"}, - {file = "mitol_django_common-2023.12.19-py3-none-any.whl", hash = "sha256:5dd54a632dfdb5391287ac573758e19fa55e73e2c853eaaf60e5c8a4143e7776"}, + {file = "mitol_django_common-2025.5.23-py3-none-any.whl", hash = "sha256:3ec46487146473293e3918c29ef92412ffd9f3ca1ce442ddc06c4a80ae0afe09"}, + {file = "mitol_django_common-2025.5.23.tar.gz", hash = "sha256:5b56dfc1b5ad6d843bf19c2a3b529a1e8f69f466a8c548f796f0ab193882b2e9"}, ] [package.dependencies] django = ">=3.0" -django-redis = ">=5.0.0,<5.1.0" +django-redis = ">=5.0,<6.0" +django-stubs = ">=1.13.1" django-webpack-loader = ">=0.7.0" factory-boy = ">=3.2,<4.0" -pytest = ">=7.0.0" +pytest = ">=7,<9" pytz = ">=2020.4" requests = ">=2.20.0" -setuptools = "*" typing-extensions = "*" +[package.extras] +celery = ["celery (>=5.5.0)"] + [[package]] name = "mitol-django-digital-credentials" version = "2023.12.19" @@ -4454,4 +4457,4 @@ xmlsec = ["xmlsec (>=0.6.1)"] [metadata] lock-version = "2.0" python-versions = "3.12.6" -content-hash = "1af62c89bf680484c927c77f1f51609c0cf78f30a0f38f797932df7a6ed47439" +content-hash = "e2a3174ea32eeb781f85624547e281394b64144e63bb450d8c03cd35d3b27c75" diff --git a/pyproject.toml b/pyproject.toml index 968af5346f..134c0e9ec5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,7 @@ google-auth = "1.35.0" hubspot-api-client = "^6.1.0" ipython = "^9.0.0" mitol-django-authentication = "2023.12.19" -mitol-django-common = "2023.12.19" +mitol-django-common = "2025.5.23" mitol-django-digital-credentials = "2023.12.19" mitol-django-hubspot-api = { version = "2023.12.19", extras = [] } mitol-django-mail = "2025.3.17" From b8ded9ca56f657591423fc09fe1b84c5abbbc5f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 17:06:07 +0000 Subject: [PATCH 4/8] fix(deps): update dependency django-redis to v5.4.0 (#3511) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- poetry.lock | 15 +++++++++------ pyproject.toml | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/poetry.lock b/poetry.lock index f665d6bb2b..8174690d31 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1024,18 +1024,21 @@ testing = ["django-modelcluster"] [[package]] name = "django-redis" -version = "5.0.0" +version = "5.4.0" description = "Full featured redis cache backend for Django." optional = false python-versions = ">=3.6" files = [ - {file = "django-redis-5.0.0.tar.gz", hash = "sha256:048f665bbe27f8ff2edebae6aa9c534ab137f1e8fa7234147ef470df3f3aa9b8"}, - {file = "django_redis-5.0.0-py3-none-any.whl", hash = "sha256:97739ca9de3f964c51412d1d7d8aecdfd86737bb197fce6e1ff12620c63c97ee"}, + {file = "django-redis-5.4.0.tar.gz", hash = "sha256:6a02abaa34b0fea8bf9b707d2c363ab6adc7409950b2db93602e6cb292818c42"}, + {file = "django_redis-5.4.0-py3-none-any.whl", hash = "sha256:ebc88df7da810732e2af9987f7f426c96204bf89319df4c6da6ca9a2942edd5b"}, ] [package.dependencies] -Django = ">=2.2" -redis = ">=3.0.0" +Django = ">=3.2" +redis = ">=3,<4.0.0 || >4.0.0,<4.0.1 || >4.0.1" + +[package.extras] +hiredis = ["redis[hiredis] (>=3,!=4.0.0,!=4.0.1)"] [[package]] name = "django-robots" @@ -4457,4 +4460,4 @@ xmlsec = ["xmlsec (>=0.6.1)"] [metadata] lock-version = "2.0" python-versions = "3.12.6" -content-hash = "e2a3174ea32eeb781f85624547e281394b64144e63bb450d8c03cd35d3b27c75" +content-hash = "5e920f1b36b51bdecb8a451ff1c992e30ed5e9eed93481698f70f42c31167513" diff --git a/pyproject.toml b/pyproject.toml index 134c0e9ec5..817a334960 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ django-filter = "^23.4" django-hijack = "3.7.2" django-ipware = "7.0.1" django-oauth-toolkit = "1.7.1" -django-redis = "5.0.0" +django-redis = "5.4.0" django-robots = "6.1" django-silk = "^5.0.3" django-storages = "1.14.6" From 85f0ecc00f083940a3c4870d7fa4e4a88b2109a9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 14:17:29 +0500 Subject: [PATCH 5/8] fix(deps): update dependency mitol-django-olposthog to v2025 (#3506) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- poetry.lock | 11 ++++++----- pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8174690d31..2581a1237b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2382,17 +2382,18 @@ requests = ">=2.20.0" [[package]] name = "mitol-django-olposthog" -version = "2024.5.14" +version = "2025.3.17" description = "MIT Open Learning django app extensions for Posthog." optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" files = [ - {file = "mitol-django-olposthog-2024.5.14.tar.gz", hash = "sha256:089b31d4606b1ef4484f999cf29229f8f0988df41531dd165a7706fc000f4140"}, - {file = "mitol_django_olposthog-2024.5.14-py3-none-any.whl", hash = "sha256:e3637eb695816e17a8ff1af18c623a21866ecfe8733d9d4d73303ea3391023c1"}, + {file = "mitol_django_olposthog-2025.3.17-py3-none-any.whl", hash = "sha256:b1d510fd045e2cae1f9ff91a2e9fae3c27e0a5a88dd88c4e6f2e1973df0b713d"}, + {file = "mitol_django_olposthog-2025.3.17.tar.gz", hash = "sha256:758ebad5aea581dcbd1b61a8e7db8e1fccafeb424079a39d375239f25f6d0a31"}, ] [package.dependencies] django = ">=3.0" +django-stubs = ">=1.13.1" mitol-django-common = "*" posthog = ">=3.5.0" @@ -4460,4 +4461,4 @@ xmlsec = ["xmlsec (>=0.6.1)"] [metadata] lock-version = "2.0" python-versions = "3.12.6" -content-hash = "5e920f1b36b51bdecb8a451ff1c992e30ed5e9eed93481698f70f42c31167513" +content-hash = "3b25aa92de58748c2879f616980b6a8171d797c1b7a18db6c4ec723c4ca012f4" diff --git a/pyproject.toml b/pyproject.toml index 817a334960..c7ad0bff94 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ mitol-django-digital-credentials = "2023.12.19" mitol-django-hubspot-api = { version = "2023.12.19", extras = [] } mitol-django-mail = "2025.3.17" mitol-django-oauth-toolkit-extensions = "2023.12.19.1" -mitol-django-olposthog = "^2024.5.14" +mitol-django-olposthog = "^2025.0.0" newrelic = "^8.4.0" pdftotext = "^3.0.0" psycopg2 = "2.9.10" From ee9d66fcc1f2a6c9de412cc8102c9915b9cc95b4 Mon Sep 17 00:00:00 2001 From: Areeb Sajjad <89740222+asajjad2@users.noreply.github.com> Date: Mon, 2 Jun 2025 15:23:36 +0500 Subject: [PATCH 6/8] fix: mobile nav update (#3490) * feat: add drawer * style: fix mobile-nav styling * style: cleaning up styles, precise values * style: fix buttons * style: topics capitalized * tests: update to check drawer toggles * fix: mobile menu below nav * style: button alignment * fix: user menu added in mobile nav * fix: menu button shouldn't show on desktop * fix: update user menu logic on mobile * fix: useEffect for managing drawer state * refactor: repeated code removed * fix: aria-label * refactor: auth buttons repitition removed * tests: update test to reflect nav changes * fix: hide slider buttons from nav drawer * refactor: auth buttons and test * refactor: extract components to reduce TopAppBar complexity * fix: mobile user menu z-index to appear above drawer * test: fix TopAppBar tests after component refactoring * feat: close mobile drawer when auth buttons are clicked * feat: close mobile drawer when usermenu opens * refactor: remove data-bs-toggle not available on bs-4 * refactor: put back .navbar-collapse.show.collapsing css --- static/js/components/CatalogMenu.js | 63 +++-- static/js/components/CatalogMenu_test.js | 36 +++ static/js/components/TopAppBar.js | 256 +++++++++++------- static/js/components/TopAppBar_test.js | 75 +++-- static/js/components/UserMenu.js | 5 +- static/js/components/input/AuthButtons.js | 53 ++++ .../js/components/input/AuthButtons_test.js | 31 +++ static/scss/detail/header.scss | 2 +- static/scss/top-app-bar.scss | 106 ++++++++ 9 files changed, 478 insertions(+), 149 deletions(-) create mode 100644 static/js/components/input/AuthButtons.js create mode 100644 static/js/components/input/AuthButtons_test.js diff --git a/static/js/components/CatalogMenu.js b/static/js/components/CatalogMenu.js index fd8f74ca90..1ca598b778 100644 --- a/static/js/components/CatalogMenu.js +++ b/static/js/components/CatalogMenu.js @@ -6,9 +6,49 @@ import type { CourseTopic } from "../flow/courseTypes"; type Props = { courseTopics: Array, + isMobile?: boolean, }; -const CatalogMenu = ({ courseTopics }: Props) => { +const CatalogMenu = ({ courseTopics, isMobile = false }: Props) => { + const renderMenuItems = () => ( + <> + + All Topics + + {courseTopics?.map((courseTopic, index) => ( + + {courseTopic.name} ({courseTopic.course_count || 0}) + + ))} + + ); + + if (isMobile) { + return ( +
+ + Courses + +
{renderMenuItems()}
+
+ ); + } + return (
{ aria-label="courses" href="#" role="button" - data-bs-toggle="dropdown" onKeyDown={(e) => { if (e.key === " ") { e.preventDefault(); @@ -31,25 +70,7 @@ const CatalogMenu = ({ courseTopics }: Props) => { Courses + ); + + const renderMobileDrawer = () => ( +
+
+ +
+ + {showLoginSignup && !isAuthenticated && ( + drawerOpen && toggleDrawer()} /> + )} + +
+ +
+ +
+ + Programs + + + Webinars + + + Blog + + {SETTINGS.enable_enterprise && ( + + Enterprise + )} - +
- -); + ); + + return ( +
+
+ +
+
+ ); +}; export default TopAppBar; diff --git a/static/js/components/TopAppBar_test.js b/static/js/components/TopAppBar_test.js index f5a9c3f75d..af82af346d 100644 --- a/static/js/components/TopAppBar_test.js +++ b/static/js/components/TopAppBar_test.js @@ -13,38 +13,18 @@ import { makeCourseTopics } from "../factories/course"; describe("TopAppBar component", () => { describe("for anonymous users", () => { const user = makeAnonymousUser(); - it("has a link to login", () => { - assert.equal( - shallow( - , - ) - .find("MixedLink") - .at(0) - .prop("dest"), - routes.login, - ); - }); - it("has a link to register", () => { - assert.equal( - shallow( - , - ) - .find("MixedLink") - .at(1) - .prop("dest"), - routes.register.begin, + it("has a link to login and register", () => { + const wrapper = shallow( + , ); + + assert.isTrue(wrapper.find("AuthButtons").exists()); }); it("has a button to collapse the menu", () => { @@ -217,5 +197,40 @@ describe("TopAppBar component", () => { assert.isOk(wrapper.find("CatalogMenu").exists()); assert.isNotOk(wrapper.find("MixedLink").exists()); }); + + it("passes isMobile prop to CatalogMenu in mobile drawer", () => { + const wrapper = shallow( + , + ); + + const mobileCatalogMenu = wrapper + .find(".mobile-drawer-section") + .find("CatalogMenu"); + assert.isOk(mobileCatalogMenu.exists()); + assert.isTrue(mobileCatalogMenu.prop("isMobile")); + }); + + it("toggles mobile drawer when menu button is clicked", () => { + const wrapper = shallow( + , + ); + + const initialDrawerOpen = wrapper.find(".mobile-drawer").hasClass("open"); + wrapper.find(".navbar-toggler").simulate("click"); + assert.notEqual( + initialDrawerOpen, + wrapper.find(".mobile-drawer").hasClass("open"), + ); + }); }); }); diff --git a/static/js/components/UserMenu.js b/static/js/components/UserMenu.js index f1da2ad6da..558dd7308d 100644 --- a/static/js/components/UserMenu.js +++ b/static/js/components/UserMenu.js @@ -10,9 +10,10 @@ import type { User } from "../flow/authTypes"; type Props = { /* This is here for future use when we have custom profile avatars */ currentUser: User, + onMouseDown?: () => void, }; -const UserMenu = ({ currentUser }: Props) => { +const UserMenu = ({ currentUser, onMouseDown }: Props) => { return (
{ aria-label="user menu" href="#" role="button" - data-bs-toggle="dropdown" + onMouseDown={onMouseDown} onKeyDown={(e) => { if (e.key === " ") { e.preventDefault(); diff --git a/static/js/components/input/AuthButtons.js b/static/js/components/input/AuthButtons.js new file mode 100644 index 0000000000..e318cf41fa --- /dev/null +++ b/static/js/components/input/AuthButtons.js @@ -0,0 +1,53 @@ +// @flow +import React from "react"; + +import { routes } from "../../lib/urls"; +import MixedLink from "../MixedLink"; + +type Props = { + isMobile?: boolean, + onClick?: () => void, +}; + +const AuthButtons = ({ isMobile = false, onClick }: Props) => { + const authLinks = [ + { + key: "login", + label: "Sign In", + dest: routes.login.begin, + ariaLabel: "Login", + }, + { + key: "create-account", + label: "Create Account", + dest: routes.register.begin, + ariaLabel: "Create Account", + }, + ]; + + const className = isMobile ? "mobile-auth-button" : "button"; + + const buttons = authLinks.map(({ key, label, dest, ariaLabel }) => ( + + {label} + + )); + + return isMobile ? ( +
{buttons}
+ ) : ( + <> + {buttons.map((button) => ( +
  • {button}
  • + ))} + + ); +}; + +export default AuthButtons; diff --git a/static/js/components/input/AuthButtons_test.js b/static/js/components/input/AuthButtons_test.js new file mode 100644 index 0000000000..e126848a9f --- /dev/null +++ b/static/js/components/input/AuthButtons_test.js @@ -0,0 +1,31 @@ +// @flow +import React from "react"; + +import { assert } from "chai"; +import { shallow } from "enzyme"; + +import AuthButtons from "./AuthButtons"; + +import { routes } from "../../lib/urls"; + +describe("AuthButtons component", () => { + it("has a link to login", () => { + assert.equal( + shallow() + .find("MixedLink") + .at(0) + .prop("dest"), + routes.login.begin, + ); + }); + + it("has a link to register", () => { + assert.equal( + shallow() + .find("MixedLink") + .at(1) + .prop("dest"), + routes.register.begin, + ); + }); +}); diff --git a/static/scss/detail/header.scss b/static/scss/detail/header.scss index 438816c22c..a00e9a4d69 100644 --- a/static/scss/detail/header.scss +++ b/static/scss/detail/header.scss @@ -2,7 +2,7 @@ #header { background-color: white; position: relative; - z-index: 1; + z-index: 100; height: 98px; } diff --git a/static/scss/top-app-bar.scss b/static/scss/top-app-bar.scss index 45ff265f46..edc356ec3a 100644 --- a/static/scss/top-app-bar.scss +++ b/static/scss/top-app-bar.scss @@ -118,3 +118,109 @@ } } } + +.mobile-drawer { + position: fixed; + top: 98px; + right: -366px; + width: 366px; + height: calc(100vh - 98px); + background-color: white; + transition: right 0.3s ease; + z-index: 1050; + overflow-y: auto; + padding: 26px 32px; + box-shadow: -2px 0 10px rgb(0 0 0 / 10%); + + &.open { + right: 0; + } +} + +.drawer-overlay { + position: fixed; + top: 98px; + left: 0; + width: 100%; + height: calc(100% - 98px); + background-color: rgb(0 0 0 / 50%); + z-index: 1040; +} + +.drawer-header { + display: flex; + justify-content: flex-end; + margin-bottom: 1rem; +} + +.close-drawer { + background: none; + border: none; + font-size: 1.75rem; + line-height: 1; + padding: 0; + cursor: pointer; +} + +.mobile-auth-buttons { + padding: 8px 0; + display: flex; + gap: 12px; +} + +a.mobile-auth-button { + flex: 1; + justify-content: center; + align-items: center; + text-align: center; + background: $primary; + color: white; + padding: 6px 10px; + + &:hover, + &:focus { + background: black; + color: white; + text-decoration: none; + } +} + +.mobile-catalog-menu { + display: flex; + flex-direction: column; + gap: 8px; + padding-left: 12px; +} + +.mobile-catalog-item { + display: block; + color: #333; + text-decoration: none; + text-transform: capitalize; + font-size: 0.9375rem; + line-height: 1.4; + + &:hover, + &:focus { + color: $primary; + text-decoration: none; + } +} + +.mobile-drawer-heading { + padding: 4px 0; + color: black; + font-weight: 700; +} + +.mobile-drawer-section { + padding: 8px 0; + display: flex; + flex-direction: column; + gap: 8px; +} + +.mobile-user-menu { + margin-left: 10px; + z-index: 1060; +} From 02bba2368a6a320a1a3d351a1f49b6a42ca64590 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 15:58:46 +0500 Subject: [PATCH 7/8] chore(deps): update dependency js-yaml to v4 (#3238) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 38 +++++++++----------------------------- 2 files changed, 10 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index 4c7657ca65..b45cfb6b45 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ }, "resolutions": { "cheerio": "1.0.0-rc.12", - "js-yaml": "^3.13.1", + "js-yaml": "^4.0.0", "kind-of": "6.0.3", "minimist": "1.2.8", "merge": "^2.1.1", diff --git a/yarn.lock b/yarn.lock index 56f9d589b4..166e0f5bcc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3226,12 +3226,10 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^1.0.7": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: ~1.0.2 - checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced languageName: node linkType: hard @@ -5779,16 +5777,6 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^4.0.0": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 - languageName: node - linkType: hard - "esquery@npm:^1.4.2": version: 1.6.0 resolution: "esquery@npm:1.6.0" @@ -7995,15 +7983,14 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" +"js-yaml@npm:^4.0.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 + argparse: ^2.0.1 bin: js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c + checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a languageName: node linkType: hard @@ -11888,13 +11875,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 - languageName: node - linkType: hard - "ssri@npm:^12.0.0": version: 12.0.0 resolution: "ssri@npm:12.0.0" From fe40f9320ed77ad540410ca24f054ec9368b15c9 Mon Sep 17 00:00:00 2001 From: Doof Date: Tue, 3 Jun 2025 09:26:08 +0000 Subject: [PATCH 8/8] Release 0.179.1 --- RELEASE.rst | 11 +++++++++++ mitxpro/settings.py | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/RELEASE.rst b/RELEASE.rst index 0532fd2927..2594b9fe32 100644 --- a/RELEASE.rst +++ b/RELEASE.rst @@ -1,6 +1,17 @@ Release Notes ============= +Version 0.179.1 +--------------- + +- chore(deps): update dependency js-yaml to v4 (#3238) +- fix: mobile nav update (#3490) +- fix(deps): update dependency mitol-django-olposthog to v2025 (#3506) +- fix(deps): update dependency django-redis to v5.4.0 (#3511) +- fix(deps): update dependency mitol-django-common to v2025 (#3488) +- fix(deps): update dependency django-ipware to v7 (#3515) +- fix(deps): update dependency jsdom to v26 (#3456) + Version 0.179.0 (Released June 02, 2025) --------------- diff --git a/mitxpro/settings.py b/mitxpro/settings.py index d89eac83da..a8544c7603 100644 --- a/mitxpro/settings.py +++ b/mitxpro/settings.py @@ -26,7 +26,7 @@ from mitxpro.celery_utils import OffsettingSchedule from mitxpro.sentry import init_sentry -VERSION = "0.179.0" +VERSION = "0.179.1" env.reset()