From a245dec4f4ff431b336832174f53421a5a1b987c Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Thu, 10 Oct 2024 12:32:14 -0400 Subject: [PATCH 01/24] feat: Use jammy repositories for mongo installation. Unclear if there was a change in the focal repositories or if there was an issue with something else. The noble repositories don't support 7.0, so we're stuck here until we upgrade to 8.0. --- .github/workflows/unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 5fef1c8352ce..900489256ab5 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -94,7 +94,7 @@ jobs: run: | if [[ "${{ matrix.mongo-version }}" != "4.4" ]]; then wget -qO - https://www.mongodb.org/static/pgp/server-${{ matrix.mongo-version }}.asc | sudo apt-key add - - echo "deb https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/${{ matrix.mongo-version }} multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-${{ matrix.mongo-version }}.list + echo "deb https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/${{ matrix.mongo-version }} multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-${{ matrix.mongo-version }}.list sudo apt-get update && sudo apt-get install -y mongodb-org="${{ matrix.mongo-version }}.*" fi From 6c045c7b390aa051484cee459a767b246f04e7d8 Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Thu, 10 Oct 2024 14:07:17 -0400 Subject: [PATCH 02/24] feat: Unpin xmlsec and lxml. We are now on Python 3.11 and running tests on the latest version of Ubuntu, which seems to mean we don't need these pins anymore. In fact, it seems to break while on these pins. --- requirements/constraints.txt | 19 --- requirements/edx-sandbox/base.txt | 5 +- requirements/edx/base.txt | 74 ++++++------ requirements/edx/coverage.txt | 4 +- requirements/edx/development.txt | 110 ++++++++++-------- requirements/edx/doc.txt | 77 ++++++------ requirements/edx/paver.txt | 6 +- requirements/edx/semgrep.txt | 8 +- requirements/edx/testing.txt | 96 ++++++++------- requirements/pip-tools.txt | 4 +- .../structures_pruning/requirements/base.txt | 2 +- .../requirements/testing.txt | 2 +- scripts/user_retirement/requirements/base.txt | 23 ++-- .../user_retirement/requirements/testing.txt | 23 ++-- 14 files changed, 224 insertions(+), 229 deletions(-) diff --git a/requirements/constraints.txt b/requirements/constraints.txt index dd727a4b1801..2fc1a1e745f3 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -84,13 +84,6 @@ django-storages<1.14.4 # for them. edx-enterprise==4.27.2 -# Date: 2024-05-09 -# This has to be constrained as well because newer versions of edx-i18n-tools need the -# newer version of lxml but that requirement was not made expilict in the 1.6.0 version -# of the package. This can be un-pinned when we're upgrading lxml. -# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35274 -edx-i18n-tools<1.6.0 - # Date: 2024-07-26 # To override the constraint of edx-lint # This can be removed once https://github.com/openedx/edx-platform/issues/34586 is resolved @@ -105,13 +98,6 @@ event-tracking==3.0.0 # https://github.com/openedx/edx-platform/issues/31616 libsass==0.10.0 -# Date: 2024-04-30 -# lxml>=5.0 introduced breaking changes related to system dependencies -# lxml==5.2.1 introduced new extra so we'll nee to rename lxml --> lxml[html-clean] -# This constraint can be removed once we upgrade to Python 3.11 -# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35272 -lxml<5.0 - # Date: 2018-12-14 # markdown>=3.4.0 has failures due to internal refactorings which causes the tests to fail # pinning the version untill the issue gets resolved in the package itself @@ -187,8 +173,3 @@ social-auth-app-django<=5.4.1 # which require urllib3<2 for now. # Issue for unpinning: https://github.com/openedx/edx-platform/issues/32222 urllib3<2.0.0 - -# Date: 2024-04-24 -# xmlsec==1.3.14 breaking tests or all builds, can be removed once a fix is available -# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35264 -xmlsec<1.3.14 diff --git a/requirements/edx-sandbox/base.txt b/requirements/edx-sandbox/base.txt index bf0a4376da70..0a708b2bbf52 100644 --- a/requirements/edx-sandbox/base.txt +++ b/requirements/edx-sandbox/base.txt @@ -26,12 +26,11 @@ joblib==1.4.2 # via nltk kiwisolver==1.4.7 # via matplotlib -lxml==4.9.4 +lxml==5.3.0 # via - # -c requirements/edx-sandbox/../constraints.txt # -r requirements/edx-sandbox/base.in # openedx-calc -markupsafe==2.1.5 +markupsafe==3.0.1 # via # chem # openedx-calc diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 55793bd0c5af..c7f7828f4115 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -6,11 +6,11 @@ # -e git+https://github.com/anupdhabarde/edx-proctoring-proctortrack.git@31c6c9923a51c903ae83760ecbbac191363aa2a2#egg=edx_proctoring_proctortrack # via -r requirements/edx/github.in -acid-xblock==0.3.1 +acid-xblock==0.4.1 # via -r requirements/edx/kernel.in -aiohappyeyeballs==2.4.0 +aiohappyeyeballs==2.4.3 # via aiohttp -aiohttp==3.10.6 +aiohttp==3.10.9 # via # geoip2 # openai @@ -70,13 +70,13 @@ bleach[css]==6.1.0 # xblock-poll boto==2.49.0 # via -r requirements/edx/kernel.in -boto3==1.35.27 +boto3==1.35.37 # via # -r requirements/edx/kernel.in # django-ses # fs-s3fs # ora2 -botocore==1.35.27 +botocore==1.35.37 # via # -r requirements/edx/kernel.in # boto3 @@ -87,7 +87,7 @@ cachecontrol==0.14.0 # via firebase-admin cachetools==5.5.0 # via google-auth -camel-converter[pydantic]==3.1.2 +camel-converter[pydantic]==4.0.1 # via meilisearch celery==5.4.0 # via @@ -328,7 +328,7 @@ django-sekizai==4.1.0 # via # -r requirements/edx/kernel.in # openedx-django-wiki -django-ses==4.1.1 +django-ses==4.2.0 # via -r requirements/edx/bundled.in django-simple-history==3.4.0 # via @@ -387,7 +387,7 @@ djangorestframework==3.14.0 # super-csv djangorestframework-xml==2.0.0 # via edx-enterprise -dnspython==2.6.1 +dnspython==2.7.0 # via # -r requirements/edx/paver.txt # pymongo @@ -429,7 +429,7 @@ edx-celeryutils==1.3.0 # super-csv edx-codejail==3.4.1 # via -r requirements/edx/kernel.in -edx-completion==4.7.1 +edx-completion==4.7.2 # via -r requirements/edx/kernel.in edx-django-release-util==1.4.0 # via @@ -438,7 +438,7 @@ edx-django-release-util==1.4.0 # edxval edx-django-sites-extensions==4.2.0 # via -r requirements/edx/kernel.in -edx-django-utils==5.16.0 +edx-django-utils==6.0.0 # via # -r requirements/edx/kernel.in # django-config-models @@ -475,9 +475,8 @@ edx-event-bus-kafka==5.8.1 # via -r requirements/edx/kernel.in edx-event-bus-redis==0.5.0 # via -r requirements/edx/kernel.in -edx-i18n-tools==1.5.0 +edx-i18n-tools==1.6.3 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/bundled.in # ora2 edx-milestones==0.6.0 @@ -517,7 +516,7 @@ edx-search==4.0.0 # via -r requirements/edx/kernel.in edx-sga==0.25.0 # via -r requirements/edx/bundled.in -edx-submissions==3.8.0 +edx-submissions==3.8.1 # via # -r requirements/edx/kernel.in # ora2 @@ -584,14 +583,14 @@ geoip2==4.8.0 # via -r requirements/edx/kernel.in glob2==0.7 # via -r requirements/edx/kernel.in -google-api-core[grpc]==2.20.0 +google-api-core[grpc]==2.21.0 # via # firebase-admin # google-api-python-client # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.147.0 +google-api-python-client==2.149.0 # via firebase-admin google-auth==2.35.0 # via @@ -621,11 +620,11 @@ googleapis-common-protos==1.65.0 # via # google-api-core # grpcio-status -grpcio==1.66.1 +grpcio==1.66.2 # via # google-api-core # grpcio-status -grpcio-status==1.66.1 +grpcio-status==1.66.2 # via google-api-core gunicorn==23.0.0 # via -r requirements/edx/kernel.in @@ -639,7 +638,7 @@ httplib2==0.22.0 # via # google-api-python-client # google-auth-httplib2 -icalendar==5.0.13 +icalendar==6.0.0 # via -r requirements/edx/kernel.in idna==3.10 # via @@ -658,7 +657,7 @@ interchange==2021.0.4 # via py2neo ipaddress==1.0.23 # via -r requirements/edx/kernel.in -isodate==0.6.1 +isodate==0.7.2 # via python3-saml jinja2==3.1.4 # via code-annotations @@ -683,7 +682,7 @@ jsonschema==4.23.0 # via # drf-spectacular # optimizely-sdk -jsonschema-specifications==2023.12.1 +jsonschema-specifications==2024.10.1 # via jsonschema jwcrypto==1.5.6 # via @@ -708,19 +707,21 @@ loremipsum==1.0.5 # via ora2 lti-consumer-xblock==9.11.3 # via -r requirements/edx/kernel.in -lxml==4.9.4 +lxml[html-clean]==5.3.0 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/kernel.in # edx-i18n-tools # edxval # lti-consumer-xblock + # lxml-html-clean # olxcleaner # openedx-calc # ora2 # python3-saml # xblock # xmlsec +lxml-html-clean==0.3.1 + # via lxml mailsnake==1.6.4 # via -r requirements/edx/bundled.in mako==1.3.5 @@ -737,7 +738,7 @@ markdown==3.3.7 # openedx-django-wiki # staff-graded-xblock # xblock-poll -markupsafe==2.1.5 +markupsafe==3.0.1 # via # -r requirements/edx/paver.txt # chem @@ -769,7 +770,7 @@ multidict==6.1.0 # yarl mysqlclient==2.2.4 # via -r requirements/edx/kernel.in -newrelic==9.13.0 +newrelic==10.0.0 # via # -r requirements/edx/bundled.in # edx-django-utils @@ -820,7 +821,7 @@ openedx-events==9.14.1 # edx-name-affirmation # event-tracking # ora2 -openedx-filters==1.10.0 +openedx-filters==1.11.0 # via # -r requirements/edx/kernel.in # lti-consumer-xblock @@ -829,7 +830,7 @@ openedx-learning==0.13.1 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/kernel.in -openedx-mongodbproxy==0.2.1 +openedx-mongodbproxy==0.2.2 # via -r requirements/edx/kernel.in optimizely-sdk==4.1.1 # via @@ -881,6 +882,8 @@ polib==1.2.0 # via edx-i18n-tools prompt-toolkit==3.0.48 # via click-repl +propcache==0.2.0 + # via yarl proto-plus==1.24.0 # via # google-api-core @@ -911,7 +914,7 @@ pycountry==24.6.1 # via -r requirements/edx/kernel.in pycparser==2.22 # via cffi -pycryptodomex==3.20.0 +pycryptodomex==3.21.0 # via # -r requirements/edx/kernel.in # edx-proctoring @@ -1017,7 +1020,6 @@ pytz==2024.2 # edx-tincan-py35 # event-tracking # fs - # icalendar # interchange # olxcleaner # ora2 @@ -1039,7 +1041,7 @@ random2==1.0.2 # via -r requirements/edx/kernel.in recommender-xblock==2.2.1 # via -r requirements/edx/bundled.in -redis==5.0.8 +redis==5.1.1 # via # -r requirements/edx/kernel.in # walrus @@ -1092,7 +1094,7 @@ rules==3.5 # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.10.2 +s3transfer==0.10.3 # via boto3 sailthru-client==2.2.3 # via edx-ace @@ -1131,7 +1133,6 @@ six==1.16.0 # fs-s3fs # html5lib # interchange - # isodate # libsass # optimizely-sdk # pansi @@ -1208,6 +1209,7 @@ typing-extensions==4.12.2 tzdata==2024.2 # via # celery + # icalendar # kombu unicodecsv==0.14.1 # via @@ -1237,7 +1239,7 @@ voluptuous==0.15.2 # via ora2 walrus==0.9.4 # via edx-event-bus-redis -watchdog==5.0.2 +watchdog==5.0.3 # via -r requirements/edx/paver.txt wcwidth==0.2.13 # via prompt-toolkit @@ -1285,13 +1287,11 @@ xblock-utils==4.0.0 # via # edx-sga # xblock-poll -xmlsec==1.3.13 - # via - # -c requirements/edx/../constraints.txt - # python3-saml +xmlsec==1.3.14 + # via python3-saml xss-utils==0.6.0 # via -r requirements/edx/kernel.in -yarl==1.12.1 +yarl==1.14.0 # via aiohttp zipp==3.20.2 # via importlib-metadata diff --git a/requirements/edx/coverage.txt b/requirements/edx/coverage.txt index a1faf5e74025..45f2429cb2d1 100644 --- a/requirements/edx/coverage.txt +++ b/requirements/edx/coverage.txt @@ -6,13 +6,13 @@ # chardet==5.2.0 # via diff-cover -coverage==7.6.1 +coverage==7.6.2 # via -r requirements/edx/coverage.in diff-cover==9.2.0 # via -r requirements/edx/coverage.in jinja2==3.1.4 # via diff-cover -markupsafe==2.1.5 +markupsafe==3.0.1 # via jinja2 pluggy==1.5.0 # via diff-cover diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index 1bdd3736516b..13f3f6d5e637 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -12,16 +12,16 @@ accessible-pygments==0.0.5 # via # -r requirements/edx/doc.txt # pydata-sphinx-theme -acid-xblock==0.3.1 +acid-xblock==0.4.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -aiohappyeyeballs==2.4.0 +aiohappyeyeballs==2.4.3 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # aiohttp -aiohttp==3.10.6 +aiohttp==3.10.9 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -140,14 +140,14 @@ boto==2.49.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -boto3==1.35.27 +boto3==1.35.37 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # django-ses # fs-s3fs # ora2 -botocore==1.35.27 +botocore==1.35.37 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -157,7 +157,7 @@ bridgekeeper==0.9 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -build==1.2.2 +build==1.2.2.post1 # via # -r requirements/edx/../pip-tools.txt # pip-tools @@ -172,7 +172,7 @@ cachetools==5.5.0 # -r requirements/edx/testing.txt # google-auth # tox -camel-converter[pydantic]==3.1.2 +camel-converter[pydantic]==4.0.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -278,7 +278,7 @@ colorama==0.4.6 # via # -r requirements/edx/testing.txt # tox -coverage[toml]==7.6.1 +coverage[toml]==7.6.2 # via # -r requirements/edx/testing.txt # pytest-cov @@ -325,11 +325,11 @@ defusedxml==0.7.1 # social-auth-core diff-cover==9.2.0 # via -r requirements/edx/testing.txt -dill==0.3.8 +dill==0.3.9 # via # -r requirements/edx/testing.txt # pylint -distlib==0.3.8 +distlib==0.3.9 # via # -r requirements/edx/testing.txt # virtualenv @@ -544,7 +544,7 @@ django-sekizai==4.1.0 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # openedx-django-wiki -django-ses==4.1.1 +django-ses==4.2.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -627,7 +627,7 @@ djangorestframework-xml==2.0.0 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # edx-enterprise -dnspython==2.6.1 +dnspython==2.7.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -696,7 +696,7 @@ edx-codejail==3.4.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -edx-completion==4.7.1 +edx-completion==4.7.2 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -710,7 +710,7 @@ edx-django-sites-extensions==4.2.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -edx-django-utils==5.16.0 +edx-django-utils==6.0.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -754,9 +754,8 @@ edx-event-bus-redis==0.5.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -edx-i18n-tools==1.5.0 +edx-i18n-tools==1.6.3 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # ora2 @@ -814,7 +813,7 @@ edx-sga==0.25.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -edx-submissions==3.8.0 +edx-submissions==3.8.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -879,7 +878,7 @@ execnet==2.1.1 # pytest-xdist factory-boy==3.3.1 # via -r requirements/edx/testing.txt -faker==30.0.0 +faker==30.3.0 # via # -r requirements/edx/testing.txt # factory-boy @@ -943,7 +942,7 @@ glob2==0.7 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -google-api-core[grpc]==2.20.0 +google-api-core[grpc]==2.21.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -952,7 +951,7 @@ google-api-core[grpc]==2.20.0 # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.147.0 +google-api-python-client==2.149.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1005,17 +1004,17 @@ googleapis-common-protos==1.65.0 # -r requirements/edx/testing.txt # google-api-core # grpcio-status -grimp==3.4.1 +grimp==3.5 # via # -r requirements/edx/testing.txt # import-linter -grpcio==1.66.1 +grpcio==1.66.2 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # google-api-core # grpcio-status -grpcio-status==1.66.1 +grpcio-status==1.66.2 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1045,7 +1044,7 @@ httplib2==0.22.0 # google-auth-httplib2 httpretty==1.1.4 # via -r requirements/edx/testing.txt -icalendar==5.0.13 +icalendar==6.0.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1062,7 +1061,7 @@ imagesize==1.4.1 # via # -r requirements/edx/doc.txt # sphinx -import-linter==2.0 +import-linter==2.1 # via -r requirements/edx/testing.txt importlib-metadata==8.5.0 # via @@ -1087,7 +1086,7 @@ ipaddress==1.0.23 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -isodate==0.6.1 +isodate==0.7.2 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1136,7 +1135,7 @@ jsonschema==4.23.0 # drf-spectacular # optimizely-sdk # sphinxcontrib-openapi -jsonschema-specifications==2023.12.1 +jsonschema-specifications==2024.10.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1183,14 +1182,14 @@ lti-consumer-xblock==9.11.3 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -lxml==4.9.4 +lxml[html-clean]==5.3.0 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # edx-i18n-tools # edxval # lti-consumer-xblock + # lxml-html-clean # olxcleaner # openedx-calc # ora2 @@ -1198,6 +1197,11 @@ lxml==4.9.4 # python3-saml # xblock # xmlsec +lxml-html-clean==0.3.1 + # via + # -r requirements/edx/doc.txt + # -r requirements/edx/testing.txt + # lxml mailsnake==1.6.4 # via # -r requirements/edx/doc.txt @@ -1218,7 +1222,7 @@ markdown==3.3.7 # openedx-django-wiki # staff-graded-xblock # xblock-poll -markupsafe==2.1.5 +markupsafe==3.0.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1290,7 +1294,7 @@ mysqlclient==2.2.4 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -newrelic==9.13.0 +newrelic==10.0.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1368,7 +1372,7 @@ openedx-events==9.14.1 # edx-name-affirmation # event-tracking # ora2 -openedx-filters==1.10.0 +openedx-filters==1.11.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1379,7 +1383,7 @@ openedx-learning==0.13.1 # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -openedx-mongodbproxy==0.2.1 +openedx-mongodbproxy==0.2.2 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1407,7 +1411,7 @@ packaging==24.1 # snowflake-connector-python # sphinx # tox -pact-python==2.2.1 +pact-python==2.2.2 # via -r requirements/edx/testing.txt pansi==2020.7.3 # via @@ -1488,6 +1492,11 @@ prompt-toolkit==3.0.48 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # click-repl +propcache==0.2.0 + # via + # -r requirements/edx/doc.txt + # -r requirements/edx/testing.txt + # yarl proto-plus==1.24.0 # via # -r requirements/edx/doc.txt @@ -1542,7 +1551,7 @@ pycparser==2.22 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # cffi -pycryptodomex==3.20.0 +pycryptodomex==3.21.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1666,7 +1675,7 @@ pyproject-api==1.8.0 # via # -r requirements/edx/testing.txt # tox -pyproject-hooks==1.1.0 +pyproject-hooks==1.2.0 # via # -r requirements/edx/../pip-tools.txt # build @@ -1767,7 +1776,6 @@ pytz==2024.2 # edx-tincan-py35 # event-tracking # fs - # icalendar # interchange # olxcleaner # ora2 @@ -1799,7 +1807,7 @@ recommender-xblock==2.2.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -redis==5.0.8 +redis==5.1.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1869,7 +1877,7 @@ rules==3.5 # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.10.2 +s3transfer==0.10.3 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1926,7 +1934,6 @@ six==1.16.0 # fs-s3fs # html5lib # interchange - # isodate # libsass # optimizely-sdk # pact-python @@ -1986,7 +1993,7 @@ soupsieve==2.6 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # beautifulsoup4 -sphinx==8.0.2 +sphinx==8.1.0 # via # -r requirements/edx/doc.txt # pydata-sphinx-theme @@ -2087,7 +2094,7 @@ tinycss2==1.2.1 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # bleach -tomli==2.0.1 +tomli==2.0.2 # via django-stubs tomlkit==0.13.2 # via @@ -2095,7 +2102,7 @@ tomlkit==0.13.2 # -r requirements/edx/testing.txt # pylint # snowflake-connector-python -tox==4.20.0 +tox==4.21.2 # via -r requirements/edx/testing.txt tqdm==4.66.5 # via @@ -2103,7 +2110,7 @@ tqdm==4.66.5 # -r requirements/edx/testing.txt # nltk # openai -types-pytz==2024.2.0.20240913 +types-pytz==2024.2.0.20241003 # via django-stubs types-pyyaml==6.0.12.20240917 # via @@ -2122,6 +2129,7 @@ typing-extensions==4.12.2 # django-stubs-ext # djangorestframework-stubs # edx-opaque-keys + # faker # fastapi # grimp # import-linter @@ -2137,6 +2145,7 @@ tzdata==2024.2 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # celery + # icalendar # kombu unicodecsv==0.14.1 # via @@ -2165,7 +2174,7 @@ user-util==1.1.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -uvicorn==0.30.6 +uvicorn==0.31.1 # via # -r requirements/edx/testing.txt # pact-python @@ -2176,7 +2185,7 @@ vine==5.1.0 # amqp # celery # kombu -virtualenv==20.26.5 +virtualenv==20.26.6 # via # -r requirements/edx/testing.txt # tox @@ -2185,14 +2194,14 @@ voluptuous==0.15.2 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # ora2 -vulture==2.12 +vulture==2.13 # via -r requirements/edx/development.in walrus==0.9.4 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # edx-event-bus-redis -watchdog==5.0.2 +watchdog==5.0.3 # via # -r requirements/edx/development.in # -r requirements/edx/doc.txt @@ -2266,9 +2275,8 @@ xblock-utils==4.0.0 # -r requirements/edx/testing.txt # edx-sga # xblock-poll -xmlsec==1.3.13 +xmlsec==1.3.14 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # python3-saml @@ -2276,7 +2284,7 @@ xss-utils==0.6.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -yarl==1.12.1 +yarl==1.14.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt index 6f12d8046759..30736a21a35a 100644 --- a/requirements/edx/doc.txt +++ b/requirements/edx/doc.txt @@ -8,13 +8,13 @@ # via -r requirements/edx/base.txt accessible-pygments==0.0.5 # via pydata-sphinx-theme -acid-xblock==0.3.1 +acid-xblock==0.4.1 # via -r requirements/edx/base.txt -aiohappyeyeballs==2.4.0 +aiohappyeyeballs==2.4.3 # via # -r requirements/edx/base.txt # aiohttp -aiohttp==3.10.6 +aiohttp==3.10.9 # via # -r requirements/edx/base.txt # geoip2 @@ -102,13 +102,13 @@ bleach[css]==6.1.0 # xblock-poll boto==2.49.0 # via -r requirements/edx/base.txt -boto3==1.35.27 +boto3==1.35.37 # via # -r requirements/edx/base.txt # django-ses # fs-s3fs # ora2 -botocore==1.35.27 +botocore==1.35.37 # via # -r requirements/edx/base.txt # boto3 @@ -123,7 +123,7 @@ cachetools==5.5.0 # via # -r requirements/edx/base.txt # google-auth -camel-converter[pydantic]==3.1.2 +camel-converter[pydantic]==4.0.1 # via # -r requirements/edx/base.txt # meilisearch @@ -398,7 +398,7 @@ django-sekizai==4.1.0 # via # -r requirements/edx/base.txt # openedx-django-wiki -django-ses==4.1.1 +django-ses==4.2.0 # via -r requirements/edx/base.txt django-simple-history==3.4.0 # via @@ -459,7 +459,7 @@ djangorestframework-xml==2.0.0 # via # -r requirements/edx/base.txt # edx-enterprise -dnspython==2.6.1 +dnspython==2.7.0 # via # -r requirements/edx/base.txt # pymongo @@ -509,7 +509,7 @@ edx-celeryutils==1.3.0 # super-csv edx-codejail==3.4.1 # via -r requirements/edx/base.txt -edx-completion==4.7.1 +edx-completion==4.7.2 # via -r requirements/edx/base.txt edx-django-release-util==1.4.0 # via @@ -518,7 +518,7 @@ edx-django-release-util==1.4.0 # edxval edx-django-sites-extensions==4.2.0 # via -r requirements/edx/base.txt -edx-django-utils==5.16.0 +edx-django-utils==6.0.0 # via # -r requirements/edx/base.txt # django-config-models @@ -555,9 +555,8 @@ edx-event-bus-kafka==5.8.1 # via -r requirements/edx/base.txt edx-event-bus-redis==0.5.0 # via -r requirements/edx/base.txt -edx-i18n-tools==1.5.0 +edx-i18n-tools==1.6.3 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # ora2 edx-milestones==0.6.0 @@ -598,7 +597,7 @@ edx-search==4.0.0 # via -r requirements/edx/base.txt edx-sga==0.25.0 # via -r requirements/edx/base.txt -edx-submissions==3.8.0 +edx-submissions==3.8.1 # via # -r requirements/edx/base.txt # ora2 @@ -683,7 +682,7 @@ gitpython==3.1.43 # via -r requirements/edx/doc.in glob2==0.7 # via -r requirements/edx/base.txt -google-api-core[grpc]==2.20.0 +google-api-core[grpc]==2.21.0 # via # -r requirements/edx/base.txt # firebase-admin @@ -691,7 +690,7 @@ google-api-core[grpc]==2.20.0 # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.147.0 +google-api-python-client==2.149.0 # via # -r requirements/edx/base.txt # firebase-admin @@ -735,12 +734,12 @@ googleapis-common-protos==1.65.0 # -r requirements/edx/base.txt # google-api-core # grpcio-status -grpcio==1.66.1 +grpcio==1.66.2 # via # -r requirements/edx/base.txt # google-api-core # grpcio-status -grpcio-status==1.66.1 +grpcio-status==1.66.2 # via # -r requirements/edx/base.txt # google-api-core @@ -757,7 +756,7 @@ httplib2==0.22.0 # -r requirements/edx/base.txt # google-api-python-client # google-auth-httplib2 -icalendar==5.0.13 +icalendar==6.0.0 # via -r requirements/edx/base.txt idna==3.10 # via @@ -781,7 +780,7 @@ interchange==2021.0.4 # py2neo ipaddress==1.0.23 # via -r requirements/edx/base.txt -isodate==0.6.1 +isodate==0.7.2 # via # -r requirements/edx/base.txt # python3-saml @@ -818,7 +817,7 @@ jsonschema==4.23.0 # drf-spectacular # optimizely-sdk # sphinxcontrib-openapi -jsonschema-specifications==2023.12.1 +jsonschema-specifications==2024.10.1 # via # -r requirements/edx/base.txt # jsonschema @@ -850,19 +849,23 @@ loremipsum==1.0.5 # ora2 lti-consumer-xblock==9.11.3 # via -r requirements/edx/base.txt -lxml==4.9.4 +lxml[html-clean]==5.3.0 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # edx-i18n-tools # edxval # lti-consumer-xblock + # lxml-html-clean # olxcleaner # openedx-calc # ora2 # python3-saml # xblock # xmlsec +lxml-html-clean==0.3.1 + # via + # -r requirements/edx/base.txt + # lxml mailsnake==1.6.4 # via -r requirements/edx/base.txt mako==1.3.5 @@ -879,7 +882,7 @@ markdown==3.3.7 # openedx-django-wiki # staff-graded-xblock # xblock-poll -markupsafe==2.1.5 +markupsafe==3.0.1 # via # -r requirements/edx/base.txt # chem @@ -923,7 +926,7 @@ multidict==6.1.0 # yarl mysqlclient==2.2.4 # via -r requirements/edx/base.txt -newrelic==9.13.0 +newrelic==10.0.0 # via # -r requirements/edx/base.txt # edx-django-utils @@ -979,7 +982,7 @@ openedx-events==9.14.1 # edx-name-affirmation # event-tracking # ora2 -openedx-filters==1.10.0 +openedx-filters==1.11.0 # via # -r requirements/edx/base.txt # lti-consumer-xblock @@ -988,7 +991,7 @@ openedx-learning==0.13.1 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt -openedx-mongodbproxy==0.2.1 +openedx-mongodbproxy==0.2.2 # via -r requirements/edx/base.txt optimizely-sdk==4.1.1 # via @@ -1057,6 +1060,10 @@ prompt-toolkit==3.0.48 # via # -r requirements/edx/base.txt # click-repl +propcache==0.2.0 + # via + # -r requirements/edx/base.txt + # yarl proto-plus==1.24.0 # via # -r requirements/edx/base.txt @@ -1094,7 +1101,7 @@ pycparser==2.22 # via # -r requirements/edx/base.txt # cffi -pycryptodomex==3.20.0 +pycryptodomex==3.21.0 # via # -r requirements/edx/base.txt # edx-proctoring @@ -1222,7 +1229,6 @@ pytz==2024.2 # edx-tincan-py35 # event-tracking # fs - # icalendar # interchange # olxcleaner # ora2 @@ -1245,7 +1251,7 @@ random2==1.0.2 # via -r requirements/edx/base.txt recommender-xblock==2.2.1 # via -r requirements/edx/base.txt -redis==5.0.8 +redis==5.1.1 # via # -r requirements/edx/base.txt # walrus @@ -1305,7 +1311,7 @@ rules==3.5 # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.10.2 +s3transfer==0.10.3 # via # -r requirements/edx/base.txt # boto3 @@ -1350,7 +1356,6 @@ six==1.16.0 # fs-s3fs # html5lib # interchange - # isodate # libsass # optimizely-sdk # pansi @@ -1394,7 +1399,7 @@ soupsieve==2.6 # via # -r requirements/edx/base.txt # beautifulsoup4 -sphinx==8.0.2 +sphinx==8.1.0 # via # -r requirements/edx/doc.in # pydata-sphinx-theme @@ -1489,6 +1494,7 @@ tzdata==2024.2 # via # -r requirements/edx/base.txt # celery + # icalendar # kombu unicodecsv==0.14.1 # via @@ -1524,7 +1530,7 @@ walrus==0.9.4 # via # -r requirements/edx/base.txt # edx-event-bus-redis -watchdog==5.0.2 +watchdog==5.0.3 # via -r requirements/edx/base.txt wcwidth==0.2.13 # via @@ -1576,14 +1582,13 @@ xblock-utils==4.0.0 # -r requirements/edx/base.txt # edx-sga # xblock-poll -xmlsec==1.3.13 +xmlsec==1.3.14 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # python3-saml xss-utils==0.6.0 # via -r requirements/edx/base.txt -yarl==1.12.1 +yarl==1.14.0 # via # -r requirements/edx/base.txt # aiohttp diff --git a/requirements/edx/paver.txt b/requirements/edx/paver.txt index a0b1896919d4..2d8f510e0307 100644 --- a/requirements/edx/paver.txt +++ b/requirements/edx/paver.txt @@ -10,7 +10,7 @@ charset-normalizer==2.0.12 # via # -c requirements/edx/../constraints.txt # requests -dnspython==2.6.1 +dnspython==2.7.0 # via pymongo edx-opaque-keys==2.11.0 # via -r requirements/edx/paver.in @@ -22,7 +22,7 @@ libsass==0.10.0 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/paver.in -markupsafe==2.1.5 +markupsafe==3.0.1 # via -r requirements/edx/paver.in mock==5.1.0 # via -r requirements/edx/paver.in @@ -61,7 +61,7 @@ urllib3==1.26.20 # via # -c requirements/edx/../constraints.txt # requests -watchdog==5.0.2 +watchdog==5.0.3 # via -r requirements/edx/paver.in wrapt==1.16.0 # via -r requirements/edx/paver.in diff --git a/requirements/edx/semgrep.txt b/requirements/edx/semgrep.txt index 102289def277..174fa87d081d 100644 --- a/requirements/edx/semgrep.txt +++ b/requirements/edx/semgrep.txt @@ -15,7 +15,7 @@ boltons==21.0.0 # face # glom # semgrep -bracex==2.5 +bracex==2.5.post1 # via wcmatch certifi==2024.8.30 # via requests @@ -42,7 +42,7 @@ idna==3.10 # via requests jsonschema==4.23.0 # via semgrep -jsonschema-specifications==2023.12.1 +jsonschema-specifications==2024.10.1 # via jsonschema markdown-it-py==3.0.0 # via rich @@ -60,7 +60,7 @@ referencing==0.35.1 # jsonschema-specifications requests==2.32.3 # via semgrep -rich==13.8.1 +rich==13.9.2 # via semgrep rpds-py==0.20.0 # via @@ -72,7 +72,7 @@ ruamel-yaml-clib==0.2.8 # via ruamel-yaml semgrep==1.52.0 # via -r requirements/edx/semgrep.in -tomli==2.0.1 +tomli==2.0.2 # via semgrep typing-extensions==4.12.2 # via semgrep diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index d3b14a6f4373..473da125341f 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -6,13 +6,13 @@ # -e git+https://github.com/anupdhabarde/edx-proctoring-proctortrack.git@31c6c9923a51c903ae83760ecbbac191363aa2a2#egg=edx_proctoring_proctortrack # via -r requirements/edx/base.txt -acid-xblock==0.3.1 +acid-xblock==0.4.1 # via -r requirements/edx/base.txt -aiohappyeyeballs==2.4.0 +aiohappyeyeballs==2.4.3 # via # -r requirements/edx/base.txt # aiohttp -aiohttp==3.10.6 +aiohttp==3.10.9 # via # -r requirements/edx/base.txt # geoip2 @@ -102,13 +102,13 @@ bleach[css]==6.1.0 # xblock-poll boto==2.49.0 # via -r requirements/edx/base.txt -boto3==1.35.27 +boto3==1.35.37 # via # -r requirements/edx/base.txt # django-ses # fs-s3fs # ora2 -botocore==1.35.27 +botocore==1.35.37 # via # -r requirements/edx/base.txt # boto3 @@ -124,7 +124,7 @@ cachetools==5.5.0 # -r requirements/edx/base.txt # google-auth # tox -camel-converter[pydantic]==3.1.2 +camel-converter[pydantic]==4.0.1 # via # -r requirements/edx/base.txt # meilisearch @@ -209,7 +209,7 @@ codejail-includes==1.0.0 # via -r requirements/edx/base.txt colorama==0.4.6 # via tox -coverage[toml]==7.6.1 +coverage[toml]==7.6.2 # via # -r requirements/edx/coverage.txt # pytest-cov @@ -247,9 +247,9 @@ defusedxml==0.7.1 # social-auth-core diff-cover==9.2.0 # via -r requirements/edx/coverage.txt -dill==0.3.8 +dill==0.3.9 # via pylint -distlib==0.3.8 +distlib==0.3.9 # via virtualenv django==4.2.16 # via @@ -427,7 +427,7 @@ django-sekizai==4.1.0 # via # -r requirements/edx/base.txt # openedx-django-wiki -django-ses==4.1.1 +django-ses==4.2.0 # via -r requirements/edx/base.txt django-simple-history==3.4.0 # via @@ -488,7 +488,7 @@ djangorestframework-xml==2.0.0 # via # -r requirements/edx/base.txt # edx-enterprise -dnspython==2.6.1 +dnspython==2.7.0 # via # -r requirements/edx/base.txt # pymongo @@ -533,7 +533,7 @@ edx-celeryutils==1.3.0 # super-csv edx-codejail==3.4.1 # via -r requirements/edx/base.txt -edx-completion==4.7.1 +edx-completion==4.7.2 # via -r requirements/edx/base.txt edx-django-release-util==1.4.0 # via @@ -542,7 +542,7 @@ edx-django-release-util==1.4.0 # edxval edx-django-sites-extensions==4.2.0 # via -r requirements/edx/base.txt -edx-django-utils==5.16.0 +edx-django-utils==6.0.0 # via # -r requirements/edx/base.txt # django-config-models @@ -579,9 +579,8 @@ edx-event-bus-kafka==5.8.1 # via -r requirements/edx/base.txt edx-event-bus-redis==0.5.0 # via -r requirements/edx/base.txt -edx-i18n-tools==1.5.0 +edx-i18n-tools==1.6.3 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # ora2 edx-lint==5.4.0 @@ -624,7 +623,7 @@ edx-search==4.0.0 # via -r requirements/edx/base.txt edx-sga==0.25.0 # via -r requirements/edx/base.txt -edx-submissions==3.8.0 +edx-submissions==3.8.1 # via # -r requirements/edx/base.txt # ora2 @@ -674,7 +673,7 @@ execnet==2.1.1 # via pytest-xdist factory-boy==3.3.1 # via -r requirements/edx/testing.in -faker==30.0.0 +faker==30.3.0 # via factory-boy fastapi==0.115.0 # via pact-python @@ -717,7 +716,7 @@ geoip2==4.8.0 # via -r requirements/edx/base.txt glob2==0.7 # via -r requirements/edx/base.txt -google-api-core[grpc]==2.20.0 +google-api-core[grpc]==2.21.0 # via # -r requirements/edx/base.txt # firebase-admin @@ -725,7 +724,7 @@ google-api-core[grpc]==2.20.0 # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.147.0 +google-api-python-client==2.149.0 # via # -r requirements/edx/base.txt # firebase-admin @@ -769,14 +768,14 @@ googleapis-common-protos==1.65.0 # -r requirements/edx/base.txt # google-api-core # grpcio-status -grimp==3.4.1 +grimp==3.5 # via import-linter -grpcio==1.66.1 +grpcio==1.66.2 # via # -r requirements/edx/base.txt # google-api-core # grpcio-status -grpcio-status==1.66.1 +grpcio-status==1.66.2 # via # -r requirements/edx/base.txt # google-api-core @@ -797,7 +796,7 @@ httplib2==0.22.0 # google-auth-httplib2 httpretty==1.1.4 # via -r requirements/edx/testing.in -icalendar==5.0.13 +icalendar==6.0.0 # via -r requirements/edx/base.txt idna==3.10 # via @@ -807,7 +806,7 @@ idna==3.10 # requests # snowflake-connector-python # yarl -import-linter==2.0 +import-linter==2.1 # via -r requirements/edx/testing.in importlib-metadata==8.5.0 # via -r requirements/edx/base.txt @@ -824,7 +823,7 @@ interchange==2021.0.4 # py2neo ipaddress==1.0.23 # via -r requirements/edx/base.txt -isodate==0.6.1 +isodate==0.7.2 # via # -r requirements/edx/base.txt # python3-saml @@ -865,7 +864,7 @@ jsonschema==4.23.0 # -r requirements/edx/base.txt # drf-spectacular # optimizely-sdk -jsonschema-specifications==2023.12.1 +jsonschema-specifications==2024.10.1 # via # -r requirements/edx/base.txt # jsonschema @@ -899,13 +898,13 @@ loremipsum==1.0.5 # ora2 lti-consumer-xblock==9.11.3 # via -r requirements/edx/base.txt -lxml==4.9.4 +lxml[html-clean]==5.3.0 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # edx-i18n-tools # edxval # lti-consumer-xblock + # lxml-html-clean # olxcleaner # openedx-calc # ora2 @@ -913,6 +912,10 @@ lxml==4.9.4 # python3-saml # xblock # xmlsec +lxml-html-clean==0.3.1 + # via + # -r requirements/edx/base.txt + # lxml mailsnake==1.6.4 # via -r requirements/edx/base.txt mako==1.3.5 @@ -929,7 +932,7 @@ markdown==3.3.7 # openedx-django-wiki # staff-graded-xblock # xblock-poll -markupsafe==2.1.5 +markupsafe==3.0.1 # via # -r requirements/edx/base.txt # -r requirements/edx/coverage.txt @@ -974,7 +977,7 @@ multidict==6.1.0 # yarl mysqlclient==2.2.4 # via -r requirements/edx/base.txt -newrelic==9.13.0 +newrelic==10.0.0 # via # -r requirements/edx/base.txt # edx-django-utils @@ -1030,7 +1033,7 @@ openedx-events==9.14.1 # edx-name-affirmation # event-tracking # ora2 -openedx-filters==1.10.0 +openedx-filters==1.11.0 # via # -r requirements/edx/base.txt # lti-consumer-xblock @@ -1039,7 +1042,7 @@ openedx-learning==0.13.1 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt -openedx-mongodbproxy==0.2.1 +openedx-mongodbproxy==0.2.2 # via -r requirements/edx/base.txt optimizely-sdk==4.1.1 # via @@ -1057,7 +1060,7 @@ packaging==24.1 # pytest # snowflake-connector-python # tox -pact-python==2.2.1 +pact-python==2.2.2 # via -r requirements/edx/testing.in pansi==2020.7.3 # via @@ -1119,6 +1122,10 @@ prompt-toolkit==3.0.48 # via # -r requirements/edx/base.txt # click-repl +propcache==0.2.0 + # via + # -r requirements/edx/base.txt + # yarl proto-plus==1.24.0 # via # -r requirements/edx/base.txt @@ -1164,7 +1171,7 @@ pycparser==2.22 # via # -r requirements/edx/base.txt # cffi -pycryptodomex==3.20.0 +pycryptodomex==3.21.0 # via # -r requirements/edx/base.txt # edx-proctoring @@ -1340,7 +1347,6 @@ pytz==2024.2 # edx-tincan-py35 # event-tracking # fs - # icalendar # interchange # olxcleaner # ora2 @@ -1362,7 +1368,7 @@ random2==1.0.2 # via -r requirements/edx/base.txt recommender-xblock==2.2.1 # via -r requirements/edx/base.txt -redis==5.0.8 +redis==5.1.1 # via # -r requirements/edx/base.txt # walrus @@ -1422,7 +1428,7 @@ rules==3.5 # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.10.2 +s3transfer==0.10.3 # via # -r requirements/edx/base.txt # boto3 @@ -1470,7 +1476,6 @@ six==1.16.0 # fs-s3fs # html5lib # interchange - # isodate # libsass # optimizely-sdk # pact-python @@ -1554,7 +1559,7 @@ tomlkit==0.13.2 # -r requirements/edx/base.txt # pylint # snowflake-connector-python -tox==4.20.0 +tox==4.21.2 # via -r requirements/edx/testing.in tqdm==4.66.5 # via @@ -1566,6 +1571,7 @@ typing-extensions==4.12.2 # -r requirements/edx/base.txt # django-countries # edx-opaque-keys + # faker # fastapi # grimp # import-linter @@ -1578,6 +1584,7 @@ tzdata==2024.2 # via # -r requirements/edx/base.txt # celery + # icalendar # kombu unicodecsv==0.14.1 # via @@ -1601,7 +1608,7 @@ urllib3==1.26.20 # requests user-util==1.1.0 # via -r requirements/edx/base.txt -uvicorn==0.30.6 +uvicorn==0.31.1 # via pact-python vine==5.1.0 # via @@ -1609,7 +1616,7 @@ vine==5.1.0 # amqp # celery # kombu -virtualenv==20.26.5 +virtualenv==20.26.6 # via tox voluptuous==0.15.2 # via @@ -1619,7 +1626,7 @@ walrus==0.9.4 # via # -r requirements/edx/base.txt # edx-event-bus-redis -watchdog==5.0.2 +watchdog==5.0.3 # via -r requirements/edx/base.txt wcwidth==0.2.13 # via @@ -1673,14 +1680,13 @@ xblock-utils==4.0.0 # -r requirements/edx/base.txt # edx-sga # xblock-poll -xmlsec==1.3.13 +xmlsec==1.3.14 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # python3-saml xss-utils==0.6.0 # via -r requirements/edx/base.txt -yarl==1.12.1 +yarl==1.14.0 # via # -r requirements/edx/base.txt # aiohttp diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 5bcb2aa55084..110663ff6ab3 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,7 +4,7 @@ # # make upgrade # -build==1.2.2 +build==1.2.2.post1 # via pip-tools click==8.1.6 # via @@ -14,7 +14,7 @@ packaging==24.1 # via build pip-tools==7.4.1 # via -r requirements/pip-tools.in -pyproject-hooks==1.1.0 +pyproject-hooks==1.2.0 # via # build # pip-tools diff --git a/scripts/structures_pruning/requirements/base.txt b/scripts/structures_pruning/requirements/base.txt index b80c660b8749..a3fcacad2f7e 100644 --- a/scripts/structures_pruning/requirements/base.txt +++ b/scripts/structures_pruning/requirements/base.txt @@ -11,7 +11,7 @@ click==8.1.6 # click-log click-log==0.4.0 # via -r scripts/structures_pruning/requirements/base.in -dnspython==2.6.1 +dnspython==2.7.0 # via pymongo edx-opaque-keys==2.11.0 # via -r scripts/structures_pruning/requirements/base.in diff --git a/scripts/structures_pruning/requirements/testing.txt b/scripts/structures_pruning/requirements/testing.txt index 8be2e15973d0..94c6ac6982f3 100644 --- a/scripts/structures_pruning/requirements/testing.txt +++ b/scripts/structures_pruning/requirements/testing.txt @@ -12,7 +12,7 @@ click-log==0.4.0 # via -r scripts/structures_pruning/requirements/base.txt ddt==1.7.2 # via -r scripts/structures_pruning/requirements/testing.in -dnspython==2.6.1 +dnspython==2.7.0 # via # -r scripts/structures_pruning/requirements/base.txt # pymongo diff --git a/scripts/user_retirement/requirements/base.txt b/scripts/user_retirement/requirements/base.txt index 9f57da73d0c2..576fa342c385 100644 --- a/scripts/user_retirement/requirements/base.txt +++ b/scripts/user_retirement/requirements/base.txt @@ -10,9 +10,9 @@ attrs==24.2.0 # via zeep backoff==2.2.1 # via -r scripts/user_retirement/requirements/base.in -boto3==1.35.27 +boto3==1.35.37 # via -r scripts/user_retirement/requirements/base.in -botocore==1.35.27 +botocore==1.35.37 # via # boto3 # s3transfer @@ -46,13 +46,13 @@ django-crum==0.7.9 # via edx-django-utils django-waffle==4.1.0 # via edx-django-utils -edx-django-utils==5.16.0 +edx-django-utils==6.0.0 # via edx-rest-api-client edx-rest-api-client==6.0.0 # via -r scripts/user_retirement/requirements/base.in -google-api-core==2.20.0 +google-api-core==2.21.0 # via google-api-python-client -google-api-python-client==2.147.0 +google-api-python-client==2.149.0 # via -r scripts/user_retirement/requirements/base.in google-auth==2.35.0 # via @@ -69,7 +69,7 @@ httplib2==0.22.0 # google-auth-httplib2 idna==3.10 # via requests -isodate==0.6.1 +isodate==0.7.2 # via zeep jenkinsapi==0.3.13 # via -r scripts/user_retirement/requirements/base.in @@ -77,13 +77,11 @@ jmespath==1.0.1 # via # boto3 # botocore -lxml==4.9.4 - # via - # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt - # zeep +lxml==5.3.0 + # via zeep more-itertools==10.5.0 # via simple-salesforce -newrelic==9.13.0 +newrelic==10.0.0 # via edx-django-utils pbr==6.1.0 # via stevedore @@ -138,7 +136,7 @@ requests-toolbelt==1.0.0 # via zeep rsa==4.9 # via google-auth -s3transfer==0.10.2 +s3transfer==0.10.3 # via boto3 simple-salesforce==1.12.6 # via -r scripts/user_retirement/requirements/base.in @@ -146,7 +144,6 @@ simplejson==3.19.3 # via -r scripts/user_retirement/requirements/base.in six==1.16.0 # via - # isodate # jenkinsapi # python-dateutil sqlparse==0.5.1 diff --git a/scripts/user_retirement/requirements/testing.txt b/scripts/user_retirement/requirements/testing.txt index d5aac1cd062f..6a165d7356ca 100644 --- a/scripts/user_retirement/requirements/testing.txt +++ b/scripts/user_retirement/requirements/testing.txt @@ -14,11 +14,11 @@ attrs==24.2.0 # zeep backoff==2.2.1 # via -r scripts/user_retirement/requirements/base.txt -boto3==1.35.27 +boto3==1.35.37 # via # -r scripts/user_retirement/requirements/base.txt # moto -botocore==1.35.27 +botocore==1.35.37 # via # -r scripts/user_retirement/requirements/base.txt # boto3 @@ -66,17 +66,17 @@ django-waffle==4.1.0 # via # -r scripts/user_retirement/requirements/base.txt # edx-django-utils -edx-django-utils==5.16.0 +edx-django-utils==6.0.0 # via # -r scripts/user_retirement/requirements/base.txt # edx-rest-api-client edx-rest-api-client==6.0.0 # via -r scripts/user_retirement/requirements/base.txt -google-api-core==2.20.0 +google-api-core==2.21.0 # via # -r scripts/user_retirement/requirements/base.txt # google-api-python-client -google-api-python-client==2.147.0 +google-api-python-client==2.149.0 # via -r scripts/user_retirement/requirements/base.txt google-auth==2.35.0 # via @@ -103,7 +103,7 @@ idna==3.10 # requests iniconfig==2.0.0 # via pytest -isodate==0.6.1 +isodate==0.7.2 # via # -r scripts/user_retirement/requirements/base.txt # zeep @@ -116,11 +116,11 @@ jmespath==1.0.1 # -r scripts/user_retirement/requirements/base.txt # boto3 # botocore -lxml==4.9.4 +lxml==5.3.0 # via # -r scripts/user_retirement/requirements/base.txt # zeep -markupsafe==2.1.5 +markupsafe==3.0.1 # via # jinja2 # werkzeug @@ -132,7 +132,7 @@ more-itertools==10.5.0 # simple-salesforce moto==4.2.14 # via -r scripts/user_retirement/requirements/testing.in -newrelic==9.13.0 +newrelic==10.0.0 # via # -r scripts/user_retirement/requirements/base.txt # edx-django-utils @@ -235,7 +235,7 @@ rsa==4.9 # via # -r scripts/user_retirement/requirements/base.txt # google-auth -s3transfer==0.10.2 +s3transfer==0.10.3 # via # -r scripts/user_retirement/requirements/base.txt # boto3 @@ -246,7 +246,6 @@ simplejson==3.19.3 six==1.16.0 # via # -r scripts/user_retirement/requirements/base.txt - # isodate # jenkinsapi # python-dateutil sqlparse==0.5.1 @@ -275,7 +274,7 @@ urllib3==1.26.20 # responses werkzeug==3.0.4 # via moto -xmltodict==0.13.0 +xmltodict==0.14.1 # via moto zeep==4.2.1 # via From a39367b11a4880e124c1cd384b5c486484519414 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Oct 2024 19:41:46 +0000 Subject: [PATCH 03/24] fix(deps): update dependency @edx/frontend-component-cookie-policy-banner to v2.6.0 --- package-lock.json | 1110 +++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 1032 insertions(+), 80 deletions(-) diff --git a/package-lock.json b/package-lock.json index 82a6611d3abb..063a004ed812 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@edx/brand-edx.org": "^2.0.7", "@edx/edx-bootstrap": "1.0.4", "@edx/edx-proctoring": "^4.18.1", - "@edx/frontend-component-cookie-policy-banner": "2.2.0", + "@edx/frontend-component-cookie-policy-banner": "2.6.0", "@edx/paragon": "2.6.4", "@edx/studio-frontend": "^2.1.0", "babel-loader": "^9.1.3", @@ -1883,6 +1883,25 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.25.7.tgz", + "integrity": "sha512-gMmIEhg35sXk9Te5qbGp3W9YKrvLt3HV658/d3odWrHSqT0JeG5OzsJWFHRLiOohRyjRsJc/x03DhJm3i8VJxg==", + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, "node_modules/@babel/runtime/node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", @@ -2106,14 +2125,16 @@ } }, "node_modules/@edx/frontend-component-cookie-policy-banner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@edx/frontend-component-cookie-policy-banner/-/frontend-component-cookie-policy-banner-2.2.0.tgz", - "integrity": "sha512-Ye5tL8dU1v77Vtva9QkrgNG0I50sR317OK51/aQwHn50Aoq45FML29dbP8E5dy36QSqvF99bNFA4rptLigiTGQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-component-cookie-policy-banner/-/frontend-component-cookie-policy-banner-2.6.0.tgz", + "integrity": "sha512-Em/7v41BtVJsHWyaxGOgefif3YOe2Bw8rDZO6Rci40Mcx035Q7L0IlyG3Sxz+GKQIoSOJDYf+EfODS5i01AJOg==", + "license": "AGPL-3.0", "dependencies": { "@edx/brand-edx.org": "2.0.3", - "@edx/paragon": "^12.0.5", + "@openedx/paragon": "^21.13.1", "babel-preset-minify": "^0.5.0", "classnames": "^2.3.1", + "identity-obj-proxy": "^3.0.0", "prop-types": "^15.6.1", "type-fest": "^2.14.0", "universal-cookie": "^4.0.0" @@ -2126,36 +2147,83 @@ "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/@edx/brand-edx.org": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@edx/brand-edx.org/-/brand-edx.org-2.0.3.tgz", - "integrity": "sha512-QRmq2su1Xy+9GhY3NRZ+WdjtYWHmgfuKbVCW2skxgfgW9Q6kea8L6LrgigfrZtW+kQq/KdX2tVJcYBkB9xALtQ==" - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/@edx/paragon": { - "version": "12.8.0", - "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-12.8.0.tgz", - "integrity": "sha512-gJVnozu4V1e2PCI0lFICvnrs2yi0ZzcaO5gJB9OjB1Pzf5GXpkKNWLtdTwjgp4fvzL9w4sqvyB30apbQzWW8yw==", - "dependencies": { - "@fortawesome/fontawesome-svg-core": "^1.2.30", - "@fortawesome/free-solid-svg-icons": "^5.14.0", - "@fortawesome/react-fontawesome": "^0.1.11", - "airbnb-prop-types": "^2.12.0", - "bootstrap": "^4.4.1", - "classnames": "^2.2.6", + "integrity": "sha512-QRmq2su1Xy+9GhY3NRZ+WdjtYWHmgfuKbVCW2skxgfgW9Q6kea8L6LrgigfrZtW+kQq/KdX2tVJcYBkB9xALtQ==", + "license": "UNLICENSED" + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/@openedx/paragon": { + "version": "21.13.1", + "resolved": "https://registry.npmjs.org/@openedx/paragon/-/paragon-21.13.1.tgz", + "integrity": "sha512-sLL+Z3ZWIRM6x+OrKZV0S7/SQpEcSeRcDm7E3FzhsnAWudsJCTELvSW+84uy/8dwV7mJhttsBPqQEtNafbCyYA==", + "license": "Apache-2.0", + "workspaces": [ + "example", + "component-generator", + "www", + "icons", + "dependent-usage-analyzer" + ], + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.1.1", + "@fortawesome/react-fontawesome": "^0.1.18", + "@popperjs/core": "^2.11.4", + "bootstrap": "^4.6.2", + "chalk": "^4.1.2", + "child_process": "^1.0.2", + "classnames": "^2.3.1", "email-prop-type": "^3.0.0", + "file-selector": "^0.6.0", "font-awesome": "^4.7.0", - "mailto-link": "^1.0.0", - "prop-types": "^15.7.2", - "react-bootstrap": "^1.2.2", - "react-focus-on": "^3.5.0", + "glob": "^8.0.3", + "inquirer": "^8.2.5", + "lodash.uniqby": "^4.7.0", + "mailto-link": "^2.0.0", + "prop-types": "^15.8.1", + "react-bootstrap": "^1.6.5", + "react-colorful": "^5.6.1", + "react-dropzone": "^14.2.1", + "react-focus-on": "^3.5.4", + "react-imask": "^7.1.3", + "react-loading-skeleton": "^3.1.0", + "react-popper": "^2.2.5", "react-proptype-conditional-require": "^1.0.4", - "react-responsive": "^6.1.1", - "react-table": "^7.6.1", - "react-transition-group": "^4.0.0", - "sanitize-html": "^1.20.0", - "tabbable": "^4.0.0" + "react-responsive": "^8.2.0", + "react-table": "^7.7.0", + "react-transition-group": "^4.4.2", + "tabbable": "^5.3.3", + "uncontrollable": "^7.2.1", + "uuid": "^9.0.0" + }, + "bin": { + "paragon": "bin/paragon-scripts.js" }, "peerDependencies": { - "prop-types": "^15.7.2", - "react": "^16.8.6", - "react-dom": "^16.8.6" + "react": "^16.8.6 || ^17.0.0", + "react-dom": "^16.8.6 || ^17.0.0", + "react-intl": "^5.25.1 || ^6.4.0" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/attr-accept": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.4.tgz", + "integrity": "sha512-2pA6xFIbdTUDCAwjN8nQwI+842VwzbDUXO2IYlpPXQIORgKnavorcr4Ce3rwh+zsNg9zK7QPsdvDj3Lum4WX4w==", + "license": "MIT", + "engines": { + "node": ">=4" } }, "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/bootstrap": { @@ -2172,15 +2240,81 @@ "url": "https://opencollective.com/bootstrap" } ], + "license": "MIT", "peerDependencies": { "jquery": "1.9.1 - 3", "popper.js": "^1.16.1" } }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -2190,24 +2324,206 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/email-prop-type/-/email-prop-type-3.0.1.tgz", "integrity": "sha512-tONZGMEOOkadp5OBftuVXU8DsceWmINxYK+pqPFB4LT5ODjrPX/esel3WGqbV7d6in5/MnZE4n4QcqOr4gh7dg==", + "license": "MIT", "dependencies": { "email-validator": "^2.0.4" } }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/intl-messageformat": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.6.0.tgz", + "integrity": "sha512-AYKl/DY1nl75pJU8EK681JOVL40uQTNJe3yEMXKfydDFoz+5hNrM/PqjchueSMKGKCZKBVgeexqZwy3uC2B36Q==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "2.1.0", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.9", + "tslib": "^2.4.0" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/mailto-link": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mailto-link/-/mailto-link-2.0.0.tgz", + "integrity": "sha512-b5FErkZ4t6mpH1IFZSw7Mm2IQHXQ2R0/5Q4xd7Rv8dVkWvE54mFG/UW7HjfFazXFjXTNsM+dSX2tTeIDrV9K9A==", + "license": "MIT", + "dependencies": { + "assert-ok": "~1.0.0", + "cast-array": "~1.0.1", + "object-filter": "~1.0.2", + "query-string": "~7.0.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "license": "ISC" + }, "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/query-string": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", + "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/react-dropzone": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.9.tgz", + "integrity": "sha512-jRZsMC7h48WONsOLHcmhyn3cRWJoIPQjPApvt/sJVfnYaB3Qltn025AoRTTJaj4WdmmgmLl6tUQg1s0wOhpodQ==", + "license": "MIT", + "dependencies": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/react-intl": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.7.2.tgz", + "integrity": "sha512-v/lvAORTE70welhzqoIi1YI1yHvGE4/QX4W3JYNZoqRxH8ab8Q/Ed4Zem/ZVPZJN4byQ52U+2GESLy0zvY6IBw==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "2.1.0", + "@formatjs/icu-messageformat-parser": "2.7.9", + "@formatjs/intl": "2.10.7", + "@formatjs/intl-displaynames": "6.6.9", + "@formatjs/intl-listformat": "7.5.8", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/react": "16 || 17 || 18", + "hoist-non-react-statics": "^3.3.2", + "intl-messageformat": "10.6.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "react": "^16.6.0 || 17 || 18", + "typescript": "^4.7 || 5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -2219,6 +2535,62 @@ "react-dom": ">=16.6.0" } }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@edx/mockprock": { "version": "1.0.2", "resolved": "git+ssh://git@github.com/openedx/mockprock.git#3ad18c6888e6521e9bf7a4df0db6f8579b928235", @@ -3138,35 +3510,139 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "0.2.36", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", - "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==", - "hasInstallScript": true, - "engines": { - "node": ">=6" + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.1.0.tgz", + "integrity": "sha512-SE2V2PE03K9U/YQZ3nxEOysRkQ/CfSwLHR789Uk9N0PTiWT6I+17UTDI97zYEwC1mbnjefqmtjbL8nunjPwGjw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", + "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.7.9", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.9.tgz", + "integrity": "sha512-9Z5buDRMsTbplXknvRlDmnpWhZrayNVcVvkH0+SSz8Ll4XD/7Tcn8m1IjxM3iBJSwQbxwxb7/g0Fkx3d4j2osw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "2.1.0", + "@formatjs/icu-skeleton-parser": "1.8.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.3.tgz", + "integrity": "sha512-TsKAP013ayZFbWWR2KWy+f9QVZh0yDFTPK3yE4OqU2gnzafvmKTodRtJLVpfZmpXWJ5y7BWD1AsyT14mcbLzig==", + "license": "MIT", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "2.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl": { + "version": "2.10.7", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.7.tgz", + "integrity": "sha512-26rNxo2nwQbbsVkV54ngml9XIA7bBzfQmELG6FFFF8eKzqzFrLKZzF8JBoBpPHgML4HKEUbGCQaBaARpKCN/sw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "2.1.0", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.9", + "@formatjs/intl-displaynames": "6.6.9", + "@formatjs/intl-listformat": "7.5.8", + "intl-messageformat": "10.6.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "typescript": "^4.7 || 5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@formatjs/intl-displaynames": { + "version": "6.6.9", + "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.6.9.tgz", + "integrity": "sha512-2hmS+YJwiXB1deNYXO2/pY7Zv4QUrZHghZxkcnWxBLEODk990h9cNbkjNg/u/RaDeCRkKVrZ3ERTdBcgkTvn2Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "2.1.0", + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-listformat": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.5.8.tgz", + "integrity": "sha512-WzMiw6nA2uP0ZqbbuPs7tQ+gmYRTbE20lwur4QcKp5K5cgPhkCzRAhovkDFLhrc885c3p7Wjigx8kyg0hypmZw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "2.1.0", + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl/node_modules/intl-messageformat": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.6.0.tgz", + "integrity": "sha512-AYKl/DY1nl75pJU8EK681JOVL40uQTNJe3yEMXKfydDFoz+5hNrM/PqjchueSMKGKCZKBVgeexqZwy3uC2B36Q==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "2.1.0", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.9", + "tslib": "^2.4.0" } }, "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "1.2.36", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz", - "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==", - "hasInstallScript": true, + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz", + "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==", + "license": "MIT", "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.36" + "@fortawesome/fontawesome-common-types": "6.6.0" }, "engines": { "node": ">=6" } }, - "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "5.15.4", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz", - "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==", - "hasInstallScript": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.36" - }, + "node_modules/@fortawesome/fontawesome-svg-core/node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz", + "integrity": "sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==", + "license": "MIT", "engines": { "node": ">=6" } @@ -4237,6 +4713,17 @@ "@types/node": "*" } }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "node_modules/@types/invariant": { "version": "2.2.37", "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.37.tgz", @@ -4820,7 +5307,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -4835,7 +5321,6 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, "engines": { "node": ">=10" }, @@ -6124,6 +6609,26 @@ "node": ">= 0.6.0" } }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/base64id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", @@ -6187,6 +6692,31 @@ "file-uri-to-path": "1.0.0" } }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/blob": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", @@ -6323,6 +6853,30 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-alloc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", @@ -6663,6 +7217,12 @@ "node": ">=10" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "license": "MIT" + }, "node_modules/cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -6701,6 +7261,12 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/child_process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", + "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==", + "license": "ISC" + }, "node_modules/chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -7042,6 +7608,18 @@ "node": ">=0.10.0" } }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-width": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", @@ -7423,6 +8001,17 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-js-pure": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.1.tgz", + "integrity": "sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -7860,7 +8449,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, "engines": { "node": ">=0.10" } @@ -7907,6 +8495,18 @@ "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -9974,15 +10574,41 @@ "isobject": "^3.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" } }, - "node_modules/extend-shallow/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6.0" } }, "node_modules/extglob": { @@ -10201,6 +10827,18 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -10266,6 +10904,15 @@ "node": ">=0.10" } }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -11066,6 +11713,12 @@ "node": ">=6" } }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "license": "(Apache-2.0 OR MPL-1.1)" + }, "node_modules/has": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", @@ -11491,6 +12144,38 @@ "node": ">=4.0.0" } }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -11500,6 +12185,18 @@ "node": ">= 4" } }, + "node_modules/imask": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/imask/-/imask-7.6.1.tgz", + "integrity": "sha512-sJlIFM7eathUEMChTh9Mrfw/IgiWgJqBKq2VNbyXvBZ7ev/IlO6/KQTKlV/Fm+viQMLrFLG/zCuudrLIwgK2dg==", + "license": "MIT", + "dependencies": { + "@babel/runtime-corejs3": "^7.24.4" + }, + "engines": { + "npm": ">=4.0.0" + } + }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -12146,6 +12843,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", @@ -12398,6 +13104,18 @@ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -16157,6 +16875,12 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "license": "MIT" + }, "node_modules/log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -16600,7 +17324,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "engines": { "node": ">=6" } @@ -17695,7 +18418,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -17758,6 +18480,140 @@ "node": ">=0.4.0" } }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -17771,7 +18627,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -19698,6 +20553,16 @@ "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-colorful": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", + "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/react-dom": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", @@ -19739,6 +20604,12 @@ "resolved": "https://registry.npmjs.org/react-element-proptypes/-/react-element-proptypes-1.0.0.tgz", "integrity": "sha512-unJTkc58D9n1xTXKA8swrwrbDQAsCF/13oT6fDYtBVHPvFxITFuI20HCMNbNzI7tTUzsYmJ3iqjskwfLJkOUFA==" }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, "node_modules/react-focus-lock": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-1.19.1.tgz", @@ -19832,6 +20703,33 @@ } } }, + "node_modules/react-imask": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/react-imask/-/react-imask-7.6.1.tgz", + "integrity": "sha512-vLNfzcCz62Yzx/GRGh5tiCph9Gbh2cZu+Tz8OiO5it2eNuuhpA0DWhhSlOtVtSJ80+Bx+vFK5De8eQ9AmbkXzA==", + "license": "MIT", + "dependencies": { + "imask": "^7.6.1", + "prop-types": "^15.8.1" + }, + "engines": { + "npm": ">=4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/react-imask/node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/react-intl": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.9.0.tgz", @@ -19869,6 +20767,15 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, + "node_modules/react-loading-skeleton": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.5.0.tgz", + "integrity": "sha512-gxxSyLbrEAdXTKgfbpBEFZCO/P153DnqSCQau2+o6lNy1jgMRr2MmRmOzMmyrwSaSYLRB8g7b0waYPmUjz7IhQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/react-overlays": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz", @@ -19907,6 +20814,21 @@ "react-is": "^16.13.1" } }, + "node_modules/react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "license": "MIT", + "dependencies": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, "node_modules/react-proptype-conditional-require": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz", @@ -19980,19 +20902,21 @@ } }, "node_modules/react-responsive": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-6.1.2.tgz", - "integrity": "sha512-AXentVC/kN3KED9zhzJv2pu4vZ0i6cSHdTtbCScVV1MT6F5KXaG2qs5D7WLmhdaOvmiMX8UfmS4ZSO+WPwDt4g==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-8.2.0.tgz", + "integrity": "sha512-iagCqVrw4QSjhxKp3I/YK6+ODkWY6G+YPElvdYKiUUbywwh9Ds0M7r26Fj2/7dWFFbOpcGnJE6uE7aMck8j5Qg==", + "license": "MIT", "dependencies": { "hyphenate-style-name": "^1.0.0", "matchmediaquery": "^0.3.0", - "prop-types": "^15.6.1" + "prop-types": "^15.6.1", + "shallow-equal": "^1.1.0" }, "engines": { "node": ">= 0.10" }, "peerDependencies": { - "react": "^16.3.0" + "react": ">=16.8.0" } }, "node_modules/react-responsive/node_modules/prop-types": { @@ -21269,6 +22193,15 @@ "integrity": "sha512-1I1+G2gteLB8Tkt8YI1sJvSIfa0lWuRtC8GjvtyPBcLSF5jBCCJJqKrpER5JU5r6Bhe+i9/pK3VMuUcXu0kdwQ==", "dev": true }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", @@ -22276,6 +23209,12 @@ "node": ">=8" } }, + "node_modules/shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -22334,8 +23273,7 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-html-tokenizer": { "version": "0.1.1", @@ -22837,6 +23775,15 @@ "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", "dev": true }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -23718,9 +24665,10 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "node_modules/tabbable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-4.0.0.tgz", - "integrity": "sha512-H1XoH1URcBOa/rZZWxLxHCtOdVUEev+9vo5YdYhC9tCY4wnybX+VQrCYuy9ubkg69fCBxCONJOSLGfw0DWMffQ==" + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", + "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==", + "license": "MIT" }, "node_modules/table": { "version": "6.8.2", @@ -23985,8 +24933,7 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/through2": { "version": "3.0.2", @@ -25101,6 +26048,15 @@ "node": ">=10.13.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -25527,7 +26483,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -25588,7 +26543,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -25603,7 +26557,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -25614,8 +26567,7 @@ "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrappy": { "version": "1.0.2", diff --git a/package.json b/package.json index 1f48500e6e27..6173420ab0bb 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "@edx/brand-edx.org": "^2.0.7", "@edx/edx-bootstrap": "1.0.4", "@edx/edx-proctoring": "^4.18.1", - "@edx/frontend-component-cookie-policy-banner": "2.2.0", + "@edx/frontend-component-cookie-policy-banner": "2.6.0", "@edx/paragon": "2.6.4", "@edx/studio-frontend": "^2.1.0", "babel-loader": "^9.1.3", From e99769b0dd160ccb4c8364887f7bd59ce119f9ac Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Thu, 10 Oct 2024 16:21:17 -0400 Subject: [PATCH 04/24] Revert "feat: Unpin xmlsec and lxml." This reverts commit 6c045c7b390aa051484cee459a767b246f04e7d8. --- requirements/constraints.txt | 19 +++ requirements/edx-sandbox/base.txt | 5 +- requirements/edx/base.txt | 74 ++++++------ requirements/edx/coverage.txt | 4 +- requirements/edx/development.txt | 110 ++++++++---------- requirements/edx/doc.txt | 77 ++++++------ requirements/edx/paver.txt | 6 +- requirements/edx/semgrep.txt | 8 +- requirements/edx/testing.txt | 96 +++++++-------- requirements/pip-tools.txt | 4 +- .../structures_pruning/requirements/base.txt | 2 +- .../requirements/testing.txt | 2 +- scripts/user_retirement/requirements/base.txt | 23 ++-- .../user_retirement/requirements/testing.txt | 23 ++-- 14 files changed, 229 insertions(+), 224 deletions(-) diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 2fc1a1e745f3..dd727a4b1801 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -84,6 +84,13 @@ django-storages<1.14.4 # for them. edx-enterprise==4.27.2 +# Date: 2024-05-09 +# This has to be constrained as well because newer versions of edx-i18n-tools need the +# newer version of lxml but that requirement was not made expilict in the 1.6.0 version +# of the package. This can be un-pinned when we're upgrading lxml. +# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35274 +edx-i18n-tools<1.6.0 + # Date: 2024-07-26 # To override the constraint of edx-lint # This can be removed once https://github.com/openedx/edx-platform/issues/34586 is resolved @@ -98,6 +105,13 @@ event-tracking==3.0.0 # https://github.com/openedx/edx-platform/issues/31616 libsass==0.10.0 +# Date: 2024-04-30 +# lxml>=5.0 introduced breaking changes related to system dependencies +# lxml==5.2.1 introduced new extra so we'll nee to rename lxml --> lxml[html-clean] +# This constraint can be removed once we upgrade to Python 3.11 +# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35272 +lxml<5.0 + # Date: 2018-12-14 # markdown>=3.4.0 has failures due to internal refactorings which causes the tests to fail # pinning the version untill the issue gets resolved in the package itself @@ -173,3 +187,8 @@ social-auth-app-django<=5.4.1 # which require urllib3<2 for now. # Issue for unpinning: https://github.com/openedx/edx-platform/issues/32222 urllib3<2.0.0 + +# Date: 2024-04-24 +# xmlsec==1.3.14 breaking tests or all builds, can be removed once a fix is available +# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35264 +xmlsec<1.3.14 diff --git a/requirements/edx-sandbox/base.txt b/requirements/edx-sandbox/base.txt index 0a708b2bbf52..bf0a4376da70 100644 --- a/requirements/edx-sandbox/base.txt +++ b/requirements/edx-sandbox/base.txt @@ -26,11 +26,12 @@ joblib==1.4.2 # via nltk kiwisolver==1.4.7 # via matplotlib -lxml==5.3.0 +lxml==4.9.4 # via + # -c requirements/edx-sandbox/../constraints.txt # -r requirements/edx-sandbox/base.in # openedx-calc -markupsafe==3.0.1 +markupsafe==2.1.5 # via # chem # openedx-calc diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index c7f7828f4115..55793bd0c5af 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -6,11 +6,11 @@ # -e git+https://github.com/anupdhabarde/edx-proctoring-proctortrack.git@31c6c9923a51c903ae83760ecbbac191363aa2a2#egg=edx_proctoring_proctortrack # via -r requirements/edx/github.in -acid-xblock==0.4.1 +acid-xblock==0.3.1 # via -r requirements/edx/kernel.in -aiohappyeyeballs==2.4.3 +aiohappyeyeballs==2.4.0 # via aiohttp -aiohttp==3.10.9 +aiohttp==3.10.6 # via # geoip2 # openai @@ -70,13 +70,13 @@ bleach[css]==6.1.0 # xblock-poll boto==2.49.0 # via -r requirements/edx/kernel.in -boto3==1.35.37 +boto3==1.35.27 # via # -r requirements/edx/kernel.in # django-ses # fs-s3fs # ora2 -botocore==1.35.37 +botocore==1.35.27 # via # -r requirements/edx/kernel.in # boto3 @@ -87,7 +87,7 @@ cachecontrol==0.14.0 # via firebase-admin cachetools==5.5.0 # via google-auth -camel-converter[pydantic]==4.0.1 +camel-converter[pydantic]==3.1.2 # via meilisearch celery==5.4.0 # via @@ -328,7 +328,7 @@ django-sekizai==4.1.0 # via # -r requirements/edx/kernel.in # openedx-django-wiki -django-ses==4.2.0 +django-ses==4.1.1 # via -r requirements/edx/bundled.in django-simple-history==3.4.0 # via @@ -387,7 +387,7 @@ djangorestframework==3.14.0 # super-csv djangorestframework-xml==2.0.0 # via edx-enterprise -dnspython==2.7.0 +dnspython==2.6.1 # via # -r requirements/edx/paver.txt # pymongo @@ -429,7 +429,7 @@ edx-celeryutils==1.3.0 # super-csv edx-codejail==3.4.1 # via -r requirements/edx/kernel.in -edx-completion==4.7.2 +edx-completion==4.7.1 # via -r requirements/edx/kernel.in edx-django-release-util==1.4.0 # via @@ -438,7 +438,7 @@ edx-django-release-util==1.4.0 # edxval edx-django-sites-extensions==4.2.0 # via -r requirements/edx/kernel.in -edx-django-utils==6.0.0 +edx-django-utils==5.16.0 # via # -r requirements/edx/kernel.in # django-config-models @@ -475,8 +475,9 @@ edx-event-bus-kafka==5.8.1 # via -r requirements/edx/kernel.in edx-event-bus-redis==0.5.0 # via -r requirements/edx/kernel.in -edx-i18n-tools==1.6.3 +edx-i18n-tools==1.5.0 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/bundled.in # ora2 edx-milestones==0.6.0 @@ -516,7 +517,7 @@ edx-search==4.0.0 # via -r requirements/edx/kernel.in edx-sga==0.25.0 # via -r requirements/edx/bundled.in -edx-submissions==3.8.1 +edx-submissions==3.8.0 # via # -r requirements/edx/kernel.in # ora2 @@ -583,14 +584,14 @@ geoip2==4.8.0 # via -r requirements/edx/kernel.in glob2==0.7 # via -r requirements/edx/kernel.in -google-api-core[grpc]==2.21.0 +google-api-core[grpc]==2.20.0 # via # firebase-admin # google-api-python-client # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.149.0 +google-api-python-client==2.147.0 # via firebase-admin google-auth==2.35.0 # via @@ -620,11 +621,11 @@ googleapis-common-protos==1.65.0 # via # google-api-core # grpcio-status -grpcio==1.66.2 +grpcio==1.66.1 # via # google-api-core # grpcio-status -grpcio-status==1.66.2 +grpcio-status==1.66.1 # via google-api-core gunicorn==23.0.0 # via -r requirements/edx/kernel.in @@ -638,7 +639,7 @@ httplib2==0.22.0 # via # google-api-python-client # google-auth-httplib2 -icalendar==6.0.0 +icalendar==5.0.13 # via -r requirements/edx/kernel.in idna==3.10 # via @@ -657,7 +658,7 @@ interchange==2021.0.4 # via py2neo ipaddress==1.0.23 # via -r requirements/edx/kernel.in -isodate==0.7.2 +isodate==0.6.1 # via python3-saml jinja2==3.1.4 # via code-annotations @@ -682,7 +683,7 @@ jsonschema==4.23.0 # via # drf-spectacular # optimizely-sdk -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2023.12.1 # via jsonschema jwcrypto==1.5.6 # via @@ -707,21 +708,19 @@ loremipsum==1.0.5 # via ora2 lti-consumer-xblock==9.11.3 # via -r requirements/edx/kernel.in -lxml[html-clean]==5.3.0 +lxml==4.9.4 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/kernel.in # edx-i18n-tools # edxval # lti-consumer-xblock - # lxml-html-clean # olxcleaner # openedx-calc # ora2 # python3-saml # xblock # xmlsec -lxml-html-clean==0.3.1 - # via lxml mailsnake==1.6.4 # via -r requirements/edx/bundled.in mako==1.3.5 @@ -738,7 +737,7 @@ markdown==3.3.7 # openedx-django-wiki # staff-graded-xblock # xblock-poll -markupsafe==3.0.1 +markupsafe==2.1.5 # via # -r requirements/edx/paver.txt # chem @@ -770,7 +769,7 @@ multidict==6.1.0 # yarl mysqlclient==2.2.4 # via -r requirements/edx/kernel.in -newrelic==10.0.0 +newrelic==9.13.0 # via # -r requirements/edx/bundled.in # edx-django-utils @@ -821,7 +820,7 @@ openedx-events==9.14.1 # edx-name-affirmation # event-tracking # ora2 -openedx-filters==1.11.0 +openedx-filters==1.10.0 # via # -r requirements/edx/kernel.in # lti-consumer-xblock @@ -830,7 +829,7 @@ openedx-learning==0.13.1 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/kernel.in -openedx-mongodbproxy==0.2.2 +openedx-mongodbproxy==0.2.1 # via -r requirements/edx/kernel.in optimizely-sdk==4.1.1 # via @@ -882,8 +881,6 @@ polib==1.2.0 # via edx-i18n-tools prompt-toolkit==3.0.48 # via click-repl -propcache==0.2.0 - # via yarl proto-plus==1.24.0 # via # google-api-core @@ -914,7 +911,7 @@ pycountry==24.6.1 # via -r requirements/edx/kernel.in pycparser==2.22 # via cffi -pycryptodomex==3.21.0 +pycryptodomex==3.20.0 # via # -r requirements/edx/kernel.in # edx-proctoring @@ -1020,6 +1017,7 @@ pytz==2024.2 # edx-tincan-py35 # event-tracking # fs + # icalendar # interchange # olxcleaner # ora2 @@ -1041,7 +1039,7 @@ random2==1.0.2 # via -r requirements/edx/kernel.in recommender-xblock==2.2.1 # via -r requirements/edx/bundled.in -redis==5.1.1 +redis==5.0.8 # via # -r requirements/edx/kernel.in # walrus @@ -1094,7 +1092,7 @@ rules==3.5 # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.10.3 +s3transfer==0.10.2 # via boto3 sailthru-client==2.2.3 # via edx-ace @@ -1133,6 +1131,7 @@ six==1.16.0 # fs-s3fs # html5lib # interchange + # isodate # libsass # optimizely-sdk # pansi @@ -1209,7 +1208,6 @@ typing-extensions==4.12.2 tzdata==2024.2 # via # celery - # icalendar # kombu unicodecsv==0.14.1 # via @@ -1239,7 +1237,7 @@ voluptuous==0.15.2 # via ora2 walrus==0.9.4 # via edx-event-bus-redis -watchdog==5.0.3 +watchdog==5.0.2 # via -r requirements/edx/paver.txt wcwidth==0.2.13 # via prompt-toolkit @@ -1287,11 +1285,13 @@ xblock-utils==4.0.0 # via # edx-sga # xblock-poll -xmlsec==1.3.14 - # via python3-saml +xmlsec==1.3.13 + # via + # -c requirements/edx/../constraints.txt + # python3-saml xss-utils==0.6.0 # via -r requirements/edx/kernel.in -yarl==1.14.0 +yarl==1.12.1 # via aiohttp zipp==3.20.2 # via importlib-metadata diff --git a/requirements/edx/coverage.txt b/requirements/edx/coverage.txt index 45f2429cb2d1..a1faf5e74025 100644 --- a/requirements/edx/coverage.txt +++ b/requirements/edx/coverage.txt @@ -6,13 +6,13 @@ # chardet==5.2.0 # via diff-cover -coverage==7.6.2 +coverage==7.6.1 # via -r requirements/edx/coverage.in diff-cover==9.2.0 # via -r requirements/edx/coverage.in jinja2==3.1.4 # via diff-cover -markupsafe==3.0.1 +markupsafe==2.1.5 # via jinja2 pluggy==1.5.0 # via diff-cover diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index 13f3f6d5e637..1bdd3736516b 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -12,16 +12,16 @@ accessible-pygments==0.0.5 # via # -r requirements/edx/doc.txt # pydata-sphinx-theme -acid-xblock==0.4.1 +acid-xblock==0.3.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -aiohappyeyeballs==2.4.3 +aiohappyeyeballs==2.4.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # aiohttp -aiohttp==3.10.9 +aiohttp==3.10.6 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -140,14 +140,14 @@ boto==2.49.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -boto3==1.35.37 +boto3==1.35.27 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # django-ses # fs-s3fs # ora2 -botocore==1.35.37 +botocore==1.35.27 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -157,7 +157,7 @@ bridgekeeper==0.9 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -build==1.2.2.post1 +build==1.2.2 # via # -r requirements/edx/../pip-tools.txt # pip-tools @@ -172,7 +172,7 @@ cachetools==5.5.0 # -r requirements/edx/testing.txt # google-auth # tox -camel-converter[pydantic]==4.0.1 +camel-converter[pydantic]==3.1.2 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -278,7 +278,7 @@ colorama==0.4.6 # via # -r requirements/edx/testing.txt # tox -coverage[toml]==7.6.2 +coverage[toml]==7.6.1 # via # -r requirements/edx/testing.txt # pytest-cov @@ -325,11 +325,11 @@ defusedxml==0.7.1 # social-auth-core diff-cover==9.2.0 # via -r requirements/edx/testing.txt -dill==0.3.9 +dill==0.3.8 # via # -r requirements/edx/testing.txt # pylint -distlib==0.3.9 +distlib==0.3.8 # via # -r requirements/edx/testing.txt # virtualenv @@ -544,7 +544,7 @@ django-sekizai==4.1.0 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # openedx-django-wiki -django-ses==4.2.0 +django-ses==4.1.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -627,7 +627,7 @@ djangorestframework-xml==2.0.0 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # edx-enterprise -dnspython==2.7.0 +dnspython==2.6.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -696,7 +696,7 @@ edx-codejail==3.4.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -edx-completion==4.7.2 +edx-completion==4.7.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -710,7 +710,7 @@ edx-django-sites-extensions==4.2.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -edx-django-utils==6.0.0 +edx-django-utils==5.16.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -754,8 +754,9 @@ edx-event-bus-redis==0.5.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -edx-i18n-tools==1.6.3 +edx-i18n-tools==1.5.0 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # ora2 @@ -813,7 +814,7 @@ edx-sga==0.25.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -edx-submissions==3.8.1 +edx-submissions==3.8.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -878,7 +879,7 @@ execnet==2.1.1 # pytest-xdist factory-boy==3.3.1 # via -r requirements/edx/testing.txt -faker==30.3.0 +faker==30.0.0 # via # -r requirements/edx/testing.txt # factory-boy @@ -942,7 +943,7 @@ glob2==0.7 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -google-api-core[grpc]==2.21.0 +google-api-core[grpc]==2.20.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -951,7 +952,7 @@ google-api-core[grpc]==2.21.0 # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.149.0 +google-api-python-client==2.147.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1004,17 +1005,17 @@ googleapis-common-protos==1.65.0 # -r requirements/edx/testing.txt # google-api-core # grpcio-status -grimp==3.5 +grimp==3.4.1 # via # -r requirements/edx/testing.txt # import-linter -grpcio==1.66.2 +grpcio==1.66.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # google-api-core # grpcio-status -grpcio-status==1.66.2 +grpcio-status==1.66.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1044,7 +1045,7 @@ httplib2==0.22.0 # google-auth-httplib2 httpretty==1.1.4 # via -r requirements/edx/testing.txt -icalendar==6.0.0 +icalendar==5.0.13 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1061,7 +1062,7 @@ imagesize==1.4.1 # via # -r requirements/edx/doc.txt # sphinx -import-linter==2.1 +import-linter==2.0 # via -r requirements/edx/testing.txt importlib-metadata==8.5.0 # via @@ -1086,7 +1087,7 @@ ipaddress==1.0.23 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -isodate==0.7.2 +isodate==0.6.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1135,7 +1136,7 @@ jsonschema==4.23.0 # drf-spectacular # optimizely-sdk # sphinxcontrib-openapi -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2023.12.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1182,14 +1183,14 @@ lti-consumer-xblock==9.11.3 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -lxml[html-clean]==5.3.0 +lxml==4.9.4 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # edx-i18n-tools # edxval # lti-consumer-xblock - # lxml-html-clean # olxcleaner # openedx-calc # ora2 @@ -1197,11 +1198,6 @@ lxml[html-clean]==5.3.0 # python3-saml # xblock # xmlsec -lxml-html-clean==0.3.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # lxml mailsnake==1.6.4 # via # -r requirements/edx/doc.txt @@ -1222,7 +1218,7 @@ markdown==3.3.7 # openedx-django-wiki # staff-graded-xblock # xblock-poll -markupsafe==3.0.1 +markupsafe==2.1.5 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1294,7 +1290,7 @@ mysqlclient==2.2.4 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -newrelic==10.0.0 +newrelic==9.13.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1372,7 +1368,7 @@ openedx-events==9.14.1 # edx-name-affirmation # event-tracking # ora2 -openedx-filters==1.11.0 +openedx-filters==1.10.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1383,7 +1379,7 @@ openedx-learning==0.13.1 # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -openedx-mongodbproxy==0.2.2 +openedx-mongodbproxy==0.2.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1411,7 +1407,7 @@ packaging==24.1 # snowflake-connector-python # sphinx # tox -pact-python==2.2.2 +pact-python==2.2.1 # via -r requirements/edx/testing.txt pansi==2020.7.3 # via @@ -1492,11 +1488,6 @@ prompt-toolkit==3.0.48 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # click-repl -propcache==0.2.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # yarl proto-plus==1.24.0 # via # -r requirements/edx/doc.txt @@ -1551,7 +1542,7 @@ pycparser==2.22 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # cffi -pycryptodomex==3.21.0 +pycryptodomex==3.20.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1675,7 +1666,7 @@ pyproject-api==1.8.0 # via # -r requirements/edx/testing.txt # tox -pyproject-hooks==1.2.0 +pyproject-hooks==1.1.0 # via # -r requirements/edx/../pip-tools.txt # build @@ -1776,6 +1767,7 @@ pytz==2024.2 # edx-tincan-py35 # event-tracking # fs + # icalendar # interchange # olxcleaner # ora2 @@ -1807,7 +1799,7 @@ recommender-xblock==2.2.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -redis==5.1.1 +redis==5.0.8 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1877,7 +1869,7 @@ rules==3.5 # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.10.3 +s3transfer==0.10.2 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt @@ -1934,6 +1926,7 @@ six==1.16.0 # fs-s3fs # html5lib # interchange + # isodate # libsass # optimizely-sdk # pact-python @@ -1993,7 +1986,7 @@ soupsieve==2.6 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # beautifulsoup4 -sphinx==8.1.0 +sphinx==8.0.2 # via # -r requirements/edx/doc.txt # pydata-sphinx-theme @@ -2094,7 +2087,7 @@ tinycss2==1.2.1 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # bleach -tomli==2.0.2 +tomli==2.0.1 # via django-stubs tomlkit==0.13.2 # via @@ -2102,7 +2095,7 @@ tomlkit==0.13.2 # -r requirements/edx/testing.txt # pylint # snowflake-connector-python -tox==4.21.2 +tox==4.20.0 # via -r requirements/edx/testing.txt tqdm==4.66.5 # via @@ -2110,7 +2103,7 @@ tqdm==4.66.5 # -r requirements/edx/testing.txt # nltk # openai -types-pytz==2024.2.0.20241003 +types-pytz==2024.2.0.20240913 # via django-stubs types-pyyaml==6.0.12.20240917 # via @@ -2129,7 +2122,6 @@ typing-extensions==4.12.2 # django-stubs-ext # djangorestframework-stubs # edx-opaque-keys - # faker # fastapi # grimp # import-linter @@ -2145,7 +2137,6 @@ tzdata==2024.2 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # celery - # icalendar # kombu unicodecsv==0.14.1 # via @@ -2174,7 +2165,7 @@ user-util==1.1.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -uvicorn==0.31.1 +uvicorn==0.30.6 # via # -r requirements/edx/testing.txt # pact-python @@ -2185,7 +2176,7 @@ vine==5.1.0 # amqp # celery # kombu -virtualenv==20.26.6 +virtualenv==20.26.5 # via # -r requirements/edx/testing.txt # tox @@ -2194,14 +2185,14 @@ voluptuous==0.15.2 # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # ora2 -vulture==2.13 +vulture==2.12 # via -r requirements/edx/development.in walrus==0.9.4 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # edx-event-bus-redis -watchdog==5.0.3 +watchdog==5.0.2 # via # -r requirements/edx/development.in # -r requirements/edx/doc.txt @@ -2275,8 +2266,9 @@ xblock-utils==4.0.0 # -r requirements/edx/testing.txt # edx-sga # xblock-poll -xmlsec==1.3.14 +xmlsec==1.3.13 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # python3-saml @@ -2284,7 +2276,7 @@ xss-utils==0.6.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -yarl==1.14.0 +yarl==1.12.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt index 30736a21a35a..6f12d8046759 100644 --- a/requirements/edx/doc.txt +++ b/requirements/edx/doc.txt @@ -8,13 +8,13 @@ # via -r requirements/edx/base.txt accessible-pygments==0.0.5 # via pydata-sphinx-theme -acid-xblock==0.4.1 +acid-xblock==0.3.1 # via -r requirements/edx/base.txt -aiohappyeyeballs==2.4.3 +aiohappyeyeballs==2.4.0 # via # -r requirements/edx/base.txt # aiohttp -aiohttp==3.10.9 +aiohttp==3.10.6 # via # -r requirements/edx/base.txt # geoip2 @@ -102,13 +102,13 @@ bleach[css]==6.1.0 # xblock-poll boto==2.49.0 # via -r requirements/edx/base.txt -boto3==1.35.37 +boto3==1.35.27 # via # -r requirements/edx/base.txt # django-ses # fs-s3fs # ora2 -botocore==1.35.37 +botocore==1.35.27 # via # -r requirements/edx/base.txt # boto3 @@ -123,7 +123,7 @@ cachetools==5.5.0 # via # -r requirements/edx/base.txt # google-auth -camel-converter[pydantic]==4.0.1 +camel-converter[pydantic]==3.1.2 # via # -r requirements/edx/base.txt # meilisearch @@ -398,7 +398,7 @@ django-sekizai==4.1.0 # via # -r requirements/edx/base.txt # openedx-django-wiki -django-ses==4.2.0 +django-ses==4.1.1 # via -r requirements/edx/base.txt django-simple-history==3.4.0 # via @@ -459,7 +459,7 @@ djangorestframework-xml==2.0.0 # via # -r requirements/edx/base.txt # edx-enterprise -dnspython==2.7.0 +dnspython==2.6.1 # via # -r requirements/edx/base.txt # pymongo @@ -509,7 +509,7 @@ edx-celeryutils==1.3.0 # super-csv edx-codejail==3.4.1 # via -r requirements/edx/base.txt -edx-completion==4.7.2 +edx-completion==4.7.1 # via -r requirements/edx/base.txt edx-django-release-util==1.4.0 # via @@ -518,7 +518,7 @@ edx-django-release-util==1.4.0 # edxval edx-django-sites-extensions==4.2.0 # via -r requirements/edx/base.txt -edx-django-utils==6.0.0 +edx-django-utils==5.16.0 # via # -r requirements/edx/base.txt # django-config-models @@ -555,8 +555,9 @@ edx-event-bus-kafka==5.8.1 # via -r requirements/edx/base.txt edx-event-bus-redis==0.5.0 # via -r requirements/edx/base.txt -edx-i18n-tools==1.6.3 +edx-i18n-tools==1.5.0 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # ora2 edx-milestones==0.6.0 @@ -597,7 +598,7 @@ edx-search==4.0.0 # via -r requirements/edx/base.txt edx-sga==0.25.0 # via -r requirements/edx/base.txt -edx-submissions==3.8.1 +edx-submissions==3.8.0 # via # -r requirements/edx/base.txt # ora2 @@ -682,7 +683,7 @@ gitpython==3.1.43 # via -r requirements/edx/doc.in glob2==0.7 # via -r requirements/edx/base.txt -google-api-core[grpc]==2.21.0 +google-api-core[grpc]==2.20.0 # via # -r requirements/edx/base.txt # firebase-admin @@ -690,7 +691,7 @@ google-api-core[grpc]==2.21.0 # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.149.0 +google-api-python-client==2.147.0 # via # -r requirements/edx/base.txt # firebase-admin @@ -734,12 +735,12 @@ googleapis-common-protos==1.65.0 # -r requirements/edx/base.txt # google-api-core # grpcio-status -grpcio==1.66.2 +grpcio==1.66.1 # via # -r requirements/edx/base.txt # google-api-core # grpcio-status -grpcio-status==1.66.2 +grpcio-status==1.66.1 # via # -r requirements/edx/base.txt # google-api-core @@ -756,7 +757,7 @@ httplib2==0.22.0 # -r requirements/edx/base.txt # google-api-python-client # google-auth-httplib2 -icalendar==6.0.0 +icalendar==5.0.13 # via -r requirements/edx/base.txt idna==3.10 # via @@ -780,7 +781,7 @@ interchange==2021.0.4 # py2neo ipaddress==1.0.23 # via -r requirements/edx/base.txt -isodate==0.7.2 +isodate==0.6.1 # via # -r requirements/edx/base.txt # python3-saml @@ -817,7 +818,7 @@ jsonschema==4.23.0 # drf-spectacular # optimizely-sdk # sphinxcontrib-openapi -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2023.12.1 # via # -r requirements/edx/base.txt # jsonschema @@ -849,23 +850,19 @@ loremipsum==1.0.5 # ora2 lti-consumer-xblock==9.11.3 # via -r requirements/edx/base.txt -lxml[html-clean]==5.3.0 +lxml==4.9.4 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # edx-i18n-tools # edxval # lti-consumer-xblock - # lxml-html-clean # olxcleaner # openedx-calc # ora2 # python3-saml # xblock # xmlsec -lxml-html-clean==0.3.1 - # via - # -r requirements/edx/base.txt - # lxml mailsnake==1.6.4 # via -r requirements/edx/base.txt mako==1.3.5 @@ -882,7 +879,7 @@ markdown==3.3.7 # openedx-django-wiki # staff-graded-xblock # xblock-poll -markupsafe==3.0.1 +markupsafe==2.1.5 # via # -r requirements/edx/base.txt # chem @@ -926,7 +923,7 @@ multidict==6.1.0 # yarl mysqlclient==2.2.4 # via -r requirements/edx/base.txt -newrelic==10.0.0 +newrelic==9.13.0 # via # -r requirements/edx/base.txt # edx-django-utils @@ -982,7 +979,7 @@ openedx-events==9.14.1 # edx-name-affirmation # event-tracking # ora2 -openedx-filters==1.11.0 +openedx-filters==1.10.0 # via # -r requirements/edx/base.txt # lti-consumer-xblock @@ -991,7 +988,7 @@ openedx-learning==0.13.1 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt -openedx-mongodbproxy==0.2.2 +openedx-mongodbproxy==0.2.1 # via -r requirements/edx/base.txt optimizely-sdk==4.1.1 # via @@ -1060,10 +1057,6 @@ prompt-toolkit==3.0.48 # via # -r requirements/edx/base.txt # click-repl -propcache==0.2.0 - # via - # -r requirements/edx/base.txt - # yarl proto-plus==1.24.0 # via # -r requirements/edx/base.txt @@ -1101,7 +1094,7 @@ pycparser==2.22 # via # -r requirements/edx/base.txt # cffi -pycryptodomex==3.21.0 +pycryptodomex==3.20.0 # via # -r requirements/edx/base.txt # edx-proctoring @@ -1229,6 +1222,7 @@ pytz==2024.2 # edx-tincan-py35 # event-tracking # fs + # icalendar # interchange # olxcleaner # ora2 @@ -1251,7 +1245,7 @@ random2==1.0.2 # via -r requirements/edx/base.txt recommender-xblock==2.2.1 # via -r requirements/edx/base.txt -redis==5.1.1 +redis==5.0.8 # via # -r requirements/edx/base.txt # walrus @@ -1311,7 +1305,7 @@ rules==3.5 # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.10.3 +s3transfer==0.10.2 # via # -r requirements/edx/base.txt # boto3 @@ -1356,6 +1350,7 @@ six==1.16.0 # fs-s3fs # html5lib # interchange + # isodate # libsass # optimizely-sdk # pansi @@ -1399,7 +1394,7 @@ soupsieve==2.6 # via # -r requirements/edx/base.txt # beautifulsoup4 -sphinx==8.1.0 +sphinx==8.0.2 # via # -r requirements/edx/doc.in # pydata-sphinx-theme @@ -1494,7 +1489,6 @@ tzdata==2024.2 # via # -r requirements/edx/base.txt # celery - # icalendar # kombu unicodecsv==0.14.1 # via @@ -1530,7 +1524,7 @@ walrus==0.9.4 # via # -r requirements/edx/base.txt # edx-event-bus-redis -watchdog==5.0.3 +watchdog==5.0.2 # via -r requirements/edx/base.txt wcwidth==0.2.13 # via @@ -1582,13 +1576,14 @@ xblock-utils==4.0.0 # -r requirements/edx/base.txt # edx-sga # xblock-poll -xmlsec==1.3.14 +xmlsec==1.3.13 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # python3-saml xss-utils==0.6.0 # via -r requirements/edx/base.txt -yarl==1.14.0 +yarl==1.12.1 # via # -r requirements/edx/base.txt # aiohttp diff --git a/requirements/edx/paver.txt b/requirements/edx/paver.txt index 2d8f510e0307..a0b1896919d4 100644 --- a/requirements/edx/paver.txt +++ b/requirements/edx/paver.txt @@ -10,7 +10,7 @@ charset-normalizer==2.0.12 # via # -c requirements/edx/../constraints.txt # requests -dnspython==2.7.0 +dnspython==2.6.1 # via pymongo edx-opaque-keys==2.11.0 # via -r requirements/edx/paver.in @@ -22,7 +22,7 @@ libsass==0.10.0 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/paver.in -markupsafe==3.0.1 +markupsafe==2.1.5 # via -r requirements/edx/paver.in mock==5.1.0 # via -r requirements/edx/paver.in @@ -61,7 +61,7 @@ urllib3==1.26.20 # via # -c requirements/edx/../constraints.txt # requests -watchdog==5.0.3 +watchdog==5.0.2 # via -r requirements/edx/paver.in wrapt==1.16.0 # via -r requirements/edx/paver.in diff --git a/requirements/edx/semgrep.txt b/requirements/edx/semgrep.txt index 174fa87d081d..102289def277 100644 --- a/requirements/edx/semgrep.txt +++ b/requirements/edx/semgrep.txt @@ -15,7 +15,7 @@ boltons==21.0.0 # face # glom # semgrep -bracex==2.5.post1 +bracex==2.5 # via wcmatch certifi==2024.8.30 # via requests @@ -42,7 +42,7 @@ idna==3.10 # via requests jsonschema==4.23.0 # via semgrep -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2023.12.1 # via jsonschema markdown-it-py==3.0.0 # via rich @@ -60,7 +60,7 @@ referencing==0.35.1 # jsonschema-specifications requests==2.32.3 # via semgrep -rich==13.9.2 +rich==13.8.1 # via semgrep rpds-py==0.20.0 # via @@ -72,7 +72,7 @@ ruamel-yaml-clib==0.2.8 # via ruamel-yaml semgrep==1.52.0 # via -r requirements/edx/semgrep.in -tomli==2.0.2 +tomli==2.0.1 # via semgrep typing-extensions==4.12.2 # via semgrep diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index 473da125341f..d3b14a6f4373 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -6,13 +6,13 @@ # -e git+https://github.com/anupdhabarde/edx-proctoring-proctortrack.git@31c6c9923a51c903ae83760ecbbac191363aa2a2#egg=edx_proctoring_proctortrack # via -r requirements/edx/base.txt -acid-xblock==0.4.1 +acid-xblock==0.3.1 # via -r requirements/edx/base.txt -aiohappyeyeballs==2.4.3 +aiohappyeyeballs==2.4.0 # via # -r requirements/edx/base.txt # aiohttp -aiohttp==3.10.9 +aiohttp==3.10.6 # via # -r requirements/edx/base.txt # geoip2 @@ -102,13 +102,13 @@ bleach[css]==6.1.0 # xblock-poll boto==2.49.0 # via -r requirements/edx/base.txt -boto3==1.35.37 +boto3==1.35.27 # via # -r requirements/edx/base.txt # django-ses # fs-s3fs # ora2 -botocore==1.35.37 +botocore==1.35.27 # via # -r requirements/edx/base.txt # boto3 @@ -124,7 +124,7 @@ cachetools==5.5.0 # -r requirements/edx/base.txt # google-auth # tox -camel-converter[pydantic]==4.0.1 +camel-converter[pydantic]==3.1.2 # via # -r requirements/edx/base.txt # meilisearch @@ -209,7 +209,7 @@ codejail-includes==1.0.0 # via -r requirements/edx/base.txt colorama==0.4.6 # via tox -coverage[toml]==7.6.2 +coverage[toml]==7.6.1 # via # -r requirements/edx/coverage.txt # pytest-cov @@ -247,9 +247,9 @@ defusedxml==0.7.1 # social-auth-core diff-cover==9.2.0 # via -r requirements/edx/coverage.txt -dill==0.3.9 +dill==0.3.8 # via pylint -distlib==0.3.9 +distlib==0.3.8 # via virtualenv django==4.2.16 # via @@ -427,7 +427,7 @@ django-sekizai==4.1.0 # via # -r requirements/edx/base.txt # openedx-django-wiki -django-ses==4.2.0 +django-ses==4.1.1 # via -r requirements/edx/base.txt django-simple-history==3.4.0 # via @@ -488,7 +488,7 @@ djangorestframework-xml==2.0.0 # via # -r requirements/edx/base.txt # edx-enterprise -dnspython==2.7.0 +dnspython==2.6.1 # via # -r requirements/edx/base.txt # pymongo @@ -533,7 +533,7 @@ edx-celeryutils==1.3.0 # super-csv edx-codejail==3.4.1 # via -r requirements/edx/base.txt -edx-completion==4.7.2 +edx-completion==4.7.1 # via -r requirements/edx/base.txt edx-django-release-util==1.4.0 # via @@ -542,7 +542,7 @@ edx-django-release-util==1.4.0 # edxval edx-django-sites-extensions==4.2.0 # via -r requirements/edx/base.txt -edx-django-utils==6.0.0 +edx-django-utils==5.16.0 # via # -r requirements/edx/base.txt # django-config-models @@ -579,8 +579,9 @@ edx-event-bus-kafka==5.8.1 # via -r requirements/edx/base.txt edx-event-bus-redis==0.5.0 # via -r requirements/edx/base.txt -edx-i18n-tools==1.6.3 +edx-i18n-tools==1.5.0 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # ora2 edx-lint==5.4.0 @@ -623,7 +624,7 @@ edx-search==4.0.0 # via -r requirements/edx/base.txt edx-sga==0.25.0 # via -r requirements/edx/base.txt -edx-submissions==3.8.1 +edx-submissions==3.8.0 # via # -r requirements/edx/base.txt # ora2 @@ -673,7 +674,7 @@ execnet==2.1.1 # via pytest-xdist factory-boy==3.3.1 # via -r requirements/edx/testing.in -faker==30.3.0 +faker==30.0.0 # via factory-boy fastapi==0.115.0 # via pact-python @@ -716,7 +717,7 @@ geoip2==4.8.0 # via -r requirements/edx/base.txt glob2==0.7 # via -r requirements/edx/base.txt -google-api-core[grpc]==2.21.0 +google-api-core[grpc]==2.20.0 # via # -r requirements/edx/base.txt # firebase-admin @@ -724,7 +725,7 @@ google-api-core[grpc]==2.21.0 # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.149.0 +google-api-python-client==2.147.0 # via # -r requirements/edx/base.txt # firebase-admin @@ -768,14 +769,14 @@ googleapis-common-protos==1.65.0 # -r requirements/edx/base.txt # google-api-core # grpcio-status -grimp==3.5 +grimp==3.4.1 # via import-linter -grpcio==1.66.2 +grpcio==1.66.1 # via # -r requirements/edx/base.txt # google-api-core # grpcio-status -grpcio-status==1.66.2 +grpcio-status==1.66.1 # via # -r requirements/edx/base.txt # google-api-core @@ -796,7 +797,7 @@ httplib2==0.22.0 # google-auth-httplib2 httpretty==1.1.4 # via -r requirements/edx/testing.in -icalendar==6.0.0 +icalendar==5.0.13 # via -r requirements/edx/base.txt idna==3.10 # via @@ -806,7 +807,7 @@ idna==3.10 # requests # snowflake-connector-python # yarl -import-linter==2.1 +import-linter==2.0 # via -r requirements/edx/testing.in importlib-metadata==8.5.0 # via -r requirements/edx/base.txt @@ -823,7 +824,7 @@ interchange==2021.0.4 # py2neo ipaddress==1.0.23 # via -r requirements/edx/base.txt -isodate==0.7.2 +isodate==0.6.1 # via # -r requirements/edx/base.txt # python3-saml @@ -864,7 +865,7 @@ jsonschema==4.23.0 # -r requirements/edx/base.txt # drf-spectacular # optimizely-sdk -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2023.12.1 # via # -r requirements/edx/base.txt # jsonschema @@ -898,13 +899,13 @@ loremipsum==1.0.5 # ora2 lti-consumer-xblock==9.11.3 # via -r requirements/edx/base.txt -lxml[html-clean]==5.3.0 +lxml==4.9.4 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # edx-i18n-tools # edxval # lti-consumer-xblock - # lxml-html-clean # olxcleaner # openedx-calc # ora2 @@ -912,10 +913,6 @@ lxml[html-clean]==5.3.0 # python3-saml # xblock # xmlsec -lxml-html-clean==0.3.1 - # via - # -r requirements/edx/base.txt - # lxml mailsnake==1.6.4 # via -r requirements/edx/base.txt mako==1.3.5 @@ -932,7 +929,7 @@ markdown==3.3.7 # openedx-django-wiki # staff-graded-xblock # xblock-poll -markupsafe==3.0.1 +markupsafe==2.1.5 # via # -r requirements/edx/base.txt # -r requirements/edx/coverage.txt @@ -977,7 +974,7 @@ multidict==6.1.0 # yarl mysqlclient==2.2.4 # via -r requirements/edx/base.txt -newrelic==10.0.0 +newrelic==9.13.0 # via # -r requirements/edx/base.txt # edx-django-utils @@ -1033,7 +1030,7 @@ openedx-events==9.14.1 # edx-name-affirmation # event-tracking # ora2 -openedx-filters==1.11.0 +openedx-filters==1.10.0 # via # -r requirements/edx/base.txt # lti-consumer-xblock @@ -1042,7 +1039,7 @@ openedx-learning==0.13.1 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt -openedx-mongodbproxy==0.2.2 +openedx-mongodbproxy==0.2.1 # via -r requirements/edx/base.txt optimizely-sdk==4.1.1 # via @@ -1060,7 +1057,7 @@ packaging==24.1 # pytest # snowflake-connector-python # tox -pact-python==2.2.2 +pact-python==2.2.1 # via -r requirements/edx/testing.in pansi==2020.7.3 # via @@ -1122,10 +1119,6 @@ prompt-toolkit==3.0.48 # via # -r requirements/edx/base.txt # click-repl -propcache==0.2.0 - # via - # -r requirements/edx/base.txt - # yarl proto-plus==1.24.0 # via # -r requirements/edx/base.txt @@ -1171,7 +1164,7 @@ pycparser==2.22 # via # -r requirements/edx/base.txt # cffi -pycryptodomex==3.21.0 +pycryptodomex==3.20.0 # via # -r requirements/edx/base.txt # edx-proctoring @@ -1347,6 +1340,7 @@ pytz==2024.2 # edx-tincan-py35 # event-tracking # fs + # icalendar # interchange # olxcleaner # ora2 @@ -1368,7 +1362,7 @@ random2==1.0.2 # via -r requirements/edx/base.txt recommender-xblock==2.2.1 # via -r requirements/edx/base.txt -redis==5.1.1 +redis==5.0.8 # via # -r requirements/edx/base.txt # walrus @@ -1428,7 +1422,7 @@ rules==3.5 # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.10.3 +s3transfer==0.10.2 # via # -r requirements/edx/base.txt # boto3 @@ -1476,6 +1470,7 @@ six==1.16.0 # fs-s3fs # html5lib # interchange + # isodate # libsass # optimizely-sdk # pact-python @@ -1559,7 +1554,7 @@ tomlkit==0.13.2 # -r requirements/edx/base.txt # pylint # snowflake-connector-python -tox==4.21.2 +tox==4.20.0 # via -r requirements/edx/testing.in tqdm==4.66.5 # via @@ -1571,7 +1566,6 @@ typing-extensions==4.12.2 # -r requirements/edx/base.txt # django-countries # edx-opaque-keys - # faker # fastapi # grimp # import-linter @@ -1584,7 +1578,6 @@ tzdata==2024.2 # via # -r requirements/edx/base.txt # celery - # icalendar # kombu unicodecsv==0.14.1 # via @@ -1608,7 +1601,7 @@ urllib3==1.26.20 # requests user-util==1.1.0 # via -r requirements/edx/base.txt -uvicorn==0.31.1 +uvicorn==0.30.6 # via pact-python vine==5.1.0 # via @@ -1616,7 +1609,7 @@ vine==5.1.0 # amqp # celery # kombu -virtualenv==20.26.6 +virtualenv==20.26.5 # via tox voluptuous==0.15.2 # via @@ -1626,7 +1619,7 @@ walrus==0.9.4 # via # -r requirements/edx/base.txt # edx-event-bus-redis -watchdog==5.0.3 +watchdog==5.0.2 # via -r requirements/edx/base.txt wcwidth==0.2.13 # via @@ -1680,13 +1673,14 @@ xblock-utils==4.0.0 # -r requirements/edx/base.txt # edx-sga # xblock-poll -xmlsec==1.3.14 +xmlsec==1.3.13 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # python3-saml xss-utils==0.6.0 # via -r requirements/edx/base.txt -yarl==1.14.0 +yarl==1.12.1 # via # -r requirements/edx/base.txt # aiohttp diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 110663ff6ab3..5bcb2aa55084 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,7 +4,7 @@ # # make upgrade # -build==1.2.2.post1 +build==1.2.2 # via pip-tools click==8.1.6 # via @@ -14,7 +14,7 @@ packaging==24.1 # via build pip-tools==7.4.1 # via -r requirements/pip-tools.in -pyproject-hooks==1.2.0 +pyproject-hooks==1.1.0 # via # build # pip-tools diff --git a/scripts/structures_pruning/requirements/base.txt b/scripts/structures_pruning/requirements/base.txt index a3fcacad2f7e..b80c660b8749 100644 --- a/scripts/structures_pruning/requirements/base.txt +++ b/scripts/structures_pruning/requirements/base.txt @@ -11,7 +11,7 @@ click==8.1.6 # click-log click-log==0.4.0 # via -r scripts/structures_pruning/requirements/base.in -dnspython==2.7.0 +dnspython==2.6.1 # via pymongo edx-opaque-keys==2.11.0 # via -r scripts/structures_pruning/requirements/base.in diff --git a/scripts/structures_pruning/requirements/testing.txt b/scripts/structures_pruning/requirements/testing.txt index 94c6ac6982f3..8be2e15973d0 100644 --- a/scripts/structures_pruning/requirements/testing.txt +++ b/scripts/structures_pruning/requirements/testing.txt @@ -12,7 +12,7 @@ click-log==0.4.0 # via -r scripts/structures_pruning/requirements/base.txt ddt==1.7.2 # via -r scripts/structures_pruning/requirements/testing.in -dnspython==2.7.0 +dnspython==2.6.1 # via # -r scripts/structures_pruning/requirements/base.txt # pymongo diff --git a/scripts/user_retirement/requirements/base.txt b/scripts/user_retirement/requirements/base.txt index 576fa342c385..9f57da73d0c2 100644 --- a/scripts/user_retirement/requirements/base.txt +++ b/scripts/user_retirement/requirements/base.txt @@ -10,9 +10,9 @@ attrs==24.2.0 # via zeep backoff==2.2.1 # via -r scripts/user_retirement/requirements/base.in -boto3==1.35.37 +boto3==1.35.27 # via -r scripts/user_retirement/requirements/base.in -botocore==1.35.37 +botocore==1.35.27 # via # boto3 # s3transfer @@ -46,13 +46,13 @@ django-crum==0.7.9 # via edx-django-utils django-waffle==4.1.0 # via edx-django-utils -edx-django-utils==6.0.0 +edx-django-utils==5.16.0 # via edx-rest-api-client edx-rest-api-client==6.0.0 # via -r scripts/user_retirement/requirements/base.in -google-api-core==2.21.0 +google-api-core==2.20.0 # via google-api-python-client -google-api-python-client==2.149.0 +google-api-python-client==2.147.0 # via -r scripts/user_retirement/requirements/base.in google-auth==2.35.0 # via @@ -69,7 +69,7 @@ httplib2==0.22.0 # google-auth-httplib2 idna==3.10 # via requests -isodate==0.7.2 +isodate==0.6.1 # via zeep jenkinsapi==0.3.13 # via -r scripts/user_retirement/requirements/base.in @@ -77,11 +77,13 @@ jmespath==1.0.1 # via # boto3 # botocore -lxml==5.3.0 - # via zeep +lxml==4.9.4 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # zeep more-itertools==10.5.0 # via simple-salesforce -newrelic==10.0.0 +newrelic==9.13.0 # via edx-django-utils pbr==6.1.0 # via stevedore @@ -136,7 +138,7 @@ requests-toolbelt==1.0.0 # via zeep rsa==4.9 # via google-auth -s3transfer==0.10.3 +s3transfer==0.10.2 # via boto3 simple-salesforce==1.12.6 # via -r scripts/user_retirement/requirements/base.in @@ -144,6 +146,7 @@ simplejson==3.19.3 # via -r scripts/user_retirement/requirements/base.in six==1.16.0 # via + # isodate # jenkinsapi # python-dateutil sqlparse==0.5.1 diff --git a/scripts/user_retirement/requirements/testing.txt b/scripts/user_retirement/requirements/testing.txt index 6a165d7356ca..d5aac1cd062f 100644 --- a/scripts/user_retirement/requirements/testing.txt +++ b/scripts/user_retirement/requirements/testing.txt @@ -14,11 +14,11 @@ attrs==24.2.0 # zeep backoff==2.2.1 # via -r scripts/user_retirement/requirements/base.txt -boto3==1.35.37 +boto3==1.35.27 # via # -r scripts/user_retirement/requirements/base.txt # moto -botocore==1.35.37 +botocore==1.35.27 # via # -r scripts/user_retirement/requirements/base.txt # boto3 @@ -66,17 +66,17 @@ django-waffle==4.1.0 # via # -r scripts/user_retirement/requirements/base.txt # edx-django-utils -edx-django-utils==6.0.0 +edx-django-utils==5.16.0 # via # -r scripts/user_retirement/requirements/base.txt # edx-rest-api-client edx-rest-api-client==6.0.0 # via -r scripts/user_retirement/requirements/base.txt -google-api-core==2.21.0 +google-api-core==2.20.0 # via # -r scripts/user_retirement/requirements/base.txt # google-api-python-client -google-api-python-client==2.149.0 +google-api-python-client==2.147.0 # via -r scripts/user_retirement/requirements/base.txt google-auth==2.35.0 # via @@ -103,7 +103,7 @@ idna==3.10 # requests iniconfig==2.0.0 # via pytest -isodate==0.7.2 +isodate==0.6.1 # via # -r scripts/user_retirement/requirements/base.txt # zeep @@ -116,11 +116,11 @@ jmespath==1.0.1 # -r scripts/user_retirement/requirements/base.txt # boto3 # botocore -lxml==5.3.0 +lxml==4.9.4 # via # -r scripts/user_retirement/requirements/base.txt # zeep -markupsafe==3.0.1 +markupsafe==2.1.5 # via # jinja2 # werkzeug @@ -132,7 +132,7 @@ more-itertools==10.5.0 # simple-salesforce moto==4.2.14 # via -r scripts/user_retirement/requirements/testing.in -newrelic==10.0.0 +newrelic==9.13.0 # via # -r scripts/user_retirement/requirements/base.txt # edx-django-utils @@ -235,7 +235,7 @@ rsa==4.9 # via # -r scripts/user_retirement/requirements/base.txt # google-auth -s3transfer==0.10.3 +s3transfer==0.10.2 # via # -r scripts/user_retirement/requirements/base.txt # boto3 @@ -246,6 +246,7 @@ simplejson==3.19.3 six==1.16.0 # via # -r scripts/user_retirement/requirements/base.txt + # isodate # jenkinsapi # python-dateutil sqlparse==0.5.1 @@ -274,7 +275,7 @@ urllib3==1.26.20 # responses werkzeug==3.0.4 # via moto -xmltodict==0.14.1 +xmltodict==0.13.0 # via moto zeep==4.2.1 # via From 96c682a25b1a191874ee77a3ab91bdb554508769 Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Thu, 10 Oct 2024 16:21:17 -0400 Subject: [PATCH 05/24] Revert "feat: Use jammy repositories for mongo installation." This reverts commit a245dec4f4ff431b336832174f53421a5a1b987c. --- .github/workflows/unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 900489256ab5..5fef1c8352ce 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -94,7 +94,7 @@ jobs: run: | if [[ "${{ matrix.mongo-version }}" != "4.4" ]]; then wget -qO - https://www.mongodb.org/static/pgp/server-${{ matrix.mongo-version }}.asc | sudo apt-key add - - echo "deb https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/${{ matrix.mongo-version }} multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-${{ matrix.mongo-version }}.list + echo "deb https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/${{ matrix.mongo-version }} multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-${{ matrix.mongo-version }}.list sudo apt-get update && sudo apt-get install -y mongodb-org="${{ matrix.mongo-version }}.*" fi From 8ee942e411ae84ca010bb7226e85dd2eadfef9d6 Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Thu, 10 Oct 2024 16:36:02 -0400 Subject: [PATCH 06/24] fix: Pin select jobs to ubuntu 22.04. Using Ubuntu 24.04 breaks Mongo installation and some thing involving lxml/xmlsec. We are going to pin this until we're ready to upgrade both. --- .github/workflows/ci-static-analysis.yml | 2 +- .github/workflows/migrations-check.yml | 4 ++-- .github/workflows/pylint-checks.yml | 4 ++-- .github/workflows/quality-checks.yml | 2 +- .github/workflows/static-assets-check.yml | 2 +- .github/workflows/unit-tests.yml | 12 ++++++------ 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci-static-analysis.yml b/.github/workflows/ci-static-analysis.yml index a3b0527aad72..458e00fc6b1f 100644 --- a/.github/workflows/ci-static-analysis.yml +++ b/.github/workflows/ci-static-analysis.yml @@ -10,7 +10,7 @@ jobs: matrix: python-version: - "3.11" - os: ["ubuntu-latest"] + os: ["ubuntu-22.04"] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/migrations-check.yml b/.github/workflows/migrations-check.yml index f253d48e4f41..624caddd5309 100644 --- a/.github/workflows/migrations-check.yml +++ b/.github/workflows/migrations-check.yml @@ -13,7 +13,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-22.04] python-version: - "3.11" # 'pinned' is used to install the latest patch version of Django @@ -126,7 +126,7 @@ jobs: if: always() needs: - check_migrations - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Decide whether the needed jobs succeeded or failed # uses: re-actors/alls-green@v1.2.1 diff --git a/.github/workflows/pylint-checks.yml b/.github/workflows/pylint-checks.yml index 144cc77a3da4..ad3aad388780 100644 --- a/.github/workflows/pylint-checks.yml +++ b/.github/workflows/pylint-checks.yml @@ -8,7 +8,7 @@ on: jobs: run-pylint: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: @@ -75,7 +75,7 @@ jobs: if: always() needs: - run-pylint - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Decide whether the needed jobs succeeded or failed # uses: re-actors/alls-green@v1.2.1 diff --git a/.github/workflows/quality-checks.yml b/.github/workflows/quality-checks.yml index 5445d70e3b4b..84610123493c 100644 --- a/.github/workflows/quality-checks.yml +++ b/.github/workflows/quality-checks.yml @@ -13,7 +13,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-22.04] python-version: - "3.11" node-version: [20] diff --git a/.github/workflows/static-assets-check.yml b/.github/workflows/static-assets-check.yml index 0a417f9b1c79..4fe66e2a7778 100644 --- a/.github/workflows/static-assets-check.yml +++ b/.github/workflows/static-assets-check.yml @@ -12,7 +12,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-22.04] python-version: - "3.11" node-version: [18, 20] diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 5fef1c8352ce..854677b93cff 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -15,7 +15,7 @@ concurrency: jobs: run-tests: name: ${{ matrix.shard_name }}(py=${{ matrix.python-version }},dj=${{ matrix.django-version }},mongo=${{ matrix.mongo-version }}) - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: matrix: python-version: @@ -164,7 +164,7 @@ jobs: overwrite: true collect-and-verify: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Setup Python @@ -229,7 +229,7 @@ jobs: # https://github.com/orgs/community/discussions/33579 success: name: Unit tests successful - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 if: always() needs: [run-tests] steps: @@ -240,7 +240,7 @@ jobs: jobs: ${{ toJSON(needs) }} compile-warnings-report: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: [run-tests] steps: - uses: actions/checkout@v4 @@ -268,7 +268,7 @@ jobs: overwrite: true merge-artifacts: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: [compile-warnings-report] steps: - name: Merge Pytest Warnings JSON Artifacts @@ -288,7 +288,7 @@ jobs: # Combine and upload coverage reports. coverage: if: (github.repository == 'edx/edx-platform-private') || (github.repository == 'openedx/edx-platform' && (startsWith(github.base_ref, 'open-release') == false)) - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: [run-tests] strategy: matrix: From 0cc9dee4e3c94768f753bf859070675480ed1887 Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Fri, 11 Oct 2024 10:09:09 -0400 Subject: [PATCH 07/24] Revert "fix(deps): update dependency @edx/frontend-component-cookie-policy-banner to v2.6.0" This reverts commit a39367b11a4880e124c1cd384b5c486484519414. --- package-lock.json | 1110 ++++----------------------------------------- package.json | 2 +- 2 files changed, 80 insertions(+), 1032 deletions(-) diff --git a/package-lock.json b/package-lock.json index 063a004ed812..82a6611d3abb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@edx/brand-edx.org": "^2.0.7", "@edx/edx-bootstrap": "1.0.4", "@edx/edx-proctoring": "^4.18.1", - "@edx/frontend-component-cookie-policy-banner": "2.6.0", + "@edx/frontend-component-cookie-policy-banner": "2.2.0", "@edx/paragon": "2.6.4", "@edx/studio-frontend": "^2.1.0", "babel-loader": "^9.1.3", @@ -1883,25 +1883,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.25.7.tgz", - "integrity": "sha512-gMmIEhg35sXk9Te5qbGp3W9YKrvLt3HV658/d3odWrHSqT0JeG5OzsJWFHRLiOohRyjRsJc/x03DhJm3i8VJxg==", - "license": "MIT", - "dependencies": { - "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime-corejs3/node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, "node_modules/@babel/runtime/node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", @@ -2125,16 +2106,14 @@ } }, "node_modules/@edx/frontend-component-cookie-policy-banner": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@edx/frontend-component-cookie-policy-banner/-/frontend-component-cookie-policy-banner-2.6.0.tgz", - "integrity": "sha512-Em/7v41BtVJsHWyaxGOgefif3YOe2Bw8rDZO6Rci40Mcx035Q7L0IlyG3Sxz+GKQIoSOJDYf+EfODS5i01AJOg==", - "license": "AGPL-3.0", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-component-cookie-policy-banner/-/frontend-component-cookie-policy-banner-2.2.0.tgz", + "integrity": "sha512-Ye5tL8dU1v77Vtva9QkrgNG0I50sR317OK51/aQwHn50Aoq45FML29dbP8E5dy36QSqvF99bNFA4rptLigiTGQ==", "dependencies": { "@edx/brand-edx.org": "2.0.3", - "@openedx/paragon": "^21.13.1", + "@edx/paragon": "^12.0.5", "babel-preset-minify": "^0.5.0", "classnames": "^2.3.1", - "identity-obj-proxy": "^3.0.0", "prop-types": "^15.6.1", "type-fest": "^2.14.0", "universal-cookie": "^4.0.0" @@ -2147,83 +2126,36 @@ "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/@edx/brand-edx.org": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@edx/brand-edx.org/-/brand-edx.org-2.0.3.tgz", - "integrity": "sha512-QRmq2su1Xy+9GhY3NRZ+WdjtYWHmgfuKbVCW2skxgfgW9Q6kea8L6LrgigfrZtW+kQq/KdX2tVJcYBkB9xALtQ==", - "license": "UNLICENSED" - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/@openedx/paragon": { - "version": "21.13.1", - "resolved": "https://registry.npmjs.org/@openedx/paragon/-/paragon-21.13.1.tgz", - "integrity": "sha512-sLL+Z3ZWIRM6x+OrKZV0S7/SQpEcSeRcDm7E3FzhsnAWudsJCTELvSW+84uy/8dwV7mJhttsBPqQEtNafbCyYA==", - "license": "Apache-2.0", - "workspaces": [ - "example", - "component-generator", - "www", - "icons", - "dependent-usage-analyzer" - ], - "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.1.1", - "@fortawesome/react-fontawesome": "^0.1.18", - "@popperjs/core": "^2.11.4", - "bootstrap": "^4.6.2", - "chalk": "^4.1.2", - "child_process": "^1.0.2", - "classnames": "^2.3.1", + "integrity": "sha512-QRmq2su1Xy+9GhY3NRZ+WdjtYWHmgfuKbVCW2skxgfgW9Q6kea8L6LrgigfrZtW+kQq/KdX2tVJcYBkB9xALtQ==" + }, + "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/@edx/paragon": { + "version": "12.8.0", + "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-12.8.0.tgz", + "integrity": "sha512-gJVnozu4V1e2PCI0lFICvnrs2yi0ZzcaO5gJB9OjB1Pzf5GXpkKNWLtdTwjgp4fvzL9w4sqvyB30apbQzWW8yw==", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.30", + "@fortawesome/free-solid-svg-icons": "^5.14.0", + "@fortawesome/react-fontawesome": "^0.1.11", + "airbnb-prop-types": "^2.12.0", + "bootstrap": "^4.4.1", + "classnames": "^2.2.6", "email-prop-type": "^3.0.0", - "file-selector": "^0.6.0", "font-awesome": "^4.7.0", - "glob": "^8.0.3", - "inquirer": "^8.2.5", - "lodash.uniqby": "^4.7.0", - "mailto-link": "^2.0.0", - "prop-types": "^15.8.1", - "react-bootstrap": "^1.6.5", - "react-colorful": "^5.6.1", - "react-dropzone": "^14.2.1", - "react-focus-on": "^3.5.4", - "react-imask": "^7.1.3", - "react-loading-skeleton": "^3.1.0", - "react-popper": "^2.2.5", + "mailto-link": "^1.0.0", + "prop-types": "^15.7.2", + "react-bootstrap": "^1.2.2", + "react-focus-on": "^3.5.0", "react-proptype-conditional-require": "^1.0.4", - "react-responsive": "^8.2.0", - "react-table": "^7.7.0", - "react-transition-group": "^4.4.2", - "tabbable": "^5.3.3", - "uncontrollable": "^7.2.1", - "uuid": "^9.0.0" - }, - "bin": { - "paragon": "bin/paragon-scripts.js" + "react-responsive": "^6.1.1", + "react-table": "^7.6.1", + "react-transition-group": "^4.0.0", + "sanitize-html": "^1.20.0", + "tabbable": "^4.0.0" }, "peerDependencies": { - "react": "^16.8.6 || ^17.0.0", - "react-dom": "^16.8.6 || ^17.0.0", - "react-intl": "^5.25.1 || ^6.4.0" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/attr-accept": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.4.tgz", - "integrity": "sha512-2pA6xFIbdTUDCAwjN8nQwI+842VwzbDUXO2IYlpPXQIORgKnavorcr4Ce3rwh+zsNg9zK7QPsdvDj3Lum4WX4w==", - "license": "MIT", - "engines": { - "node": ">=4" + "prop-types": "^15.7.2", + "react": "^16.8.6", + "react-dom": "^16.8.6" } }, "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/bootstrap": { @@ -2240,81 +2172,15 @@ "url": "https://opencollective.com/bootstrap" } ], - "license": "MIT", "peerDependencies": { "jquery": "1.9.1 - 3", "popper.js": "^1.16.1" } }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "license": "ISC", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -2324,206 +2190,24 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/email-prop-type/-/email-prop-type-3.0.1.tgz", "integrity": "sha512-tONZGMEOOkadp5OBftuVXU8DsceWmINxYK+pqPFB4LT5ODjrPX/esel3WGqbV7d6in5/MnZE4n4QcqOr4gh7dg==", - "license": "MIT", "dependencies": { "email-validator": "^2.0.4" } }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/intl-messageformat": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.6.0.tgz", - "integrity": "sha512-AYKl/DY1nl75pJU8EK681JOVL40uQTNJe3yEMXKfydDFoz+5hNrM/PqjchueSMKGKCZKBVgeexqZwy3uC2B36Q==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@formatjs/ecma402-abstract": "2.1.0", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.9", - "tslib": "^2.4.0" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/mailto-link": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mailto-link/-/mailto-link-2.0.0.tgz", - "integrity": "sha512-b5FErkZ4t6mpH1IFZSw7Mm2IQHXQ2R0/5Q4xd7Rv8dVkWvE54mFG/UW7HjfFazXFjXTNsM+dSX2tTeIDrV9K9A==", - "license": "MIT", - "dependencies": { - "assert-ok": "~1.0.0", - "cast-array": "~1.0.1", - "object-filter": "~1.0.2", - "query-string": "~7.0.0" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "license": "ISC" - }, "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/query-string": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", - "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", - "license": "MIT", - "dependencies": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/react-dropzone": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.9.tgz", - "integrity": "sha512-jRZsMC7h48WONsOLHcmhyn3cRWJoIPQjPApvt/sJVfnYaB3Qltn025AoRTTJaj4WdmmgmLl6tUQg1s0wOhpodQ==", - "license": "MIT", - "dependencies": { - "attr-accept": "^2.2.2", - "file-selector": "^0.6.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "react": ">= 16.8 || 18.0.0" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/react-intl": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.7.2.tgz", - "integrity": "sha512-v/lvAORTE70welhzqoIi1YI1yHvGE4/QX4W3JYNZoqRxH8ab8Q/Ed4Zem/ZVPZJN4byQ52U+2GESLy0zvY6IBw==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@formatjs/ecma402-abstract": "2.1.0", - "@formatjs/icu-messageformat-parser": "2.7.9", - "@formatjs/intl": "2.10.7", - "@formatjs/intl-displaynames": "6.6.9", - "@formatjs/intl-listformat": "7.5.8", - "@types/hoist-non-react-statics": "^3.3.1", - "@types/react": "16 || 17 || 18", - "hoist-non-react-statics": "^3.3.2", - "intl-messageformat": "10.6.0", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "react": "^16.6.0 || 17 || 18", - "typescript": "^4.7 || 5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "license": "BSD-3-Clause", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -2535,62 +2219,6 @@ "react-dom": ">=16.6.0" } }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@edx/frontend-component-cookie-policy-banner/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@edx/mockprock": { "version": "1.0.2", "resolved": "git+ssh://git@github.com/openedx/mockprock.git#3ad18c6888e6521e9bf7a4df0db6f8579b928235", @@ -3510,139 +3138,35 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@formatjs/ecma402-abstract": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.1.0.tgz", - "integrity": "sha512-SE2V2PE03K9U/YQZ3nxEOysRkQ/CfSwLHR789Uk9N0PTiWT6I+17UTDI97zYEwC1mbnjefqmtjbL8nunjPwGjw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/fast-memoize": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", - "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.7.9", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.9.tgz", - "integrity": "sha512-9Z5buDRMsTbplXknvRlDmnpWhZrayNVcVvkH0+SSz8Ll4XD/7Tcn8m1IjxM3iBJSwQbxwxb7/g0Fkx3d4j2osw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@formatjs/ecma402-abstract": "2.1.0", - "@formatjs/icu-skeleton-parser": "1.8.3", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.3.tgz", - "integrity": "sha512-TsKAP013ayZFbWWR2KWy+f9QVZh0yDFTPK3yE4OqU2gnzafvmKTodRtJLVpfZmpXWJ5y7BWD1AsyT14mcbLzig==", - "license": "MIT", - "peer": true, - "dependencies": { - "@formatjs/ecma402-abstract": "2.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/intl": { - "version": "2.10.7", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.7.tgz", - "integrity": "sha512-26rNxo2nwQbbsVkV54ngml9XIA7bBzfQmELG6FFFF8eKzqzFrLKZzF8JBoBpPHgML4HKEUbGCQaBaARpKCN/sw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@formatjs/ecma402-abstract": "2.1.0", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.9", - "@formatjs/intl-displaynames": "6.6.9", - "@formatjs/intl-listformat": "7.5.8", - "intl-messageformat": "10.6.0", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "typescript": "^4.7 || 5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@formatjs/intl-displaynames": { - "version": "6.6.9", - "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.6.9.tgz", - "integrity": "sha512-2hmS+YJwiXB1deNYXO2/pY7Zv4QUrZHghZxkcnWxBLEODk990h9cNbkjNg/u/RaDeCRkKVrZ3ERTdBcgkTvn2Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@formatjs/ecma402-abstract": "2.1.0", - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/intl-listformat": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.5.8.tgz", - "integrity": "sha512-WzMiw6nA2uP0ZqbbuPs7tQ+gmYRTbE20lwur4QcKp5K5cgPhkCzRAhovkDFLhrc885c3p7Wjigx8kyg0hypmZw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@formatjs/ecma402-abstract": "2.1.0", - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/intl/node_modules/intl-messageformat": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.6.0.tgz", - "integrity": "sha512-AYKl/DY1nl75pJU8EK681JOVL40uQTNJe3yEMXKfydDFoz+5hNrM/PqjchueSMKGKCZKBVgeexqZwy3uC2B36Q==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@formatjs/ecma402-abstract": "2.1.0", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.9", - "tslib": "^2.4.0" + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", + "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" } }, "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz", - "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==", - "license": "MIT", + "version": "1.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz", + "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==", + "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.6.0" + "@fortawesome/fontawesome-common-types": "^0.2.36" }, "engines": { "node": ">=6" } }, - "node_modules/@fortawesome/fontawesome-svg-core/node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz", - "integrity": "sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==", - "license": "MIT", + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz", + "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, "engines": { "node": ">=6" } @@ -4713,17 +4237,6 @@ "@types/node": "*" } }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, "node_modules/@types/invariant": { "version": "2.2.37", "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.37.tgz", @@ -5307,6 +4820,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -5321,6 +4835,7 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "engines": { "node": ">=10" }, @@ -6609,26 +6124,6 @@ "node": ">= 0.6.0" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/base64id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", @@ -6692,31 +6187,6 @@ "file-uri-to-path": "1.0.0" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/blob": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", @@ -6853,30 +6323,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/buffer-alloc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", @@ -7217,12 +6663,6 @@ "node": ">=10" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "license": "MIT" - }, "node_modules/cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -7261,12 +6701,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/child_process": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", - "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==", - "license": "ISC" - }, "node_modules/chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -7608,18 +7042,6 @@ "node": ">=0.10.0" } }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-width": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", @@ -8001,17 +7423,6 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-pure": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.1.tgz", - "integrity": "sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -8449,6 +7860,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, "engines": { "node": ">=0.10" } @@ -8495,18 +7907,6 @@ "node": ">=0.10.0" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -10574,41 +9974,15 @@ "isobject": "^3.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, + "node_modules/extend-shallow/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "engines": { - "node": ">=0.6.0" + "node": ">=0.10.0" } }, "node_modules/extglob": { @@ -10827,18 +10201,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/file-selector": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", - "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - }, - "engines": { - "node": ">= 12" - } - }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -10904,15 +10266,6 @@ "node": ">=0.10" } }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -11713,12 +11066,6 @@ "node": ">=6" } }, - "node_modules/harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "license": "(Apache-2.0 OR MPL-1.1)" - }, "node_modules/has": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", @@ -12144,38 +11491,6 @@ "node": ">=4.0.0" } }, - "node_modules/identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", - "license": "MIT", - "dependencies": { - "harmony-reflect": "^1.4.6" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -12185,18 +11500,6 @@ "node": ">= 4" } }, - "node_modules/imask": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/imask/-/imask-7.6.1.tgz", - "integrity": "sha512-sJlIFM7eathUEMChTh9Mrfw/IgiWgJqBKq2VNbyXvBZ7ev/IlO6/KQTKlV/Fm+viQMLrFLG/zCuudrLIwgK2dg==", - "license": "MIT", - "dependencies": { - "@babel/runtime-corejs3": "^7.24.4" - }, - "engines": { - "npm": ">=4.0.0" - } - }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -12843,15 +12146,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", @@ -13104,18 +12398,6 @@ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -16875,12 +16157,6 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", - "license": "MIT" - }, "node_modules/log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -17324,6 +16600,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "engines": { "node": ">=6" } @@ -18418,6 +17695,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -18480,140 +17758,6 @@ "node": ">=0.4.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -18627,6 +17771,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -20553,16 +19698,6 @@ "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/react-colorful": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", - "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, "node_modules/react-dom": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", @@ -20604,12 +19739,6 @@ "resolved": "https://registry.npmjs.org/react-element-proptypes/-/react-element-proptypes-1.0.0.tgz", "integrity": "sha512-unJTkc58D9n1xTXKA8swrwrbDQAsCF/13oT6fDYtBVHPvFxITFuI20HCMNbNzI7tTUzsYmJ3iqjskwfLJkOUFA==" }, - "node_modules/react-fast-compare": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", - "license": "MIT" - }, "node_modules/react-focus-lock": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-1.19.1.tgz", @@ -20703,33 +19832,6 @@ } } }, - "node_modules/react-imask": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/react-imask/-/react-imask-7.6.1.tgz", - "integrity": "sha512-vLNfzcCz62Yzx/GRGh5tiCph9Gbh2cZu+Tz8OiO5it2eNuuhpA0DWhhSlOtVtSJ80+Bx+vFK5De8eQ9AmbkXzA==", - "license": "MIT", - "dependencies": { - "imask": "^7.6.1", - "prop-types": "^15.8.1" - }, - "engines": { - "npm": ">=4.0.0" - }, - "peerDependencies": { - "react": ">=0.14.0" - } - }, - "node_modules/react-imask/node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, "node_modules/react-intl": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.9.0.tgz", @@ -20767,15 +19869,6 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, - "node_modules/react-loading-skeleton": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.5.0.tgz", - "integrity": "sha512-gxxSyLbrEAdXTKgfbpBEFZCO/P153DnqSCQau2+o6lNy1jgMRr2MmRmOzMmyrwSaSYLRB8g7b0waYPmUjz7IhQ==", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8.0" - } - }, "node_modules/react-overlays": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz", @@ -20814,21 +19907,6 @@ "react-is": "^16.13.1" } }, - "node_modules/react-popper": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", - "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", - "license": "MIT", - "dependencies": { - "react-fast-compare": "^3.0.1", - "warning": "^4.0.2" - }, - "peerDependencies": { - "@popperjs/core": "^2.0.0", - "react": "^16.8.0 || ^17 || ^18", - "react-dom": "^16.8.0 || ^17 || ^18" - } - }, "node_modules/react-proptype-conditional-require": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz", @@ -20902,21 +19980,19 @@ } }, "node_modules/react-responsive": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-8.2.0.tgz", - "integrity": "sha512-iagCqVrw4QSjhxKp3I/YK6+ODkWY6G+YPElvdYKiUUbywwh9Ds0M7r26Fj2/7dWFFbOpcGnJE6uE7aMck8j5Qg==", - "license": "MIT", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-6.1.2.tgz", + "integrity": "sha512-AXentVC/kN3KED9zhzJv2pu4vZ0i6cSHdTtbCScVV1MT6F5KXaG2qs5D7WLmhdaOvmiMX8UfmS4ZSO+WPwDt4g==", "dependencies": { "hyphenate-style-name": "^1.0.0", "matchmediaquery": "^0.3.0", - "prop-types": "^15.6.1", - "shallow-equal": "^1.1.0" + "prop-types": "^15.6.1" }, "engines": { "node": ">= 0.10" }, "peerDependencies": { - "react": ">=16.8.0" + "react": "^16.3.0" } }, "node_modules/react-responsive/node_modules/prop-types": { @@ -22193,15 +21269,6 @@ "integrity": "sha512-1I1+G2gteLB8Tkt8YI1sJvSIfa0lWuRtC8GjvtyPBcLSF5jBCCJJqKrpER5JU5r6Bhe+i9/pK3VMuUcXu0kdwQ==", "dev": true }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/safe-array-concat": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", @@ -23209,12 +22276,6 @@ "node": ">=8" } }, - "node_modules/shallow-equal": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", - "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==", - "license": "MIT" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -23273,7 +22334,8 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/simple-html-tokenizer": { "version": "0.1.1", @@ -23775,15 +22837,6 @@ "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", "dev": true }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -24665,10 +23718,9 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "node_modules/tabbable": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", - "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==", - "license": "MIT" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-4.0.0.tgz", + "integrity": "sha512-H1XoH1URcBOa/rZZWxLxHCtOdVUEev+9vo5YdYhC9tCY4wnybX+VQrCYuy9ubkg69fCBxCONJOSLGfw0DWMffQ==" }, "node_modules/table": { "version": "6.8.2", @@ -24933,7 +23985,8 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, "node_modules/through2": { "version": "3.0.2", @@ -26048,15 +25101,6 @@ "node": ">=10.13.0" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -26483,6 +25527,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -26543,6 +25588,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -26557,6 +25603,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -26567,7 +25614,8 @@ "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/wrappy": { "version": "1.0.2", diff --git a/package.json b/package.json index 6173420ab0bb..1f48500e6e27 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "@edx/brand-edx.org": "^2.0.7", "@edx/edx-bootstrap": "1.0.4", "@edx/edx-proctoring": "^4.18.1", - "@edx/frontend-component-cookie-policy-banner": "2.6.0", + "@edx/frontend-component-cookie-policy-banner": "2.2.0", "@edx/paragon": "2.6.4", "@edx/studio-frontend": "^2.1.0", "babel-loader": "^9.1.3", From b8c79abd2c8a7951cd374a14dded60187258d297 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:05:01 -0600 Subject: [PATCH 08/24] feat: Upgrade Python dependency edx-enterprise (#35625) Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master` Co-authored-by: kiram15 <31229189+kiram15@users.noreply.github.com> --- requirements/constraints.txt | 2 +- requirements/edx/base.txt | 2 +- requirements/edx/development.txt | 2 +- requirements/edx/doc.txt | 2 +- requirements/edx/testing.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/requirements/constraints.txt b/requirements/constraints.txt index dd727a4b1801..6fb109d62f09 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -82,7 +82,7 @@ django-storages<1.14.4 # The team that owns this package will manually bump this package rather than having it pulled in automatically. # This is to allow them to better control its deployment and to do it in a process that works better # for them. -edx-enterprise==4.27.2 +edx-enterprise==4.27.3 # Date: 2024-05-09 # This has to be constrained as well because newer versions of edx-i18n-tools need the diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 55793bd0c5af..b92ad29f8abf 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -467,7 +467,7 @@ edx-drf-extensions==10.4.0 # edx-when # edxval # openedx-learning -edx-enterprise==4.27.2 +edx-enterprise==4.27.3 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/kernel.in diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index 1bdd3736516b..a5713bc3dd33 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -741,7 +741,7 @@ edx-drf-extensions==10.4.0 # edx-when # edxval # openedx-learning -edx-enterprise==4.27.2 +edx-enterprise==4.27.3 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt index 6f12d8046759..57f36577a5db 100644 --- a/requirements/edx/doc.txt +++ b/requirements/edx/doc.txt @@ -547,7 +547,7 @@ edx-drf-extensions==10.4.0 # edx-when # edxval # openedx-learning -edx-enterprise==4.27.2 +edx-enterprise==4.27.3 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index d3b14a6f4373..4f26caa9582a 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -571,7 +571,7 @@ edx-drf-extensions==10.4.0 # edx-when # edxval # openedx-learning -edx-enterprise==4.27.2 +edx-enterprise==4.27.3 # via # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt From 5b809673b6162a1962ab7f9ca11ec9219e422d92 Mon Sep 17 00:00:00 2001 From: Braden MacDonald Date: Fri, 11 Oct 2024 10:23:32 -0700 Subject: [PATCH 09/24] refactor: get rid of XBlockRuntimeSystem for v2 libraries (#35624) --- openedx/core/djangoapps/xblock/api.py | 34 ++---- openedx/core/djangoapps/xblock/apps.py | 12 +-- .../xblock/runtime/learning_core_runtime.py | 6 +- .../core/djangoapps/xblock/runtime/runtime.py | 101 +++++------------- 4 files changed, 46 insertions(+), 107 deletions(-) diff --git a/openedx/core/djangoapps/xblock/api.py b/openedx/core/djangoapps/xblock/api.py index 43ec3909bcd6..dbb7c824676b 100644 --- a/openedx/core/djangoapps/xblock/api.py +++ b/openedx/core/djangoapps/xblock/api.py @@ -25,13 +25,13 @@ from xblock.exceptions import NoSuchUsage, NoSuchViewError from xblock.plugin import PluginMissingError +from openedx.core.types import User as UserType from openedx.core.djangoapps.xblock.apps import get_xblock_app_config from openedx.core.djangoapps.xblock.learning_context.manager import get_learning_context_impl from openedx.core.djangoapps.xblock.runtime.learning_core_runtime import ( LearningCoreFieldData, LearningCoreXBlockRuntime, ) -from openedx.core.djangoapps.xblock.runtime.runtime import XBlockRuntimeSystem as _XBlockRuntimeSystem from .utils import get_secure_token_for_xblock_handler, get_xblock_id_for_anonymous_user from .runtime.learning_core_runtime import LearningCoreXBlockRuntime @@ -54,33 +54,21 @@ class CheckPerm(Enum): CAN_EDIT = 3 -def get_runtime_system(): +def get_runtime(user: UserType): """ - Return a new XBlockRuntimeSystem. - - TODO: Refactor to get rid of the XBlockRuntimeSystem entirely and just - create the LearningCoreXBlockRuntime and return it. We used to want to keep - around a long lived runtime system (a factory that returns runtimes) for - caching purposes, and have it dynamically construct a runtime on request. - Now we're just re-constructing both the system and the runtime in this call - and returning it every time, because: - - 1. We no longer have slow, Blockstore-style definitions to cache, so the - performance of this is perfectly acceptable. - 2. Having a singleton increases complexity and the chance of bugs. - 3. Creating the XBlockRuntimeSystem every time only takes about 10-30 µs. - - Given that, the extra XBlockRuntimeSystem class just adds confusion. But - despite that, it's tested, working code, and so I'm putting off refactoring - for now. + Return a new XBlockRuntime. + + Each XBlockRuntime is bound to one user (and usually one request or one + celery task). It is typically used just to load and render a single block, + but the API _does_ allow a single runtime instance to load multiple blocks + (as long as they're for the same user). """ - params = get_xblock_app_config().get_runtime_system_params() + params = get_xblock_app_config().get_runtime_params() params.update( - runtime_class=LearningCoreXBlockRuntime, handler_url=get_handler_url, authored_data_store=LearningCoreFieldData(), ) - runtime = _XBlockRuntimeSystem(**params) + runtime = LearningCoreXBlockRuntime(user, **params) return runtime @@ -121,7 +109,7 @@ def load_block(usage_key, user, *, check_permission: CheckPerm | None = CheckPer # e.g. a course might specify that all 'problem' XBlocks have 'max_attempts' # set to 3. # field_overrides = context_impl.get_field_overrides(usage_key) - runtime = get_runtime_system().get_runtime(user=user) + runtime = get_runtime(user=user) try: return runtime.get_block(usage_key) diff --git a/openedx/core/djangoapps/xblock/apps.py b/openedx/core/djangoapps/xblock/apps.py index 5ba2361322ec..848470a3a90c 100644 --- a/openedx/core/djangoapps/xblock/apps.py +++ b/openedx/core/djangoapps/xblock/apps.py @@ -16,9 +16,9 @@ class XBlockAppConfig(AppConfig): verbose_name = 'New XBlock Runtime' label = 'xblock_new' # The name 'xblock' is already taken by ORA2's 'openassessment.xblock' app :/ - def get_runtime_system_params(self): + def get_runtime_params(self): """ - Get the XBlockRuntimeSystem parameters appropriate for viewing and/or + Get the LearningCoreXBlockRuntime parameters appropriate for viewing and/or editing XBlock content. """ raise NotImplementedError @@ -43,9 +43,9 @@ class LmsXBlockAppConfig(XBlockAppConfig): LMS-specific configuration of the XBlock Runtime django app. """ - def get_runtime_system_params(self): + def get_runtime_params(self): """ - Get the XBlockRuntimeSystem parameters appropriate for viewing and/or + Get the LearningCoreXBlockRuntime parameters appropriate for viewing and/or editing XBlock content in the LMS """ return dict( @@ -65,9 +65,9 @@ class StudioXBlockAppConfig(XBlockAppConfig): Studio-specific configuration of the XBlock Runtime django app. """ - def get_runtime_system_params(self): + def get_runtime_params(self): """ - Get the XBlockRuntimeSystem parameters appropriate for viewing and/or + Get the LearningCoreXBlockRuntime parameters appropriate for viewing and/or editing XBlock content in Studio """ return dict( diff --git a/openedx/core/djangoapps/xblock/runtime/learning_core_runtime.py b/openedx/core/djangoapps/xblock/runtime/learning_core_runtime.py index 26aa7af60f0b..41fd79f5a068 100644 --- a/openedx/core/djangoapps/xblock/runtime/learning_core_runtime.py +++ b/openedx/core/djangoapps/xblock/runtime/learning_core_runtime.py @@ -211,7 +211,7 @@ def get_block(self, usage_key, for_parent=None): # We've pre-loaded the fields for this block, so the FieldData shouldn't # consider these values "changed" in its sense of "you have to persist # these because we've altered the field values from what was stored". - self.system.authored_data_store.mark_unchanged(block) + self.authored_data_store.mark_unchanged(block) return block @@ -221,7 +221,7 @@ def save_block(self, block): This gets called by block.save() - do not call this directly. """ - if not self.system.authored_data_store.has_changes(block): + if not self.authored_data_store.has_changes(block): return # No changes, so no action needed. # Verify that the user has permission to write to authored data in this @@ -254,7 +254,7 @@ def save_block(self, block): }, created=now, ) - self.system.authored_data_store.mark_unchanged(block) + self.authored_data_store.mark_unchanged(block) def _get_component_from_usage_key(self, usage_key): """ diff --git a/openedx/core/djangoapps/xblock/runtime/runtime.py b/openedx/core/djangoapps/xblock/runtime/runtime.py index 5746af491d10..fe633f686f02 100644 --- a/openedx/core/djangoapps/xblock/runtime/runtime.py +++ b/openedx/core/djangoapps/xblock/runtime/runtime.py @@ -95,18 +95,30 @@ class XBlockRuntime(RuntimeShim, Runtime): # currently only used to track if we're in the studio_view (see below under service()) view_name: str | None - def __init__(self, system: XBlockRuntimeSystem, user: UserType | None): + def __init__( + self, + user: UserType | None, + *, + handler_url: Callable[[UsageKey, str, UserType | None], str], + student_data_mode: StudentDataMode, + id_reader: Optional[IdReader] = None, + authored_data_store: Optional[FieldData] = None, + ): super().__init__( - id_reader=system.id_reader, + id_reader=id_reader or OpaqueKeyReader(), mixins=( LmsBlockMixin, # Adds Non-deprecated LMS/Studio functionality XBlockShim, # Adds deprecated LMS/Studio functionality / backwards compatibility ), default_class=None, select=None, - id_generator=system.id_generator, + id_generator=MemoryIdManager(), # We don't really use id_generator until we need to support asides ) - self.system = system + assert student_data_mode in (StudentDataMode.Ephemeral, StudentDataMode.Persisted) + self.authored_data_store = authored_data_store + self.children_data_store = None + self.student_data_mode = student_data_mode + self.handler_url_fn = handler_url self.user = user # self.user_id must be set as a separate attribute since base class sets it: if self.user is None: @@ -126,7 +138,7 @@ def handler_url(self, block, handler_name: str, suffix='', query='', thirdparty= if thirdparty: log.warning("thirdparty handlers are not supported by this runtime for XBlock %s.", type(block)) - url = self.system.handler_url(block.scope_ids.usage_id, handler_name, self.user) + url = self.handler_url_fn(block.scope_ids.usage_id, handler_name, self.user) if suffix: if not url.endswith('/'): url += '/' @@ -275,7 +287,7 @@ def service(self, block: XBlock, service_name: str): # the preview engine, and 'main' otherwise. # For backwards compatibility, we check the student_data_mode (Ephemeral indicates CMS) and the # view_name for 'studio_view.' self.view_name is set by render() below. - if self.system.student_data_mode == StudentDataMode.Ephemeral and self.view_name != 'studio_view': + if self.student_data_mode == StudentDataMode.Ephemeral and self.view_name != 'studio_view': return MakoService(namespace_prefix='lms.') return MakoService() elif service_name == "i18n": @@ -301,14 +313,12 @@ def service(self, block: XBlock, service_name: str): return EventPublishingService(self.user, context_key, make_track_function()) elif service_name == 'enrollments': return EnrollmentsService() + elif service_name == 'error_tracker': + return make_error_tracker() - # Check if the XBlockRuntimeSystem wants to handle this: - service = self.system.get_service(block, service_name) # Otherwise, fall back to the base implementation which loads services # defined in the constructor: - if service is None: - service = super().service(block, service_name) - return service + return super().service(block, service_name) def _init_field_data_for_block(self, block: XBlock) -> FieldData: """ @@ -322,7 +332,7 @@ def _init_field_data_for_block(self, block: XBlock) -> FieldData: assert isinstance(self.user_id, str) and self.user_id.startswith("anon") kvs = EphemeralKeyValueStore() student_data_store = KvsFieldData(kvs) - elif self.system.student_data_mode == StudentDataMode.Ephemeral: + elif self.student_data_mode == StudentDataMode.Ephemeral: # We're in an environment like Studio where we want to let the # author test blocks out but not permanently save their state. kvs = EphemeralKeyValueStore() @@ -341,10 +351,10 @@ def _init_field_data_for_block(self, block: XBlock) -> FieldData: student_data_store = KvsFieldData(kvs=DjangoKeyValueStore(field_data_cache)) return SplitFieldData({ - Scope.content: self.system.authored_data_store, - Scope.settings: self.system.authored_data_store, - Scope.parent: self.system.authored_data_store, - Scope.children: self.system.children_data_store, + Scope.content: self.authored_data_store, + Scope.settings: self.authored_data_store, + Scope.parent: self.authored_data_store, + Scope.children: self.children_data_store, Scope.user_state_summary: student_data_store, Scope.user_state: student_data_store, Scope.user_info: student_data_store, @@ -407,62 +417,3 @@ def _lookup_asset_url(self, block: XBlock, asset_path: str): # pylint: disable= """ # Subclasses should override this return None - - -class XBlockRuntimeSystem: - """ - This class is essentially a factory for XBlockRuntimes. This is a - long-lived object which provides the behavior specific to the application - that wants to use XBlocks. Unlike XBlockRuntime, a single instance of this - class can be used with many different XBlocks, whereas each XBlock gets its - own instance of XBlockRuntime. - """ - def __init__( - self, - handler_url: Callable[[UsageKey, str, UserType | None], str], - student_data_mode: StudentDataMode, - runtime_class: type[XBlockRuntime], - id_reader: Optional[IdReader] = None, - authored_data_store: Optional[FieldData] = None, - ): - """ - args: - handler_url: A method to get URLs to call XBlock handlers. It must - implement this signature: - handler_url( - usage_key: UsageKey, - handler_name: str, - user: User | AnonymousUser | None - ) -> str - student_data_mode: Specifies whether student data should be kept - in a temporary in-memory store (e.g. Studio) or persisted - forever in the database. - runtime_class: What runtime to use, e.g. LearningCoreXBlockRuntime - """ - self.handler_url = handler_url - self.id_reader = id_reader or OpaqueKeyReader() - self.id_generator = MemoryIdManager() # We don't really use id_generator until we need to support asides - self.runtime_class = runtime_class - self.authored_data_store = authored_data_store - self.children_data_store = None - assert student_data_mode in (StudentDataMode.Ephemeral, StudentDataMode.Persisted) - self.student_data_mode = student_data_mode - - def get_runtime(self, user: UserType | None) -> XBlockRuntime: - """ - Get the XBlock runtime for the specified Django user. The user can be - a regular user, an AnonymousUser, or None. - """ - return self.runtime_class(self, user) - - def get_service(self, block, service_name: str): - """ - Get a runtime service - - Runtime services may come from this XBlockRuntimeSystem, - or if this method returns None, they may come from the - XBlockRuntime. - """ - if service_name == 'error_tracker': - return make_error_tracker() - return None # None means see if XBlockRuntime offers this service From 3cf5f34e2b7d3cdc652610cbfe0c47a27c2a83f8 Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Thu, 3 Oct 2024 20:50:08 +0530 Subject: [PATCH 10/24] feat: add & remove collections to component --- .../core/djangoapps/content_libraries/api.py | 52 +++++++++++++++++++ .../content_libraries/serializers.py | 8 +++ .../content_libraries/signal_handlers.py | 9 ++-- .../core/djangoapps/content_libraries/urls.py | 2 + .../djangoapps/content_libraries/views.py | 43 +++++++++++++++ 5 files changed, 110 insertions(+), 4 deletions(-) diff --git a/openedx/core/djangoapps/content_libraries/api.py b/openedx/core/djangoapps/content_libraries/api.py index b9f3779af539..61afdbe09cd2 100644 --- a/openedx/core/djangoapps/content_libraries/api.py +++ b/openedx/core/djangoapps/content_libraries/api.py @@ -1235,6 +1235,58 @@ def update_library_collection_components( return collection +def update_library_component_collections( + library_key: LibraryLocatorV2, + component: Component, + *, + collection_keys: list[str], + created_by: int | None = None, + remove=False, + # As an optimization, callers may pass in a pre-fetched ContentLibrary instance + content_library: ContentLibrary | None = None, +) -> Collection: + """ + This api has opposite then functionality from `update_library_collection_components`. + It Associates the component with collections for the given collection keys. + + By default the Collections are added to the Component. + If remove=True, the Collections are removed from the Component. + + If you've already fetched the ContentLibrary, pass it in to avoid refetching. + + Raises: + * ContentLibraryCollectionNotFound if any of the given collection_keys don't match Collections in the given library. + + Returns the updated Component. + """ + if not content_library: + content_library = ContentLibrary.objects.get_by_key(library_key) # type: ignore[attr-defined] + assert content_library + assert content_library.learning_package_id + assert content_library.library_key == library_key + + # Note: Component.key matches its PublishableEntity.key + collection_qs = authoring_api.get_collections(content_library.learning_package_id).filter( + key__in=collection_keys + ) + + if remove: + component = authoring_api.remove_collections( + content_library.learning_package_id, + component, + collection_qs, + ) + else: + component = authoring_api.add_collections( + content_library.learning_package_id, + component, + collection_qs, + created_by=created_by, + ) + + return component + + def get_library_collection_usage_key( library_key: LibraryLocatorV2, collection_key: str, diff --git a/openedx/core/djangoapps/content_libraries/serializers.py b/openedx/core/djangoapps/content_libraries/serializers.py index 51ba55cd6b48..f9563ff3603c 100644 --- a/openedx/core/djangoapps/content_libraries/serializers.py +++ b/openedx/core/djangoapps/content_libraries/serializers.py @@ -305,3 +305,11 @@ class ContentLibraryCollectionComponentsUpdateSerializer(serializers.Serializer) """ usage_keys = serializers.ListField(child=UsageKeyV2Serializer(), allow_empty=False) + + +class ContentLibraryComponentCollectionsUpdateSerializer(serializers.Serializer): + """ + Serializer for adding/removing Collections to/from a Component. + """ + + collection_keys = serializers.ListField(child=serializers.CharField(), allow_empty=False) diff --git a/openedx/core/djangoapps/content_libraries/signal_handlers.py b/openedx/core/djangoapps/content_libraries/signal_handlers.py index fedee045a9f6..18e102bf686d 100644 --- a/openedx/core/djangoapps/content_libraries/signal_handlers.py +++ b/openedx/core/djangoapps/content_libraries/signal_handlers.py @@ -21,7 +21,7 @@ LIBRARY_COLLECTION_UPDATED, ) from openedx_learning.api.authoring import get_collection_components, get_component, get_components -from openedx_learning.api.authoring_models import Collection, CollectionPublishableEntity, Component +from openedx_learning.api.authoring_models import Collection, CollectionPublishableEntity, Component, PublishableEntity from lms.djangoapps.grades.api import signals as grades_signals @@ -177,9 +177,6 @@ def library_collection_entities_changed(sender, instance, action, pk_set, **kwar """ Sends a CONTENT_OBJECT_ASSOCIATIONS_CHANGED event for components added/removed/cleared from a collection. """ - if not isinstance(instance, Collection): - return - if action not in ["post_add", "post_remove", "post_clear"]: return @@ -191,6 +188,10 @@ def library_collection_entities_changed(sender, instance, action, pk_set, **kwar log.error("{instance} is not associated with a content library.") return + if isinstance(instance, PublishableEntity): + _library_collection_component_changed(instance.component, library.library_key) + return + if pk_set: components = get_collection_components( instance.learning_package_id, diff --git a/openedx/core/djangoapps/content_libraries/urls.py b/openedx/core/djangoapps/content_libraries/urls.py index 9455f0de5e61..e77c1b34d277 100644 --- a/openedx/core/djangoapps/content_libraries/urls.py +++ b/openedx/core/djangoapps/content_libraries/urls.py @@ -57,6 +57,8 @@ path('blocks//', include([ # Get metadata about a specific XBlock in this library, or delete the block: path('', views.LibraryBlockView.as_view()), + # Update collections for a given component + path('collections/', views.LibraryBlockCollectionsView.as_view(), name='update-collections'), # Get the LTI URL of a specific XBlock path('lti/', views.LibraryBlockLtiUrlView.as_view(), name='lti-url'), # Get the OLX source code of the specified block: diff --git a/openedx/core/djangoapps/content_libraries/views.py b/openedx/core/djangoapps/content_libraries/views.py index 3712af6e597f..abf00d4ae93b 100644 --- a/openedx/core/djangoapps/content_libraries/views.py +++ b/openedx/core/djangoapps/content_libraries/views.py @@ -90,6 +90,7 @@ from organizations.exceptions import InvalidOrganizationException from organizations.models import Organization from rest_framework import status +from rest_framework.decorators import action from rest_framework.exceptions import NotFound, PermissionDenied, ValidationError from rest_framework.generics import GenericAPIView from rest_framework.parsers import MultiPartParser @@ -106,6 +107,7 @@ ContentLibraryPermissionLevelSerializer, ContentLibraryPermissionSerializer, ContentLibraryUpdateSerializer, + ContentLibraryComponentCollectionsUpdateSerializer, LibraryXBlockCreationSerializer, LibraryXBlockMetadataSerializer, LibraryXBlockTypeSerializer, @@ -640,6 +642,47 @@ def delete(self, request, usage_key_str): # pylint: disable=unused-argument return Response({}) +@method_decorator(non_atomic_requests, name="dispatch") +@view_auth_classes() +class LibraryBlockCollectionsView(APIView): + def _handle_request(self, request, usage_key_str) -> Response: + key = LibraryUsageLocatorV2.from_string(usage_key_str) + content_library = api.require_permission_for_library_key(key.lib_key, request.user, + permissions.CAN_EDIT_THIS_CONTENT_LIBRARY) + component = api.get_component_from_usage_key(key) + serializer = ContentLibraryComponentCollectionsUpdateSerializer(data=request.data) + serializer.is_valid(raise_exception=True) + + collection_keys = serializer.validated_data['collection_keys'] + api.update_library_component_collections( + library_key=key.lib_key, + component=component, + collection_keys=collection_keys, + created_by=self.request.user.id, + remove=(request.method == "DELETE"), + content_library=content_library, + ) + + return Response({'count': len(collection_keys)}) + + @convert_exceptions + def patch(self, request, usage_key_str) -> Response: + """ + Adds Collections to a Component. + + Collection and Components must all be part of the given library/learning package. + """ + return self._handle_request(request, usage_key_str) + + @convert_exceptions + def delete(self, request, usage_key_str) -> Response: + """ + Removes Collections from a Component. + + Collection and Components must all be part of the given library/learning package. + """ + return self._handle_request(request, usage_key_str) + @method_decorator(non_atomic_requests, name="dispatch") @view_auth_classes() class LibraryBlockLtiUrlView(APIView): From 6b58f464fa7717b27b2c0cb054028e178df740c0 Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Fri, 4 Oct 2024 11:43:52 +0530 Subject: [PATCH 11/24] refactor: set collections in a component --- .../core/djangoapps/content_libraries/api.py | 25 ++++++------------ .../djangoapps/content_libraries/views.py | 26 +++++-------------- 2 files changed, 15 insertions(+), 36 deletions(-) diff --git a/openedx/core/djangoapps/content_libraries/api.py b/openedx/core/djangoapps/content_libraries/api.py index 61afdbe09cd2..8992f0fc7844 100644 --- a/openedx/core/djangoapps/content_libraries/api.py +++ b/openedx/core/djangoapps/content_libraries/api.py @@ -1241,16 +1241,14 @@ def update_library_component_collections( *, collection_keys: list[str], created_by: int | None = None, - remove=False, # As an optimization, callers may pass in a pre-fetched ContentLibrary instance content_library: ContentLibrary | None = None, ) -> Collection: """ - This api has opposite then functionality from `update_library_collection_components`. It Associates the component with collections for the given collection keys. - By default the Collections are added to the Component. - If remove=True, the Collections are removed from the Component. + Only collections in queryset are associated with component, all previous component-collections + associations are removed. If you've already fetched the ContentLibrary, pass it in to avoid refetching. @@ -1270,19 +1268,12 @@ def update_library_component_collections( key__in=collection_keys ) - if remove: - component = authoring_api.remove_collections( - content_library.learning_package_id, - component, - collection_qs, - ) - else: - component = authoring_api.add_collections( - content_library.learning_package_id, - component, - collection_qs, - created_by=created_by, - ) + component = authoring_api.set_collections( + content_library.learning_package_id, + component, + collection_qs, + created_by=created_by, + ) return component diff --git a/openedx/core/djangoapps/content_libraries/views.py b/openedx/core/djangoapps/content_libraries/views.py index abf00d4ae93b..8ebd8fb2507a 100644 --- a/openedx/core/djangoapps/content_libraries/views.py +++ b/openedx/core/djangoapps/content_libraries/views.py @@ -645,7 +645,13 @@ def delete(self, request, usage_key_str): # pylint: disable=unused-argument @method_decorator(non_atomic_requests, name="dispatch") @view_auth_classes() class LibraryBlockCollectionsView(APIView): - def _handle_request(self, request, usage_key_str) -> Response: + @convert_exceptions + def patch(self, request, usage_key_str) -> Response: + """ + Adds Collections to a Component. + + Collection and Components must all be part of the given library/learning package. + """ key = LibraryUsageLocatorV2.from_string(usage_key_str) content_library = api.require_permission_for_library_key(key.lib_key, request.user, permissions.CAN_EDIT_THIS_CONTENT_LIBRARY) @@ -659,29 +665,11 @@ def _handle_request(self, request, usage_key_str) -> Response: component=component, collection_keys=collection_keys, created_by=self.request.user.id, - remove=(request.method == "DELETE"), content_library=content_library, ) return Response({'count': len(collection_keys)}) - @convert_exceptions - def patch(self, request, usage_key_str) -> Response: - """ - Adds Collections to a Component. - - Collection and Components must all be part of the given library/learning package. - """ - return self._handle_request(request, usage_key_str) - - @convert_exceptions - def delete(self, request, usage_key_str) -> Response: - """ - Removes Collections from a Component. - - Collection and Components must all be part of the given library/learning package. - """ - return self._handle_request(request, usage_key_str) @method_decorator(non_atomic_requests, name="dispatch") @view_auth_classes() From b8b7abc9113574ee2f38900ab7ee2cc9a3ebe4fb Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Fri, 4 Oct 2024 20:11:22 +0530 Subject: [PATCH 12/24] refactor: async collections indexing --- openedx/core/djangoapps/content_libraries/api.py | 6 +++++- openedx/core/djangoapps/content_libraries/serializers.py | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/openedx/core/djangoapps/content_libraries/api.py b/openedx/core/djangoapps/content_libraries/api.py index 8992f0fc7844..3ff26003f80d 100644 --- a/openedx/core/djangoapps/content_libraries/api.py +++ b/openedx/core/djangoapps/content_libraries/api.py @@ -1268,13 +1268,17 @@ def update_library_component_collections( key__in=collection_keys ) - component = authoring_api.set_collections( + affected_collections = authoring_api.set_collections( content_library.learning_package_id, component, collection_qs, created_by=created_by, ) + from ..content.search.tasks import update_library_collection_index_doc + for collection in affected_collections: + update_library_collection_index_doc.delay(str(library_key), collection.key) + return component diff --git a/openedx/core/djangoapps/content_libraries/serializers.py b/openedx/core/djangoapps/content_libraries/serializers.py index f9563ff3603c..6765656e69d5 100644 --- a/openedx/core/djangoapps/content_libraries/serializers.py +++ b/openedx/core/djangoapps/content_libraries/serializers.py @@ -312,4 +312,4 @@ class ContentLibraryComponentCollectionsUpdateSerializer(serializers.Serializer) Serializer for adding/removing Collections to/from a Component. """ - collection_keys = serializers.ListField(child=serializers.CharField(), allow_empty=False) + collection_keys = serializers.ListField(child=serializers.CharField(), allow_empty=True) From cab022528ca0338894d787d4bad05589cf8e4841 Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Fri, 4 Oct 2024 20:13:06 +0530 Subject: [PATCH 13/24] fix: lint issues --- openedx/core/djangoapps/content_libraries/views.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openedx/core/djangoapps/content_libraries/views.py b/openedx/core/djangoapps/content_libraries/views.py index 8ebd8fb2507a..f909b682c038 100644 --- a/openedx/core/djangoapps/content_libraries/views.py +++ b/openedx/core/djangoapps/content_libraries/views.py @@ -90,7 +90,6 @@ from organizations.exceptions import InvalidOrganizationException from organizations.models import Organization from rest_framework import status -from rest_framework.decorators import action from rest_framework.exceptions import NotFound, PermissionDenied, ValidationError from rest_framework.generics import GenericAPIView from rest_framework.parsers import MultiPartParser @@ -645,6 +644,9 @@ def delete(self, request, usage_key_str): # pylint: disable=unused-argument @method_decorator(non_atomic_requests, name="dispatch") @view_auth_classes() class LibraryBlockCollectionsView(APIView): + """ + View to set collections for a component. + """ @convert_exceptions def patch(self, request, usage_key_str) -> Response: """ From 4a3bfd98ee20fa8c5e20462b5a4fc1740d36e11a Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Mon, 7 Oct 2024 11:32:01 +0530 Subject: [PATCH 14/24] test: test set collections for component --- .../core/djangoapps/content_libraries/api.py | 2 +- .../content_libraries/tests/test_api.py | 46 +++++++++++++++++++ .../djangoapps/content_libraries/views.py | 2 +- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/openedx/core/djangoapps/content_libraries/api.py b/openedx/core/djangoapps/content_libraries/api.py index 3ff26003f80d..8494e0cad336 100644 --- a/openedx/core/djangoapps/content_libraries/api.py +++ b/openedx/core/djangoapps/content_libraries/api.py @@ -1235,7 +1235,7 @@ def update_library_collection_components( return collection -def update_library_component_collections( +def set_library_component_collections( library_key: LibraryLocatorV2, component: Component, *, diff --git a/openedx/core/djangoapps/content_libraries/tests/test_api.py b/openedx/core/djangoapps/content_libraries/tests/test_api.py index 8041c508dc31..9ab60a2c9d26 100644 --- a/openedx/core/djangoapps/content_libraries/tests/test_api.py +++ b/openedx/core/djangoapps/content_libraries/tests/test_api.py @@ -308,6 +308,13 @@ def setUp(self): description="Description for Collection 2", created_by=self.user.id, ) + self.col3 = api.create_library_collection( + self.lib2.library_key, + collection_key="COL3", + title="Collection 3", + description="Description for Collection 3", + created_by=self.user.id, + ) # Create some library blocks in lib1 self.lib1_problem_block = self._add_block_to_library( @@ -316,6 +323,10 @@ def setUp(self): self.lib1_html_block = self._add_block_to_library( self.lib1.library_key, "html", "html1", ) + # Create some library blocks in lib2 + self.lib2_problem_block = self._add_block_to_library( + self.lib2.library_key, "problem", "problem2", + ) def test_create_library_collection(self): event_receiver = mock.Mock() @@ -498,3 +509,38 @@ def test_update_collection_components_from_wrong_library(self): ], ) assert self.lib1_problem_block["id"] in str(exc.exception) + + @mock.patch('openedx.core.djangoapps.content.search.api.upsert_library_collection_index_doc') + def test_set_library_component_collections(self, mock_update_collection_index_doc): + event_receiver = mock.Mock() + CONTENT_OBJECT_ASSOCIATIONS_CHANGED.connect(event_receiver) + assert not list(self.col2.entities.all()) + component = api.get_component_from_usage_key(UsageKey.from_string(self.lib2_problem_block["id"])) + + api.set_library_component_collections( + self.lib2.library_key, + component, + collection_keys=[self.col2.key, self.col3.key], + ) + + assert len(authoring_api.get_collection(self.lib2.learning_package_id, self.col2.key).entities.all()) == 1 + assert len(authoring_api.get_collection(self.lib2.learning_package_id, self.col3.key).entities.all()) == 1 + self.assertDictContainsSubset( + { + "signal": CONTENT_OBJECT_ASSOCIATIONS_CHANGED, + "sender": None, + "content_object": ContentObjectChangedData( + object_id=self.lib2_problem_block["id"], + changes=["collections"], + ), + }, + event_receiver.call_args_list[0].kwargs, + ) + self.assertListEqual( + list(mock_update_collection_index_doc.call_args_list[0][0]), + [self.lib2.library_key, self.col2.key] + ) + self.assertListEqual( + list(mock_update_collection_index_doc.call_args_list[1][0]), + [self.lib2.library_key, self.col3.key] + ) diff --git a/openedx/core/djangoapps/content_libraries/views.py b/openedx/core/djangoapps/content_libraries/views.py index f909b682c038..a3aa2407f331 100644 --- a/openedx/core/djangoapps/content_libraries/views.py +++ b/openedx/core/djangoapps/content_libraries/views.py @@ -662,7 +662,7 @@ def patch(self, request, usage_key_str) -> Response: serializer.is_valid(raise_exception=True) collection_keys = serializer.validated_data['collection_keys'] - api.update_library_component_collections( + api.set_library_component_collections( library_key=key.lib_key, component=component, collection_keys=collection_keys, From b8df70f8fb23c93ab2f36e937fc7681d0b52d35f Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Mon, 7 Oct 2024 11:47:00 +0530 Subject: [PATCH 15/24] chore: fix docs --- openedx/core/djangoapps/content_libraries/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openedx/core/djangoapps/content_libraries/views.py b/openedx/core/djangoapps/content_libraries/views.py index a3aa2407f331..4d0dfe17fda1 100644 --- a/openedx/core/djangoapps/content_libraries/views.py +++ b/openedx/core/djangoapps/content_libraries/views.py @@ -650,7 +650,7 @@ class LibraryBlockCollectionsView(APIView): @convert_exceptions def patch(self, request, usage_key_str) -> Response: """ - Adds Collections to a Component. + Sets Collections for a Component. Collection and Components must all be part of the given library/learning package. """ From ddc606974ed75c5a1526c87a09ee9a30581592da Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Mon, 7 Oct 2024 11:58:21 +0530 Subject: [PATCH 16/24] chore: temporarily update openedx-learning package --- requirements/constraints.txt | 2 +- requirements/edx/base.txt | 2 +- requirements/edx/development.txt | 2 +- requirements/edx/doc.txt | 2 +- requirements/edx/testing.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 6fb109d62f09..f4d8581c5393 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -140,7 +140,7 @@ optimizely-sdk<5.0 # Date: 2023-09-18 # pinning this version to avoid updates while the library is being developed # Issue for unpinning: https://github.com/openedx/edx-platform/issues/35269 -openedx-learning==0.13.1 +openedx-learning @ git+https://github.com/open-craft/openedx-learning@navin/component-collection-api # Date: 2023-11-29 # Open AI version 1.0.0 dropped support for openai.ChatCompletion which is currently in use in enterprise. diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index b92ad29f8abf..e69fee50debb 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -825,7 +825,7 @@ openedx-filters==1.10.0 # -r requirements/edx/kernel.in # lti-consumer-xblock # ora2 -openedx-learning==0.13.1 +openedx-learning @ git+https://github.com/open-craft/openedx-learning@navin/component-collection-api # via # -c requirements/edx/../constraints.txt # -r requirements/edx/kernel.in diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index a5713bc3dd33..59081ead052e 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -1374,7 +1374,7 @@ openedx-filters==1.10.0 # -r requirements/edx/testing.txt # lti-consumer-xblock # ora2 -openedx-learning==0.13.1 +openedx-learning @ git+https://github.com/open-craft/openedx-learning@navin/component-collection-api # via # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt index 57f36577a5db..487fbb584e43 100644 --- a/requirements/edx/doc.txt +++ b/requirements/edx/doc.txt @@ -984,7 +984,7 @@ openedx-filters==1.10.0 # -r requirements/edx/base.txt # lti-consumer-xblock # ora2 -openedx-learning==0.13.1 +openedx-learning @ git+https://github.com/open-craft/openedx-learning@navin/component-collection-api # via # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index 4f26caa9582a..1b9d06872e65 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -1035,7 +1035,7 @@ openedx-filters==1.10.0 # -r requirements/edx/base.txt # lti-consumer-xblock # ora2 -openedx-learning==0.13.1 +openedx-learning @ git+https://github.com/open-craft/openedx-learning@navin/component-collection-api # via # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt From b7bb882d84bc5517c433531465c91a24e7bb8efe Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Mon, 7 Oct 2024 12:02:47 +0530 Subject: [PATCH 17/24] fix: lint issues --- openedx/core/djangoapps/content_libraries/api.py | 2 +- openedx/core/djangoapps/content_libraries/views.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/openedx/core/djangoapps/content_libraries/api.py b/openedx/core/djangoapps/content_libraries/api.py index 8494e0cad336..11b720bbb970 100644 --- a/openedx/core/djangoapps/content_libraries/api.py +++ b/openedx/core/djangoapps/content_libraries/api.py @@ -1243,7 +1243,7 @@ def set_library_component_collections( created_by: int | None = None, # As an optimization, callers may pass in a pre-fetched ContentLibrary instance content_library: ContentLibrary | None = None, -) -> Collection: +) -> Component: """ It Associates the component with collections for the given collection keys. diff --git a/openedx/core/djangoapps/content_libraries/views.py b/openedx/core/djangoapps/content_libraries/views.py index 4d0dfe17fda1..c9051d155208 100644 --- a/openedx/core/djangoapps/content_libraries/views.py +++ b/openedx/core/djangoapps/content_libraries/views.py @@ -655,8 +655,11 @@ def patch(self, request, usage_key_str) -> Response: Collection and Components must all be part of the given library/learning package. """ key = LibraryUsageLocatorV2.from_string(usage_key_str) - content_library = api.require_permission_for_library_key(key.lib_key, request.user, - permissions.CAN_EDIT_THIS_CONTENT_LIBRARY) + content_library = api.require_permission_for_library_key( + key.lib_key, + request.user, + permissions.CAN_EDIT_THIS_CONTENT_LIBRARY + ) component = api.get_component_from_usage_key(key) serializer = ContentLibraryComponentCollectionsUpdateSerializer(data=request.data) serializer.is_valid(raise_exception=True) From b33d1c95bbcdc4cc07c279dc5c3aaf7fb3aeca37 Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Tue, 8 Oct 2024 20:31:32 +0530 Subject: [PATCH 18/24] chore: add usage_key to filterable attribute --- openedx/core/djangoapps/content/search/api.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openedx/core/djangoapps/content/search/api.py b/openedx/core/djangoapps/content/search/api.py index b5ed1bde78e1..17338f20ab83 100644 --- a/openedx/core/djangoapps/content/search/api.py +++ b/openedx/core/djangoapps/content/search/api.py @@ -320,6 +320,7 @@ def rebuild_index(status_cb: Callable[[str], None] | None = None) -> None: Fields.block_id, Fields.block_type, Fields.context_key, + Fields.usage_key, Fields.org, Fields.tags, Fields.tags + "." + Fields.tags_taxonomy, From 8b961115c80e853d4d321c765bced92de7229c98 Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Wed, 9 Oct 2024 16:18:48 +0530 Subject: [PATCH 19/24] feat: add collections to component api --- .../core/djangoapps/content_libraries/api.py | 22 +++++++++++++++++-- .../content_libraries/serializers.py | 10 +++++++++ .../djangoapps/content_libraries/views.py | 2 +- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/openedx/core/djangoapps/content_libraries/api.py b/openedx/core/djangoapps/content_libraries/api.py index 11b720bbb970..e5f43375866e 100644 --- a/openedx/core/djangoapps/content_libraries/api.py +++ b/openedx/core/djangoapps/content_libraries/api.py @@ -204,6 +204,15 @@ class ContentLibraryPermissionEntry: access_level = attr.ib(AccessLevel.NO_ACCESS) +@attr.s +class CollectionMetadata: + """ + Class to represent collection metadata in a content library. + """ + key = attr.ib(type=str) + title = attr.ib(type=str) + + @attr.s class LibraryXBlockMetadata: """ @@ -219,9 +228,10 @@ class LibraryXBlockMetadata: published_by = attr.ib("") has_unpublished_changes = attr.ib(False) created = attr.ib(default=None, type=datetime) + collections = attr.ib(type=list[CollectionMetadata], factory=list) @classmethod - def from_component(cls, library_key, component): + def from_component(cls, library_key, component, collections=None): """ Construct a LibraryXBlockMetadata from a Component object. """ @@ -248,6 +258,7 @@ def from_component(cls, library_key, component): last_draft_created=last_draft_created, last_draft_created_by=last_draft_created_by, has_unpublished_changes=component.versioning.has_unpublished_changes, + collections=collections or [], ) @@ -690,7 +701,7 @@ def get_library_components(library_key, text_search=None, block_types=None) -> Q return components -def get_library_block(usage_key) -> LibraryXBlockMetadata: +def get_library_block(usage_key, include_collections=False) -> LibraryXBlockMetadata: """ Get metadata about (the draft version of) one specific XBlock in a library. @@ -713,9 +724,16 @@ def get_library_block(usage_key) -> LibraryXBlockMetadata: if not draft_version: raise ContentLibraryBlockNotFound(usage_key) + collections = [] + if include_collections: + collections = authoring_api.get_entity_collections( + component.learning_package_id, + component.key, + ).values('key', 'title') xblock_metadata = LibraryXBlockMetadata.from_component( library_key=usage_key.context_key, component=component, + collections=collections, ) return xblock_metadata diff --git a/openedx/core/djangoapps/content_libraries/serializers.py b/openedx/core/djangoapps/content_libraries/serializers.py index 6765656e69d5..8e9e5fc2a749 100644 --- a/openedx/core/djangoapps/content_libraries/serializers.py +++ b/openedx/core/djangoapps/content_libraries/serializers.py @@ -134,6 +134,14 @@ class ContentLibraryFilterSerializer(BaseFilterSerializer): type = serializers.ChoiceField(choices=LIBRARY_TYPES, default=None, required=False) +class CollectionMetadataSerializer(serializers.Serializer): + """ + Serializer for CollectionMetadata + """ + key = serializers.CharField() + title = serializers.CharField() + + class LibraryXBlockMetadataSerializer(serializers.Serializer): """ Serializer for LibraryXBlockMetadata @@ -161,6 +169,8 @@ class LibraryXBlockMetadataSerializer(serializers.Serializer): slug = serializers.CharField(write_only=True) tags_count = serializers.IntegerField(read_only=True) + collections = CollectionMetadataSerializer(many=True, required=False) + class LibraryXBlockTypeSerializer(serializers.Serializer): """ diff --git a/openedx/core/djangoapps/content_libraries/views.py b/openedx/core/djangoapps/content_libraries/views.py index c9051d155208..6e50559f38f6 100644 --- a/openedx/core/djangoapps/content_libraries/views.py +++ b/openedx/core/djangoapps/content_libraries/views.py @@ -618,7 +618,7 @@ def get(self, request, usage_key_str): """ key = LibraryUsageLocatorV2.from_string(usage_key_str) api.require_permission_for_library_key(key.lib_key, request.user, permissions.CAN_VIEW_THIS_CONTENT_LIBRARY) - result = api.get_library_block(key) + result = api.get_library_block(key, include_collections=True) return Response(LibraryXBlockMetadataSerializer(result).data) From 2df35ea774d12dc103ce844dc2d98c73c785a8ee Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Wed, 9 Oct 2024 16:29:29 +0530 Subject: [PATCH 20/24] fix: lint issues --- openedx/core/djangoapps/content_libraries/api.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/openedx/core/djangoapps/content_libraries/api.py b/openedx/core/djangoapps/content_libraries/api.py index e5f43375866e..07d07222234f 100644 --- a/openedx/core/djangoapps/content_libraries/api.py +++ b/openedx/core/djangoapps/content_libraries/api.py @@ -231,7 +231,7 @@ class LibraryXBlockMetadata: collections = attr.ib(type=list[CollectionMetadata], factory=list) @classmethod - def from_component(cls, library_key, component, collections=None): + def from_component(cls, library_key, component, associated_collections=None): """ Construct a LibraryXBlockMetadata from a Component object. """ @@ -258,7 +258,7 @@ def from_component(cls, library_key, component, collections=None): last_draft_created=last_draft_created, last_draft_created_by=last_draft_created_by, has_unpublished_changes=component.versioning.has_unpublished_changes, - collections=collections or [], + collections=associated_collections or [], ) @@ -724,16 +724,17 @@ def get_library_block(usage_key, include_collections=False) -> LibraryXBlockMeta if not draft_version: raise ContentLibraryBlockNotFound(usage_key) - collections = [] if include_collections: - collections = authoring_api.get_entity_collections( + associated_collections = authoring_api.get_entity_collections( component.learning_package_id, component.key, ).values('key', 'title') + else: + associated_collections = None xblock_metadata = LibraryXBlockMetadata.from_component( library_key=usage_key.context_key, component=component, - collections=collections, + associated_collections=associated_collections, ) return xblock_metadata From 3da3479e92158358bd2478a69bc0d9932487a787 Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Thu, 10 Oct 2024 11:50:26 +0530 Subject: [PATCH 21/24] fix: remove collection-entity through model post_delete signal handler The indexing update is already handled by m2m_changed handler. --- .../djangoapps/content_libraries/signal_handlers.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/openedx/core/djangoapps/content_libraries/signal_handlers.py b/openedx/core/djangoapps/content_libraries/signal_handlers.py index 18e102bf686d..1d723bea8b23 100644 --- a/openedx/core/djangoapps/content_libraries/signal_handlers.py +++ b/openedx/core/djangoapps/content_libraries/signal_handlers.py @@ -162,16 +162,6 @@ def library_collection_entity_saved(sender, instance, created, **kwargs): _library_collection_component_changed(component) -@receiver(post_delete, sender=CollectionPublishableEntity, dispatch_uid="library_collection_entity_deleted") -def library_collection_entity_deleted(sender, instance, **kwargs): - """ - Sends a CONTENT_OBJECT_ASSOCIATIONS_CHANGED event for components removed from a collection. - """ - # Component.pk matches its entity.pk - component = get_component(instance.entity_id) - _library_collection_component_changed(component) - - @receiver(m2m_changed, sender=CollectionPublishableEntity, dispatch_uid="library_collection_entities_changed") def library_collection_entities_changed(sender, instance, action, pk_set, **kwargs): """ From d54f0e490a19b6fff93458cb47258f209bf3eb25 Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Thu, 10 Oct 2024 12:53:27 +0530 Subject: [PATCH 22/24] fix: use lazy field to control collection update task --- .../djangoapps/content/search/handlers.py | 20 +++++++---- .../core/djangoapps/content_libraries/api.py | 13 ++++++-- .../content_libraries/tests/test_api.py | 33 ++++++++++++++----- 3 files changed, 49 insertions(+), 17 deletions(-) diff --git a/openedx/core/djangoapps/content/search/handlers.py b/openedx/core/djangoapps/content/search/handlers.py index 085387d336b1..46b015367a0d 100644 --- a/openedx/core/djangoapps/content/search/handlers.py +++ b/openedx/core/djangoapps/content/search/handlers.py @@ -179,13 +179,19 @@ def library_collection_updated_handler(**kwargs) -> None: log.error("Received null or incorrect data for event") return - # Update collection index synchronously to make sure that search index is updated before - # the frontend invalidates/refetches index. - # See content_library_updated_handler for more details. - update_library_collection_index_doc.apply(args=[ - str(library_collection.library_key), - library_collection.collection_key, - ]) + if library_collection.lazy: + update_library_collection_index_doc.delay( + str(library_collection.library_key), + library_collection.collection_key, + ) + else: + # Update collection index synchronously to make sure that search index is updated before + # the frontend invalidates/refetches index. + # See content_library_updated_handler for more details. + update_library_collection_index_doc.apply(args=[ + str(library_collection.library_key), + library_collection.collection_key, + ]) @receiver(CONTENT_OBJECT_ASSOCIATIONS_CHANGED) diff --git a/openedx/core/djangoapps/content_libraries/api.py b/openedx/core/djangoapps/content_libraries/api.py index 07d07222234f..1ba00ac7122c 100644 --- a/openedx/core/djangoapps/content_libraries/api.py +++ b/openedx/core/djangoapps/content_libraries/api.py @@ -80,6 +80,7 @@ from openedx_events.content_authoring.data import ( ContentLibraryData, LibraryBlockData, + LibraryCollectionData, ) from openedx_events.content_authoring.signals import ( CONTENT_LIBRARY_CREATED, @@ -88,6 +89,7 @@ LIBRARY_BLOCK_CREATED, LIBRARY_BLOCK_DELETED, LIBRARY_BLOCK_UPDATED, + LIBRARY_COLLECTION_UPDATED, ) from openedx_learning.api import authoring as authoring_api from openedx_learning.api.authoring_models import Collection, Component, MediaType, LearningPackage, PublishableEntity @@ -1294,9 +1296,16 @@ def set_library_component_collections( created_by=created_by, ) - from ..content.search.tasks import update_library_collection_index_doc + # For each collection, trigger LIBRARY_COLLECTION_UPDATED signal and set lazy=True to trigger + # collection indexing asynchronously. for collection in affected_collections: - update_library_collection_index_doc.delay(str(library_key), collection.key) + LIBRARY_COLLECTION_UPDATED.send_event( + library_collection=LibraryCollectionData( + library_key=library_key, + collection_key=collection.key, + lazy=True, + ) + ) return component diff --git a/openedx/core/djangoapps/content_libraries/tests/test_api.py b/openedx/core/djangoapps/content_libraries/tests/test_api.py index 9ab60a2c9d26..4e49bff8c9f1 100644 --- a/openedx/core/djangoapps/content_libraries/tests/test_api.py +++ b/openedx/core/djangoapps/content_libraries/tests/test_api.py @@ -510,10 +510,11 @@ def test_update_collection_components_from_wrong_library(self): ) assert self.lib1_problem_block["id"] in str(exc.exception) - @mock.patch('openedx.core.djangoapps.content.search.api.upsert_library_collection_index_doc') - def test_set_library_component_collections(self, mock_update_collection_index_doc): + def test_set_library_component_collections(self): event_receiver = mock.Mock() CONTENT_OBJECT_ASSOCIATIONS_CHANGED.connect(event_receiver) + collection_update_event_receiver = mock.Mock() + LIBRARY_COLLECTION_UPDATED.connect(collection_update_event_receiver) assert not list(self.col2.entities.all()) component = api.get_component_from_usage_key(UsageKey.from_string(self.lib2_problem_block["id"])) @@ -536,11 +537,27 @@ def test_set_library_component_collections(self, mock_update_collection_index_do }, event_receiver.call_args_list[0].kwargs, ) - self.assertListEqual( - list(mock_update_collection_index_doc.call_args_list[0][0]), - [self.lib2.library_key, self.col2.key] + self.assertDictContainsSubset( + { + "signal": LIBRARY_COLLECTION_UPDATED, + "sender": None, + "library_collection": LibraryCollectionData( + self.lib2.library_key, + collection_key=self.col2.key, + lazy=True, + ), + }, + collection_update_event_receiver.call_args_list[0].kwargs, ) - self.assertListEqual( - list(mock_update_collection_index_doc.call_args_list[1][0]), - [self.lib2.library_key, self.col3.key] + self.assertDictContainsSubset( + { + "signal": LIBRARY_COLLECTION_UPDATED, + "sender": None, + "library_collection": LibraryCollectionData( + self.lib2.library_key, + collection_key=self.col3.key, + lazy=True, + ), + }, + collection_update_event_receiver.call_args_list[1].kwargs, ) From 21cb369cc38cdddb8be35e2aefe4c7e37de392cf Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Thu, 10 Oct 2024 12:53:44 +0530 Subject: [PATCH 23/24] chore: temporarily point openedx-events to dev branch --- requirements/edx/base.txt | 2 +- requirements/edx/development.txt | 2 +- requirements/edx/doc.txt | 2 +- requirements/edx/kernel.in | 3 ++- requirements/edx/testing.txt | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index e69fee50debb..5d9361542136 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -811,7 +811,7 @@ openedx-django-require==2.1.0 # via -r requirements/edx/kernel.in openedx-django-wiki==2.1.0 # via -r requirements/edx/kernel.in -openedx-events==9.14.1 +openedx-events @ git+https://github.com/open-craft/openedx-events@navin/update-library-collection-data # via # -r requirements/edx/kernel.in # edx-enterprise diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index 59081ead052e..2414ac3ffdca 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -1358,7 +1358,7 @@ openedx-django-wiki==2.1.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -openedx-events==9.14.1 +openedx-events @ git+https://github.com/open-craft/openedx-events@navin/update-library-collection-data # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt index 487fbb584e43..2f6cec0cd6e2 100644 --- a/requirements/edx/doc.txt +++ b/requirements/edx/doc.txt @@ -970,7 +970,7 @@ openedx-django-require==2.1.0 # via -r requirements/edx/base.txt openedx-django-wiki==2.1.0 # via -r requirements/edx/base.txt -openedx-events==9.14.1 +openedx-events @ git+https://github.com/open-craft/openedx-events@navin/update-library-collection-data # via # -r requirements/edx/base.txt # edx-enterprise diff --git a/requirements/edx/kernel.in b/requirements/edx/kernel.in index a5b510742ac7..d399f938cfdb 100644 --- a/requirements/edx/kernel.in +++ b/requirements/edx/kernel.in @@ -117,7 +117,8 @@ olxcleaner openedx-atlas # CLI tool to manage translations openedx-calc # Library supporting mathematical calculations for Open edX openedx-django-require -openedx-events # Open edX Events from Hooks Extension Framework (OEP-50) +# openedx-events # Open edX Events from Hooks Extension Framework (OEP-50) +openedx-events @ git+https://github.com/open-craft/openedx-events@navin/update-library-collection-data openedx-filters # Open edX Filters from Hooks Extension Framework (OEP-50) openedx-learning # Open edX Learning core (experimental) openedx-mongodbproxy diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index 1b9d06872e65..1e1ac4874d09 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -1021,7 +1021,7 @@ openedx-django-require==2.1.0 # via -r requirements/edx/base.txt openedx-django-wiki==2.1.0 # via -r requirements/edx/base.txt -openedx-events==9.14.1 +openedx-events @ git+https://github.com/open-craft/openedx-events@navin/update-library-collection-data # via # -r requirements/edx/base.txt # edx-enterprise From 8babec2f1e73e4ca35c1fc9d1af6350e9977147f Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Thu, 10 Oct 2024 16:15:03 +0530 Subject: [PATCH 24/24] fix: use get_components in m2m_changed signal handler Using `get_collection_components` does not work in case of post_remove as the component is already removed from collection and we don't really need additional filtering as we already have pk_set from the signal. --- .../content_libraries/signal_handlers.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/openedx/core/djangoapps/content_libraries/signal_handlers.py b/openedx/core/djangoapps/content_libraries/signal_handlers.py index 1d723bea8b23..49d40b27d689 100644 --- a/openedx/core/djangoapps/content_libraries/signal_handlers.py +++ b/openedx/core/djangoapps/content_libraries/signal_handlers.py @@ -20,7 +20,7 @@ LIBRARY_COLLECTION_DELETED, LIBRARY_COLLECTION_UPDATED, ) -from openedx_learning.api.authoring import get_collection_components, get_component, get_components +from openedx_learning.api.authoring import get_component, get_components from openedx_learning.api.authoring_models import Collection, CollectionPublishableEntity, Component, PublishableEntity from lms.djangoapps.grades.api import signals as grades_signals @@ -182,18 +182,12 @@ def library_collection_entities_changed(sender, instance, action, pk_set, **kwar _library_collection_component_changed(instance.component, library.library_key) return + # When action=="post_clear", pk_set==None + # Since the collection instance now has an empty entities set, + # we don't know which ones were removed, so we need to update associations for all library components. + components = get_components(instance.learning_package_id) if pk_set: - components = get_collection_components( - instance.learning_package_id, - instance.key, - ).filter(pk__in=pk_set) - else: - # When action=="post_clear", pk_set==None - # Since the collection instance now has an empty entities set, - # we don't know which ones were removed, so we need to update associations for all library components. - components = get_components( - instance.learning_package_id, - ) + components = components.filter(pk__in=pk_set) for component in components.all(): _library_collection_component_changed(component, library.library_key)