diff --git a/Makefile b/Makefile index 5d139dee2e..3008e5bfa1 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ export TRANSIFEX_RESOURCE=frontend-app-learning transifex_langs = "ar,fr,es_419,zh_CN,pt,it,de,uk,ru,hi,fa_IR,fr_CA,it_IT,pt_PT,de_DE" +intl_imports = ./node_modules/.bin/intl-imports.js transifex_utils = ./node_modules/.bin/transifex-utils.js i18n = ./src/i18n transifex_input = $(i18n)/transifex_input.json @@ -42,9 +43,23 @@ push_translations: # Pushing comments to Transifex... ./node_modules/@edx/reactifex/bash_scripts/put_comments_v3.sh +ifeq ($(OPENEDX_ATLAS_PULL),) # Pulls translations from Transifex. pull_translations: tx pull -f --mode reviewed --languages=$(transifex_langs) +else +# Experimental: OEP-58 Pulls translations using atlas +pull_translations: + rm -rf src/i18n/messages + mkdir src/i18n/messages + cd src/i18n/messages \ + && atlas pull --filter=$(transifex_langs) \ + translations/frontend-component-header/src/i18n/messages:frontend-component-header \ + translations/frontend-component-footer/src/i18n/messages:frontend-component-footer \ + translations/frontend-app-learning/src/i18n/messages:frontend-app-learning + + $(intl_imports) frontend-component-header frontend-component-footer frontend-app-learning +endif # This target is used by Travis. validate-no-uncommitted-package-lock-changes: diff --git a/package-lock.json b/package-lock.json index 1604ac94a6..51f55011f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,11 +10,11 @@ "license": "AGPL-3.0", "dependencies": { "@edx/brand": "npm:@edx/brand-openedx@1.2.0", - "@edx/frontend-component-footer": "11.6.3", - "@edx/frontend-component-header": "3.6.4", - "@edx/frontend-lib-special-exams": "2.16.0", - "@edx/frontend-platform": "3.4.1", - "@edx/paragon": "20.28.4", + "@edx/frontend-component-footer": "^12.0.0", + "@edx/frontend-component-header": "^4.0.0", + "@edx/frontend-lib-special-exams": "^2.16.1", + "@edx/frontend-platform": "^4.2.0", + "@edx/paragon": "^20.32.0", "@fortawesome/fontawesome-svg-core": "1.3.0", "@fortawesome/free-brands-svg-icons": "5.15.4", "@fortawesome/free-regular-svg-icons": "5.15.4", @@ -3094,75 +3094,75 @@ } }, "node_modules/@edx/frontend-component-footer": { - "version": "11.6.3", - "resolved": "https://registry.npmjs.org/@edx/frontend-component-footer/-/frontend-component-footer-11.6.3.tgz", - "integrity": "sha512-5TSuPuQRrFx5m+BAHnZjxR5wrJNMTGM7wyYz8We6ae7IZCF4xZpwr7F17GVqdlKf15rUTNw64aC22nvqfKboiw==", - "dependencies": { - "@fortawesome/fontawesome-svg-core": "6.3.0", - "@fortawesome/free-brands-svg-icons": "6.3.0", - "@fortawesome/free-regular-svg-icons": "6.3.0", - "@fortawesome/free-solid-svg-icons": "6.3.0", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-component-footer/-/frontend-component-footer-12.0.0.tgz", + "integrity": "sha512-m8Rx6ZPWzIN5XLrz6Ft3aTuFo0rty0jECd79CBYWdm0D9KD1WxoYEG+fElluyOQp/t42T5jLImHTSWjFURx5kw==", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "6.4.0", + "@fortawesome/free-brands-svg-icons": "6.4.0", + "@fortawesome/free-regular-svg-icons": "6.4.0", + "@fortawesome/free-solid-svg-icons": "6.4.0", "@fortawesome/react-fontawesome": "0.2.0" }, "peerDependencies": { - "@edx/frontend-platform": "^2.0.0 || ^3.0.0", + "@edx/frontend-platform": "^4.0.0", "prop-types": "^15.5.10", - "react": "^16.9.0", - "react-dom": "^16.9.0" + "react": "^16.9.0 || ^17.0.0", + "react-dom": "^16.9.0 || ^17.0.0" } }, "node_modules/@edx/frontend-component-footer/node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.3.0.tgz", - "integrity": "sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz", + "integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==", "hasInstallScript": true, "engines": { "node": ">=6" } }, "node_modules/@edx/frontend-component-footer/node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.3.0.tgz", - "integrity": "sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz", + "integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.3.0" + "@fortawesome/fontawesome-common-types": "6.4.0" }, "engines": { "node": ">=6" } }, "node_modules/@edx/frontend-component-footer/node_modules/@fortawesome/free-brands-svg-icons": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.3.0.tgz", - "integrity": "sha512-xI0c+a8xnKItAXCN8rZgCNCJQiVAd2Y7p9e2ND6zN3J3ekneu96qrePieJ7yA7073C1JxxoM3vH1RU7rYsaj8w==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.4.0.tgz", + "integrity": "sha512-qvxTCo0FQ5k2N+VCXb/PZQ+QMhqRVM4OORiO6MXdG6bKolIojGU/srQ1ptvKk0JTbRgaJOfL2qMqGvBEZG7Z6g==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.3.0" + "@fortawesome/fontawesome-common-types": "6.4.0" }, "engines": { "node": ">=6" } }, "node_modules/@edx/frontend-component-footer/node_modules/@fortawesome/free-regular-svg-icons": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.3.0.tgz", - "integrity": "sha512-cZnwiVHZ51SVzWHOaNCIA+u9wevZjCuAGSvSYpNlm6A4H4Vhwh8481Bf/5rwheIC3fFKlgXxLKaw8Xeroz8Ntg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.4.0.tgz", + "integrity": "sha512-ZfycI7D0KWPZtf7wtMFnQxs8qjBXArRzczABuMQqecA/nXohquJ5J/RCR77PmY5qGWkxAZDxpnUFVXKwtY/jPw==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.3.0" + "@fortawesome/fontawesome-common-types": "6.4.0" }, "engines": { "node": ">=6" } }, "node_modules/@edx/frontend-component-footer/node_modules/@fortawesome/free-solid-svg-icons": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.3.0.tgz", - "integrity": "sha512-x5tMwzF2lTH8pyv8yeZRodItP2IVlzzmBuD1M7BjawWgg9XAvktqJJ91Qjgoaf8qJpHQ8FEU9VxRfOkLhh86QA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.0.tgz", + "integrity": "sha512-kutPeRGWm8V5dltFP1zGjQOEAzaLZj4StdQhWVZnfGFCvAPVvHh8qk5bRrU4KXnRRRNni5tKQI9PBAdI6MP8nQ==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.3.0" + "@fortawesome/fontawesome-common-types": "6.4.0" }, "engines": { "node": ">=6" @@ -3181,11 +3181,11 @@ } }, "node_modules/@edx/frontend-component-header": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@edx/frontend-component-header/-/frontend-component-header-3.6.4.tgz", - "integrity": "sha512-PXQm/tt8SF0xbQjZUjGROwexzH0IOLA55mMIa8A/87CKqx6IgXtg9zB7RcJchsRHFevkkH6loOJo02bOb081aw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-component-header/-/frontend-component-header-4.0.0.tgz", + "integrity": "sha512-r/L3p2ZSI1DitjxVKAor18GmgJllafYslrdpzGI0vcX/gTemH13jf2Xr9iQqrT921DP2nzZ5GOwGJNptTSjiaA==", "dependencies": { - "@edx/paragon": "20.28.4", + "@edx/paragon": "20.30.1", "@fortawesome/fontawesome-svg-core": "6.3.0", "@fortawesome/free-brands-svg-icons": "6.3.0", "@fortawesome/free-regular-svg-icons": "6.3.0", @@ -3196,10 +3196,59 @@ "react-transition-group": "4.4.5" }, "peerDependencies": { - "@edx/frontend-platform": "^2.0.0 || ^3.0.0", + "@edx/frontend-platform": "^4.0.0", "prop-types": "^15.5.10", - "react": "^16.9.0", - "react-dom": "^16.9.0" + "react": "^16.9.0 || ^17.0.0", + "react-dom": "^16.9.0 || ^17.0.0" + } + }, + "node_modules/@edx/frontend-component-header/node_modules/@edx/paragon": { + "version": "20.30.1", + "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.30.1.tgz", + "integrity": "sha512-v3Ek8deZWqVKi3IWP08Mj4egrvbmbqQEyRA6+qazHZdgHJA4qOP1SST42UKd9XxPeRbLWUgaJWd0iBAOAna/gw==", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.1.1", + "@fortawesome/react-fontawesome": "^0.1.18", + "@popperjs/core": "^2.11.4", + "bootstrap": "^4.6.2", + "classnames": "^2.3.1", + "email-prop-type": "^3.0.0", + "file-selector": "^0.6.0", + "font-awesome": "^4.7.0", + "glob": "^8.0.3", + "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-loading-skeleton": "^3.1.0", + "react-popper": "^2.2.5", + "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" + }, + "peerDependencies": { + "react": "^16.8.6 || ^17.0.0", + "react-dom": "^16.8.6 || ^17.0.0", + "react-intl": "^5.25.1" + } + }, + "node_modules/@edx/frontend-component-header/node_modules/@edx/paragon/node_modules/@fortawesome/react-fontawesome": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.19.tgz", + "integrity": "sha512-Hyb+lB8T18cvLNX0S3llz7PcSOAJMLwiVKBuuzwM/nI5uoBw+gQjnf9il0fR1C3DKOI5Kc79pkJ4/xB0Uw9aFQ==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.x" } }, "node_modules/@edx/frontend-component-header/node_modules/@fortawesome/fontawesome-common-types": { @@ -3271,10 +3320,55 @@ "react": ">=16.3" } }, + "node_modules/@edx/frontend-component-header/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==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@edx/frontend-component-header/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "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-header/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@edx/frontend-component-header/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@edx/frontend-lib-special-exams": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@edx/frontend-lib-special-exams/-/frontend-lib-special-exams-2.16.0.tgz", - "integrity": "sha512-jCix80D9XM9PwbqtyURhTh126RT6Bcyca2DT7FwiiBWNTlzYZ9rtjHjGaS6Oddl5lXAyj2K60kuosgQ7V3shfg==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/@edx/frontend-lib-special-exams/-/frontend-lib-special-exams-2.16.1.tgz", + "integrity": "sha512-psmSRary2khFMRHF0uGcAk+IyHFTAJK2a80TH6/gjk9Ewyvup3NQTcFV4MF68NXKy/KsZ0tc1phfpp4NYTG0aA==", "dependencies": { "@fortawesome/fontawesome-svg-core": "1.2.34", "@fortawesome/free-brands-svg-icons": "5.11.2", @@ -3285,7 +3379,7 @@ "eventemitter3": "^4.0.7" }, "peerDependencies": { - "@edx/frontend-platform": "^2.3.0 || ^3.0.0", + "@edx/frontend-platform": "^4.2.0", "@edx/paragon": "^19.4.1 || ^20.22.4", "@reduxjs/toolkit": "^1.5.1", "prop-types": "^15.7.2", @@ -3355,9 +3449,9 @@ } }, "node_modules/@edx/frontend-platform": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@edx/frontend-platform/-/frontend-platform-3.4.1.tgz", - "integrity": "sha512-A/B4YQWllbpGhHAVT664iwoEXwyuN2H1q4uoKC3PIEy4n+wv3BIvDhTA84htrc4F7Wdz+iP+DS3gQZbJ7VfMTA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-platform/-/frontend-platform-4.2.0.tgz", + "integrity": "sha512-iDoFeccENQKBjqUgdjl5KSwBrjNEj8YW6Ual+6twcHHJUBg3yRoBEphwHIoRREcMgQjhdKVAdWj8eleh4JsEKA==", "dependencies": { "@cospired/i18n-iso-languages": "2.2.0", "@formatjs/intl-pluralrules": "4.3.3", @@ -3380,13 +3474,14 @@ "universal-cookie": "4.0.4" }, "bin": { + "intl-imports.js": "i18n/scripts/intl-imports.js", "transifex-utils.js": "i18n/scripts/transifex-utils.js" }, "peerDependencies": { "@edx/paragon": ">= 10.0.0 < 21.0.0", "prop-types": "^15.7.2", - "react": "^16.9.0", - "react-dom": "^16.9.0", + "react": "^16.9.0 || ^17.0.0", + "react-dom": "^16.9.0 || ^17.0.0", "react-redux": "^7.1.1", "react-router-dom": "^5.0.1", "redux": "^4.0.4" @@ -3437,9 +3532,9 @@ } }, "node_modules/@edx/paragon": { - "version": "20.28.4", - "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.28.4.tgz", - "integrity": "sha512-JiEAUaEuOnHB/zC8h9d5f3AwchREiHFKbXFm7JpXNcvXpkTj0TTKTCS6zcfwZeDl77q/+Rx6Js7SpSE2EzAtDg==", + "version": "20.32.0", + "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.32.0.tgz", + "integrity": "sha512-d2rlYoWyRLvzPMo7MfCojqU/Qvk0cXnBpXW7aOOOQYhTvC3m3Y3yNWjQ8DJhbnWyL1tFEjZG2mjlgXHDHBqtLQ==", "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.1.1", "@fortawesome/react-fontawesome": "^0.1.18", @@ -3454,6 +3549,7 @@ "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-loading-skeleton": "^3.1.0", @@ -20800,6 +20896,15 @@ "react": "^15.3.0 || ^16.0.0 || ^17.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==", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -28360,52 +28465,52 @@ } }, "@edx/frontend-component-footer": { - "version": "11.6.3", - "resolved": "https://registry.npmjs.org/@edx/frontend-component-footer/-/frontend-component-footer-11.6.3.tgz", - "integrity": "sha512-5TSuPuQRrFx5m+BAHnZjxR5wrJNMTGM7wyYz8We6ae7IZCF4xZpwr7F17GVqdlKf15rUTNw64aC22nvqfKboiw==", - "requires": { - "@fortawesome/fontawesome-svg-core": "6.3.0", - "@fortawesome/free-brands-svg-icons": "6.3.0", - "@fortawesome/free-regular-svg-icons": "6.3.0", - "@fortawesome/free-solid-svg-icons": "6.3.0", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-component-footer/-/frontend-component-footer-12.0.0.tgz", + "integrity": "sha512-m8Rx6ZPWzIN5XLrz6Ft3aTuFo0rty0jECd79CBYWdm0D9KD1WxoYEG+fElluyOQp/t42T5jLImHTSWjFURx5kw==", + "requires": { + "@fortawesome/fontawesome-svg-core": "6.4.0", + "@fortawesome/free-brands-svg-icons": "6.4.0", + "@fortawesome/free-regular-svg-icons": "6.4.0", + "@fortawesome/free-solid-svg-icons": "6.4.0", "@fortawesome/react-fontawesome": "0.2.0" }, "dependencies": { "@fortawesome/fontawesome-common-types": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.3.0.tgz", - "integrity": "sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==" + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz", + "integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==" }, "@fortawesome/fontawesome-svg-core": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.3.0.tgz", - "integrity": "sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz", + "integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==", "requires": { - "@fortawesome/fontawesome-common-types": "6.3.0" + "@fortawesome/fontawesome-common-types": "6.4.0" } }, "@fortawesome/free-brands-svg-icons": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.3.0.tgz", - "integrity": "sha512-xI0c+a8xnKItAXCN8rZgCNCJQiVAd2Y7p9e2ND6zN3J3ekneu96qrePieJ7yA7073C1JxxoM3vH1RU7rYsaj8w==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.4.0.tgz", + "integrity": "sha512-qvxTCo0FQ5k2N+VCXb/PZQ+QMhqRVM4OORiO6MXdG6bKolIojGU/srQ1ptvKk0JTbRgaJOfL2qMqGvBEZG7Z6g==", "requires": { - "@fortawesome/fontawesome-common-types": "6.3.0" + "@fortawesome/fontawesome-common-types": "6.4.0" } }, "@fortawesome/free-regular-svg-icons": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.3.0.tgz", - "integrity": "sha512-cZnwiVHZ51SVzWHOaNCIA+u9wevZjCuAGSvSYpNlm6A4H4Vhwh8481Bf/5rwheIC3fFKlgXxLKaw8Xeroz8Ntg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.4.0.tgz", + "integrity": "sha512-ZfycI7D0KWPZtf7wtMFnQxs8qjBXArRzczABuMQqecA/nXohquJ5J/RCR77PmY5qGWkxAZDxpnUFVXKwtY/jPw==", "requires": { - "@fortawesome/fontawesome-common-types": "6.3.0" + "@fortawesome/fontawesome-common-types": "6.4.0" } }, "@fortawesome/free-solid-svg-icons": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.3.0.tgz", - "integrity": "sha512-x5tMwzF2lTH8pyv8yeZRodItP2IVlzzmBuD1M7BjawWgg9XAvktqJJ91Qjgoaf8qJpHQ8FEU9VxRfOkLhh86QA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.0.tgz", + "integrity": "sha512-kutPeRGWm8V5dltFP1zGjQOEAzaLZj4StdQhWVZnfGFCvAPVvHh8qk5bRrU4KXnRRRNni5tKQI9PBAdI6MP8nQ==", "requires": { - "@fortawesome/fontawesome-common-types": "6.3.0" + "@fortawesome/fontawesome-common-types": "6.4.0" } }, "@fortawesome/react-fontawesome": { @@ -28419,11 +28524,11 @@ } }, "@edx/frontend-component-header": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@edx/frontend-component-header/-/frontend-component-header-3.6.4.tgz", - "integrity": "sha512-PXQm/tt8SF0xbQjZUjGROwexzH0IOLA55mMIa8A/87CKqx6IgXtg9zB7RcJchsRHFevkkH6loOJo02bOb081aw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-component-header/-/frontend-component-header-4.0.0.tgz", + "integrity": "sha512-r/L3p2ZSI1DitjxVKAor18GmgJllafYslrdpzGI0vcX/gTemH13jf2Xr9iQqrT921DP2nzZ5GOwGJNptTSjiaA==", "requires": { - "@edx/paragon": "20.28.4", + "@edx/paragon": "20.30.1", "@fortawesome/fontawesome-svg-core": "6.3.0", "@fortawesome/free-brands-svg-icons": "6.3.0", "@fortawesome/free-regular-svg-icons": "6.3.0", @@ -28434,6 +28539,48 @@ "react-transition-group": "4.4.5" }, "dependencies": { + "@edx/paragon": { + "version": "20.30.1", + "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.30.1.tgz", + "integrity": "sha512-v3Ek8deZWqVKi3IWP08Mj4egrvbmbqQEyRA6+qazHZdgHJA4qOP1SST42UKd9XxPeRbLWUgaJWd0iBAOAna/gw==", + "requires": { + "@fortawesome/fontawesome-svg-core": "^6.1.1", + "@fortawesome/react-fontawesome": "^0.1.18", + "@popperjs/core": "^2.11.4", + "bootstrap": "^4.6.2", + "classnames": "^2.3.1", + "email-prop-type": "^3.0.0", + "file-selector": "^0.6.0", + "font-awesome": "^4.7.0", + "glob": "^8.0.3", + "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-loading-skeleton": "^3.1.0", + "react-popper": "^2.2.5", + "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" + }, + "dependencies": { + "@fortawesome/react-fontawesome": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.19.tgz", + "integrity": "sha512-Hyb+lB8T18cvLNX0S3llz7PcSOAJMLwiVKBuuzwM/nI5uoBw+gQjnf9il0fR1C3DKOI5Kc79pkJ4/xB0Uw9aFQ==", + "requires": { + "prop-types": "^15.8.1" + } + } + } + }, "@fortawesome/fontawesome-common-types": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.3.0.tgz", @@ -28478,13 +28625,46 @@ "requires": { "prop-types": "^15.8.1" } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" } } }, "@edx/frontend-lib-special-exams": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@edx/frontend-lib-special-exams/-/frontend-lib-special-exams-2.16.0.tgz", - "integrity": "sha512-jCix80D9XM9PwbqtyURhTh126RT6Bcyca2DT7FwiiBWNTlzYZ9rtjHjGaS6Oddl5lXAyj2K60kuosgQ7V3shfg==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/@edx/frontend-lib-special-exams/-/frontend-lib-special-exams-2.16.1.tgz", + "integrity": "sha512-psmSRary2khFMRHF0uGcAk+IyHFTAJK2a80TH6/gjk9Ewyvup3NQTcFV4MF68NXKy/KsZ0tc1phfpp4NYTG0aA==", "requires": { "@fortawesome/fontawesome-svg-core": "1.2.34", "@fortawesome/free-brands-svg-icons": "5.11.2", @@ -28538,9 +28718,9 @@ } }, "@edx/frontend-platform": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@edx/frontend-platform/-/frontend-platform-3.4.1.tgz", - "integrity": "sha512-A/B4YQWllbpGhHAVT664iwoEXwyuN2H1q4uoKC3PIEy4n+wv3BIvDhTA84htrc4F7Wdz+iP+DS3gQZbJ7VfMTA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-platform/-/frontend-platform-4.2.0.tgz", + "integrity": "sha512-iDoFeccENQKBjqUgdjl5KSwBrjNEj8YW6Ual+6twcHHJUBg3yRoBEphwHIoRREcMgQjhdKVAdWj8eleh4JsEKA==", "requires": { "@cospired/i18n-iso-languages": "2.2.0", "@formatjs/intl-pluralrules": "4.3.3", @@ -28607,9 +28787,9 @@ } }, "@edx/paragon": { - "version": "20.28.4", - "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.28.4.tgz", - "integrity": "sha512-JiEAUaEuOnHB/zC8h9d5f3AwchREiHFKbXFm7JpXNcvXpkTj0TTKTCS6zcfwZeDl77q/+Rx6Js7SpSE2EzAtDg==", + "version": "20.32.0", + "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.32.0.tgz", + "integrity": "sha512-d2rlYoWyRLvzPMo7MfCojqU/Qvk0cXnBpXW7aOOOQYhTvC3m3Y3yNWjQ8DJhbnWyL1tFEjZG2mjlgXHDHBqtLQ==", "requires": { "@fortawesome/fontawesome-svg-core": "^6.1.1", "@fortawesome/react-fontawesome": "^0.1.18", @@ -28624,6 +28804,7 @@ "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-loading-skeleton": "^3.1.0", @@ -42050,6 +42231,12 @@ "@babel/runtime": "^7.12.13" } }, + "react-colorful": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", + "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "requires": {} + }, "react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", diff --git a/package.json b/package.json index 8fe19a6f92..a6c43c3214 100644 --- a/package.json +++ b/package.json @@ -30,11 +30,11 @@ }, "dependencies": { "@edx/brand": "npm:@edx/brand-openedx@1.2.0", - "@edx/frontend-component-footer": "11.6.3", - "@edx/frontend-component-header": "3.6.4", - "@edx/frontend-lib-special-exams": "2.16.0", - "@edx/frontend-platform": "3.4.1", - "@edx/paragon": "20.28.4", + "@edx/frontend-component-footer": "^12.0.0", + "@edx/frontend-component-header": "^4.0.0", + "@edx/frontend-lib-special-exams": "^2.16.1", + "@edx/frontend-platform": "^4.2.0", + "@edx/paragon": "^20.32.0", "@fortawesome/fontawesome-svg-core": "1.3.0", "@fortawesome/free-brands-svg-icons": "5.15.4", "@fortawesome/free-regular-svg-icons": "5.15.4", diff --git a/src/i18n/index.jsx b/src/i18n/index.js similarity index 81% rename from src/i18n/index.jsx rename to src/i18n/index.js index dd591ef6cb..f2ccf69ca4 100644 --- a/src/i18n/index.jsx +++ b/src/i18n/index.js @@ -1,3 +1,6 @@ +import { messages as footerMessages } from '@edx/frontend-component-footer'; +import { messages as headerMessages } from '@edx/frontend-component-header'; + import arMessages from './messages/ar.json'; import frMessages from './messages/fr.json'; import es419Messages from './messages/es_419.json'; @@ -15,7 +18,7 @@ import ititCAMessages from './messages/it_IT.json'; import ptptCAMessages from './messages/pt_PT.json'; // no need to import en messages-- they are in the defaultMessage field -const messages = { +const appMessages = { ar: arMessages, 'es-419': es419Messages, fr: frMessages, @@ -33,4 +36,8 @@ const messages = { 'pt-pt': ptptCAMessages, }; -export default messages; +export default [ + appMessages, + footerMessages, + headerMessages, +]; diff --git a/src/index.jsx b/src/index.jsx index 7fec13b112..a509e1f6a8 100755 --- a/src/index.jsx +++ b/src/index.jsx @@ -11,13 +11,11 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { Switch } from 'react-router-dom'; -import { messages as footerMessages } from '@edx/frontend-component-footer'; -import { messages as headerMessages } from '@edx/frontend-component-header'; import { Helmet } from 'react-helmet'; import { fetchDiscussionTab, fetchLiveTab } from './course-home/data/thunks'; import DiscussionTab from './course-home/discussion-tab/DiscussionTab'; -import appMessages from './i18n'; +import messages from './i18n'; import { UserMessagesProvider } from './generic/user-messages'; import './index.scss'; @@ -142,9 +140,5 @@ initialize({ }, 'LearnerAppConfig'); }, }, - messages: [ - appMessages, - footerMessages, - headerMessages, - ], + messages, }); diff --git a/src/setupTest.js b/src/setupTest.js index 82aa7226e0..0e21e899a0 100755 --- a/src/setupTest.js +++ b/src/setupTest.js @@ -19,7 +19,7 @@ import { reducer as coursewareReducer } from './courseware/data/slice'; import { reducer as modelsReducer } from './generic/model-store'; import { UserMessagesProvider } from './generic/user-messages'; -import appMessages from './i18n'; +import messages from './i18n'; import { fetchCourse, fetchSequence } from './courseware/data'; import { appendBrowserTimezoneToUrl, executeThunk } from './utils'; import buildSimpleCourseAndSequenceMetadata from './courseware/data/__factories__/sequenceMetadata.factory'; @@ -78,7 +78,7 @@ export function initializeMockApp() { configureI18n({ config: getConfig(), loggingService, - messages: [appMessages], + messages, }); return { loggingService, authService };